Table 2 - A partial grammar for a simplified form of decl-specifier in C++.

decl-specifier-seq =
    { decl-specifier } .

decl-specifier =
    storage-class-specifier |
    function-specifier |
    type-specifier |
    "friend" |
    "typedef" .

storage-class-specifier =
    "auto" | "register" | "static" | "extern" | "mutable" .

function-specifier =
    "inline" | "virtual" | "explicit" .

type-specifier =
    cv-qualifier |
    simple-type-specifier |
    class-specifier |
    enum-specifier |
    elaborated-type-specifier .

cv-qualifier =
    "const" | "volatile" .

simple-type-specifier =
    "bool" | "char" | "int" | "wchar_t" |
    "double" | "float" |
    "void" |
    "long" | "short" |
    "signed" | "unsigned" |
    type-name .

type-name =
    class-name | enum-name | typedef-name .