Table 3 - A partial grammar for a simplified form of init-declarator-list in C++.

init-declarator-list =
    init-declarator { "," init-declarator } .

init-declarator =
    declarator [ initializer ] .

declarator =
    direct-declarator | ptr-operator declarator .

direct-declarator =
    ( declarator-id | "(" declarator ")" ) { array_suffix | function_suffix } .

declarator-id =
    identifier | other-id .

other-id =
    conversion-function-id |
    operator-function-id |
    "~" class-name |
    qualified-id |
    template-id .

array_suffix =
    "[" [ constant-expression ] "]" .

function_suffix =
    "(" [ parameter-clause ] ")" cv-qualifier-seq .

ptr-operator =
    "&" | [ class-name "::" ] "*" cv-qualifier-seq .

cv-qualifier-seq =
    { cv-qualifier } .