-let () =
- fprintf err_formatter "Query: %a\n%!" Xpath.Ast.print_path query;
- fprintf err_formatter "Automata: %a\n%!" Ata.print auto;
- fprintf err_formatter "Evaluating automaton:\n%!";
+let main () =
+ let () = Options.parse () in
+ let doc =
+ let fd = open_in !Options.input_file in
+ let d = Naive_tree.load_xml_file fd in
+ close_in fd; d
+ in
+ let query =
+ Xpath.Parser.parse (Ulexing.from_latin1_string !Options.query)
+ in
+ let auto =
+ Xpath.Compile.path query
+ in
+ let output =
+ match !Options.output_file with
+ | None | Some "-" | Some "/dev/stdout" -> stdout
+ | Some f -> open_out f
+ in
+ if !Options.stats then begin
+ fprintf err_formatter "@[STATS: Query: %a @]@." Xpath.Ast.print_path query;
+ fprintf err_formatter "@[STATS: @[Automaton: @\n";
+ Ata.print err_formatter auto;
+ fprintf err_formatter "@]@]@.";
+ end;