aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main.mlton.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-06-27 10:30:51 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-06-27 10:30:51 -0400
commit35cfed265b313d645c850f1ed24f6e8f937a410c (patch)
treede15c7f60f907eed0f97e57484b7c01697373f9a /src/main.mlton.sml
parent5574caafb5da61e7938eec476975bf82cbf98b97 (diff)
-debug from the command line
Diffstat (limited to 'src/main.mlton.sml')
-rw-r--r--src/main.mlton.sml46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/main.mlton.sml b/src/main.mlton.sml
index 069de100..62fb6509 100644
--- a/src/main.mlton.sml
+++ b/src/main.mlton.sml
@@ -25,42 +25,48 @@
* POSSIBILITY OF SUCH DAMAGE.
*)
-fun doArgs (args, (timing, demo, sources)) =
+val timing = ref false
+val sources = ref ([] : string list)
+val demo = ref (NONE : (string * bool) option)
+
+fun doArgs args =
case args of
- [] => (timing, demo, rev sources)
+ [] => ()
| "-demo" :: prefix :: rest =>
- doArgs (rest, (timing, SOME (prefix, false), sources))
+ (demo := SOME (prefix, false);
+ doArgs rest)
| "-guided-demo" :: prefix :: rest =>
- doArgs (rest, (timing, SOME (prefix, true), sources))
+ (demo := SOME (prefix, true);
+ doArgs rest)
| "-protocol" :: name :: rest =>
(Settings.setProtocol name;
- doArgs (rest, (timing, demo, sources)))
+ doArgs rest)
+ | "-debug" :: rest =>
+ (Settings.setDebug true;
+ doArgs rest)
+ | "-timing" :: rest =>
+ (timing := true;
+ doArgs rest)
| arg :: rest =>
- let
- val acc =
- if size arg > 0 andalso String.sub (arg, 0) = #"-" then
- case arg of
- "-timing" => (true, demo, sources)
- | _ => raise Fail ("Unknown option " ^ arg)
- else
- (timing, demo, arg :: sources)
- in
- doArgs (rest, acc)
- end
+ (if size arg > 0 andalso String.sub (arg, 0) = #"-" then
+ raise Fail ("Unknown flag " ^ arg)
+ else
+ sources := arg :: !sources;
+ doArgs rest)
-val (timing, demo, sources) = doArgs (CommandLine.arguments (), (false, NONE, []))
+val () = doArgs (CommandLine.arguments ())
val job =
- case sources of
+ case !sources of
[file] => file
| _ => raise Fail "Zero or multiple job files specified"
val () =
- case demo of
+ case !demo of
SOME (prefix, guided) =>
Demo.make {prefix = prefix, dirname = job, guided = guided}
| NONE =>
- if timing then
+ if !timing then
Compiler.time Compiler.toCjrize job
else
Compiler.compile job