Fix regeneration of multi-file dependencies
[hcoop/domtool2.git] / src / ast.sml
index 667a26c..d4c5727 100644 (file)
@@ -1,5 +1,5 @@
 (* HCoop Domtool (http://hcoop.sourceforge.net/)
- * Copyright (c) 2006, Adam Chlipala
+ * Copyright (c) 2006-2007, Adam Chlipala
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -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
@@ -80,7 +80,7 @@ datatype exp' =
        (* Do-nothing action *)
        | ESet of string * exp
        (* Set an environment variable *)
-       | EGet of string * string * exp
+       | EGet of string * typ option * string * exp
        (* Get an environment variable *)
        | ESeq of exp list
        (* Monad sequencer; execute a number of commands in order *)
@@ -89,6 +89,10 @@ 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 *)
+       | EIf of exp * exp * exp
+       (* If..then..else *)
 withtype exp = exp' * position
 
 datatype decl' =
@@ -103,4 +107,17 @@ type file = string option * decl list * exp option
 fun multiApp (f, loc, args) =
     foldl (fn (arg, e) => (EApp (e, arg), loc)) f args
 
+datatype unification_error =
+        UnifyPred of pred * pred
+       | UnifyTyp of typ * typ
+       | UnifyOccurs of string * typ
+
+exception Unify of unification_error
+
+datatype type_error =
+        WrongType of string * exp * typ * typ * unification_error option
+       | WrongForm of string * string * exp * typ * unification_error option
+       | UnboundVariable of string
+       | WrongPred of string * pred * pred
+
 end