Parse new `var' primitive
authorClinton Ebadi <clinton@unknownlamer.org>
Wed, 9 Apr 2014 09:50:10 +0000 (05:50 -0400)
committerClinton Ebadi <clinton@unknownlamer.org>
Wed, 9 Apr 2014 18:54:44 +0000 (14:54 -0400)
Binds CSymbol to default for an environment variable.

src/ast.sml
src/domtool.grm
src/domtool.lex

index d4c5727..caa7e9d 100644 (file)
@@ -99,6 +99,7 @@ datatype decl' =
         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
 
index bd2726c..ea6db74 100644 (file)
@@ -34,7 +34,7 @@ open Ast
  | 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
@@ -90,6 +90,8 @@ decl'  : EXTERN TYPE SYMBOL                (DExternType SYMBOL)
        | 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)
index 4f51821..65ceda1 100644 (file)
@@ -138,6 +138,7 @@ lineComment = #[^\n]*\n;
 <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));