Mercurial > urweb
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") |