]> matita.cs.unibo.it Git - helm.git/commitdiff
added Parse_error exception and pretty printing of Expat errors
authorStefano Zacchiroli <zack@upsilon.cc>
Wed, 11 May 2005 16:34:48 +0000 (16:34 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Wed, 11 May 2005 16:34:48 +0000 (16:34 +0000)
helm/ocaml/xml/xmlPushParser.ml
helm/ocaml/xml/xmlPushParser.mli

index ae93f4e6a4ff6d352d301ba2582eccc461a41a4e..6cab0ead3c6980aee30f001808c068ff5b440e5b 100644 (file)
@@ -53,6 +53,8 @@ type position = int * int
 
 type xml_parser = Expat.expat_parser
 
+exception Parse_error of string
+
 let create_parser callbacks =
   let expat_parser = Expat.parser_create ~encoding:None in
   (match callbacks.start_element with
@@ -106,3 +108,9 @@ let parse expat_parser =
   in
   aux
 
+let parse expat_parser xml_source =
+  try
+    parse expat_parser xml_source
+  with Expat.Expat_error xml_error ->
+    raise (Parse_error (Expat.xml_error_to_string xml_error))
+
index 0bbd2203d18a953b649d62d998b2043db139e43a..cbad83c7250aa77a32d5e13516ba23ad7b052c67 100644 (file)
@@ -55,15 +55,22 @@ type position = int * int
 
 type xml_parser
 
+  (** raised when a parse error occurs, argument is an error message.
+   * This exception carries no position information, but it should be get using
+   * get_position below *)
+exception Parse_error of string
+
   (** Create a push parser which invokes the given callbacks *)
 val create_parser: callbacks -> xml_parser
 
-  (** Parse XML data from a given source with a given parser *)
+  (** Parse XML data from a given source with a given parser
+    * @raise Parse_error *)
 val parse: xml_parser -> xml_source -> unit
 
   (** Inform the farser that parsing is completed, needed only when source is
    * `String, for other sources it is automatically invoked when the end of file
-   * is reached *)
+   * is reached
+   * @raise Parse_error *)
 val final: xml_parser -> unit
 
   (** @return current <line, column> pair *)