Other Forms of C Expressions

The following expressions all have their usual C semantics:

 

assignment-expression

        : conditional-expression

        | unary-expression ASSIGNOP    assignment-expression

        | unary-expression MULTassign  assignment-expression

        | unary-expression DIVassign   assignment-expression

        | unary-expression MODassign   assignment-expression

        | unary-expression PLUSassign  assignment-expression

        | unary-expression MINUSassign assignment-expression

        | unary-expression LSassign    assignment-expression

        | unary-expression RSassign    assignment-expression

        | unary-expression ANDassign   assignment-expression

        | unary-expression ERassign    assignment-expression

        | unary-expression ORassign    assignment-expression

 

conditional-expression

        : logical-OR-expression

        | logical-OR-expression QUESTION expression COLON conditional-expression

 

logical-OR-expression

        : logical-AND-expression

        | logical-OR-expression OROR logical-AND-expression

 

logical-AND-expression

        : inclusive-OR-expression

        | logical-AND-expression ANDAND inclusive-OR-expression

 

inclusive-OR-expression

        : exclusive-OR-expression

        | inclusive-OR-expression OR inclusive-OR-expression

 

exclusive-OR-expression

        : AND-expression

        | exclusive-OR-expression HAT AND-expression

 

AND-expression

        : equality-expression

        | AND-expression AMPERSAND equality-expression

 

equality-expression

        : relational-expression

        | equality-expression EQ relational-expression

        | equality-expression NE relational-expression

 

relational-expression

        : shift-expression

        | relational-expression LESS    shift-expression

        | relational-expression GREATER shift-expression

        | relational-expression LE      shift-expression

        | relational-expression GE      shift-expression

 

shift-expression

        : additive-expression

        | shift-expression LS additive-expression

        | shift-expression RS additive-expression

 

additive-expression

        : multiplicative-expression

        | additive-expression PLUS  multiplicative-expression

        | additive-expression MINUS multiplicative-expression

 

multiplicative-expression

        : cast-expression

        | multiplicative-expression STAR  cast-expression

        | multiplicative-expression SLASH cast-expression

        | multiplicative-expression MOD   cast-expression

 

cast-expression

        : unary-expression

        | LPAREN type-name RPAREN cast-expression

 

unary-expression

        : postfix-expression

        | INCR unary-expression

        | DECR unary-expression

        | AMPERSAND cast-expression

        | STAR cast-expression

        | PLUS cast-expression

        | MINUS cast-expression

        | TWIDDLE cast-expression

        | NOT cast-expression

        | SIZEOF unary-expression

        | SIZEOF LPAREN type-name RPAREN

        | line-address

 

postfix-expression

        : primary-expression

        | postfix-expression LBRACKET expression RBRACKET

        | function-call

        | postfix-expression LPAREN type-name-list RPAREN

        | postfix-expression DOT   identifier-or-typedef-name

        | postfix-expression ARROW identifier-or-typedef-name

        | postfix-expression INCR

        | postfix-expression DECR