aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/tradv8.ml4
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tradv8.ml4')
-rw-r--r--doc/tradv8.ml4105
1 files changed, 0 insertions, 105 deletions
diff --git a/doc/tradv8.ml4 b/doc/tradv8.ml4
deleted file mode 100644
index f050f7537..000000000
--- a/doc/tradv8.ml4
+++ /dev/null
@@ -1,105 +0,0 @@
-
-open Printf
-
-let file = Sys.argv.(1)
-
-let cin = open_in file
-let cout = open_out (file ^ ".v8")
-
-let (coq_out, coq_in) as chan = Unix.open_process "coqtop -translate"
-
-let begin_coq =
- Str.regexp
- "\\\\begin{coq_\\(example\\|example\\*\\|example\\#\\|eval\\)}[ \t]*$"
-
-let end_coq =
- Str.regexp
- "\\\\end{coq_\\(example\\|example\\*\\|example\\#\\|eval\\)}[ \t]*$"
-
-let new_syntax =
- Str.regexp "New Syntax:[ \t]*$"
-
-(* on envoie un Check O et on saute les 2 premiers New Syntax *)
-let _ =
- output_string coq_in "Check O.\n";
- flush coq_in;
- while not (Str.string_match new_syntax (input_line coq_out) 0) do () done;
- while not (Str.string_match new_syntax (input_line coq_out) 0) do () done;
- printf "** init terminée\n"; flush stdout
-
-let iter_char_until_dot cin f =
- printf "** entrée dans iter_char\n"; flush stdout;
- let last_c = ref ' ' in
- let rec loop () =
- let c = input_char cin in
- printf "[%c]" c; flush stdout;
- f c;
- if !last_c = '.' && (c = ' ' || c = '\t' || c = '\n') then
- ()
- else begin
- last_c := c;
- loop ()
- end
- in
- loop ()
-
-let trad_commands () =
- (* on copie toutes les commandes dans un fichier temporaire *)
- let tmp = Filename.temp_file "trad" ".v" in
- let tmp_in, end_s =
- let tmp_out = open_out tmp in
- let rec loop () =
- let s = input_line cin in
- if Str.string_match end_coq s 0 then begin
- close_out tmp_out;
- open_in tmp, s
- end else begin
- output_string tmp_out (s ^ "\n");
- loop ()
- end
- in
- loop ()
- in
- ignore (Sys.command (Printf.sprintf "cat %s" tmp));
- let one_command () =
- (* on envoie toute la commande a Coq *)
- iter_char_until_dot tmp_in (fun c -> output_char coq_in c);
- (* on flush *)
- flush coq_in;
- (* on lit la réponse *)
- try
- (* 1. on cherche la ligne "New Syntax:" *)
- while true do
- let s = input_line coq_out in
- if Str.string_match new_syntax s 0 then raise Exit
- done
- with Exit ->
- (* 2. on copie tout jusqu'au point *)
- printf "** New Syntax trouvé\n"; flush stdout;
- iter_char_until_dot coq_out (fun c -> output_char cout c);
- printf "** copie terminée\n"; flush stdout;
- flush cout
- in
- try
- while true do one_command () done; assert false
- with End_of_file ->
- printf "** End_of_file\n"; flush stdout;
- Sys.remove tmp;
- end_s
-
-let trad () =
- while true do
- let s = input_line cin in
- output_string cout (s ^ "\n");
- if Str.string_match begin_coq s 0 then
- let s = trad_commands () in
- output_string cout (s ^ "\n");
- done
-
-let _ =
- try
- trad ()
- with End_of_file ->
- close_out cout;
- printf "** close_out cout\n"; flush stdout;
- ignore (Unix.close_process chan)