BNF for Parser.jj

NON-TERMINALS

UnitSymbol ::= ( NumericScale ( " " | "*" ) MultiplicativeExpression ";" | NumericScale ";" | MultiplicativeExpression ";" )
MultiplicativeExpression ::= ( ( "1" | PowerTerm ) ( ( ( <MULT> | "." ) ( "1" | PowerTerm ) ) | DivTerm )* )
DivTerm ::= <DIV> PowerTerm
PowerTerm ::= BaseExpression ( ExponentExpression )?
ExponentExpression ::= ( <POWER> )? ( Negative | RationalNumberExponent )
Negative ::= <SUB> RationalNumberExponent
BaseExpression ::= Name
| "(" MultiplicativeExpression ")"
NumericScale ::= ( <FLOATING_POINT_LITERAL> | <INTEGER_LITERAL> | <ONE_LITERAL> )
RationalNumberExponent ::= ( <ONE_LITERAL> | <INTEGER_LITERAL> | "(" <INTEGER_LITERAL> <DIV> <INTEGER_LITERAL> ")" | "(" <ONE_LITERAL> <DIV> <INTEGER_LITERAL> ")" | "(" <INTEGER_LITERAL> <DIV> <ONE_LITERAL> ")" | "(" <ONE_LITERAL> <DIV> <ONE_LITERAL> ")" )
Name ::= <IDENTIFIER>