Goal | ::= | Expression <EOF> |
Expression | ::= | IntegerLiteral |
| | TrueLiteral | |
| | FalseLiteral | |
| | PlusExpression | |
| | IfExpression | |
| | LetExpression | |
| | Identifier | |
| | Assignment | |
| | ProcedureExp | |
| | Application | |
| | RecExpression | |
IntegerLiteral | ::= | <INTEGER_LITERAL> |
TrueLiteral | ::= | "#t" |
FalseLiteral | ::= | "#f" |
PlusExpression | ::= | "(" "+" Expression Expression ")" |
IfExpression | ::= | "(" "if" Expression Expression Expression ")" |
LetExpression | ::= | "(" "let" "(" ( Declaration )* ")" Expression ")" |
Identifier | ::= | <IDENTIFIER> |
Assignment | ::= | "(" "set!" Identifier Expression ")" |
ProcedureExp | ::= | "(" "lambda" "(" ( Identifier )* ")" Expression ")" |
Application | ::= | "(" Expression ( Expression )* ")" |
RecExpression | ::= | "(" "letrec" "(" ( RecDeclaration )* ")" Expression ")" |
Declaration | ::= | "(" Identifier Expression ")" |
RecDeclaration | ::= | "(" Identifier ProcedureExp ")" |