X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Finterface%2FcicParser2.ml;h=562f79bba66150b0e5aea5c2e2c5cd5a5feaf856;hb=85ccebb566c36671ca753debe09e6dd5c9dd0df7;hp=343e22b1913f041924c36b8b8c8677817a4566b0;hpb=c01d2aaea05f7385bee46addd900cd0397756389;p=helm.git diff --git a/helm/interface/cicParser2.ml b/helm/interface/cicParser2.ml index 343e22b19..562f79bba 100644 --- a/helm/interface/cicParser2.ml +++ b/helm/interface/cicParser2.ml @@ -1,3 +1,28 @@ +(* Copyright (C) 2000, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://cs.unibo.it/helm/. + *) + (******************************************************************************) (* *) (* PROJECT HELM *) @@ -239,12 +264,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) ;;