]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic/cicParser.ml
- implemented CicPushParser which parser CIC objects using Expat
[helm.git] / helm / ocaml / cic / cicParser.ml
index 64ee58427b4bfb8c571b9e62f630e6425117010b..c46a20a982d68c260f61eb6ce4e55ae81462db15 100644 (file)
@@ -1,4 +1,4 @@
-(* Copyright (C) 2000, HELM Team.
+(* Copyright (C) 2000-2005, HELM Team.
  * 
  * This file is part of HELM, an Hypertextual, Electronic
  * Library of Mathematics, developed at the Computer Science
  * http://cs.unibo.it/helm/.
  *)
 
-(******************************************************************************)
-(*                                                                            *)
-(*                               PROJECT HELM                                 *)
-(*                                                                            *)
-(*                Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
-(*                                 24/01/2000                                 *)
-(*                                                                            *)
-(* This is the main (top level) module of a parser for cic objects from xml   *)
-(* files to the internal representation. It uses the modules cicParser2       *)
-(* (objects level) and cicParser3 (terms level)                               *)
-(*                                                                            *)
-(******************************************************************************)
-
-exception Getter_failure of string * string
-exception Parser_failure of string
-
-  (** tries to recover from a parse error caused by the parsing of a getter
-  * error message (e.g. Key_not_found exception). Unfortunately we have to
-  * re-parse xml document to extract exception data *)
-let try_recover exn filename =
-  let rc = ref None in
-  (try
-    let entity_manager =
-      Pxp_ev_parser.create_entity_manager ~is_document:true
-        PxpHelmConf.pxp_config (Pxp_types.from_file filename)
-    in
-    let pull_parser =
-      Pxp_ev_parser.create_pull_parser PxpHelmConf.pxp_config
-        (`Entry_document []) entity_manager
-    in
-    let rec find_exn p =
-      match p () with
-      | None -> ()
-      | Some (Pxp_types.E_start_tag ("html", attrs, _, _)) ->
-          let exn = List.assoc "helm:exception" attrs in
-          let arg =
-            try List.assoc "helm:exception_arg" attrs with Not_found -> ""
-          in
-          rc := Some (Getter_failure (exn, arg))
-      | _ -> find_exn p
-    in
-    find_exn pull_parser
-  with _ -> raise (Parser_failure (Printexc.to_string exn)));
-  match !rc with
-  | None -> raise (Parser_failure (Printexc.to_string exn))
-  | Some exn -> raise exn
-
-let parse_document filename =
-  try
-    Pxp_tree_parser.parse_document_entity PxpHelmConf.pxp_config
-      (Pxp_types.from_file ~alt:[PxpUrlResolver.url_resolver] filename)
-      CicParser3.domspec
-  with exn ->
-    raise (try_recover exn filename)
-
-(* given the filename of an xml file of a cic object it returns its internal *)
-(* representation.                                                           *)
-let annobj_of_xml filename filenamebody =
-  let root, rootbody =
-    let doc = parse_document filename in
-    let docroot = doc#root in
-     match filenamebody with
-        None -> docroot,None
-      | Some filename ->
-         let docbody = parse_document filename in
-         docroot,Some docbody#root
-  in
-   CicParser2.get_term root rootbody
-
-let obj_of_xml filename filenamebody =
- Deannotate.deannotate_obj (annobj_of_xml filename filenamebody)
+include CicPushParser.CicParser