DExternType of string
| DExternVal of string * typ
| DVal of string * typ option * exp
+ | DEnv of string * typ option * exp
| DContext of string
type decl = decl' * string option * position
| EQ | COMMA | BSLASH | BSLASHBSLASH | SEMI | LET | IN | BEGIN | END
| IF | THEN | ELSE
| ROOT | SKIP
- | EXTERN | TYPE | VAL | WITH | WHERE | CONTEXT
+ | EXTERN | TYPE | VAL | ENV | WITH | WHERE | CONTEXT
%nonterm
file of file
| EXTERN VAL SYMBOL COLON typ (DExternVal (SYMBOL, typ))
| VAL SYMBOL EQ exp (DVal (SYMBOL, NONE, exp))
| VAL SYMBOL COLON typ EQ exp (DVal (SYMBOL, SOME typ, exp))
+ | ENV CSYMBOL EQ exp (DEnv (CSYMBOL, NONE, exp))
+ | ENV CSYMBOL COLON typ EQ exp (DEnv (CSYMBOL, SOME typ, exp))
| CONTEXT CSYMBOL (DContext CSYMBOL)
docOpt : (NONE)
<INITIAL> "extern" => (Tokens.EXTERN (yypos, yypos + size yytext));
<INITIAL> "type" => (Tokens.TYPE (yypos, yypos + size yytext));
<INITIAL> "val" => (Tokens.VAL (yypos, yypos + size yytext));
+<INITIAL> "var" => (Tokens.ENV (yypos, yypos + size yytext));
<INITIAL> "context" => (Tokens.CONTEXT (yypos, yypos + size yytext));
<INITIAL> "Root" => (Tokens.ROOT (yypos, yypos + size yytext));