| ARROW | DARROW | LARROW
| COLON | CARET | BANG | AND
| LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE
- | EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | END
+ | EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | BEGIN | END
| ROOT
| EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT
| apps term (EApp (apps, term), (appsleft, termright))
term : LPAREN exp RPAREN (exp)
+ | BEGIN exp END (exp)
| INT (EInt INT, (INTleft, INTright))
| STRING (EString STRING, (STRINGleft, STRINGright))
| LBRACK elist RBRACK (EList elist, (LBRACKleft, RBRACKright))
<INITIAL> "let" => (Tokens.LET (yypos, yypos + size yytext));
<INITIAL> "in" => (Tokens.IN (yypos, yypos + size yytext));
+<INITIAL> "begin" => (Tokens.BEGIN (yypos, yypos + size yytext));
<INITIAL> "end" => (Tokens.END (yypos, yypos + size yytext));
<INITIAL> "with" => (Tokens.WITH (yypos, yypos + size yytext));
<INITIAL> "where" => (Tokens.WHERE (yypos, yypos + size yytext));