heptagon/test/good/hierarchie.ept

62 lines
1.6 KiB
Text
Raw Permalink Normal View History

node ssm(i1: bool; i2: bool; i3: bool; i4: bool)
returns (o1: bool; o2: bool; o3: bool; o4: bool)
let
automaton
state State1
do o1 = false; o2 = false; o3 = false; o4 = false
until i1 then TMP12
unless i2 then TMP11
state TMP11
do o1 = false; o2 = true; o3 = false; o4 = false;
until true then State3
state TMP12
do o1 = true; o2 = true; o3 = false; o4 = false;
until true then State2
state State3
var last end1: bool = false; last end2: bool = false;
do o1 = false; o2 = false; o3 = false; o4 = false;
automaton
state State1_1
do until i3 then State2_1
state State2_1
do end1 = true;
end;
automaton
state State1_2
do unless i4 then State2_2
state State2_2
do end2 = true
end
until end1 & end2 then State1
unless i1 then State4
| i2 then State2
state State2
var l1: bool;
do o1 = false; o2 = false; o3 = false; o4 = l1; l1 = true;
until i4 then State4
state State4
var l2: bool;
do o1 = false; o2 = false; o3 = l2; o4 = false; l2 = true;
until i4 then State1
end
tel
(* clock (0^(n-1)1) *)
node counter <<n:int>>() returns (b:bool)
var c:int;
let
c = 1 fby if b then 1 else c + 1;
b = (c = n);
tel
node main() returns (o1: bool; o2: bool; o3: bool; o4: bool)
var i1: bool; i2: bool; i3: bool; i4: bool;
let
i1 = counter<<7>>();
i2 = counter<<9>>();
i3 = counter<<13>>();
i4 = counter<<17>>();
(o1,o2,o3,o4) = ssm(i1,i2,i3,i4)
tel