INCLUDE "debug.ml"
open Automaton
-let a = ref None
+
let l = ref [] ;;
let time f x =
let main filename query output =
- Printf.eprintf "Parsing document : %!";
- let v = time Tree.Binary.parse_xml_uri filename in
- MM(v,__LOCATION__);
- a := Some (v);
- a := None;
- Printf.eprintf "Parsing query : ";
- let query = try
- time
- XPath.Parser.parse_string query
- with
- Ulexer.Loc.Exc_located ((x,y),e) -> Printf.eprintf "character %i-%i %s\n" x y (Printexc.to_string e);exit 1
+
+ (* Just a trick to allow the C++ code to print debugging stuff first *)
+ let v = time (fun () -> let v = Tree.Binary.parse_xml_uri filename;
+ in Printf.eprintf "Parsing document : %!";v
+ ) ()
in
- Printf.eprintf "Compiling query : ";
- let auto = time XPath.Compile.compile query in
- XPath.Ast.print Format.err_formatter query;
- Format.eprintf "\n%!";
-(* Format.eprintf "Internal rep of the tree is :\n%!";
- Tree.Binary.dump v; *)
- Printf.eprintf "TopDown (No BackTrack) : \n";
- time (fun v -> ignore (TopDown.accept auto v)) v;
- Printf.eprintf "Number of nodes in the result set : %i\n" (BST.cardinal auto.result);
- begin
- match output with
- | None -> ()
- | Some f ->
-
- Printf.eprintf "Serializing results : ";
+ MM(v,__LOCATION__);
+ Printf.eprintf "Parsing query : ";
+ let query = try
+ time
+ XPath.Parser.parse_string query
+ with
+ Ulexer.Loc.Exc_located ((x,y),e) -> Printf.eprintf "character %i-%i %s\n" x y (Printexc.to_string e);exit 1
+ in
+ Printf.eprintf "Compiling query : ";
+ let auto = time XPath.Compile.compile query in
+ XPath.Ast.print Format.err_formatter query;
+ Format.eprintf "\n%!";
+ (* Format.eprintf "Internal rep of the tree is :\n%!";
+ Tree.Binary.dump v; *)
+ Printf.eprintf "Execution time : ";
+ time (fun v -> ignore (TopDown.accept auto v)) v;
+ Printf.eprintf "Number of nodes in the result set : %i\n" (BST.cardinal auto.result);
+ begin
+ match output with
+ | None -> ()
+ | Some f ->
+
+ Printf.eprintf "Serializing results : ";
time( fun () ->
let oc = open_out f in
output_string oc "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";