expression:
assignment-expression
expression , assignment-expression
assignment-expression:
conditional-expression
unary-expression assignment-operator assignment-expression
assignment-operator: one of
= *= /= %= += –= >= <= &= ^= |=
conditional-expression:
logical-or-expression
logical-or-expression ? expression : conditional-expression
logical-or-expression:
logical-and-expression
logical-or-expression | | logical-and-expression
logical-and-expression:
inclusive-or-expression
logical-and-expression & & inclusive-or-expression
inclusive-or-expression:
exclusive-or-expression
inclusive-or-expression | exclusive-or-expression
exclusive-or-expression:
and-expression
exclusive-or-expression ^ and-expression
and-expression:
equality-expression
and-expression & equality-expression
equality-expression:
relational-expression
equality-expression == relational-expression
equality-expression != relational-expression
relational-expression:
shift-expression
relational-expression < shift-expression
relational-expression > shift-expression
relational-expression <= shift-expression
relational-expression => shift-expression
shift-expression:
additive-expression
shift-expression << additive-expression
shift-expression >> additive-expression
additive-expression:
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression – multiplicative-expression
multiplicative-expression:
segment-expression
multiplicative-expression * segment-expression
multiplicative-expression / segment-expression
multiplicative-expression % segment-expression
segment-expression:
pm-expression
segment-expression :> pm-expression
pm-expression:
cast-expression
pm-expression .* cast-expression
pm-expression –>* cast-expression
cast-expression:
unary-expression
( type-name ) cast-expression unary-expression:
postfix-expression
++ unary-expression
–– unary-expression
unary-operator cast-expression
sizeof unary-expression
sizeof ( type-name )
allocation-expression
deallocation-expression
unary-operator: one of
* & + – ! ~
allocation-expression:
: :opt new nmodelopt placementopt new-type-name new-initializeropt : :opt new nmodelopt placement opt ( type-name ) new-initializeropt
placement:
( expression-list )
new-type-name:
type-specifier-list new declaratoropt
new-declarator:
ms-modifier-list opt * cv-qualifier-list opt new-declaratoropt
ms-modifier-list opt complete-class-name : : *cv-qualifier-listopt
new-declaratoropt
new-declaratoropt [ expression ]
new-initializer:
( initializer-list )
deallocation-expression:
: :opt delete cast-expression
: :opt delete [ ] cast-expression
postfix-expression:
primary-expression
postfix-expression [ expression ]
postfix-expression ( expression-list )
simple-type-name ( expression-list )
postfix-expression . name
postfix-expression –> name
postfix-expression ++
postfix-expression ––
expression-list:
assignment-expression
expression-list , assignment-expression
primary-expression:
literal
this
: : identifier
: : operator-function-name
: : qualified-name ( expression )
name
name:
identifier
operator-function-name
conversion-function-name
~ class-name
qualified-name
qualified-name:
ms-modifier-listopt qualified-class-name : : name
literal:
integer-constant
character-constant
floating-constant
string-literal