BNF for Parser.jj
NON-TERMINALS
Expression
::=
(
StringLiteral
";" |
LogicalORExpression
";" )
LogicalORExpression
::=
(
LogicalANDExpression
( <OR>
LogicalANDExpression
)* )
LogicalANDExpression
::=
(
RelationalExpression
( <AND>
RelationalExpression
)* )
RelationalExpression
::=
AdditiveExpression
( <RELATIONAL_OPERATOR>
AdditiveExpression
)?
AdditiveExpression
::=
(
MultiplicativeExpression
( ( <ADD>
MultiplicativeExpression
) |
MinusTerm
)* )
MinusTerm
::=
<SUB>
MultiplicativeExpression
MultiplicativeExpression
::=
(
PowerTerm
( ( <MULT>
PowerTerm
) |
DivTerm
)* )
DivTerm
::=
<DIV>
PowerTerm
PowerTerm
::=
(
UnaryExpression
( <POWER>
UnaryExpression
)* )
UnaryExpression
::=
<ADD>
UnaryExpression
|
( <SUB>
UnaryExpression
)
|
( <NOT>
UnaryExpression
)
|
PrimaryExpression
PrimaryExpression
::=
Function
|
Name
|
Float
|
"("
LogicalORExpression
")"
Function
::=
( <IDENTIFIER>
Arguments
)
Arguments
::=
"(" (
ArgumentList
)? ")"
ArgumentList
::=
(
StringLiteral
|
LogicalORExpression
) ( "," (
StringLiteral
|
LogicalORExpression
) )*
Float
::=
<FLOATING_POINT_LITERAL>
Name
::=
<IDENTIFIER>
StringLiteral
::=
<QUOTE> <IDENTIFIER> <QUOTE>