X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic%2FcicParser.ml;h=5ad48b0799d5906f458d5123f211781648f15104;hb=c428cf3c7e3652e0674610d87b675accd21fa427;hp=f0d3e800fe11f84a44944119866c8374c393e142;hpb=ae326f646ef4c01b43d6da04201b427d1e175400;p=helm.git diff --git a/helm/ocaml/cic/cicParser.ml b/helm/ocaml/cic/cicParser.ml index f0d3e800f..5ad48b079 100644 --- a/helm/ocaml/cic/cicParser.ml +++ b/helm/ocaml/cic/cicParser.ml @@ -36,57 +36,37 @@ (* *) (******************************************************************************) -exception Warnings;; - -class warner = - object - method warn w = - print_endline ("WARNING: " ^ w) ; - (raise Warnings : unit) - end -;; - -exception EmptyUri;; - -(* given an uri u it returns the list of tokens of the base uri of u *) -(* e.g.: token_of_uri "cic:/a/b/c/d.xml" returns ["a" ; "b" ; "c"] *) -let tokens_of_uri uri = - let uri' = UriManager.string_of_uri uri in - let rec chop_list = - function - [] -> raise EmptyUri - | he::[fn] -> [he] - | he::tl -> he::(chop_list tl) - in - let trimmed_uri = Str.replace_first (Str.regexp "cic:") "" uri' in - let list_of_tokens = Str.split (Str.regexp "/") trimmed_uri in - chop_list list_of_tokens -;; +exception EmptyUri of string (* given the filename of an xml file of a cic object it returns its internal *) (* representation. *) -let annobj_of_xml filename uri = - let module Y = Pxp_yacc in +let annobj_of_xml filename filenamebody = try - let d = - (* sets the current base uri to resolve relative URIs *) - CicParser3.current_sp := tokens_of_uri uri ; - CicParser3.current_uri := uri ; - let config = {Y.default_config with Y.warner = new warner} in - Y.parse_document_entity config -(*PXP (Y.ExtID (Pxp_types.System filename, - new Pxp_reader.resolve_as_file ~url_of_id ())) -*) (PxpUriResolver.from_file filename) - CicParser3.domspec + let root, rootbody = + let config = PxpHelmConf.pxp_config in + let doc = + Pxp_tree_parser.parse_document_entity config + (Pxp_types.from_file ~alt:[PxpUrlResolver.url_resolver] filename) + CicParser3.domspec in + let docroot = doc#root in + match filenamebody with + None -> docroot,None + | Some filename -> + let docbody = + Pxp_tree_parser.parse_document_entity config + (Pxp_types.from_file ~alt:[PxpUrlResolver.url_resolver] filename) + CicParser3.domspec + in + docroot,Some docbody#root in - CicParser2.get_term d#root + CicParser2.get_term root rootbody with e -> - print_endline ("Filename: " ^ filename ^ "\nException: ") ; - print_endline (Pxp_types.string_of_exn e) ; + prerr_endline ("Filenames: " ^ filename ^ + (match filenamebody with None -> "" | Some s -> ", " ^ s)) ; + prerr_endline ("Exception: " ^ Pxp_types.string_of_exn e) ; raise e -;; -let obj_of_xml filename uri = - Deannotate.deannotate_obj (annobj_of_xml filename uri) -;; +let obj_of_xml filename filenamebody = + Deannotate.deannotate_obj (annobj_of_xml filename filenamebody) +