BNF for ELParser.jj

NON-TERMINALS

ExpressionString ::= ( AttrValueString | AttrValueExpression ) ( ( AttrValueString | AttrValueExpression ) )*
AttrValueString ::= <NON_EXPRESSION_TEXT>
AttrValueExpression ::= <START_EXPRESSION> Expression <END_EXPRESSION>
Expression ::= OrExpression
OrExpression ::= AndExpression ( ( ( <OR1> | <OR2> ) ) AndExpression )*
AndExpression ::= EqualityExpression ( ( ( <AND1> | <AND2> ) ) EqualityExpression )*
EqualityExpression ::= RelationalExpression ( ( ( <EQ1> | <EQ2> ) | ( <NE1> | <NE2> ) ) RelationalExpression )*
RelationalExpression ::= AddExpression ( ( ( <LT1> | <LT2> ) | ( <GT1> | <GT2> ) | ( <GE1> | <GE2> ) | ( <LE1> | <LE2> ) ) AddExpression )*
AddExpression ::= MultiplyExpression ( ( <PLUS> | <MINUS> ) MultiplyExpression )*
MultiplyExpression ::= UnaryExpression ( ( <MULTIPLY> | ( <DIVIDE1> | <DIVIDE2> ) | ( <MODULUS1> | <MODULUS2> ) ) UnaryExpression )*
UnaryExpression ::= ( ( ( <NOT1> | <NOT2> ) | <MINUS> | <EMPTY> ) )* Value
Value ::= ValuePrefix ( ValueSuffix )*
ValuePrefix ::= ( Literal | <LPAREN> Expression <RPAREN> | FunctionInvocation | NamedValue )
NamedValue ::= <IDENTIFIER>
FunctionInvocation ::= ( QualifiedName <LPAREN> ( ( Expression ) ( <COMMA> Expression )* )? <RPAREN> )
ValueSuffix ::= ( PropertySuffix | ArraySuffix )
PropertySuffix ::= <DOT> ( Identifier )
ArraySuffix ::= <LBRACKET> Expression <RBRACKET>
Literal ::= ( BooleanLiteral | IntegerLiteral | FloatingPointLiteral | StringLiteral | NullLiteral )
BooleanLiteral ::= <TRUE>
| <FALSE>
StringLiteral ::= <STRING_LITERAL>
IntegerLiteral ::= <INTEGER_LITERAL>
FloatingPointLiteral ::= <FLOATING_POINT_LITERAL>
NullLiteral ::= <NULL>
Identifier ::= ( <IDENTIFIER> )
QualifiedName ::= ( ( Identifier <COLON> )? Identifier )