diff --git a/.gitignore b/.gitignore index dc7e4db4061354fdd8c4fc129a1e7cd2a5666bce..43ca35bc70e55830ac8e06094c49298ac7dcbe1b 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,14 @@ release* *.lus.tex *.res *.ps +*.exec +*.save +*.dro +*.rif +*.cov +*.gp +*.lesar +*.sum *.annot *gz src/version.ml @@ -55,7 +63,6 @@ lus2lic-types.pdf lus2lic.pdf *.tex ocamldoc -test/* _build/ main.native myocamlbuild.ml diff --git a/src/genOcamlGlue.ml b/src/genOcamlGlue.ml index 4f1d7ab08b0da9890af5cbe8e49b123bbdf0f8f1..d9987d744d9613b2a0f07ad632e582e24eafe13f 100644 --- a/src/genOcamlGlue.ml +++ b/src/genOcamlGlue.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 14/08/2014 (at 17:07) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:10) by Erwan Jahier> *) (* generate ocaml glue code that makes it possible to call lus2lic from ocaml with the current set of arguments (with Lus2licRun.make). @@ -20,7 +20,7 @@ let (f: string array -> Lv6MainArgs.t -> unit) = in let args_str = "\"" ^ (String.concat "\";\"" args) ^"\"" in let oc = open_out (outfile) in - Lv6util.dump_entete oc; + LicDump.dump_entete oc; Printf.fprintf oc " let plugin = let args = Array.of_list [%s] in diff --git a/src/licDump.ml b/src/licDump.ml index 7eabf5c47f868a48431c8d5909ad0c2c83e1a27f..a704c47b300c7f7dec4bf527cb279cadaea41dda 100644 --- a/src/licDump.ml +++ b/src/licDump.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 03/03/2015 (at 14:26) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:07) by Erwan Jahier> *) open Lv6errors open Printf @@ -24,6 +24,11 @@ let (dump_long : Lv6Id.long -> string) = fun x -> (******************************************************************************) +let (dump_entete : out_channel -> unit) = + fun oc -> if global_opt.kcg then + (Lv6util.entete oc "/*" "*/") + else + (Lv6util.entete oc "(*" "*)") (******************************************************************************) let (get_rank : 'a -> 'a list -> int) = diff --git a/src/licPrg.ml b/src/licPrg.ml index c7f0fb8f00c42412051d49649fafc2a774d417cd..c79fb4723122ea29c4d54bd42afba33c0b35089c 100644 --- a/src/licPrg.ml +++ b/src/licPrg.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 03/03/2015 (at 10:42) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:07) by Erwan Jahier> *) open Lv6MainArgs module ItemKeyMap = struct @@ -117,7 +117,7 @@ let del_node (k:Lic.node_key) (prg:t) : t = exception Print_me of Lic.node_exp let to_file (opt: Lv6MainArgs.t) (this:t) (main_node: Lv6Id.idref option) = - Lv6util.dump_entete opt.Lv6MainArgs.oc; + LicDump.dump_entete opt.Lv6MainArgs.oc; (* On imprime dans l'ordre du iter, donc pas terrible ??? *) ItemKeyMap.iter diff --git a/src/lus2licRun.ml b/src/lus2licRun.ml index 059f0a107ac7124116ab93cedcc328a3b7d077c6..86869e294d5fa4d2fc1f449613c8dff0c5788559 100644 --- a/src/lus2licRun.ml +++ b/src/lus2licRun.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 27/02/2015 (at 10:04) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *) (*----------------------------------------------------------------------- ** Copyright (C) - Verimag. *) @@ -51,7 +51,7 @@ let make argv = in let (vntl_i:Data.vntl) = soc_inputs in let (vntl_o:Data.vntl) = soc_outputs in -(* Lv6util.dump_entete oc; *) +(* LicDump.dump_entete oc; *) (* RifIO.write_interface oc vntl_i vntl_o None None; *) (* RifIO.flush oc; *) diff --git a/src/lustre-v6.mldylib b/src/lustre-v6.mldylib new file mode 100644 index 0000000000000000000000000000000000000000..70b1ee4bb11c079508442265a106009bea539a49 --- /dev/null +++ b/src/lustre-v6.mldylib @@ -0,0 +1,63 @@ +# OASIS_START +# DO NOT EDIT (digest: 702371850d29477bd775b51a95b16417) +Lus2licRun +SocExecValue +SocUtils +Lv6util +Lv6version +Lv6errors +Lxm +Lv6MainArgs +Verbose +Soc +SocPredef +Lv6Id +SocExec +SocExecEvalPredef +Compile +AstTab +AstTabSymbol +AstInstanciateModel +Lv6parserUtils +AstV6 +FilenameExtras +LicTab +LicDump +AstPredef +Lic +AstCore +FreshName +IdSolver +EvalConst +LicEvalConst +LicEvalType +UnifyType +Ast2lic +AstV6Dump +EvalClock +UnifyClock +LicEvalClock +EvalType +LicPrg +LicMetaOp +L2lCheckOutputs +Misc +L2lRmPoly +L2lExpandMetaOp +L2lSplit +L2lExpandNodes +L2lExpandArrays +L2lCheckLoops +L2lCheckMemSafe +L2lOptimIte +Lv6lexer +Lv6parser +AstRecognizePredef +Lic2soc +Action +ActionsDeps +SocVar +Lus2licRun +SortActions +SortActionsExpe +# OASIS_STOP diff --git a/src/lustre-v6.mllib b/src/lustre-v6.mllib new file mode 100644 index 0000000000000000000000000000000000000000..70b1ee4bb11c079508442265a106009bea539a49 --- /dev/null +++ b/src/lustre-v6.mllib @@ -0,0 +1,63 @@ +# OASIS_START +# DO NOT EDIT (digest: 702371850d29477bd775b51a95b16417) +Lus2licRun +SocExecValue +SocUtils +Lv6util +Lv6version +Lv6errors +Lxm +Lv6MainArgs +Verbose +Soc +SocPredef +Lv6Id +SocExec +SocExecEvalPredef +Compile +AstTab +AstTabSymbol +AstInstanciateModel +Lv6parserUtils +AstV6 +FilenameExtras +LicTab +LicDump +AstPredef +Lic +AstCore +FreshName +IdSolver +EvalConst +LicEvalConst +LicEvalType +UnifyType +Ast2lic +AstV6Dump +EvalClock +UnifyClock +LicEvalClock +EvalType +LicPrg +LicMetaOp +L2lCheckOutputs +Misc +L2lRmPoly +L2lExpandMetaOp +L2lSplit +L2lExpandNodes +L2lExpandArrays +L2lCheckLoops +L2lCheckMemSafe +L2lOptimIte +Lv6lexer +Lv6parser +AstRecognizePredef +Lic2soc +Action +ActionsDeps +SocVar +Lus2licRun +SortActions +SortActionsExpe +# OASIS_STOP diff --git a/src/lv6util.ml b/src/lv6util.ml index 3cb9c4d440b7299f4d4b41965c9440594b610b0b..3897d86e64520ddbbd392960fec57a6997a2f68f 100644 --- a/src/lv6util.ml +++ b/src/lv6util.ml @@ -1,6 +1,4 @@ -open Lv6MainArgs - let my_string_of_float = string_of_float let (entete : out_channel -> string -> string -> unit) = @@ -36,13 +34,6 @@ let (entete : out_channel -> string -> string -> unit) = Printf.fprintf oc "%s on %s the %s at %s %s\n" cb hostname date time_str ce - -let (dump_entete : out_channel -> unit) = - fun oc -> if global_opt.kcg then - (entete oc "/*" "*/") - else - (entete oc "(*" "*)") - let rec pos_in_list i x l = match l with | e::l -> if e=x then i else pos_in_list (i+1) x l diff --git a/src/main.ml b/src/main.ml index a35829a5f66becd165bb5abf8e2cd9a23625f324..1ad41422b8ac59b6a6f0a0355e2a4ffa6bfe19f6 100644 --- a/src/main.ml +++ b/src/main.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 19/05/2015 (at 14:55) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *) open Verbose open AstV6 @@ -128,7 +128,7 @@ let (gen_autotest_files : LicPrg.t -> Lv6Id.idref option -> Lv6MainArgs.t -> uni let name = main_node.Lv6Id.id_id in let lutin_file_name = ("_"^name^"_env.lut") in let oc = open_out lutin_file_name in - Lv6util.dump_entete oc; + LicDump.dump_entete oc; output_string oc ("node " ^ (name) ^ "_env("^ (String.concat ";" outvars_str) ^ ") returns(" ^ (String.concat ";" invars_str) ^ ") =\n "^ assertion_cstr^" \n"); @@ -223,7 +223,7 @@ let res = if r_abs(x)>1.0 then r_abs(1.0-(y/x)) < seuil else r_abs(x-y) < seuil; tel " in - Lv6util.dump_entete oc; + LicDump.dump_entete oc; output_string oc prg; flush oc; close_out oc; diff --git a/src/socExec.ml b/src/socExec.ml index 17f7030add7a167c712113ecd3ceaf00b6eba7de..0ca93174e88bfed661ad2d5af3340109bb5046b3 100644 --- a/src/socExec.ml +++ b/src/socExec.ml @@ -1,4 +1,4 @@ -(* Time-stamp: <modified the 26/02/2015 (at 11:25) by Erwan Jahier> *) +(* Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *) open Soc open Data @@ -239,7 +239,7 @@ let (f : Lv6MainArgs.t -> Soc.tbl -> Soc.key -> unit) = in open_out rif_file in - Lv6util.dump_entete oc; + LicDump.dump_entete oc; RifIO.write_interface oc exp_vntl_i exp_vntl_o None None; RifIO.flush oc; try loop_step opt soc_tbl (fst soc.profile) exp_vntl_i exp_vntl_o soc ctx 1 oc diff --git a/src/socUtils.ml b/src/socUtils.ml index fddae5f2fef6c8759d108812eededf6f2158d773..91e6ba0c28bf4f22c51d2702bc8dc1d49f47f9c4 100644 --- a/src/socUtils.ml +++ b/src/socUtils.ml @@ -1,4 +1,4 @@ -(** Time-stamp: <modified the 26/02/2015 (at 11:25) by Erwan Jahier> *) +(** Time-stamp: <modified the 18/06/2015 (at 15:08) by Erwan Jahier> *) open Soc @@ -297,7 +297,7 @@ let output: (bool -> string -> Soc.t list -> unit) = let header = "Package '" ^ pkg_name ^ "' :" in let deco = (String.make (String.length header) '=') in - if no_header then () else Lv6util.dump_entete stdout ; + if no_header then () else LicDump.dump_entete stdout ; print_string (deco ^ "\n" ^ header ^ "\n" ^ deco ^ "\n" ^ "\n"); print_string ( String.concat "\n\n" (List.map string_of_soc socs) diff --git a/test/Makefile b/test/Makefile index 7ce7db1107b1fa9be75819ed97d65eb73675f7d8..663873f60ecbccd147a92138c68e00c80c4c290f 100644 --- a/test/Makefile +++ b/test/Makefile @@ -130,8 +130,11 @@ lus2lic4.log: $(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic4 lus2lic.tests/test4.exp" || true +kcg.log: + $(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic-kcg lus2lic.tests/kcg.exp" || true + progression: - $(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic progression.exp" || true + $(TEST_MACHINE) "cd $(testdir); runtest --tool lus2lic lus2lic.tests/progression.exp" || true diff --git a/test/lus2lic.sum b/test/lus2lic.sum index 457c45a23e5060cf1da7a3927a19d9d62b499ac1..a3b172c4be15eae61e9269d3658a80246f2b858a 100644 --- a/test/lus2lic.sum +++ b/test/lus2lic.sum @@ -1,5 +1,5 @@ ==> lus2lic0.sum <== -Test Run By jahier on Fri May 22 15:45:45 +Test Run By jahier on Tue Jun 23 10:49:47 Native configuration is x86_64-unknown-linux-gnu === lus2lic0 tests === @@ -63,7 +63,7 @@ XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/lecte XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/s.lus ==> lus2lic1.sum <== -Test Run By jahier on Fri May 22 15:45:50 +Test Run By jahier on Tue Jun 23 10:49:48 Native configuration is x86_64-unknown-linux-gnu === lus2lic1 tests === @@ -175,6 +175,7 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c call07.lus {} PASS: ./lus2lic {-2c carV2.lus -n carV2} PASS: gcc -o carV2.exec carV2_carV2.c carV2_carV2_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c carV2.lus {} +FAIL: Generate c code : ./lus2lic {-2c carligths.lus -n carligths} PASS: ./lus2lic {-2c ck2.lus -n ck2} PASS: gcc -o ck2.exec ck2_ck2.c ck2_ck2_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c ck2.lus {} @@ -397,7 +398,7 @@ PASS: gcc -o multipar.exec multipar_multipar.c multipar_multipar_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus {} ==> lus2lic2.sum <== -Test Run By jahier on Fri May 22 15:46:27 +Test Run By jahier on Tue Jun 23 10:50:03 Native configuration is x86_64-unknown-linux-gnu === lus2lic2 tests === @@ -496,6 +497,9 @@ PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c notTwo.lus {} PASS: ./lus2lic {-2c o2l_feux_compl.lus -n o2l_feux_compl} PASS: gcc -o o2l_feux_compl.exec o2l_feux_compl_o2l_feux_compl.c o2l_feux_compl_o2l_feux_compl_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c o2l_feux_compl.lus {} +PASS: ./lus2lic {-2c oneq.lus -n oneq} +PASS: gcc -o oneq.exec oneq_oneq.c oneq_oneq_loop.c +PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c oneq.lus {} PASS: ./lus2lic {-2c onlyroll.lus -n onlyroll} PASS: gcc -o onlyroll.exec onlyroll_onlyroll.c onlyroll_onlyroll_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c onlyroll.lus {} @@ -551,6 +555,7 @@ PASS: ./lus2lic {-2c polymorphic_pack.lus -n polymorphic_pack} PASS: ./lus2lic {-2c poussoir.lus -n poussoir} PASS: gcc -o poussoir.exec poussoir_poussoir.c poussoir_poussoir_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c poussoir.lus {} +FAIL: Generate c code : ./lus2lic {-2c pplus.lus -n pplus} PASS: ./lus2lic {-2c pre_x.lus -n pre_x} PASS: gcc -o pre_x.exec pre_x_pre_x.c pre_x_pre_x_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c pre_x.lus {} @@ -727,7 +732,7 @@ PASS: gcc -o zzz2.exec zzz2_zzz2.c zzz2_zzz2_loop.c PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus {} ==> lus2lic3.sum <== -Test Run By jahier on Fri May 22 15:47:35 +Test Run By jahier on Tue Jun 23 10:50:48 Native configuration is x86_64-unknown-linux-gnu === lus2lic3 tests === @@ -743,11 +748,10 @@ PASS: ./myec2c {-o COUNTER.c COUNTER.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node COUNTER.lus {} PASS: ./lus2lic {-o CURRENT.lic CURRENT.lus} PASS: ./lus2lic {-ec -o CURRENT.ec CURRENT.lus} -PASS: ./myec2c {-o CURRENT.c CURRENT.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node CURRENT.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o CURRENT.c CURRENT.ec} PASS: ./lus2lic {-o Condact.lic Condact.lus} PASS: ./lus2lic {-ec -o Condact.ec Condact.lus} -PASS: ./myec2c {-o Condact.c Condact.ec} +FAIL: Try ec2c on the result: ./myec2c {-o Condact.c Condact.ec} PASS: ./lus2lic {-o EDGE.lic EDGE.lus} PASS: ./lus2lic {-ec -o EDGE.ec EDGE.lus} PASS: ./myec2c {-o EDGE.c EDGE.ec} @@ -811,16 +815,14 @@ PASS: ./myec2c {-o argos.c argos.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node argos.lus {} PASS: ./lus2lic {-o array_concat.lic array_concat.lus} PASS: ./lus2lic {-ec -o array_concat.ec array_concat.lus} -PASS: ./myec2c {-o array_concat.c array_concat.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node array_concat.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o array_concat.c array_concat.ec} PASS: ./lus2lic {-o array_concat2.lic array_concat2.lus} PASS: ./lus2lic {-ec -o array_concat2.ec array_concat2.lus} PASS: ./myec2c {-o array_concat2.c array_concat2.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node array_concat2.lus {} PASS: ./lus2lic {-o arrays.lic arrays.lus} PASS: ./lus2lic {-ec -o arrays.ec arrays.lus} -PASS: ./myec2c {-o arrays.c arrays.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node arrays.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o arrays.c arrays.ec} PASS: ./lus2lic {-o asservi.lic asservi.lus} PASS: ./lus2lic {-ec -o asservi.ec asservi.lus} PASS: ./myec2c {-o asservi.c asservi.ec} @@ -846,8 +848,7 @@ PASS: ./myec2c {-o bred_lv4.c bred_lv4.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node bred_lv4.lus {} PASS: ./lus2lic {-o bug.lic bug.lus} PASS: ./lus2lic {-ec -o bug.ec bug.lus} -PASS: ./myec2c {-o bug.c bug.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node bug.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o bug.c bug.ec} PASS: ./lus2lic {-o bug2.lic bug2.lus} PASS: ./lus2lic {-ec -o bug2.ec bug2.lus} PASS: ./myec2c {-o bug2.c bug2.ec} @@ -862,11 +863,10 @@ PASS: ./lus2lic {-ec -o call.ec call.lus} PASS: ./myec2c {-o call.c call.ec} PASS: ./lus2lic {-o call01.lic call01.lus} PASS: ./lus2lic {-ec -o call01.ec call01.lus} -PASS: ./myec2c {-o call01.c call01.ec} +FAIL: Try ec2c on the result: ./myec2c {-o call01.c call01.ec} PASS: ./lus2lic {-o call02.lic call02.lus} PASS: ./lus2lic {-ec -o call02.ec call02.lus} -PASS: ./myec2c {-o call02.c call02.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call02.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o call02.c call02.ec} PASS: ./lus2lic {-o call03.lic call03.lus} PASS: ./lus2lic {-ec -o call03.ec call03.lus} PASS: ./myec2c {-o call03.c call03.ec} @@ -876,7 +876,7 @@ PASS: ./myec2c {-o call04.c call04.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call04.lus {} PASS: ./lus2lic {-o call05.lic call05.lus} PASS: ./lus2lic {-ec -o call05.ec call05.lus} -PASS: ./myec2c {-o call05.c call05.ec} +FAIL: Try ec2c on the result: ./myec2c {-o call05.c call05.ec} PASS: ./lus2lic {-o call06.lic call06.lus} PASS: ./lus2lic {-ec -o call06.ec call06.lus} PASS: ./myec2c {-o call06.c call06.ec} @@ -887,6 +887,10 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node call07.lus {} PASS: ./lus2lic {-o carV2.lic carV2.lus} PASS: ./lus2lic {-ec -o carV2.ec carV2.lus} PASS: ./myec2c {-o carV2.c carV2.ec} +PASS: ./lus2lic {-o carligths.lic carligths.lus} +PASS: ./lus2lic {-ec -o carligths.ec carligths.lus} +PASS: ./myec2c {-o carligths.c carligths.ec} +FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node carligths.lus {} PASS: ./lus2lic {-o ck2.lic ck2.lus} PASS: ./lus2lic {-ec -o ck2.ec ck2.lus} PASS: ./myec2c {-o ck2.c ck2.ec} @@ -897,8 +901,7 @@ PASS: ./myec2c {-o ck3.c ck3.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck3.lus {} PASS: ./lus2lic {-o ck4.lic ck4.lus} PASS: ./lus2lic {-ec -o ck4.ec ck4.lus} -PASS: ./myec2c {-o ck4.c ck4.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck4.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o ck4.c ck4.ec} PASS: ./lus2lic {-o ck5.lic ck5.lus} PASS: ./lus2lic {-ec -o ck5.ec ck5.lus} PASS: ./myec2c {-o ck5.c ck5.ec} @@ -908,8 +911,7 @@ PASS: ./lus2lic {-ec -o ck6.ec ck6.lus} PASS: ./myec2c {-o ck6.c ck6.ec} PASS: ./lus2lic {-o ck7.lic ck7.lus} PASS: ./lus2lic {-ec -o ck7.ec ck7.lus} -PASS: ./myec2c {-o ck7.c ck7.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ck7.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o ck7.c ck7.ec} PASS: ./lus2lic {-o clock1_2ms.lic clock1_2ms.lus} PASS: ./lus2lic {-ec -o clock1_2ms.ec clock1_2ms.lus} PASS: ./myec2c {-o clock1_2ms.c clock1_2ms.ec} @@ -924,7 +926,7 @@ PASS: ./myec2c {-o cminus.c cminus.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node cminus.lus {} PASS: ./lus2lic {-o complex.lic complex.lus} PASS: ./lus2lic {-ec -o complex.ec complex.lus} -PASS: ./myec2c {-o complex.c complex.ec} +FAIL: Try ec2c on the result: ./myec2c {-o complex.c complex.ec} PASS: ./lus2lic {-o compteur.lic compteur.lus} PASS: ./lus2lic {-ec -o compteur.ec compteur.lus} PASS: ./myec2c {-o compteur.c compteur.ec} @@ -963,7 +965,7 @@ PASS: ./myec2c {-o deSimone.c deSimone.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node deSimone.lus {} PASS: ./lus2lic {-o decl.lic decl.lus} PASS: ./lus2lic {-ec -o decl.ec decl.lus} -PASS: ./myec2c {-o decl.c decl.ec} +FAIL: Try ec2c on the result: ./myec2c {-o decl.c decl.ec} PASS: ./lus2lic {-o declaration.lic declaration.lus} PASS: ./lus2lic {-ec -o declaration.ec declaration.lus} PASS: ./myec2c {-o declaration.c declaration.ec} @@ -1003,8 +1005,7 @@ PASS: ./myec2c {-o exclusion.c exclusion.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node exclusion.lus {} PASS: ./lus2lic {-o filliter.lic filliter.lus} PASS: ./lus2lic {-ec -o filliter.ec filliter.lus} -PASS: ./myec2c {-o filliter.c filliter.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node filliter.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o filliter.c filliter.ec} PASS: ./lus2lic {-o filter.lic filter.lus} PASS: ./lus2lic {-ec -o filter.ec filter.lus} PASS: ./myec2c {-o filter.c filter.ec} @@ -1023,7 +1024,7 @@ PASS: ./myec2c {-o fresh_name.c fresh_name.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node fresh_name.lus {} PASS: ./lus2lic {-o func_with_body.lic func_with_body.lus} PASS: ./lus2lic {-ec -o func_with_body.ec func_with_body.lus} -PASS: ./myec2c {-o func_with_body.c func_with_body.ec} +FAIL: Try ec2c on the result: ./myec2c {-o func_with_body.c func_with_body.ec} PASS: ./lus2lic {-o hanane.lic hanane.lus} PASS: ./lus2lic {-ec -o hanane.ec hanane.lus} PASS: ./myec2c {-o hanane.c hanane.ec} @@ -1053,8 +1054,7 @@ PASS: ./myec2c {-o is_stable.c is_stable.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node is_stable.lus {} PASS: ./lus2lic {-o iter.lic iter.lus} PASS: ./lus2lic {-ec -o iter.ec iter.lus} -PASS: ./myec2c {-o iter.c iter.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o iter.c iter.ec} PASS: ./lus2lic {-o iterFibo.lic iterFibo.lus} PASS: ./lus2lic {-ec -o iterFibo.ec iterFibo.lus} PASS: ./myec2c {-o iterFibo.c iterFibo.ec} @@ -1077,7 +1077,7 @@ PASS: ./myec2c {-o lucky.c lucky.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node lucky.lus {} PASS: ./lus2lic {-o lustre.lic lustre.lus} PASS: ./lus2lic {-ec -o lustre.ec lustre.lus} -PASS: ./myec2c {-o lustre.c lustre.ec} +FAIL: Try ec2c on the result: ./myec2c {-o lustre.c lustre.ec} PASS: ./lus2lic {-o lustre_test1_ok.lic lustre_test1_ok.lus} PASS: ./lus2lic {-ec -o lustre_test1_ok.ec lustre_test1_ok.lus} PASS: ./myec2c {-o lustre_test1_ok.c lustre_test1_ok.ec} @@ -1088,7 +1088,7 @@ PASS: ./myec2c {-o map.c map.ec} FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node map.lus {} PASS: ./lus2lic {-o map_red_iter.lic map_red_iter.lus} PASS: ./lus2lic {-ec -o map_red_iter.ec map_red_iter.lus} -PASS: ./myec2c {-o map_red_iter.c map_red_iter.ec} +FAIL: Try ec2c on the result: ./myec2c {-o map_red_iter.c map_red_iter.ec} PASS: ./lus2lic {-o mapdeRed.lic mapdeRed.lus} PASS: ./lus2lic {-ec -o mapdeRed.ec mapdeRed.lus} PASS: ./myec2c {-o mapdeRed.c mapdeRed.ec} @@ -1165,10 +1165,10 @@ PASS: ./myec2c {-o mm3.c mm3.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node mm3.lus {} PASS: ./lus2lic {-o model.lic model.lus} PASS: ./lus2lic {-ec -o model.ec model.lus} -PASS: ./myec2c {-o model.c model.ec} +FAIL: Try ec2c on the result: ./myec2c {-o model.c model.ec} PASS: ./lus2lic {-o model2.lic model2.lus} PASS: ./lus2lic {-ec -o model2.ec model2.lus} -PASS: ./myec2c {-o model2.c model2.ec} +FAIL: Try ec2c on the result: ./myec2c {-o model2.c model2.ec} PASS: ./lus2lic {-o modelInst.lic modelInst.lus} PASS: ./lus2lic {-ec -o modelInst.ec modelInst.lus} PASS: ./myec2c {-o modelInst.c modelInst.ec} @@ -1230,7 +1230,7 @@ PASS: ./myec2c {-o multipar.c multipar.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {} ==> lus2lic4.sum <== -Test Run By jahier on Fri May 22 15:48:35 +Test Run By jahier on Tue Jun 23 10:51:01 Native configuration is x86_64-unknown-linux-gnu === lus2lic4 tests === @@ -1336,8 +1336,7 @@ PASS: ./lus2lic {-ec -o newpacks.ec newpacks.lus} PASS: ./myec2c {-o newpacks.c newpacks.ec} PASS: ./lus2lic {-o noAlarm.lic noAlarm.lus} PASS: ./lus2lic {-ec -o noAlarm.ec noAlarm.lus} -PASS: ./myec2c {-o noAlarm.c noAlarm.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node noAlarm.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o noAlarm.c noAlarm.ec} PASS: ./lus2lic {-o node_caller1.lic node_caller1.lus} PASS: ./lus2lic {-ec -o node_caller1.ec node_caller1.lus} PASS: ./myec2c {-o node_caller1.c node_caller1.ec} @@ -1348,8 +1347,7 @@ PASS: ./myec2c {-o nodeparam.c nodeparam.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node nodeparam.lus {} PASS: ./lus2lic {-o noeudsIndependants.lic noeudsIndependants.lus} PASS: ./lus2lic {-ec -o noeudsIndependants.ec noeudsIndependants.lus} -PASS: ./myec2c {-o noeudsIndependants.c noeudsIndependants.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node noeudsIndependants.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o noeudsIndependants.c noeudsIndependants.ec} PASS: ./lus2lic {-o normal.lic normal.lus} PASS: ./lus2lic {-ec -o normal.ec normal.lus} PASS: ./myec2c {-o normal.c normal.ec} @@ -1361,6 +1359,9 @@ PASS: ./lus2lic {-o o2l_feux_compl.lic o2l_feux_compl.lus} PASS: ./lus2lic {-ec -o o2l_feux_compl.ec o2l_feux_compl.lus} PASS: ./myec2c {-o o2l_feux_compl.c o2l_feux_compl.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node o2l_feux_compl.lus {} +PASS: ./lus2lic {-o oneq.lic oneq.lus} +PASS: ./lus2lic {-ec -o oneq.ec oneq.lus} +FAIL: Try ec2c on the result: ./myec2c {-o oneq.c oneq.ec} PASS: ./lus2lic {-o onlyroll.lic onlyroll.lus} PASS: ./lus2lic {-ec -o onlyroll.ec onlyroll.lus} PASS: ./myec2c {-o onlyroll.c onlyroll.ec} @@ -1386,10 +1387,10 @@ PASS: ./lus2lic {-ec -o p.ec p.lus} PASS: ./myec2c {-o p.c p.ec} PASS: ./lus2lic {-o pack1.lic pack1.lus} PASS: ./lus2lic {-ec -o pack1.ec pack1.lus} -PASS: ./myec2c {-o pack1.c pack1.ec} +FAIL: Try ec2c on the result: ./myec2c {-o pack1.c pack1.ec} PASS: ./lus2lic {-o packageTableau.lic packageTableau.lus} PASS: ./lus2lic {-ec -o packageTableau.ec packageTableau.lus} -PASS: ./myec2c {-o packageTableau.c packageTableau.ec} +FAIL: Try ec2c on the result: ./myec2c {-o packageTableau.c packageTableau.ec} PASS: ./lus2lic {-o packed_cst.lic packed_cst.lus} PASS: ./lus2lic {-ec -o packed_cst.ec packed_cst.lus} PASS: ./myec2c {-o packed_cst.c packed_cst.ec} @@ -1402,8 +1403,7 @@ PASS: ./myec2c {-o param_node.c param_node.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node param_node.lus {} PASS: ./lus2lic {-o param_node2.lic param_node2.lus} PASS: ./lus2lic {-ec -o param_node2.ec param_node2.lus} -PASS: ./myec2c {-o param_node2.c param_node2.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node param_node2.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o param_node2.c param_node2.ec} PASS: ./lus2lic {-o param_node3.lic param_node3.lus} PASS: ./lus2lic {-ec -o param_node3.ec param_node3.lus} PASS: ./myec2c {-o param_node3.c param_node3.ec} @@ -1441,11 +1441,14 @@ PASS: ./myec2c {-o ply03.c ply03.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ply03.lus {} PASS: ./lus2lic {-o polymorphic_pack.lic polymorphic_pack.lus} PASS: ./lus2lic {-ec -o polymorphic_pack.ec polymorphic_pack.lus} -PASS: ./myec2c {-o polymorphic_pack.c polymorphic_pack.ec} +FAIL: Try ec2c on the result: ./myec2c {-o polymorphic_pack.c polymorphic_pack.ec} PASS: ./lus2lic {-o poussoir.lic poussoir.lus} PASS: ./lus2lic {-ec -o poussoir.ec poussoir.lus} PASS: ./myec2c {-o poussoir.c poussoir.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node poussoir.lus {} +PASS: ./lus2lic {-o pplus.lic pplus.lus} +PASS: ./lus2lic {-ec -o pplus.ec pplus.lus} +FAIL: Try ec2c on the result: ./myec2c {-o pplus.c pplus.ec} PASS: ./lus2lic {-o pre_x.lic pre_x.lus} PASS: ./lus2lic {-ec -o pre_x.ec pre_x.lus} PASS: ./myec2c {-o pre_x.c pre_x.ec} @@ -1526,8 +1529,7 @@ PASS: ./myec2c {-o stopwatch.c stopwatch.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node stopwatch.lus {} PASS: ./lus2lic {-o struct0.lic struct0.lus} PASS: ./lus2lic {-ec -o struct0.ec struct0.lus} -PASS: ./myec2c {-o struct0.c struct0.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node struct0.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o struct0.c struct0.ec} PASS: ./lus2lic {-o struct_with.lic struct_with.lus} PASS: ./lus2lic {-ec -o struct_with.ec struct_with.lus} PASS: ./myec2c {-o struct_with.c struct_with.ec} @@ -1570,15 +1572,13 @@ PASS: ./myec2c {-o test_boolred.c test_boolred.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_boolred.lus {} PASS: ./lus2lic {-o test_clash.lic test_clash.lus} PASS: ./lus2lic {-ec -o test_clash.ec test_clash.lus} -PASS: ./myec2c {-o test_clash.c test_clash.ec} +FAIL: Try ec2c on the result: ./myec2c {-o test_clash.c test_clash.ec} PASS: ./lus2lic {-o test_condact.lic test_condact.lus} PASS: ./lus2lic {-ec -o test_condact.ec test_condact.lus} -PASS: ./myec2c {-o test_condact.c test_condact.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_condact.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o test_condact.c test_condact.ec} PASS: ./lus2lic {-o test_const.lic test_const.lus} PASS: ./lus2lic {-ec -o test_const.ec test_const.lus} -PASS: ./myec2c {-o test_const.c test_const.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node test_const.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o test_const.c test_const.ec} PASS: ./lus2lic {-o test_diese.lic test_diese.lus} PASS: ./lus2lic {-ec -o test_diese.ec test_diese.lus} PASS: ./myec2c {-o test_diese.c test_diese.ec} @@ -1588,7 +1588,7 @@ PASS: ./lus2lic {-ec -o test_enum.ec test_enum.lus} PASS: ./myec2c {-o test_enum.c test_enum.ec} PASS: ./lus2lic {-o test_extern.lic test_extern.lus} PASS: ./lus2lic {-ec -o test_extern.ec test_extern.lus} -PASS: ./myec2c {-o test_extern.c test_extern.ec} +FAIL: Try ec2c on the result: ./myec2c {-o test_extern.c test_extern.ec} PASS: ./lus2lic {-o test_map.lic test_map.lus} PASS: ./lus2lic {-ec -o test_map.ec test_map.lus} PASS: ./myec2c {-o test_map.c test_map.ec} @@ -1646,19 +1646,16 @@ PASS: ./myec2c {-o trivial_array.c trivial_array.ec} PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node trivial_array.lus {} PASS: ./lus2lic {-o ts01.lic ts01.lus} PASS: ./lus2lic {-ec -o ts01.ec ts01.lus} -PASS: ./myec2c {-o ts01.c ts01.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ts01.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o ts01.c ts01.ec} PASS: ./lus2lic {-o ts04.lic ts04.lus} PASS: ./lus2lic {-ec -o ts04.ec ts04.lus} -PASS: ./myec2c {-o ts04.c ts04.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node ts04.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o ts04.c ts04.ec} PASS: ./lus2lic {-o tuple.lic tuple.lus} PASS: ./lus2lic {-ec -o tuple.ec tuple.lus} -PASS: ./myec2c {-o tuple.c tuple.ec} -PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node tuple.lus {} +FAIL: Try ec2c on the result: ./myec2c {-o tuple.c tuple.ec} PASS: ./lus2lic {-o type_decl.lic type_decl.lus} PASS: ./lus2lic {-ec -o type_decl.ec type_decl.lus} -PASS: ./myec2c {-o type_decl.c type_decl.ec} +FAIL: Try ec2c on the result: ./myec2c {-o type_decl.c type_decl.ec} PASS: ./lus2lic {-o uu.lic uu.lus} PASS: ./lus2lic {-ec -o uu.ec uu.lus} PASS: ./myec2c {-o uu.c uu.ec} @@ -1702,38 +1699,38 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {} === lus2lic1 Summary === # of expected passes 319 -# of unexpected failures 3 +# of unexpected failures 4 ==> lus2lic2.sum <== === lus2lic2 Summary === -# of expected passes 316 -# of unexpected failures 2 +# of expected passes 319 +# of unexpected failures 3 ==> lus2lic3.sum <== === lus2lic3 Summary === -# of expected passes 485 -# of unexpected failures 6 +# of expected passes 460 +# of unexpected failures 26 ==> lus2lic4.sum <== === lus2lic4 Summary === -# of expected passes 447 -# of unexpected failures 3 +# of expected passes 427 +# of unexpected failures 20 =============================== -# Total number of failures: 14 -lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 4 seconds -lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 36 seconds -lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 68 seconds -lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 59 seconds -lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 78 seconds +# Total number of failures: 53 +lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds +lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 15 seconds +lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 45 seconds +lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 13 seconds +lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 48 seconds * Ref time: -0.05user 0.04system 4:07.91elapsed 0%CPU (0avgtext+0avgdata 5092maxresident)k -160inputs+0outputs (0major+5512minor)pagefaults 0swaps +0.05user 0.02system 2:01.52elapsed 0%CPU (0avgtext+0avgdata 5068maxresident)k +32inputs+0outputs (0major+5533minor)pagefaults 0swaps * Quick time (-j 4): -0.05user 0.02system 1:29.15elapsed 0%CPU (0avgtext+0avgdata 5056maxresident)k -160inputs+0outputs (0major+5562minor)pagefaults 0swaps +0.03user 0.02system 0:52.62elapsed 0%CPU (0avgtext+0avgdata 5080maxresident)k +64inputs+0outputs (0major+5579minor)pagefaults 0swaps diff --git a/test/lus2lic.time b/test/lus2lic.time index 15aa7c1f5726c9a8fb730a74f14c421358d4b506..df57a141cf1a0024d1ee91a3fde06195329ebd3f 100644 --- a/test/lus2lic.time +++ b/test/lus2lic.time @@ -1,11 +1,11 @@ -lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 4 seconds -lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 36 seconds -lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 68 seconds -lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 59 seconds -lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 78 seconds +lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds +lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 15 seconds +lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 45 seconds +lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 13 seconds +lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 48 seconds * Ref time: -0.05user 0.04system 4:07.91elapsed 0%CPU (0avgtext+0avgdata 5092maxresident)k -160inputs+0outputs (0major+5512minor)pagefaults 0swaps +0.05user 0.02system 2:01.52elapsed 0%CPU (0avgtext+0avgdata 5068maxresident)k +32inputs+0outputs (0major+5533minor)pagefaults 0swaps * Quick time (-j 4): -0.05user 0.02system 1:29.15elapsed 0%CPU (0avgtext+0avgdata 5056maxresident)k -160inputs+0outputs (0major+5562minor)pagefaults 0swaps +0.03user 0.02system 0:52.62elapsed 0%CPU (0avgtext+0avgdata 5080maxresident)k +64inputs+0outputs (0major+5579minor)pagefaults 0swaps diff --git a/test/should_work/carligths.lus b/test/should_work/carligths.lus new file mode 100644 index 0000000000000000000000000000000000000000..1a51ea455beed87ba5e38779b1a1e876f9805c5c --- /dev/null +++ b/test/should_work/carligths.lus @@ -0,0 +1,20 @@ +node carlights(TL, TR, LH, FL, LRL:bool) returns (side, low, high, fog, long:bool); +var fog_select, long_select :bool; +let + assert(not ((LH and TL) or (LH and TR))); + fog_select = FL; + long_select = LRL; + side = false -> (not(pre(side) or pre(low) or pre(high)) and TL) or + ( (pre(high) or pre(low) ) and (TL or TR)) or + (if not(TL or TR or LH) then pre(side) else false); + low = false -> (pre(side) and TL) or + (pre(high) and LH) or + (if not(TL or TR or LH) then pre(low) else false); + high = false -> (pre(low) and LH ) or + (if not(TL or TR or LH) then pre(high) else false); + fog = pre(low) and fog_select; + long = pre(high) and long_select; + + + +tel diff --git a/test/should_work/double_delay.lus b/test/should_work/double_delay.lus new file mode 100644 index 0000000000000000000000000000000000000000..7174f550b8913219406671a0bcf0013ab02de52c --- /dev/null +++ b/test/should_work/double_delay.lus @@ -0,0 +1,6 @@ + +node double_delay(x: bool) returns (r,pr: bool); +let + r = x fby x fby x; + pr = r fby r; +tel diff --git a/test/should_work/map.lus b/test/should_work/map.lus new file mode 100644 index 0000000000000000000000000000000000000000..ce0c8f8aa117764c0f22611137f60f9c5117a2c9 --- /dev/null +++ b/test/should_work/map.lus @@ -0,0 +1,18 @@ + +function myplus<<type t>>(x, y : t) returns (o : t); +let + o = x + y; +tel + +const n=4; +node titi<<type t>> = map<<myplus<<t>>,n>>; +function toto(x,y: int^n) returns (o: int^n); +let + o = map<<+, n>>(x,y); + (* o = titi<<int>>(x,y); *) +tel + +function map(x,y: real^n) returns (o: real^n); +let + o = titi<<real>>(x,y); +tel diff --git a/test/should_work/modes3x2_v4.lus b/test/should_work/modes3x2_v4.lus new file mode 100644 index 0000000000000000000000000000000000000000..196b18151f1b1e52a588bf81c83915431881ba23 --- /dev/null +++ b/test/should_work/modes3x2_v4.lus @@ -0,0 +1,67 @@ +(* version utilisant les horloges enumérées à la V6 *) + +type data = int; + +-- version pour otawa +extern function A0(x:data) returns (y:data); +extern function A1(x:data) returns (y:data); +extern function A2(x:data) returns (y:data); +extern function B0(x:data) returns (y:data); +extern function B1(x:data) returns (y:data); + + + +type state = enum { idle, low, high }; + +node A(x:data; ca1, ca2: bool) returns (y:data); +var + s, ps: state; +let + s = if ps = idle then (if ca1 then low else idle) + else if ps = low then (if ca1 then idle else if ca2 then high else low) + else (* ps = high *) (if ca1 then idle else if ca2 then low else high); + ps = idle -> pre s; + y = merge s + ( idle -> A0(x when idle(s))) + ( low -> A1(x when low(s)) ) + ( high -> A2(x when high(s))); +tel + +node B(x:data; nom, sby: bool) returns (z:data); +var + sby_when_not_nom : bool when not nom; +let + sby_when_not_nom = sby when not nom; + z = merge nom + (true -> B0(x when nom)) + (false -> (merge sby_when_not_nom + (true -> B1(x when sby_when_not_nom)) + (false -> (0 -> pre z) when not sby_when_not_nom))); +tel +node B_old(x:data; nom, sby: bool) returns (z:data); +let + z = if nom then current (B0(x when nom)) + else if sby then current (B1(x when sby)) + else (0 -> pre z); +tel + +node modes3x2_v4(x:data; on_off, toggle: bool) returns (res: data; +--); +--var + y, z : data; + sby : bool; + nom : bool; +); +let +-- assert #(on_off, toggle); + + y = A(x, on_off, toggle); + z = B(y, nom, sby); + + (* coordination commandes *) + --pcritic, critic = switch(false, on_off, on_off); + --sleep = pcritic and (on_off or toggle); + sby = (on_off = (true -> pre nom)); + nom = (on_off = (false -> pre sby)); + res = y + z; +tel diff --git a/test/should_work/oneq.lus b/test/should_work/oneq.lus new file mode 100644 index 0000000000000000000000000000000000000000..d9a68b21409d03e8b4382a7a5e759b0ebb7ae3d7 --- /dev/null +++ b/test/should_work/oneq.lus @@ -0,0 +1,14 @@ +node oneq(x:bool) returns (y:bool); +let + y = x; +tel + +type alias = int; +type pair = struct { a:int; b:int }; +type color = enum { blue, white, black }; + +function type_decl(i1, i2: int) returns (x: pair); +let + x= pair {a=i1; b=i2}; +tel + diff --git a/test/should_work/pplus.lus b/test/should_work/pplus.lus new file mode 100644 index 0000000000000000000000000000000000000000..bcc89f9b13ac62cfcd4d37c85ddf23948682c6f7 --- /dev/null +++ b/test/should_work/pplus.lus @@ -0,0 +1,4 @@ +node plus(a: int ; b: int) returns (d: int); +let + d = a + b; +tel diff --git a/test/should_work/test_boolred.lus b/test/should_work/test_boolred.lus new file mode 100644 index 0000000000000000000000000000000000000000..9c13db391e87b9d8d21d7e9facabb0742ccb53ee --- /dev/null +++ b/test/should_work/test_boolred.lus @@ -0,0 +1,5 @@ + +node test_boolred(t:bool^5) returns (res:bool); +let + res = boolred<<1,2,5>>(t); +tel \ No newline at end of file diff --git a/test/should_work/test_poly.lus b/test/should_work/test_poly.lus new file mode 100644 index 0000000000000000000000000000000000000000..340f348b719b5ef1beb7f353016d49e65c5bfda9 --- /dev/null +++ b/test/should_work/test_poly.lus @@ -0,0 +1,10 @@ + + +node truc = map<<+,42>>; + +(* PASSE DoNotPoly en spécialisant truc ! ... *) +node test_poly(x,y: int) returns (o: int^42; o2:real^42); +let + o = if (x < y) then 0^42 else truc(x^42, y^42); + o2=truc(3.0^42, 2.0^42); +tel