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 backward = ref false let usage_msg = Printf.sprintf "%s '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 = [ "-c", Arg.Set(count_only), "counting only (don't materialize the result set)"; "-t", Arg.Set(time), "print timing statistics"; "-max-tc", Arg.Set_int(tc_threshold), "set maximum count for which the TextCollection is used"; "-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(backward), "real bottom up run"; ] 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