| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- open Types
- open Stringify
- let main () =
- let usage status =
- prerr_endline ("usage: " ^ Sys.argv.(0) ^ " command [args]");
- prerr_endline "command:";
- prerr_endline " help show this help page";
- prerr_endline " echo TERM pretty-print a program";
- prerr_endline "input program syntax:";
- prerr_endline " - write star (*) instead of omega sign";
- prerr_endline " - write dollar sign ($) instead of pound sign";
- prerr_endline "";
- prerr_endline "A TERM argument may also be omitted and passed on stdin";
- prerr_endline "instead for convenient use of UNIX pipes";
- exit status
- in
- let argc = Array.length Sys.argv in
- if argc = 1 then usage 1;
- let input_term i =
- let lexbuf =
- if argc > i
- then Lexing.from_string Sys.argv.(i)
- else Lexing.from_channel stdin
- in
- Parse.parse_with_error lexbuf
- in
- begin
- try
- match Sys.argv.(1) with
- | "help" ->
- usage 0
- | "echo" ->
- print_endline (string_of_program (input_term 2))
- | _ ->
- usage 1
- with
- | FatalError msg ->
- prerr_endline msg;
- exit 1
- end;
- exit 0
- let () = main ()
|