]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/interface/cicParser2.ml
First very partial implementation of LetIn and bodyed Variables
[helm.git] / helm / interface / cicParser2.ml
index 343e22b1913f041924c36b8b8c8677817a4566b0..d5ee18be08d00a44f664849f071edf8840aff1bb 100644 (file)
@@ -239,12 +239,26 @@ let rec get_term n =
         res
   | D.T_element "Variable" ->
      let name = string_of_attr (n#attribute "name")
-     and xid = string_of_attr (n#attribute "id") in
-      let typ = (get_content (get_content n))#extension#to_cic_term in
-       let res = C.AVariable (xid,ref None,name,typ) in
-        register_id xid res ;
-        res
+     and xid = string_of_attr (n#attribute "id")
+     and (body, typ) = 
+      let sons = n#sub_nodes in
+       match sons with
+          [b ; t] when
+            b#node_type = D.T_element "body" &&
+            t#node_type = D.T_element "type" ->
+             let b' = get_content b
+             and t' = get_content t in
+              (Some (b'#extension#to_cic_term), t'#extension#to_cic_term)
+        | [t] when t#node_type = D.T_element "type" ->
+             let t' = get_content t in
+              (None, t'#extension#to_cic_term)
+        | _ -> raise (IllFormedXml 6)
+     in
+      let res = C.AVariable (xid,ref None,name,body,typ) in
+       register_id xid res ;
+       res
   | D.T_element _
-  | D.T_data ->
+  | D.T_data
+  | _ ->
      raise (IllFormedXml 7)
 ;;