summaryrefslogtreecommitdiff
path: root/src/urweb.grm
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-11-01 10:47:10 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-11-01 10:47:10 -0400
commit70232ad319a6d86aa1302976919e4c1b126a36f8 (patch)
treea11a164b5f4671f27a3e77a5346b4e981e35b801 /src/urweb.grm
parent4f190e28ca1f36b85cea29ef79b1c9f163779141 (diff)
Parsing 'let'
Diffstat (limited to 'src/urweb.grm')
-rw-r--r--src/urweb.grm12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/urweb.grm b/src/urweb.grm
index 143b6935..1555dc37 100644
--- a/src/urweb.grm
+++ b/src/urweb.grm
@@ -198,6 +198,7 @@ fun tagIn bt =
| TYPE | NAME
| ARROW | LARROW | DARROW | STAR | SEMI
| FN | PLUSPLUS | MINUSMINUS | DOLLAR | TWIDDLE
+ | LET | IN
| STRUCTURE | SIGNATURE | STRUCT | SIG | END | FUNCTOR | WHERE | EXTERN | SQL
| INCLUDE | OPEN | CONSTRAINT | CONSTRAINTS | EXPORT | TABLE | SEQUENCE
| CASE | IF | THEN | ELSE
@@ -272,6 +273,8 @@ fun tagIn bt =
| tag of string * exp
| tagHead of string * exp
| bind of string * con option * exp
+ | edecl of edecl
+ | edecls of edecl list
| earg of exp * con -> exp * con
| eargp of exp * con -> exp * con
@@ -919,6 +922,15 @@ eterm : LPAREN eexp RPAREN (#1 eexp, s (LPARENleft, RPARENright))
| UNDER (EWild, s (UNDERleft, UNDERright))
+ | LET edecls IN eexp END (ELet (edecls, eexp), s (LETleft, ENDright))
+
+edecls : ([])
+ | edecl edecls (edecl :: edecls)
+
+edecl : VAL vali ((EDVal vali, s (VALleft, valiright)))
+ | VAL REC valis ((EDValRec valis, s (VALleft, valisright)))
+ | FUN valis ((EDValRec valis, s (FUNleft, valisright)))
+
enterDml : (inDml := true)
leaveDml : (inDml := false)