Pretty-printing
[hcoop/domtool2.git] / src / ast.sml
index 3fdc22f..91bca42 100644 (file)
@@ -23,18 +23,18 @@ structure Ast = struct
 open DataStructures
 
 (* A description of a predicate on configuration block stacks *)
-datatype context' =
+datatype pred' =
         CRoot
        (* The stack is empty. *)
        | CConst of string
-       (* The given context name is on top of the stack. *)
-       | CPrefix of context
-       (* Some prefix of the stack matches the context. *)
-       | CNot of context
-       (* The context does not match. *)
-       | CAnd of context * context
-       (* Both contexts match. *)
-withtype context = context' * position
+       (* The given pred name is on top of the stack. *)
+       | CPrefix of pred
+       (* Some prefix of the stack matches the pred. *)
+       | CNot of pred
+       (* The pred does not match. *)
+       | CAnd of pred * pred
+       (* Both preds match. *)
+withtype pred = pred' * position
 
 datatype typ' =
         TBase of string
@@ -43,9 +43,9 @@ datatype typ' =
        (* SML 'a list *)
        | TArrow of typ * typ
        (* SML -> *)
-       | TAction of context * record * record
+       | TAction of pred * record * record
        (* An action that:
-       *  - Is valid in the given context
+       *  - Is valid in the given pred
        *  - Expects an environment compatible with the first record
        *  - Modifies it according to the second record *)
 withtype typ = typ' * position
@@ -61,11 +61,15 @@ datatype exp' =
 
        | ELam of string * typ * exp
        (* Function abstraction *)
+       | EVar of string
+       (* Variable bound by a function *)
        | EApp of exp * exp
        (* Function application *)
 
        | ESet of string * exp
        (* Set an environment variable *)
+       | EGet of string * string * exp
+       (* Get an environment variable *)
        | ESeq of exp list
        (* Monad sequencer; execute a number of commands in order *)
        | ELocal of exp