--- /dev/null
+<Expr> ::= <id> ['hd'|'tl'|'fst'|'snd] <Expr`>
+ | <Op1> <Expr> <Expr`>
+ | <int> <Expr`>
+ | <char> <Expr`>
+ | 'False' <Expr`>
+ | 'True' <Expr`>
+ | '(' <Expr> ')' <Expr`>
+ | <id> '(' [<ActArgs>] ')' <Expr`>
+ | '[]' <Expr> <Expr`>
+ | '(' <Expr> ',' <Expr> ')' <Expr`>
+<Expr`> ::= <Op2> <Expr> <Expr`> | e
+<Op2> ::= '+' | '-' | '*' | '/' | '%' | '==' | '<' | '>' | '<=' | '>='
+ | '!=' | '&&' | '||' | ':'
+
+<ActArgs> ::= <Expr> [',' ActArgs]
+
+<VarDecl> ::= (<Type> | 'var') <id> '=' <Expr> ';'
+
+<Type> ::= 'Int'
+ | 'Bool'
+ | 'Char'
+ | '(' Type ',' Type ')'
+ | '[' Type ']'
+ | <id>