pga.ml 895 B

12345678910111213141516171819202122232425262728293031323334353637
  1. open Types
  2. open Stringify
  3. open Parse
  4. let main () =
  5. let usage status =
  6. prerr_endline ("usage: " ^ Sys.argv.(0) ^ " command [args]");
  7. prerr_endline "command:";
  8. prerr_endline " help show this help page";
  9. prerr_endline " echo PROGRAM pretty-print a program";
  10. prerr_endline "input program syntax:";
  11. prerr_endline " - omit omega sign after closing parenthesis";
  12. prerr_endline " - write dollar sign ($) instead of pound sign";
  13. exit status
  14. in
  15. let argc = Array.length Sys.argv in
  16. if argc = 1 then usage 1;
  17. begin
  18. try
  19. match Sys.argv.(1) with
  20. | "help" ->
  21. usage 0
  22. | "echo" when argc > 2 ->
  23. print_endline (string_of_program (parse_string Sys.argv.(2)))
  24. | _ ->
  25. usage 1
  26. with
  27. | ParseError msg ->
  28. prerr_endline ("parsing error: " ^ msg);
  29. exit 1
  30. end;
  31. exit 0
  32. let () = main ()