Table 2: An EBNF grammar for new-expression
new-expression =
[ "::" ] "new" [ new-placement ] allocation-type-id
[ new-initializer ] .
new-placement =
"(" expression-list ")" .
expression-list =
expression { "," expression } .
expression =
name | integer-literal .
allocation-type-id =
new-type-id | "(" type-id ")" .
new-type-id =
type-specifier-seq new-declarator .
type-id =
type-specifier-seq abstract-declarator .
type-specifier-seq =
type-specifier { type-specifier } .
new-declarator =
direct-new-declarator |
ptr-operator new-declarator .
direct-new-declarator =
[ "[" expression "]" ] { "[" constant-expression "]" } .
new-initializer =
"(" [ expression-list ] ")" .