BNF for ELParser.jj

NON-TERMINALS

CompositeExpression ::= ( DeferredExpression | DynamicExpression | LiteralExpression )* <EOF>
LiteralExpression ::= <LITERAL_EXPRESSION>
DeferredExpression ::= <START_DEFERRED_EXPRESSION> Expression <END_EXPRESSION>
DynamicExpression ::= <START_DYNAMIC_EXPRESSION> Expression <END_EXPRESSION>
Expression ::= Choice
Choice ::= Or ( <QUESTIONMARK> Choice <COLON> Choice )*
Or ::= And ( ( <OR0> | <OR1> ) And )*
And ::= Equality ( ( <AND0> | <AND1> ) Equality )*
Equality ::= Compare ( ( ( <EQ0> | <EQ1> ) Compare ) | ( ( <NE0> | <NE1> ) Compare ) )*
Compare ::= Math ( ( ( <LT0> | <LT1> ) Math ) | ( ( <GT0> | <GT1> ) Math ) | ( ( <LE0> | <LE1> ) Math ) | ( ( <GE0> | <GE1> ) Math ) )*
Math ::= Multiplication ( ( <PLUS> Multiplication ) | ( <MINUS> Multiplication ) )*
Multiplication ::= Unary ( ( <MULT> Unary ) | ( <DIV> Unary ) | ( ( <MOD0> | <MOD1> ) Unary ) )*
Unary ::= <MINUS> Unary
| ( <NOT0> | <NOT1> ) Unary
| <EMPTY> Unary
| Value
Value ::= ( ValuePrefix ( ValueSuffix )* )
ValuePrefix ::= Literal
| NonLiteral
ValueSuffix ::= DotSuffix
| BracketSuffix
DotSuffix ::= <DOT> <IDENTIFIER>
BracketSuffix ::= <LBRACK> Expression <RBRACK>
NonLiteral ::= <LPAREN> Expression <RPAREN>
| Function
| Identifier
Identifier ::= <IDENTIFIER>
Function ::= <IDENTIFIER> ( <FUNCTIONSUFFIX> )? <LPAREN> ( Expression ( <COMMA> Expression )* )? <RPAREN>
Literal ::= Boolean
| FloatingPoint
| Integer
| String
| Null
Boolean ::= <TRUE>
| <FALSE>
FloatingPoint ::= <FLOATING_POINT_LITERAL>
Integer ::= <INTEGER_LITERAL>
String ::= <STRING_LITERAL>
Null ::= <NULL>