Fix but in test.ml
[tatoo.git] / src / test.ml
index 770d4c5..7d6bf58 100644 (file)
 (***********************************************************************)
 
 
-module F = Formula
-(* to force ocaml build to add Formula to the dependency chain even if
-   we don't use it yet*)
+(** use: xml_file "XPath querie"
+    or : xml_file -f XPath_querie_file
+    only the first line of XPath_querie_file is read 
+*)
 
-let doc =
+open Format
+
+let doc () =
   let fd = open_in Sys.argv.(1) in
   let d = Tree.load_xml_file fd in
-  close_in fd; d
-
-
-
-let query = XPath.parse Sys.argv.(2)
-
-open Format
+  close_in fd;
+  fprintf err_formatter "Parse Tree OK ! ";
+  d
+
+
+let query () = 
+  let arg2 = Sys.argv.(2) in
+  if arg2 = "-f"
+  then  let fq = open_in Sys.argv.(3) in
+       let q = XPath.parse_file fq in
+       close_in fq;
+       fprintf err_formatter "Parse query OK ! ";
+       q
+  else let q = XPath.parse_string arg2 in
+       fprintf err_formatter "Parse query OK ! ";
+       q
+
+let build_asta query =
+  let asta = Compil.trans query in
+  fprintf err_formatter "Compil OK !\n";
+  asta
 
 let () =
-  fprintf err_formatter "Query: %a\n%!" XPath.Ast.print query;
-  fprintf err_formatter "Document:\n%!";
+  let query = query () in
+  let doc = doc () in
+  let asta = build_asta query in
+  fprintf err_formatter "@[<v 0> ##### Query #####@.      %a@]@ "
+    XPath.Ast.print query;
+  Asta.print err_formatter asta;
+  output_string stderr "\n##### Doc #####\n";
   Tree.print_xml stderr doc (Tree.root doc);
+  output_string stderr "\n";
   exit 0