Grammar

This grammar was generated from the Parser.jjt file using the jjdoc utility from JavaCC. Operators are ordered from lowest to highest precedence (from top to bottom)


Start ::= ( Expression <EOF> | <EOF> )
Expression ::= OrExpression
OrExpression ::= AndExpression ( ( <OR> AndExpression ) )*
AndExpression ::= EqualExpression ( ( <AND> EqualExpression ) )*
EqualExpression ::= RelationalExpression ( ( <NE> RelationalExpression ) | ( <EQ> RelationalExpression ) )*
RelationalExpression ::= PostfixExpression ( ( <LT> PostfixExpression ) | ( <GT> PostfixExpression ) | ( <LE> PostfixExpression ) | ( <GE> PostfixExpression ) )*
PostfixExpression ::= AdditiveExpression ( ( <IS_NOT_NULL> ) | ( <IS_NULL> ) | ( <IN> Array ) | ( <BETWEEN> AdditiveExpression <AND> AdditiveExpression ) | ( <LIKE> AdditiveExpression ) | ( <NOT_LIKE> AdditiveExpression ) )?
AdditiveExpression ::= MultiplicativeExpression ( ( <CONCAT> MultiplicativeExpression ) | ( <PLUS> MultiplicativeExpression ) | ( <MINUS> MultiplicativeExpression ) )*
MultiplicativeExpression ::= UnaryExpression ( ( <MUL> UnaryExpression ) | ( <DIV> UnaryExpression ) | ( <DIV2> UnaryExpression ) | ( <MOD> UnaryExpression ) )*
UnaryExpression ::= ( <PLUS> UnaryExpression )

| ( <MINUS> UnaryExpression )

| ( <NOT> UnaryExpression )

| UnaryExpressionNotPlusMinus
UnaryExpressionNotPlusMinus ::= AnyConstant

| ( Function | Variable )

| "(" Expression ")"
Variable ::= ( Identifier )
Function ::= ( Identifier "(" ArgumentList ")" )
ArgumentList ::= ( Expression ( "," Expression )* )?
Identifier ::= <IDENTIFIER>
Array ::= "(" AdditiveExpression ( "," AdditiveExpression )* ")"
AnyConstant ::= ( <NULL_LITERAL> | <TRUE_LITERAL> | <FALSE_LITERAL> | <STRING_LITERAL> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> )