X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/492c1cff68a2da969a559627725369c211470c92..9ffe2f0fea48f1e2fa6a30b6a79b975b4a6f7671:/src/ast.sml diff --git a/src/ast.sml b/src/ast.sml index bd87121..ba00f78 100644 --- a/src/ast.sml +++ b/src/ast.sml @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*) + *) (* Configuration language abstract syntax *) @@ -59,7 +59,7 @@ datatype typ' = | TUnif of string * typ option ref (* Unification variable to be determined during type-checking *) withtype typ = typ' * position - and record = typ StringMap.map + and record = (typ' * position) StringMap.map datatype exp' = EInt of int @@ -89,14 +89,20 @@ datatype exp' = * action are abandoned *) | EWith of exp * exp (* Apply a TNested to an action *) + | EALam of string * pred * exp + (* Abstraction for building TNested values *) withtype exp = exp' * position datatype decl' = DExternType of string | DExternVal of string * typ | DVal of string * typ option * exp + | DContext of string type decl = decl' * string option * position -type file = decl list * exp option +type file = string option * decl list * exp option + +fun multiApp (f, loc, args) = + foldl (fn (arg, e) => (EApp (e, arg), loc)) f args end