let index_empty_texts = ref false let sample_factor = ref 64 let disable_text_collection = ref false let tc_threshold = ref 60000 let query = ref "" let input_file = ref "" let output_file = ref None let save_file = ref "" let count_only = ref false let time = ref false let bottom_up = ref false let no_jump = ref false let verbose = ref false let text_index_type = ref 0 let set_index_type = function | "default" -> text_index_type := 0 | "swcsa" -> text_index_type := 1 | "rlcsa" -> text_index_type := 2 | s -> raise (Arg.Bad(s)) let usage_msg = Printf.sprintf "%s [options] 'query' [output]" Sys.argv.(0) let pos = ref 0 let anon_fun = fun s -> match !pos with | 0 -> input_file:= s;incr pos | 1 -> query := s; incr pos | 2 -> output_file := Some s; incr pos | _ -> raise (Arg.Bad(s)) let spec = Arg.align [ "-c", Arg.Set(count_only), " counting only (don't materialize the result set)"; "-f", Arg.Set_int(sample_factor), " sample factor [default=64]"; "-i", Arg.Set(index_empty_texts), " index empty texts [default=false]"; "-d", Arg.Set(disable_text_collection), " disable text collection[default=false]"; "-s", Arg.Set_string(save_file), " save the intermediate representation into file.srx"; "-b", Arg.Set(bottom_up), " real bottom up run"; "-nj", Arg.Set(no_jump), " disable jumping"; "-index-type", Arg.Symbol ([ "default"; "swcsa"; "rlcsa" ], set_index_type), " choose text index type"; "-v", Arg.Set(verbose), " verbose mode"; ] let parse_cmdline() = let _ = Arg.parse spec anon_fun usage_msg in if (!pos > 3 || !pos < 2) then begin Arg.usage spec usage_msg; exit 1 end