projects
/
tatoo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add tests for parallel query evaluation.
[tatoo.git]
/
src
/
naive_tree.ml
diff --git
a/src/naive_tree.ml
b/src/naive_tree.ml
index
b7c0be6
..
6625be0
100644
(file)
--- a/
src/naive_tree.ml
+++ b/
src/naive_tree.ml
@@
-13,10
+13,6
@@
(* *)
(***********************************************************************)
(* *)
(***********************************************************************)
-(*
- Time-stamp: <Last modified on 2013-04-04 18:47:30 CEST by Kim Nguyen>
-*)
-
type node = {
tag : QName.t;
preorder : int;
type node = {
tag : QName.t;
preorder : int;
@@
-208,20
+204,29
@@
struct
let node = top ctx in
node.next_sibling <- nil;
consume_closing ctx node;
let node = top ctx in
node.next_sibling <- nil;
consume_closing ctx node;
- match ctx.stack with
- [ root ] ->
- root.next_sibling <- nil;
- { root = root;
- size = ctx.current_preorder
- }
- | _ -> raise (Expat.Expat_error Expat.UNCLOSED_TOKEN)
+ Expat.final psr;
+ let root = List.hd ctx.stack in
+ root.next_sibling <- nil;
+ { root = root;
+ size = ctx.current_preorder
+ }
)
)
+ let error e parser_ =
+ let msg = Printf.sprintf "%i.%i %s"
+ (Expat.get_current_line_number parser_)
+ (Expat.get_current_column_number parser_)
+ (Expat.xml_error_to_string e)
+ in
+ raise (Tree.Parse_error msg)
let parse_string s =
let parser_, finalize = create_parser () in
let parse_string s =
let parser_, finalize = create_parser () in
- Expat.parse parser_ s;
- finalize ()
+ try
+ Expat.parse parser_ s;
+ finalize ()
+ with
+ Expat.Expat_error e -> error e parser_
let parse_file fd =
let buffer = String.create 4096 in
let parse_file fd =
let buffer = String.create 4096 in
@@
-231,7
+236,10
@@
struct
if read != 0 then
let () = Expat.parse_sub parser_ buffer 0 read in
loop ()
if read != 0 then
let () = Expat.parse_sub parser_ buffer 0 read in
loop ()
- in loop (); finalize ()
+ in try
+ loop (); finalize ()
+ with
+ Expat.Expat_error e -> error e parser_
end
end