+<VarDecl> ::= (<Type> | 'var') <id> '=' <Expr> ';'
+<Expr> ::= <BinOrExpr> [':' <Expr>]
+<BinOrExpr> ::= <BinAndExpr> ['||' <BinOrExpr>]
+<BinAndExpr> ::= <CompareExpr> ['&&' <BinAndExpr>]
+<CompareExpr> ::= <PlusMinExpr> [('==' | '<' | '>' | '<=' | '>=' | '!=') <CompareExpr>]
+<PlusMinExpr> ::= <TimesDivExpr> (('+' | '-') <TimesDivExpr>)*
+<TimesDivExpr> ::= <BasicExpr> (['*' | '/' | '%'] <BasicExpr>)*
+<BasicExpr> ::= <id> <FieldSels>
+ | <Op1> <Expr>
+ | <int>
+ | <char>
+ | 'False'
+ | 'True'
+ | '(' <Expr> ')'
+ | <FunCall>
+ | '[]' <Expr>
+ | '(' <Expr> ',' <Expr> ')'