X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/db427c6775f4d2babcabadbbea93117f593259c6..234b917a6149413bbbeab7dccfaeab5f16e43fe1:/src/ast.sml diff --git a/src/ast.sml b/src/ast.sml index e62c8fb..b48f13e 100644 --- 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 *) + | 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