Fix regeneration of multi-file dependencies
[hcoop/domtool2.git] / src / domtool.grm
index c9cd837..bd2726c 100644 (file)
@@ -33,7 +33,7 @@ open Ast
  | LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE
  | EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | BEGIN | END
  | IF | THEN | ELSE
- | ROOT
+ | ROOT | SKIP
  | EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT
 
 %nonterm 
@@ -65,6 +65,7 @@ open Ast
 
 %name Domtool
 
+%nonassoc THEN ELSE
 %right SEMI
 %nonassoc COLON
 %nonassoc IN
@@ -95,8 +96,7 @@ docOpt :                                   (NONE)
        | DOC                               (SOME DOC)
 
 expOpt :                                   (NONE)
-       | exp                               (SOME (ELocal (exp, (ESkip, (expleft, expright))),
-                                                 (expleft, expright)))
+       | exp                               (SOME exp)
 
 
 exp    : apps                              (apps)
@@ -129,7 +129,7 @@ exp    : apps                              (apps)
        | exp SEMI                          (exp)
        | SYMBOL LARROW CSYMBOL SEMI exp    (EGet (SYMBOL, NONE, CSYMBOL, exp), (SYMBOLleft, expright))
        | SYMBOL COLON typ LARROW CSYMBOL SEMI exp (EGet (SYMBOL, SOME typ, CSYMBOL, exp), (SYMBOLleft, expright))
-       | IF exp THEN exp ELSE exp          (EIf (exp1, exp2, exp3), (IFleft, exp3right))
+       | IF exp THEN exp ELSE exp END      (EIf (exp1, exp2, exp3), (IFleft, ENDright))
 
 apps   : term                              (term)
        | apps term                         (EApp (apps, term), (appsleft, termright))
@@ -141,6 +141,7 @@ term   : LPAREN exp RPAREN                 (exp)
        | LBRACK elist RBRACK               (EList elist, (LBRACKleft, RBRACKright))
        | LET exp IN exp END                (ELocal (exp1, exp2), (LETleft, ENDright))
        | SYMBOL                            (EVar SYMBOL, (SYMBOLleft, SYMBOLright))
+       | SKIP                              (ESkip, (SKIPleft, SKIPright))
 
 sets   : CSYMBOL EQ apps SEMIopt           ([(ESet (CSYMBOL, apps), (CSYMBOLleft, appsright))])
        | CSYMBOL EQ apps SEMI sets         ((ESet (CSYMBOL, apps), (CSYMBOLleft, appsright))