# HG changeset patch # User Adam Chlipala # Date 1201384299 18000 # Node ID 2ce5bf227d0186f13754ced4a48b10deaf7a4d9c # Parent 38bf996e1c2e383285f2f574259687caeddb5150 Add type keyword diff -r 38bf996e1c2e -r 2ce5bf227d01 src/lacweb.grm --- a/src/lacweb.grm Sat Jan 26 16:44:39 2008 -0500 +++ b/src/lacweb.grm Sat Jan 26 16:51:39 2008 -0500 @@ -39,7 +39,8 @@ | SYMBOL of string | CSYMBOL of string | LPAREN | RPAREN | LBRACK | RBRACK | LBRACE | RBRACE | EQ | COMMA | COLON | DCOLON | TCOLON | DOT | HASH - | CON | TYPE | NAME + | CON | LTYPE + | TYPE | NAME | ARROW | LARROW | DARROW | FN | PLUSPLUS | DOLLAR @@ -85,6 +86,8 @@ decl : CON SYMBOL EQ cexp (DCon (SYMBOL, NONE, cexp), s (CONleft, cexpright)) | CON SYMBOL DCOLON kind EQ cexp (DCon (SYMBOL, SOME kind, cexp), s (CONleft, cexpright)) + | LTYPE SYMBOL EQ cexp (DCon (SYMBOL, SOME (KType, s (LTYPEleft, cexpright)), cexp), + s (LTYPEleft, cexpright)) kind : TYPE (KType, s (TYPEleft, TYPEright)) | NAME (KName, s (NAMEleft, NAMEright)) diff -r 38bf996e1c2e -r 2ce5bf227d01 src/lacweb.lex --- a/src/lacweb.lex Sat Jan 26 16:44:39 2008 -0500 +++ b/src/lacweb.lex Sat Jan 26 16:51:39 2008 -0500 @@ -109,6 +109,7 @@ "#" => (Tokens.HASH (yypos, yypos + size yytext)); "con" => (Tokens.CON (yypos, yypos + size yytext)); + "type" => (Tokens.LTYPE (yypos, yypos + size yytext)); "fn" => (Tokens.FN (yypos, yypos + size yytext)); "Type" => (Tokens.TYPE (yypos, yypos + size yytext)); diff -r 38bf996e1c2e -r 2ce5bf227d01 tests/stuff.lac --- a/tests/stuff.lac Sat Jan 26 16:44:39 2008 -0500 +++ b/tests/stuff.lac Sat Jan 26 16:51:39 2008 -0500 @@ -1,4 +1,4 @@ -con c1 = t :: Type -> t +type c1 = t :: Type -> t con c2 :: Type = t :: Type -> t con c3 = fn t :: Type => c1 con c4 = c3 c1