2024-08-02 00:10:48 +02:00
|
|
|
let printUsage () =
|
|
|
|
|
print_endline "Usage: jlox [script]";
|
|
|
|
|
exit 64
|
|
|
|
|
|
|
|
|
|
let () =
|
|
|
|
|
let argc = Array.length Sys.argv in
|
|
|
|
|
match argc - 1 with
|
|
|
|
|
| 0 -> Lox.runRepl ()
|
2024-08-03 02:44:47 +02:00
|
|
|
| 1 -> (
|
2024-08-02 00:10:48 +02:00
|
|
|
let path = Sys.argv.(1) in
|
2024-08-03 02:44:47 +02:00
|
|
|
(* Printf.printf "Running script %s\n" path; *)
|
2024-08-02 00:10:48 +02:00
|
|
|
let ic = open_in path in
|
|
|
|
|
let source = In_channel.input_all ic in
|
2024-08-03 02:44:47 +02:00
|
|
|
match Lox.run source with
|
|
|
|
|
| Error e ->
|
|
|
|
|
Lox.Error.print_error e;
|
|
|
|
|
exit 1
|
|
|
|
|
| Ok () -> exit 0)
|
2024-08-02 00:10:48 +02:00
|
|
|
| _ -> printUsage ()
|