summaryrefslogtreecommitdiff
path: root/src/lacweb.grm
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-06-19 15:15:00 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-06-19 15:15:00 -0400
commit5a4ddea95a551c5f95f0dcbda433fe457b61d25a (patch)
tree60135c04bf54aba0d443ec39a4dc37ec0f399852 /src/lacweb.grm
parent8e98be7de2dd3db541994aae47aeb45756f60098 (diff)
Functor parsing
Diffstat (limited to 'src/lacweb.grm')
-rw-r--r--src/lacweb.grm8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lacweb.grm b/src/lacweb.grm
index f8f54fca..ea40c236 100644
--- a/src/lacweb.grm
+++ b/src/lacweb.grm
@@ -44,7 +44,7 @@ val s = ErrorMsg.spanOf
| TYPE | NAME
| ARROW | LARROW | DARROW
| FN | PLUSPLUS | DOLLAR
- | STRUCTURE | SIGNATURE | STRUCT | SIG | END
+ | STRUCTURE | SIGNATURE | STRUCT | SIG | END | FUNCTOR
%nonterm
file of decl list
@@ -113,6 +113,8 @@ decl : CON SYMBOL EQ cexp (DCon (SYMBOL, NONE, cexp), s (CONleft,
sgn : SIG sgis END (SgnConst sgis, s (SIGleft, ENDright))
| CSYMBOL (SgnVar CSYMBOL, s (CSYMBOLleft, CSYMBOLright))
+ | FUNCTOR LPAREN CSYMBOL COLON sgn RPAREN COLON sgn
+ (SgnFun (CSYMBOL, sgn1, sgn2), s (FUNCTORleft, sgn2right))
sgi : CON SYMBOL DCOLON kind (SgiConAbs (SYMBOL, kind), s (CONleft, kindright))
| LTYPE SYMBOL (SgiConAbs (SYMBOL, (KType, s (LTYPEleft, SYMBOLright))),
@@ -130,6 +132,10 @@ sgis : ([])
str : STRUCT decls END (StrConst decls, s (STRUCTleft, ENDright))
| spath (spath)
+ | FUNCTOR LPAREN CSYMBOL COLON sgn RPAREN DARROW str
+ (StrFun (CSYMBOL, sgn, NONE, str), s (FUNCTORleft, strright))
+ | FUNCTOR LPAREN CSYMBOL COLON sgn RPAREN COLON sgn DARROW str
+ (StrFun (CSYMBOL, sgn1, SOME sgn2, str), s (FUNCTORleft, strright))
spath : CSYMBOL (StrVar CSYMBOL, s (CSYMBOLleft, CSYMBOLright))
| spath DOT CSYMBOL (StrProj (spath, CSYMBOL), s (spathleft, CSYMBOLright))