BNF for EC.jj

NON-TERMINALS

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 ::= ( <BWCOMPL> | <LOGCOMPL> | <MINUS> ) unary
| "(" <ID> ( "." <ID> )* ")" element
| element
element ::= <TRUE>
| <FALSE>
| ( ( literal | "(" conditional ")" | invocation ) ( <DOT> invocation )* )
invocation ::= <ID> ( "(" ( conditional ( "," conditional )* )? ")" )? ( "[" conditional "]" )*
literal ::= <INTEGER_LITERAL>
| <FLOATING_POINT_LITERAL>
| <CHARACTER_LITERAL>
| <STRING_LITERAL>