]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/interface/cicParser3.ml
First very partial implementation of LetIn and bodyed Variables
[helm.git] / helm / interface / cicParser3.ml
index d0c31b0f0361c0ed0fa9344e6cd1f9f7800cd9bd..6e002b14324e4a86ca0f6a5504b2fb97533c1ab1 100644 (file)
@@ -476,6 +476,29 @@ class eltype_lambda =
   end
 ;;
 
+class eltype_letin =
+  object (self)
+
+    inherit cic_term
+
+    method to_cic_term =
+     let n = self#node in
+      let sons = n#sub_nodes
+      and id = string_of_xml_attr (n#attribute "id") in
+       match sons with
+          [s ; t] when
+            s#node_type = Pxp_document.T_element "term" &&
+            t#node_type = Pxp_document.T_element "letintarget" ->
+             let name = cic_attr_of_xml_attr (t#attribute "binder")
+             and source = s#extension#to_cic_term
+             and target = t#extension#to_cic_term in
+              let res = Cic.ALetIn (id,ref None,name,source,target) in
+               register_id id res ;
+               res
+        | _  -> raise (IllFormedXml 12)
+  end
+;;
+
 (* The definition of domspec, an hashtable that maps each node type to the *)
 (* object that must be linked to it. Used by markup.                       *)
 
@@ -493,6 +516,7 @@ let domspec =
       "CAST",          (new D.element_impl (new eltype_cast)) ;
       "PROD",          (new D.element_impl (new eltype_prod)) ;
       "LAMBDA",        (new D.element_impl (new eltype_lambda)) ;
+      "LETIN",         (new D.element_impl (new eltype_letin)) ;
       "APPLY",         (new D.element_impl (new eltype_apply)) ;
       "CONST",         (new D.element_impl (new eltype_const)) ;
       "ABST",          (new D.element_impl (new eltype_abst)) ;