18 package finitestatemachines;
20 import ca.uqac.lif.cep.Connector;
21 import ca.uqac.lif.cep.Context;
22 import ca.uqac.lif.cep.Pullable;
23 import ca.uqac.lif.cep.functions.Constant;
24 import ca.uqac.lif.cep.functions.ContextAssignment;
25 import ca.uqac.lif.cep.functions.ContextVariable;
26 import ca.uqac.lif.cep.functions.FunctionTree;
27 import ca.uqac.lif.cep.functions.StreamVariable;
28 import ca.uqac.lif.cep.tmf.QueueSource;
29 import ca.uqac.lif.cep.fsm.FunctionTransition;
30 import ca.uqac.lif.cep.fsm.MooreMachine;
31 import ca.uqac.lif.cep.fsm.TransitionOtherwise;
32 import ca.uqac.lif.cep.util.Equals;
33 import ca.uqac.lif.cep.util.Numbers;
34 import ca.uqac.lif.cep.util.Booleans.And;
48 public static void main(String[] args)
51 MooreMachine machine =
new MooreMachine(1, 1);
52 machine.setContext(
"c", 0);
53 machine.setContext(
"n", 1);
57 FunctionTree guard =
new FunctionTree(And.instance,
58 new FunctionTree(Equals.instance,
59 StreamVariable.X,
new Constant(
"hasNext")),
60 new FunctionTree(Numbers.isLessThan,
61 new ContextVariable(
"c"),
new ContextVariable(
"n")));
64 ContextAssignment asg =
new ContextAssignment(
"c",
65 new FunctionTree(Numbers.addition,
66 new ContextVariable(
"c"),
new Constant(1))
70 machine.addTransition(0,
new FunctionTransition(
74 machine.addTransition(0,
new FunctionTransition(
75 new FunctionTree(And.instance,
76 new FunctionTree(Equals.instance,
77 StreamVariable.X,
new Constant(
"next")),
78 new FunctionTree(Equals.instance,
79 new ContextVariable(
"c"),
new ContextVariable(
"n"))),
81 new ContextAssignment(
"c",
new Constant(0)),
82 new ContextAssignment(
"n",
83 new FunctionTree(Numbers.addition,
84 new ContextVariable(
"n"),
new Constant(1))
89 machine.addTransition(0,
new TransitionOtherwise(1));
90 machine.addTransition(1,
new TransitionOtherwise(1));
93 machine.addSymbol(0,
new ContextVariable(
"c"));
95 QueueSource source =
new QueueSource();
96 source.setEvents(
"hasNext",
"next",
"hasNext",
"hasNext",
"next",
"next",
"hasNext");
98 Connector.connect(source, machine);
99 Pullable p = machine.getPullableOutput();
103 System.out.println(o);
Create an extended state machine with state variables.