X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Ftatoo.ml;fp=src%2Ftatoo.ml;h=d6a198662e3e2af96d27244a1fa99286794ef75c;hp=0000000000000000000000000000000000000000;hb=6733babef61a4e4dc18eca834577b6359f0a1345;hpb=9522266372edb18327f96b21213b4efc3798ee98 diff --git a/src/tatoo.ml b/src/tatoo.ml new file mode 100644 index 0000000..d6a1986 --- /dev/null +++ b/src/tatoo.ml @@ -0,0 +1,52 @@ +(***********************************************************************) +(* *) +(* TAToo *) +(* *) +(* Kim Nguyen, LRI UMR8623 *) +(* Université Paris-Sud & CNRS *) +(* *) +(* Copyright 2010-2012 Université Paris-Sud and Centre National de la *) +(* Recherche Scientifique. All rights reserved. This file is *) +(* distributed under the terms of the GNU Lesser General Public *) +(* License, with the special exception on linking described in file *) +(* ../LICENSE. *) +(* *) +(***********************************************************************) + +(* + Time-stamp: +*) + +let doc = + let fd = open_in Sys.argv.(1) in + let d = Tree.Naive.load_xml_file fd in + close_in fd; d + + +let query = + let arg2 = Sys.argv.(2) in + Xpath.Parser.parse (Ulexing.from_latin1_string arg2) + +let auto = + Xpath.Compile.path query + +open Format + +let () = + fprintf err_formatter "Query: %a\n%!" Xpath.Ast.print_path query; + fprintf err_formatter "Automata: %a\n%!" Auto.Ata.print auto; + fprintf err_formatter "Evaluating automaton:\n%!"; + let module Naive = Auto.Eval.Make(Tree.Naive) in + let t1 = Unix.gettimeofday() in + let results = Naive.eval auto doc (Tree.Naive.root doc) in + let teval = (Unix.gettimeofday () -. t1) *. 1000. in + let t1 = Unix.gettimeofday () in + output_string stdout "\n"; + List.iter (fun n -> + Tree.Naive.print_xml stdout doc n; + output_char stdout '\n' + ) results; + output_string stdout "\n"; + let tprint = (Unix.gettimeofday () -. t1) *. 1000. in + flush stdout; + fprintf err_formatter "evaluation time: %fms\nserialization time: %fms\n%!" teval tprint