Minor modifications, adding comments
This commit is contained in:
@ -5,7 +5,7 @@ open Lexing
|
||||
(* Command Arguments *)
|
||||
|
||||
let () =
|
||||
Clap.description "Interpreter for MiniImp language.";
|
||||
Clap.description "Interpreter for MiniImp language to RISC code.";
|
||||
|
||||
let files = Clap.section ~description: "Files to consider." "FILES" in
|
||||
let values = Clap.section ~description: "Input values." "VALUES" in
|
||||
@ -36,6 +36,22 @@ let () =
|
||||
false
|
||||
in
|
||||
|
||||
let checkundefined = Clap.flag
|
||||
~description: "Optional flag for disabling the check for undefined variables."
|
||||
~section: values
|
||||
~unset_long: "undefined"
|
||||
~unset_short: 'u'
|
||||
true
|
||||
in
|
||||
|
||||
let optimizereg = Clap.flag
|
||||
~description: "Optional flag for disabling optimizing registers with liveness analysis."
|
||||
~section: values
|
||||
~unset_long: "liveness"
|
||||
~unset_short: 'l'
|
||||
true
|
||||
in
|
||||
|
||||
let inputval = Clap.default_int
|
||||
~description: "Optional input value to feed to the program. \
|
||||
If not specified it is read from stdin."
|
||||
@ -85,7 +101,7 @@ let () =
|
||||
CfgRISC.convert
|
||||
in
|
||||
|
||||
let () = (
|
||||
if checkundefined then (
|
||||
match DefinedVariables.compute_defined_variables return_value |>
|
||||
DefinedVariables.check_undefined_variables
|
||||
with
|
||||
@ -94,13 +110,20 @@ let () =
|
||||
Printf.printf "Error: undefined variables: %a\n"
|
||||
DefinedVariables.Variable.pplist l;
|
||||
exit (-1)
|
||||
) in
|
||||
) else ();
|
||||
|
||||
let return_value =
|
||||
if optimizereg then
|
||||
return_value |>
|
||||
LiveVariables.compute_live_variables |>
|
||||
LiveVariables.optimize_cfg |>
|
||||
LiveVariables.compute_cfg
|
||||
else
|
||||
return_value
|
||||
in
|
||||
|
||||
let return_value =
|
||||
return_value |>
|
||||
LiveVariables.compute_live_variables |>
|
||||
LiveVariables.optimize_cfg |>
|
||||
LiveVariables.compute_cfg |>
|
||||
ReduceRegisters.reduceregisters registers |>
|
||||
RISC.convert
|
||||
in
|
||||
|
||||
Reference in New Issue
Block a user