open Lambda;;
open Diff;;
open Taylor;;
let args_list = [];;
let usage_msg = "
Usage: mltaylor t [t0]
Appelé avec un seul argument, rend la forme normale de t.
Avec deux arguments t0 est un linéarisé de la forme normale de t ; rend le
linéarisé correspondant de t.
";;
let input_term = ref Star;;
let got_term = ref false;;
let input_diff = ref DiffStar;;
let got_diff = ref false;;
if Array.length Sys.argv <= 1 || Array.length Sys.argv > 3
then
begin
prerr_endline usage_msg;
exit 1
end;
(
try
input_term := lambda_of_string Sys.argv.(1);
got_term := true
with
Stream.Error(s) ->
begin
prerr_endline ("Syntax error in term: " ^ s);
exit 1
end
);
(
if Array.length Sys.argv = 3
then try
input_diff := diff_of_string Sys.argv.(2);
got_diff := true
with
Stream.Error(s) ->
begin
prerr_endline ("Syntax error in diff term: " ^ s);
exit 1
end
);
(
try
if not !got_diff
then
let normal = normalize !input_term
in print_endline (string_of_lambda normal)
else
let taylor = diff_of_term !input_term !input_diff
in print_endline (string_of_diff taylor)
with Failure(s) ->
prerr_endline ("Exec error: " ^s);
exit 1
);
exit 0
;;