expression | ::= | ( conditional )? ( <EOF> ) |
conditional | ::= | lor ( "?" conditional ":" conditional )? |
lor | ::= | land ( <LOR> land )* |
land | ::= | bor ( <LAND> bor )* |
bor | ::= | bxor ( <OR> bxor )* |
bxor | ::= | band ( <XOR> band )* |
band | ::= | equality ( <AND> equality )* |
equality | ::= | relation ( ( <EQ> | <NE> ) relation )* |
relation | ::= | shift ( ( <LT> | <GE> | <GT> | <LE> ) shift )* |
shift | ::= | sum ( ( <LS> | <RS> | <RUS> ) sum )* |
sum | ::= | term ( ( <PLUS> | <MINUS> ) term )* |
term | ::= | unary ( ( <MULTIPLY> | <DIVIDE> | <REMAINDER> ) unary )* |
unary | ::= | <MINUS> element |
| | <BWCOMPL> element | |
| | <LOGCOMPL> element | |
| | "(" ( <ID> ) ")" element | |
| | element | |
element | ::= | literal |
| | <TRUE> | |
| | <FALSE> | |
| | function | |
| | "(" conditional ")" | |
function | ::= | ( <ID> ) ( "(" ( conditional ( "," conditional )* )? ")" )? |
literal | ::= | <INTEGER_LITERAL> |
| | <FLOATING_POINT_LITERAL> | |
| | <CHARACTER_LITERAL> | |
| | <STRING_LITERAL> |