# BNF for ExpressionParser.jj

## NON-TERMINALS

skip_to_matching_brace | ::= | java code
Start | ::= | ( Expression )? <EOF>
Expression | ::= | ConditionalExpression
ConditionalExpression | ::= | LogicalOrExpression ( <QUESTION> LogicalOrExpression <COLON> ConditionalExpression )?
LogicalOrExpression | ::= | LogicalAndExpression ( <OR> LogicalAndExpression )*
LogicalAndExpression | ::= | LogicalNotExpression ( <AND> LogicalNotExpression )*
LogicalNotExpression | ::= | <NOT> LogicalNotExpression
| | | EqualityExpression
EqualityExpression | ::= | RelationalExpression ( <EQ> RelationalExpression | <NE> RelationalExpression | <MATCH> RelationalExpression )*
RelationalExpression | ::= | AdditiveExpression ( <LT> AdditiveExpression | <GT> AdditiveExpression | <LTE> AdditiveExpression | <GTE> AdditiveExpression )*
AdditiveExpression | ::= | MultiplicativeExpression ( <PLUS> MultiplicativeExpression | <MINUS> MultiplicativeExpression )*
MultiplicativeExpression | ::= | PrimaryExpression ( <MUL> PrimaryExpression | <DIV> PrimaryExpression | <MOD> PrimaryExpression )*
PrimaryExpression | ::= | <LBRACE> ValueReference <RBRACE>
| | | Literal
| | | <LBRAKET> Expression <RBRAKET>
ValueReference | ::= | skip_to_matching_brace
Literal | ::= | ( <INTEGER_LITERAL> )
| | | ( <STRING_LITERAL> )
| | | BooleanLiteral
BooleanLiteral | ::= | <TRUE>
| | | <FALSE>