let usage = {|coollang toolchain 사용법: cool check ... 타입/effect/capability 검사 (fast path) cool run typed IR 인터프리터로 실행 cool version 버전 출력 |} let report = function | Ok () -> 0 | Error errors -> List.iter (fun e -> prerr_endline (Coollang.Driver.string_of_error e)) errors; 1 let () = let argv = Array.to_list Sys.argv in let code = match List.tl argv with | "check" :: files -> report (Coollang.Driver.check files) | [ "run"; file ] -> report (Coollang.Driver.run file) | [ "version" ] -> print_endline Coollang.Version.string; 0 | [] | [ "help" ] | [ "--help" ] | [ "-h" ] -> print_string usage; 0 | cmd :: _ -> Printf.eprintf "알 수 없는 명령: %s\n\n%s" cmd usage; 2 in exit code