BNF for Dumont.jj

NON-TERMINALS

SwitchRestriction ::= BooleanExpression <EOF>
UpdateMapping ::= ( VarAssignment )* <EOF>
VarAssignment ::= Id "=" TermExpression ";"
BooleanExpression ::= LogicalOrExpression ( "&&" LogicalOrExpression )*
LogicalOrExpression ::= LogicalNotExpression ( "||" LogicalNotExpression )*
LogicalNotExpression ::= "!" LogicalNotExpression
| TermExpression TermEqualityExpression
| "(" BooleanExpression ")"
TermEqualityExpression ::= "==" TermExpression
| "!=" TermExpression
| "<=" TermExpression
| "<" TermExpression
| ">=" TermExpression
| ">" TermExpression
TermExpression ::= TermAddExpression
TermAddExpression ::= TermSubtractExpression ( "+" TermSubtractExpression )*
TermSubtractExpression ::= TermMultExpression ( "-" TermMultExpression )*
TermMultExpression ::= TermDivExpression ( "*" TermDivExpression )*
TermDivExpression ::= TermModExpression ( "/" TermModExpression )*
TermModExpression ::= TermUnaryExpression ( "%" TermUnaryExpression )*
TermUnaryExpression ::= "++" TermUnaryExpression
| "--" TermUnaryExpression
| "(" TermExpression ")"
| PrimaryTermExpression
PrimaryTermExpression ::= Literal
| Id
Name ::= <IDENTIFIER> ( "." <IDENTIFIER> )*
Id ::= Name
Literal ::= ( <INTEGER_LITERAL> )
| ( <BOOLEAN_LITERAL> )
| ( <FLOATING_POINT_LITERAL> )
| ( <STRING_LITERAL> )
| ( <ENUMERATION_LITERAL> )