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> Or <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> |