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 ::= IdExpr
| RegExpExpr
IdExpr ::= <ID>
RegExpExpr ::= "/" <REGEXP> "/"