diff options
Diffstat (limited to 'src/lacweb.grm')
-rw-r--r-- | src/lacweb.grm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lacweb.grm b/src/lacweb.grm index f1cb5ce3..0ca7298d 100644 --- a/src/lacweb.grm +++ b/src/lacweb.grm @@ -34,6 +34,11 @@ val s = ErrorMsg.spanOf fun uppercaseFirst "" = "" | uppercaseFirst s = str (Char.toUpper (String.sub (s, 0))) ^ String.extract (s, 1, NONE) +fun entable t = + case #1 t of + TRecord c => c + | _ => t + %% %header (functor LacwebLrValsFn(structure Token : TOKEN)) @@ -50,7 +55,7 @@ fun uppercaseFirst "" = "" | ARROW | LARROW | DARROW | STAR | FN | PLUSPLUS | MINUSMINUS | DOLLAR | TWIDDLE | STRUCTURE | SIGNATURE | STRUCT | SIG | END | FUNCTOR | WHERE | EXTERN - | INCLUDE | OPEN | CONSTRAINT | CONSTRAINTS | EXPORT + | INCLUDE | OPEN | CONSTRAINT | CONSTRAINTS | EXPORT | TABLE | CASE | IF | THEN | ELSE | XML_BEGIN of string | XML_END @@ -177,6 +182,7 @@ decl : CON SYMBOL EQ cexp (DCon (SYMBOL, NONE, cexp), s (CONleft, | m :: ms => (DOpenConstraints (m, ms), s (OPENleft, mpathright))) | CONSTRAINT cterm TWIDDLE cterm (DConstraint (cterm1, cterm2), s (CONSTRAINTleft, ctermright)) | EXPORT spath (DExport spath, s (EXPORTleft, spathright)) + | TABLE SYMBOL COLON cexp (DTable (SYMBOL, entable cexp), s (TABLEleft, cexpright)) dargs : ([]) | SYMBOL dargs (SYMBOL :: dargs) @@ -234,6 +240,7 @@ sgi : CON SYMBOL DCOLON kind (SgiConAbs (SYMBOL, kind), s (CONleft, k s (FUNCTORleft, sgn2right)) | INCLUDE sgn (SgiInclude sgn, s (INCLUDEleft, sgnright)) | CONSTRAINT cterm TWIDDLE cterm (SgiConstraint (cterm1, cterm2), s (CONSTRAINTleft, ctermright)) + | TABLE SYMBOL COLON cexp (SgiTable (SYMBOL, entable cexp), s (TABLEleft, cexpright)) sgis : ([]) | sgi sgis (sgi :: sgis) |