- val header = "Usage: compile [OPTION...] SOURCEFILE\nwhere OPTION is"
- val usageinfo = G.usageInfo {header = header, options = options}
- fun errfn msg = (say (msg ^ "\n" ^ usageinfo) ; raise EXIT)
-
- val _ = Temp.reset (); (* reset temp variable counter *)
- val _ = reset_flags (); (* return all flags to default value *)
-
- val _ = if List.length args = 0 then
- (say usageinfo; raise EXIT)
- else ()
-
- val (opts, files) =
- G.getOpt {argOrder = G.Permute,
- options = options,
- errFn = errfn}
- args
-
- val source =
- case files
- of [] => errfn "Error: no input file"
- | [filename] => filename
- | _ => errfn "Error: more than one input file"
-
- val _ = Flag.guard flag_verbose say ("Parsing... " ^ source)
- val ast = Parse.parse source
- val _ = Flag.guard flag_ast
- (fn () => say (Ast.Print.pp_program ast)) ()
-
- val _ = Flag.guard flag_verbose say "Checking..."
- val _ = TypeChecker.typecheck ast
-
- val _ = Flag.guard flag_verbose say "Translating..."
- val ir = Trans.translate ast
- val _ = Flag.guard flag_ir (fn () => say (Tree.Print.pp_program ir)) ()
-
- val _ = Flag.guard flag_verbose say "Generating proto-x86_64 code..."
- val assem = Codegen.codegen ir
- val _ = Flag.guard flag_assem
- (fn () => List.app (TextIO.print o x86.prettyprint) assem) ()
+ val header = "Usage: compile [OPTION...] SOURCEFILE\nwhere OPTION is"
+ val usageinfo = G.usageInfo {header = header, options = options}
+ fun errfn msg = (say (msg ^ "\n" ^ usageinfo) ; raise EXIT)
+
+ val _ = Temp.reset (); (* reset temp variable counter *)
+ val _ = reset_flags (); (* return all flags to default value *)
+
+ val _ = if List.length args = 0 then
+ (say usageinfo; raise EXIT)
+ else ()
+
+ val (opts, files) =
+ G.getOpt {argOrder = G.Permute,
+ options = options,
+ errFn = errfn}
+ args
+
+ val source =
+ case files
+ of [] => errfn "Error: no input file"
+ | [filename] => filename
+ | _ => errfn "Error: more than one input file"
+
+ val _ = Flag.guard flag_verbose say ("Parsing... " ^ source)
+ val ast = Parse.parse source
+ val _ = Flag.guard flag_ast
+ (fn () => say (Ast.Print.pp_program ast)) ()
+
+ val _ = Flag.guard flag_verbose say "Checking..."
+ val ast = TypeChecker.typecheck ast
+
+ val _ = Flag.guard flag_verbose say "Translating..."
+ val ir = Trans.translate ast
+ val _ = Flag.guard flag_ir (fn () => say (Tree.Print.pp_program ir)) ()
+
+ val _ = Flag.guard flag_verbose say "Generating proto-x86_64 code..."
+ val assem = Codegen.codegen ir
+ val _ = Flag.guard flag_assem
+ (fn () => List.app (TextIO.print o x86.prettyprint) assem) ()