18 package finitestatemachines;
20 import ca.uqac.lif.cep.Connector;
21 import ca.uqac.lif.cep.Pullable;
22 import ca.uqac.lif.cep.fsm.FunctionTransition;
23 import ca.uqac.lif.cep.fsm.MooreMachine;
24 import ca.uqac.lif.cep.functions.StreamVariable;
25 import ca.uqac.lif.cep.functions.Constant;
26 import ca.uqac.lif.cep.functions.FunctionTree;
27 import ca.uqac.lif.cep.tmf.QueueSource;
28 import ca.uqac.lif.cep.util.Equals;
40 public static void main(String[] args)
46 final int UNSAFE = 0, SAFE = 1, ERROR = 2;
49 MooreMachine machine =
new MooreMachine(1, 1);
61 machine.addTransition(ERROR,
new FunctionTransition(
62 new Constant(
true), ERROR));
67 machine.addSymbol(UNSAFE,
new Constant(
"safe")).addSymbol(SAFE,
new Constant(
"unsafe")).addSymbol(ERROR,
new Constant(
"error"));
70 QueueSource source =
new QueueSource();
71 source.setEvents(
"hasnext",
"next",
"hasnext",
"hasnext",
"next",
"next");
72 Connector.connect(source, machine);
75 Pullable p = machine.getPullableOutput();
76 for (
int i = 0; i < 7; i++)
78 String s = (String) p.pull();
79 System.out.println(s);
92 protected static void addTransition(MooreMachine m,
int source, String label,
int destination)
94 m.addTransition(source,
new FunctionTransition(
new FunctionTree(Equals.instance,
new StreamVariable(),
new Constant(label)), destination));
static void addTransition(MooreMachine m, int source, String label, int destination)
Adds a new transition to a Moore machine.
Similar to SimpleMooreMachine, but with a bit of code written to avoid repetitions.