| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- open Ast
- (* Compile infile to assembly code
- * in_channel -> int -> repr *)
- let compile infile verbose =
- let rec run_phases ir = function
- | [] -> ir
- | h::t -> run_phases (h ir) t
- in
- run_phases (Inputfile (infile, verbose)) [
- Parse.phase;
- Print.phase;
- Desug.phase;
- Print.phase;
- (*Typecheck.phase;*)
- (*Extern_vars.phase;*)
- (*Dim_reduce.phase;*)
- (*Bool_op.phase;*)
- (*Assemble.phase;*)
- (*Peephole.phase;*)
- (*Print.phase;*)
- ]
- (* Main function, returns exit status
- * () -> int *)
- let main () =
- let filename = ref None in
- let verbose = ref 1 in
- let args = [
- ("-v", Arg.Int (fun i -> verbose := i), "Set verbosity")
- ] in
- let usage = "Usage: " ^ Sys.argv.(0) ^ " [ -v VERBOSITY ] FILE" in
- try
- Arg.parse args (fun s -> filename := Some s) usage;
- let _ = compile !filename !verbose in
- 0
- with CompileError msg ->
- prerr_endline ("Error: " ^ msg);
- -1
- let _ = exit (main ())
|