Mercurial > urweb
diff src/urweb.grm @ 1577:911ebbd23919
Fix parsing conflict
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sat, 15 Oct 2011 13:30:59 -0400 |
parents | 644558d9c756 |
children | e44be6ece475 |
line wrap: on
line diff
--- a/src/urweb.grm Sat Oct 15 10:31:30 2011 -0400 +++ b/src/urweb.grm Sat Oct 15 13:30:59 2011 -0400 @@ -298,6 +298,7 @@ | mpath of string list | cexp of con + | cexpO of con option | capps of con | cterm of con | ctuple of con list @@ -703,16 +704,24 @@ | sgntm WHERE LTYPE SYMBOL EQ cexp(SgnWhere (sgntm, SYMBOL, cexp), s (sgntmleft, cexpright)) | LPAREN sgn RPAREN (sgn) -sgi : CON SYMBOL DCOLON kind ((SgiConAbs (SYMBOL, kind), s (CONleft, kindright))) - | LTYPE SYMBOL ((SgiConAbs (SYMBOL, (KType, s (LTYPEleft, SYMBOLright))), +cexpO : (NONE) + | EQ cexp (SOME cexp) + +sgi : LTYPE SYMBOL ((SgiConAbs (SYMBOL, (KType, s (LTYPEleft, SYMBOLright))), s (LTYPEleft, SYMBOLright))) - | CON SYMBOL cargl2 kopt EQ cexp (let - val loc = s (CONleft, cexpright) + | CON SYMBOL cargl2 kopt cexpO (let + val loc = s (CONleft, cexpOright) val k = Option.getOpt (kopt, (KWild, loc)) - val (c, k) = cargl2 (cexp, k) in - (SgiCon (SYMBOL, SOME k, c), loc) + case cexpO of + NONE => (SgiConAbs (SYMBOL, k), loc) + | SOME cexp => + let + val (c, k) = cargl2 (cexp, k) + in + (SgiCon (SYMBOL, SOME k, c), loc) + end end) | LTYPE SYMBOL EQ cexp ((SgiCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), s (LTYPEleft, cexpright)))