Add if..then..else
[hcoop/domtool2.git] / src / domtool.grm
index 3bbc578..c9cd837 100644 (file)
@@ -32,6 +32,7 @@ open Ast
  | COLON | CARET | BANG | AND
  | LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE
  | EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | BEGIN | END
+ | IF | THEN | ELSE
  | ROOT
  | EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT
 
@@ -126,7 +127,9 @@ exp    : apps                              (apps)
                                                (ESeq ls, (exp1left, exp2right))
                                            end)
        | exp SEMI                          (exp)
-       | SYMBOL LARROW CSYMBOL SEMI exp    (EGet (SYMBOL, CSYMBOL, exp), (SYMBOLleft, expright))
+       | 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))
 
 apps   : term                              (term)
        | apps term                         (EApp (apps, term), (appsleft, termright))