Add 'begin..end' alternative to parentheses
authorAdam Chlipala <adamc@hcoop.net>
Sun, 11 Nov 2007 13:31:56 +0000 (13:31 +0000)
committerAdam Chlipala <adamc@hcoop.net>
Sun, 11 Nov 2007 13:31:56 +0000 (13:31 +0000)
src/domtool.grm
src/domtool.lex

index 0cf5778..3bbc578 100644 (file)
@@ -31,7 +31,7 @@ open Ast
  | ARROW | DARROW | LARROW
  | COLON | CARET | BANG | AND
  | LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE
  | 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
 
  | ROOT
  | EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT
 
@@ -132,6 +132,7 @@ apps   : term                              (term)
        | apps term                         (EApp (apps, term), (appsleft, termright))
 
 term   : LPAREN exp RPAREN                 (exp)
        | 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))
        | INT                               (EInt INT, (INTleft, INTright))
        | STRING                            (EString STRING, (STRINGleft, STRINGright))
        | LBRACK elist RBRACK               (EList elist, (LBRACKleft, RBRACKright))
index 80c06c7..99449ca 100644 (file)
@@ -125,6 +125,7 @@ lineComment = #[^\n]*\n;
 
 <INITIAL> "let"       => (Tokens.LET (yypos, yypos + size yytext));
 <INITIAL> "in"        => (Tokens.IN (yypos, yypos + size yytext));
 
 <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));
 <INITIAL> "end"       => (Tokens.END (yypos, yypos + size yytext));
 <INITIAL> "with"      => (Tokens.WITH (yypos, yypos + size yytext));
 <INITIAL> "where"     => (Tokens.WHERE (yypos, yypos + size yytext));