summaryrefslogtreecommitdiff
path: root/main.ml
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ansys.com>2014-07-10 10:58:56 +0200
committerAlex Auvolat <alex.auvolat@ansys.com>2014-07-10 10:58:56 +0200
commitfee760b5c08afa9c81b5f28b35afd3514f643770 (patch)
tree526f3e7d2c5da4e0132bf58797c0a9b4dccb8840 /main.ml
parente06a4102e5b2a81c7b1c24323cafc863eefbc0cb (diff)
downloadscade-analyzer-fee760b5c08afa9c81b5f28b35afd3514f643770.tar.gz
scade-analyzer-fee760b5c08afa9c81b5f28b35afd3514f643770.zip
Fix a few things, this doesn't work well.
Diffstat (limited to 'main.ml')
-rw-r--r--main.ml26
1 files changed, 24 insertions, 2 deletions
diff --git a/main.ml b/main.ml
index 96fb95e..303723d 100644
--- a/main.ml
+++ b/main.ml
@@ -23,6 +23,10 @@ module AI_S_Itv_DP = Abs_interp_dynpart.I
(Enum_domain.MultiValuation)(ItvND)
module AI_S_Rel_DP = Abs_interp_dynpart.I
(Enum_domain.MultiValuation)(Apron_domain.ND)
+module AI_EDD_Itv_DP = Abs_interp_dynpart.I
+ (Enum_domain_edd.EDD)(ItvND)
+module AI_EDD_Rel_DP = Abs_interp_dynpart.I
+ (Enum_domain_edd.EDD)(Apron_domain.ND)
(* command line options *)
let times = ref false
@@ -36,6 +40,8 @@ let ai_itv_edd = ref false
let ai_rel_edd = ref false
let ai_s_itv_dp = ref false
let ai_s_rel_dp = ref false
+let ai_edd_itv_dp = ref false
+let ai_edd_rel_dp = ref false
let ai_root = ref "test"
let ai_widen_delay = ref 5
let ai_no_time_scopes = ref "all"
@@ -50,28 +56,41 @@ let usage = "usage: analyzer [options] file.scade"
let options = [
"--exec-times", Arg.Set times,
"Show time spent in each function of the analyzer, for some functions";
+
"--dump", Arg.Set dump, "Dump program source.";
"--dump-rn", Arg.Set dumprn, "Dump program source, after renaming.";
+
"--vtest", Arg.Set vtest, "Verbose testing (direct interpret).";
"--test", Arg.Set test, "Simple testing (direct interpret).";
+
"--ai-itv", Arg.Set ai_itv, "Do abstract analysis using intervals.";
"--ai-rel", Arg.Set ai_rel, "Do abstract analysis using Apron.";
+
"--ai-itv-edd", Arg.Set ai_itv_edd,
"Do abstract analysis using intervals and EDD disjunction domain.";
"--ai-rel-edd", Arg.Set ai_rel_edd,
"Do abstract analysis using Apron and EDD disjunction domain.";
+
"--ai-s-itv-dp", Arg.Set ai_s_itv_dp,
"Do abstract analysis using dynamic partitionning method, "^
"with intervals and valuation domain for enums.";
"--ai-s-rel-dp", Arg.Set ai_s_rel_dp,
"Do abstract analysis using dynamic partitionning method, "^
"with Apron and valuation domain for enums.";
+ "--ai-edd-itv-dp", Arg.Set ai_edd_itv_dp,
+ "Do abstract analysis using dynamic partitionning method, "^
+ "with intervals and EDD domain for enums.";
+ "--ai-edd-rel-dp", Arg.Set ai_edd_rel_dp,
+ "Do abstract analysis using dynamic partitionning method, "^
+ "with Apron and EDD domain for enums.";
+
"--ai-vci", Arg.Set ai_vci,
"Verbose chaotic iterations (show state at each iteration)";
"--ai-vvci", Arg.Set ai_vvci,
"Very verbose chaotic iterations (show everything all the time)";
- "--wd", Arg.Set_int ai_widen_delay,
+ "--ai-wd", Arg.Set_int ai_widen_delay,
"Widening delay in abstract analysis of loops (default: 3).";
+
"--root", Arg.Set_string ai_root,
"Root node for abstract analysis (default: test).";
"--no-time", Arg.Set_string ai_no_time_scopes,
@@ -132,7 +151,8 @@ let () =
if !ai_itv || !ai_rel
|| !ai_itv_edd || !ai_rel_edd
- || !ai_s_itv_dp || !ai_s_rel_dp then
+ || !ai_s_itv_dp || !ai_s_rel_dp
+ || !ai_edd_itv_dp || !ai_edd_rel_dp then
begin
let comma_split = Str.split (Str.regexp ",") in
let select_f x =
@@ -168,6 +188,8 @@ let () =
if !ai_s_itv_dp then AI_S_Itv_DP.do_prog opt rp;
if !ai_s_rel_dp then AI_S_Rel_DP.do_prog opt rp;
+ if !ai_edd_itv_dp then AI_EDD_Itv_DP.do_prog opt rp;
+ if !ai_edd_rel_dp then AI_EDD_Rel_DP.do_prog opt rp;
end;
if !vtest then do_test_interpret prog true