Rename the main testing program.
[tatoo.git] / src / main.ml
diff --git a/src/main.ml b/src/main.ml
new file mode 100644 (file)
index 0000000..3216e71
--- /dev/null
@@ -0,0 +1,59 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                               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: <Last modified on 2013-03-05 15:26:51 CET by Kim Nguyen>
+*)
+
+(** use: xml_file "XPath querie"
+    or : xml_file -f XPath_querie_file
+    only the first line of XPath_querie_file is read
+*)
+
+module F = Auto.Formula
+module A = Auto.Ata
+module X = Xpath.Compile
+
+(* to force ocaml build to add Formula to the dependency chain even if
+   we don't use it yet*)
+
+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 results = Naive.eval auto doc (Tree.Naive.root doc) in
+  List.iter (fun n ->
+    Tree.Naive.print_xml stderr doc n;
+    flush stderr;
+    output_string stderr "\n-------------------\n";
+  ) results
+
+