# HG changeset patch # User Adam Chlipala # Date 1318699859 14400 # Node ID 911ebbd239191165c95788e27a52a4242c348ca1 # Parent f6c74b4bc4e618d8ca18372ff5eeb6967857fec1 Fix parsing conflict diff -r f6c74b4bc4e6 -r 911ebbd23919 src/urweb.grm --- 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)))