BNF for Parser.jj

NON-TERMINALS

Start ::= Imports ( Exp )* <EOF>
Imports ::= ( Import )*
Import ::= <IMPORT> IdExpr ( ".*" )?
Exp ::= OrExpr
| NegExpr
| <LPAREN> Exp <RPAREN>
NegExpr ::= <BANG> Exp
OrExpr ::= ( AndExpr ( <OR> AndExpr )* )
AndExpr ::= ( LitExpr ( <AND> LitExpr )* )
LitExpr ::= ReturnsExpr
| ArgExpr
| ThrowsExpr
| NameExpr
| TrueExpr
| FalseExpr
TrueExpr ::= <TRUE>
FalseExpr ::= <FALSE>
ReturnsExpr ::= <RETURNS> TypeExpr
ArgExpr ::= <ARG> TypeExpr
ThrowsExpr ::= <THROWS> TypeExpr
NameExpr ::= <NAME> IdExpr
TypeExpr ::= "(" SimpleTypeExpr ")"
| SimpleTypeExpr
SimpleTypeExpr ::= IdExpr
| RegExpExpr
IdExpr ::= "(" SimpleIdExpr ")"
| SimpleIdExpr
SimpleIdExpr ::= <ID>
RegExpExpr ::= "/" <REGEXP> "/"