HCoop
/
hcoop
/
domtool2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Type-checking goodies in place
[hcoop/domtool2.git]
/
src
/
ast.sml
diff --git
a/src/ast.sml
b/src/ast.sml
index
e62c8fb
..
b48f13e
100644
(file)
--- a/
src/ast.sml
+++ b/
src/ast.sml
@@
-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 *)
* - 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
| TError
(* Marker that something already went wrong, so don't generate further
@@
-72,6
+76,8
@@
datatype exp' =
| EApp of exp * exp
(* Function application *)
| EApp of exp * exp
(* Function application *)
+ | ESkip
+ (* Do-nothing action *)
| ESet of string * exp
(* Set an environment variable *)
| EGet of string * string * exp
| 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. *)
| 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
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
end