open Types open Stringify open Parse 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 PROGRAM pretty-print a program"; prerr_endline "input program syntax:"; prerr_endline " - omit omega sign after closing parenthesis"; prerr_endline " - write dollar sign ($) instead of pound sign"; exit status in let argc = Array.length Sys.argv in if argc = 1 then usage 1; begin try match Sys.argv.(1) with | "help" -> usage 0 | "echo" when argc > 2 -> print_endline (string_of_program (parse_string Sys.argv.(2))) | _ -> usage 1 with | ParseError msg -> prerr_endline ("parsing error: " ^ msg); exit 1 end; exit 0 let () = main ()