X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/095de39e1be653dcb6438d19c719bd7797e0772a..5543e924e43797dc352f5498438293606e0fd574:/src/domtool.grm diff --git a/src/domtool.grm b/src/domtool.grm index e7ce9ea..ca9ff3a 100644 --- a/src/domtool.grm +++ b/src/domtool.grm @@ -31,7 +31,7 @@ open Ast | ARROW | DARROW | LARROW | COLON | CARET | BANG | AND | LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE - | EQ | COMMA | BSLASH | SEMI | LET | IN | END + | EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | END | ROOT | EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT @@ -114,6 +114,8 @@ exp : apps (apps) | BSLASH SYMBOL COLON LPAREN typ RPAREN ARROW exp (ELam (SYMBOL, SOME typ, exp), (BSLASHleft, expright)) | BSLASH SYMBOL ARROW exp (ELam (SYMBOL, NONE, exp), (BSLASHleft, expright)) + | BSLASHBSLASH SYMBOL COLON ctxt ARROW exp (EALam (SYMBOL, ctxt, exp), + (BSLASHBSLASHleft, expright)) | CSYMBOL EQ exp (ESet (CSYMBOL, exp), (CSYMBOLleft, expright)) | exp SEMI exp (let val ls = case #1 exp2 of @@ -122,13 +124,8 @@ exp : apps (apps) in (ESeq ls, (exp1left, exp2right)) end) + | exp SEMI (exp) | SYMBOL LARROW CSYMBOL SEMI exp (EGet (SYMBOL, CSYMBOL, exp), (SYMBOLleft, expright)) - (*| exp WHERE exp END (ELocal (exp1, exp2), (exp1left, ENDright)) - | exp WHERE exp WITH END (EWith ((ELocal (exp1, exp2), (exp1left, ENDright)), - (ESkip, (WITHleft, ENDright))), - (exp1left, ENDright)) - | exp WITH END (EWith (exp, (ESkip, (WITHleft, ENDright))), (expleft, ENDright)) - | exp WITH exp END (EWith (exp1, exp2), (exp1left, ENDright))*) apps : term (term) | apps term (EApp (apps, term), (appsleft, termright))