-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStateMachineTableNumber.java
More file actions
54 lines (46 loc) · 1.63 KB
/
StateMachineTableNumber.java
File metadata and controls
54 lines (46 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* sample state machine
* accept natural numbers 0|[1-9][0-9]*
*/
public class StateMachineTableNumber extends compiler.StateMachine {
@Override
public String getStartState() {
return "firstDigit";
}
@Override
public boolean isFinalState() {
return (m_state.equals("number0") || m_state.equals("nextDigit"));
}
@Override
public void initStateTable() {
compiler.State firstDigit = new compiler.State("firstDigit");
firstDigit.addTransition('0', "number0");
firstDigit.addTransition('1', "nextDigit");
firstDigit.addTransition('2', "nextDigit");
firstDigit.addTransition('3', "nextDigit");
firstDigit.addTransition('4', "nextDigit");
firstDigit.addTransition('5', "nextDigit");
firstDigit.addTransition('6', "nextDigit");
firstDigit.addTransition('7', "nextDigit");
firstDigit.addTransition('8', "nextDigit");
firstDigit.addTransition('9', "nextDigit");
m_stateMap.put("firstDigit", firstDigit);
compiler.State number0 = new compiler.State("number0");
m_stateMap.put("number0", number0);
compiler.State nextDigit = new compiler.State("nextDigit");
nextDigit.addTransition('0', "nextDigit");
nextDigit.addTransition('1', "nextDigit");
nextDigit.addTransition('2', "nextDigit");
nextDigit.addTransition('3', "nextDigit");
nextDigit.addTransition('4', "nextDigit");
nextDigit.addTransition('5', "nextDigit");
nextDigit.addTransition('6', "nextDigit");
nextDigit.addTransition('7', "nextDigit");
nextDigit.addTransition('8', "nextDigit");
nextDigit.addTransition('9', "nextDigit");
m_stateMap.put("nextDigit", nextDigit);
}
public String getName() {
return "NUMBER";
}
}