Parse new `var' primitive
[hcoop/domtool2.git] / src / ast.sml
index 0e8688d..caa7e9d 100644 (file)
@@ -1,5 +1,5 @@
 (* HCoop Domtool (http://hcoop.sourceforge.net/)
- * Copyright (c) 2006, Adam Chlipala
+ * Copyright (c) 2006-2007, Adam Chlipala
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -80,7 +80,7 @@ datatype exp' =
        (* Do-nothing action *)
        | ESet of string * exp
        (* Set an environment variable *)
-       | EGet of string * string * exp
+       | EGet of string * typ option * string * exp
        (* Get an environment variable *)
        | ESeq of exp list
        (* Monad sequencer; execute a number of commands in order *)
@@ -91,12 +91,15 @@ datatype exp' =
        (* Apply a TNested to an action *)
        | EALam of string * pred * exp
        (* Abstraction for building TNested values *)
+       | EIf of exp * exp * exp
+       (* If..then..else *)
 withtype exp = exp' * position
 
 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