setsa
[hcoop/domtool2.git] / src / ast.sml
index 0c6ddd1..ba00f78 100644 (file)
@@ -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,13 +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