comparison src/urweb.grm @ 1654:570636457047

Add arguments to [type] declarations and signature items
author Adam Chlipala <adam@chlipala.net>
date Mon, 02 Jan 2012 15:38:52 -0500
parents dfc854e478bb
children ac141fbb313a
comparison
equal deleted inserted replaced
1653:1a8f7d667c00 1654:570636457047
471 val k = Option.getOpt (kopt, (KWild, loc)) 471 val k = Option.getOpt (kopt, (KWild, loc))
472 val (c, k) = cargl2 (cexp, k) 472 val (c, k) = cargl2 (cexp, k)
473 in 473 in
474 [(DCon (SYMBOL, SOME k, c), loc)] 474 [(DCon (SYMBOL, SOME k, c), loc)]
475 end) 475 end)
476 | LTYPE SYMBOL EQ cexp ([(DCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), 476 | LTYPE SYMBOL cargl2 EQ cexp (let
477 s (LTYPEleft, cexpright))]) 477 val loc = s (LTYPEleft, cexpright)
478
479 val k = (KWild, loc)
480 val (c, k) = cargl2 (cexp, k)
481 in
482 [(DCon (SYMBOL, SOME k, c), loc)]
483 end)
478 | DATATYPE dtypes ([(DDatatype dtypes, s (DATATYPEleft, dtypesright))]) 484 | DATATYPE dtypes ([(DDatatype dtypes, s (DATATYPEleft, dtypesright))])
479 | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path 485 | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path
480 (case dargs of 486 (case dargs of
481 [] => [(DDatatypeImp (SYMBOL, CSYMBOL :: #1 path, #2 path), s (DATATYPEleft, pathright))] 487 [] => [(DDatatypeImp (SYMBOL, CSYMBOL :: #1 path, #2 path), s (DATATYPEleft, pathright))]
482 | _ => raise Fail "Arguments specified for imported datatype") 488 | _ => raise Fail "Arguments specified for imported datatype")
754 val (c, k) = cargl2 (cexp, k) 760 val (c, k) = cargl2 (cexp, k)
755 in 761 in
756 (SgiCon (SYMBOL, SOME k, c), loc) 762 (SgiCon (SYMBOL, SOME k, c), loc)
757 end 763 end
758 end) 764 end)
759 | LTYPE SYMBOL EQ cexp ((SgiCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), 765 | LTYPE SYMBOL cargl2 cexpO (let
760 s (LTYPEleft, cexpright))) 766 val loc = s (LTYPEleft, cexpOright)
767
768 val k = (KWild, loc)
769 in
770 case cexpO of
771 NONE => (SgiConAbs (SYMBOL, k), loc)
772 | SOME cexp =>
773 let
774 val (c, k) = cargl2 (cexp, k)
775 in
776 (SgiCon (SYMBOL, SOME k, c), loc)
777 end
778 end)
761 | DATATYPE dtypes ((SgiDatatype dtypes, s (DATATYPEleft, dtypesright))) 779 | DATATYPE dtypes ((SgiDatatype dtypes, s (DATATYPEleft, dtypesright)))
762 | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path 780 | DATATYPE SYMBOL dargs EQ DATATYPE CSYMBOL DOT path
763 (case dargs of 781 (case dargs of
764 [] => (SgiDatatypeImp (SYMBOL, CSYMBOL :: #1 path, #2 path), s (DATATYPEleft, pathright)) 782 [] => (SgiDatatypeImp (SYMBOL, CSYMBOL :: #1 path, #2 path), s (DATATYPEleft, pathright))
765 | _ => raise Fail "Arguments specified for imported datatype") 783 | _ => raise Fail "Arguments specified for imported datatype")