Merge branch 'master' of ssh://git.nguyen.vg/home/kim/repository/SXSI/xpathcomp
[SXSI/xpathcomp.git] / src / lextest.ml
diff --git a/src/lextest.ml b/src/lextest.ml
new file mode 100644 (file)
index 0000000..0c297ca
--- /dev/null
@@ -0,0 +1,35 @@
+(* Abstract type for the index, generated from C++ code *)
+
+type index
+
+external build_lex_index : Tree.t -> Tag.t -> index = "caml_build_lex_index"
+external print_lex_index : index -> unit = "caml_print_lex_index"
+
+
+let main () =
+  if Array.length Sys.argv != 3 then
+  let () = Printf.eprintf "Error: invalid argument" in exit 1
+  else
+  let file = Sys.argv.(1) in
+  (* Load the index or the xml file *)
+  Printf.printf "Loading document\n%!";
+  let document =
+    if Filename.check_suffix file ".srx"
+    then Tree.load file
+    else if Filename.check_suffix file ".xml" then Tree.parse_xml_uri file
+    else
+    let () = Printf.eprintf "Error: unrecognized extension" in exit 2
+  in
+  Printf.printf "Building lex index\n%!";
+  let index = build_lex_index document (Tag.tag Sys.argv.(2)) in
+  Printf.printf "Printing lex index\n%!";
+  print_lex_index index;
+  exit 0
+
+
+let () =
+  try
+    main ()
+  with
+    e -> Printf.eprintf "Fatal error: %s" (Printexc.to_string e); exit 3
+