Table 4: A grammar for parameter-declaration, where direct-declarator and abstract-direct-declarator use iteration


parameter-declaration =
    decl-specifier-seq ( declarator | abstract-declarator ) .

declarator =
    direct-declarator |
    ptr-operator declarator .

direct-declarator =
    ( declarator-id | "(" declarator ")" )
        { array-suffix | function-suffix } .

abstract-declarator =
    direct-abstract-declarator |
    ptr-operator abstract-declarator .

direct-abstract-declarator =
    [ "(" abstract-declarator ")" ]
        { array-suffix | function-suffix } .