FUNC init((cd)):(cd)
STATE
let(pnd1 = SeqDescr(EvId(NIL, "pal"),
EvId(NIL, "sig")
),
codexec1 = ExecDescr("INSPAL", <"pal", "sig">),
trans11 = TransDescr(And(Ne("pal", StrExp("")),
Not(FunCall("EXISTPAL", "", <"pal">))
),
<>,
<ExcepDescr(Eq("pal", StrExp("")),
<Out("Palavra nula!")>
),
ExcepDescr(Ne("pal", StrExp("")),
<Out("Erro!")>
)
>
),
gi1 = SYNTH({"GInsPal"}, NIL, {}, {},
["pal"->VarUI("Pal"),
"sig"->VarUI("Sig")
],
true,
<Atrib("pal", ""), Atrib("sig", "")>, pnd1,
[EvId(NIL, "pal") -> trans11,
CmdId("$Cancel") -> TransDescr(true, <>, <>),
CmdId("$OK") -> TransDescr(true, <>, <>),
], codexec1),
pnd2 = EvId(NIL, "pal"),
codexec2 = ExecDescr("REMPAL", <"pal">),
trans21 = TransDescr(FunCall("EXISTPAL", "", <"pal">),
<Atrib("sig", FunCall("CONSPAL", "", <"pal">))>,
<ExcepDescr(true,
<Out("Erro!")>
)
>
),
gi2 = SYNTH({"GRemPal"}, NIL, {}, {},
["pal"->VarUI("Pal"),
"sig"->VarUI("Sig")
],
Not(FunCall("EMPTYDIC", "", <>)),
<Atrib("pal", ""), Atrib("sig", "")>, pnd2,
[EvId(NIL, "pal") -> trans21,
CmdId("$Cancel") -> TransDescr(true, <>, <>),
CmdId("$OK") -> TransDescr(true, <>, <>),
], codexec2),
gi3 = SYNTH({"ViewConsPal"}, NIL, {}, {"DoConsPal"},
["sig"->VarUI("Sig")
],
Not(FunCall("EMPTYDIC", "", <>)),
<Atrib("sig", "")>,
EvId("DoConsPal", "sig"),
[EvId(NIL, "pal") -> TransDescr(true, <>, <>),
CmdId("$OK") -> TransDescr(true, <>, <>),
], NIL),
pnd4 = EvId(NIL, "pal"),
codexec4 = ExecDescr("CONSPAL", <"pal">),
gi4 = VALSYNTH({"DoConsPal"}, "Sig", {}, {},
["pal"->VarUI("Pal")
],
true,
<Atrib("pal", "")>, pnd2,
[EvId(NIL, "pal") -> trans21], codexec4),
pnd5 = OpcDescr(EvId("Fim", NIL),
RepDescr(OpcDescr(EvId("GRemPal", NIL),
OpcDescr(EvId("GInsPal", NIL),
OpcDescr(EvId("GInit", NIL),
EvId("ViewConsPal", NIL)
)
)
)
)
),
gi5 = DECISION({"Menu"}, NIL, {}, {"Fim"},
[],
true,
<>, pnd5,
[], NIL),
gi6 = DECISION({"Fim"}, NIL, {}, {"Fim"},
[],
true,
<>, NIL,
[], NIL),
gi7 = SYNTH({"GInit"}, NIL, {}, {"Fim"},
[],
true,
<>, NIL,
[], ExecDescr("INIT", <>)), c1 = channel("lxst"),
c2 = channel("stsm"),
c3 = channel("stlx"),
c4 = channel("smst")
)
in cd <- CD(["GInsPal" -> gi1,
"GRemPal" -> gi2,
"ViewConsPal" -> gi3,
"DoConsPal" -> gi4,
"Menu" -> gi5,
"Fim" -> gi6,
"GInit" -> gi7
], [], c2, c4, c1, c3);