Type-checking goodies in place
[hcoop/domtool2.git] / src / ast.sml
index e62c8fb..b48f13e 100644 (file)
@@ -48,6 +48,10 @@ datatype typ' =
        *  - Is valid in the given pred
        *  - Expects an environment compatible with the first record
        *  - Modifies it according to the second record *)
+       | TNested of pred * pred
+       (* Allow nested configuration, in the form of a function from an action
+       * satisfying the first predicate to an action satisfying the second and
+       * with the same environment variable IO behavior. *)
 
        | TError
        (* Marker that something already went wrong, so don't generate further
@@ -72,6 +76,8 @@ datatype exp' =
        | EApp of exp * exp
        (* Function application *)
 
+       | ESkip
+       (* Do-nothing action *)
        | ESet of string * exp
        (* Set an environment variable *)
        | EGet of string * string * exp
@@ -81,7 +87,15 @@ datatype exp' =
        | ELocal of exp
        (* Local execution; execute the action and then restore the previous
        * environment. *)
+       | EWith of exp * exp
+       (* Apply a TNested to an action *)
 withtype exp = exp' * position
 
+datatype decl' =
+        DExternType of string
+       | DExternVal of string * typ
+type decl = decl' * string option * position
+
+type file = decl list * exp option
 
 end