(* *)
(***********************************************************************)
+(*
+ 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
+ only the first line of XPath_querie_file is read
*)
-module F = Formula
+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.load_xml_file fd in
+ let d = Tree.Naive.load_xml_file fd in
close_in fd; d
-
-let query =
+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; q
- else XPath.parse_string arg2
+ 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 query;
- fprintf err_formatter "Document:\n%!";
- Tree.print_xml stderr doc (Tree.root doc);
- exit 0
+ 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
+