--- /dev/null
+let get_terms () =
+ let terms = ref [] in
+ let lexbuf = Lexing.from_channel stdin in
+ try
+ while true do
+ match CicTextualParser.main CicTextualLexer.token lexbuf with
+ | None -> ()
+ | Some expr -> terms := expr :: ! terms
+ done;
+ ! terms
+ with
+ CicTextualParser0.Eof -> ! terms
+
+let locate name =
+ print_endline (MQueryGenerator.locate name);
+ flush stdout
+
+let rec display = function
+ | [] -> ()
+ | term :: tail ->
+ display tail;
+ print_endline ("? " ^ CicPp.ppterm term ^ "<p>");
+ flush stdout
+
+let rec levels level = function
+ | [] -> ()
+ | term :: tail ->
+ levels level tail;
+ print_endline ("? " ^ CicPp.ppterm term ^ "<p>");
+ print_endline (MQueryGenerator.levels [] [] term level);
+ flush stdout
+
+let rec backward level = function
+ | [] -> ()
+ | term :: tail ->
+ backward level tail;
+ print_endline ("? " ^ CicPp.ppterm term ^ "<p>");
+ print_endline (MQueryGenerator.backward [] [] term level);
+ flush stdout
+
+let parse_args () =
+ let rec parse = function
+ | [] -> ()
+ | ("-l"|"-locate") :: arg :: rem ->
+ locate arg; parse rem
+ | ("-d"|"-display") :: rem ->
+ display (get_terms ())
+ | ("-t"|"-test") :: arg :: rem ->
+ levels (int_of_string arg) (get_terms ())
+ | ("-b"|"-backward") :: arg :: rem ->
+ backward (int_of_string arg) (get_terms ())
+ | _ :: rem -> parse rem
+ in
+ parse (List.tl (Array.to_list Sys.argv))
+
+let _ =
+ CicCooking.init () ;
+ Logger.log_callback :=
+ (Logger.log_to_html
+ ~print_and_flush:(function s -> print_string s ; flush stdout)) ;
+ MQueryGenerator.init ();
+ parse_args ();
+ MQueryGenerator.close ();
+ exit 0
+;;