|
@@ -5,20 +5,23 @@ let main () =
|
|
|
let usage status =
|
|
let usage status =
|
|
|
prerr_endline ("usage: " ^ Sys.argv.(0) ^ " command [args]");
|
|
prerr_endline ("usage: " ^ Sys.argv.(0) ^ " command [args]");
|
|
|
prerr_endline "command:";
|
|
prerr_endline "command:";
|
|
|
- prerr_endline " help show this help page";
|
|
|
|
|
- prerr_endline " echo TERM pretty-print a program";
|
|
|
|
|
- prerr_endline " utf8 TERM print a program in UTF-8 format";
|
|
|
|
|
- prerr_endline " latex TERM print latex source for a program";
|
|
|
|
|
- prerr_endline " norm TERM get the norm of a program";
|
|
|
|
|
- prerr_endline " i I TERM get the Ith instruction of a program";
|
|
|
|
|
- prerr_endline " dot TERM generate Dot code for a flow graph";
|
|
|
|
|
|
|
+ prerr_endline " help show this help page";
|
|
|
|
|
+ prerr_endline " echo TERM pretty-print a program";
|
|
|
|
|
+ prerr_endline " utf8 TERM print a program in UTF-8 format";
|
|
|
|
|
+ prerr_endline " latex TERM print latex source for a program";
|
|
|
|
|
+ prerr_endline " norm TERM get the norm of a program";
|
|
|
|
|
+ prerr_endline " i I TERM get the Ith instruction of a program";
|
|
|
|
|
+ prerr_endline " canon1 TERM transform to first canonical form";
|
|
|
|
|
+ prerr_endline " canon2 TERM transform to second canonical form";
|
|
|
|
|
+ prerr_endline " eq TERM TERM check for instruction-row equivalence";
|
|
|
|
|
+ prerr_endline " dot TERM generate Dot code for a flow graph";
|
|
|
prerr_endline "input program syntax:";
|
|
prerr_endline "input program syntax:";
|
|
|
prerr_endline " - write star (*) instead of omega sign";
|
|
prerr_endline " - write star (*) instead of omega sign";
|
|
|
prerr_endline " - write dollar sign ($) instead of pound sign";
|
|
prerr_endline " - write dollar sign ($) instead of pound sign";
|
|
|
prerr_endline "";
|
|
prerr_endline "";
|
|
|
- prerr_endline "A TERM argument may also be omitted and passed on stdin";
|
|
|
|
|
- prerr_endline "instead for convenient use of UNIX pipes, e.g.:";
|
|
|
|
|
- prerr_endline "$ ./pga echo 'a;b;(c)*' | ./pga dot | dot -T png | display";
|
|
|
|
|
|
|
+ prerr_endline "A single TERM argument may also be omitted and passed on";
|
|
|
|
|
+ prerr_endline "stdin instead for convenient use of UNIX pipes, e.g.:";
|
|
|
|
|
+ prerr_endline "$ ./pga canon1 '(a)*;!' | ./pga dot | dot -T png | display";
|
|
|
exit status
|
|
exit status
|
|
|
in
|
|
in
|
|
|
|
|
|
|
@@ -45,14 +48,22 @@ let main () =
|
|
|
print_endline (string_of_program_utf8 (input_term 2))
|
|
print_endline (string_of_program_utf8 (input_term 2))
|
|
|
| "latex" ->
|
|
| "latex" ->
|
|
|
print_endline (string_of_program_latex (input_term 2))
|
|
print_endline (string_of_program_latex (input_term 2))
|
|
|
- | "norm" | "i" | "dot" ->
|
|
|
|
|
|
|
+ | "norm" ->
|
|
|
|
|
+ print_endline (string_of_natural (Congruence.norm (input_term 2)))
|
|
|
|
|
+ | "i" | "canon1" | "canon2" | "eq" | "dot" ->
|
|
|
raise (Failure "not implemented")
|
|
raise (Failure "not implemented")
|
|
|
| _ ->
|
|
| _ ->
|
|
|
usage 1
|
|
usage 1
|
|
|
with
|
|
with
|
|
|
- | FatalError msg ->
|
|
|
|
|
|
|
+ | Fatal_error msg ->
|
|
|
prerr_endline msg;
|
|
prerr_endline msg;
|
|
|
exit 1
|
|
exit 1
|
|
|
|
|
+ | Ins_error (i, msg) ->
|
|
|
|
|
+ prerr_endline ("error on " ^ string_of_ins_ascii i ^ ": " ^ msg);
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ | Program_error (p, msg) ->
|
|
|
|
|
+ prerr_endline ("error on " ^ string_of_program_ascii p ^ ": " ^ msg);
|
|
|
|
|
+ exit 1
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
exit 0
|
|
exit 0
|