Package jflex.dfa
Class DFA
java.lang.Object
jflex.dfa.DFA
- Direct Known Subclasses:
DeprecatedDfa
Deterministic finite automata representation in JFlex. Contains minimization algorithm.
- Version:
- JFlex 1.9.1
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Action[]action[state]is the action that is to be carried out in statestate,nullif there is no action.(package private) static final boolean(package private) int[]entryState[i]is the start-state of lexical state i or lookahead DFA i.(package private) boolean[]isFinal[state] == trueif the statestateis a final state.private booleanTrue iff this DFA contains general lookaheadprivate booleanWhether the DFA is minimized.static final intThe code for "no target state" in the transition table.private final intThe maximum number of input charactersprivate final intThe number of lexical states (2*numLexStates invalid input: '<'= entryState.length)private intThe number of states in this DFAprivate static final intThe initial number of states(package private) int[][]table[current_state][character]is the next state forcurrent_statewith inputcharacter,NO_TARGETif there is no transition for this input incurrent_stateall actions that are used in this DFA -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaction(int i) voidaddTransition(int start, int input, int dest) addTransition.voidcheckActions(LexScan scanner, LexParse parser) Checks that all actions can actually be matched in this DFA.private StringReturns a gnu representation of the DFA.private voidensureStateCapacity(int newNumStates) intentryState(int i) booleaninthashCode()booleanisFinal(int i) booleanbooleanvoidminimize()Implementation of Hopcroft's O(n log n) minimization algorithm, follows description by D.intnumInput()intintprivate voidprintBlocks(int[] b, int[] b_f, int[] b_b, int last) private voidprintInvDelta(int[][] inv_delta, int[] inv_delta_set) Prints the inverse of transition table.private voidprintL(int[] l_f, int[] l_b, int anchor) voidSets the action.voidsetEntryState(int eState, int trueState) Sets the state of the entry.voidsetFinal(int state, boolean isFinalState) setFinal.inttable(int i, int j) private static booleantableEquals(int[][] a, int[][] b) toString()toString(int[] a) Returns a representation of this DFA.voidWrites a dot-file representing this DFA.
-
Field Details
-
STATES
private static final int STATESThe initial number of states- See Also:
-
NO_TARGET
public static final int NO_TARGETThe code for "no target state" in the transition table.- See Also:
-
DFA_DEBUG
static final boolean DFA_DEBUG- See Also:
-
table
int[][] tabletable[current_state][character]is the next state forcurrent_statewith inputcharacter,NO_TARGETif there is no transition for this input incurrent_state -
isFinal
boolean[] isFinalisFinal[state] == trueif the statestateis a final state. -
numInput
private final int numInputThe maximum number of input characters -
numLexStates
private final int numLexStatesThe number of lexical states (2*numLexStates invalid input: '<'= entryState.length) -
numStates
private int numStatesThe number of states in this DFA -
entryState
int[] entryStateentryState[i]is the start-state of lexical state i or lookahead DFA i. -
action
action[state]is the action that is to be carried out in statestate,nullif there is no action. -
usedActions
all actions that are used in this DFA -
lookaheadUsed
private boolean lookaheadUsedTrue iff this DFA contains general lookahead -
minimized
private boolean minimizedWhether the DFA is minimized.
-
-
Constructor Details
-
DFA
public DFA(int numEntryStates, int numInputs, int numLexStates) Constructor for a deterministic finite automata. -
DFA
DFA(int numEntryStates, int numInputs, int numLexStates, int numStates)
-
-
Method Details
-
setEntryState
public void setEntryState(int eState, int trueState) Sets the state of the entry.- Parameters:
eState- entry state.trueState- whether it is the current state.
-
ensureStateCapacity
private void ensureStateCapacity(int newNumStates) -
setAction
Sets the action.- Parameters:
state- a int.stateAction- aActionobject.
-
setFinal
public void setFinal(int state, boolean isFinalState) setFinal.- Parameters:
state- a int.isFinalState- a boolean.
-
addTransition
public void addTransition(int start, int input, int dest) addTransition.- Parameters:
start- a int.input- a int.dest- a int.
-
lookaheadUsed
public boolean lookaheadUsed() -
toString
-
hashCode
public int hashCode() -
equals
-
tableEquals
private static boolean tableEquals(int[][] a, int[][] b) -
writeDot
Writes a dot-file representing this DFA.- Parameters:
file- output file.
-
dotFormat
Returns a gnu representation of the DFA.- Returns:
- a representation in the dot format.
-
checkActions
Checks that all actions can actually be matched in this DFA. -
minimize
public void minimize()Implementation of Hopcroft's O(n log n) minimization algorithm, follows description by D. Gries.Time:
O(n log n)Space:O(c n), size < 4*(5*c*n + 13*n + 3*c) byte -
isMinimized
public boolean isMinimized() -
toString
Returns a representation of this DFA. -
printBlocks
private void printBlocks(int[] b, int[] b_f, int[] b_b, int last) -
printL
private void printL(int[] l_f, int[] l_b, int anchor) -
printInvDelta
private void printInvDelta(int[][] inv_delta, int[] inv_delta_set) Prints the inverse of transition table.- Parameters:
inv_delta- an array of int.inv_delta_set- an array of int.
-
numInput
public int numInput() -
numStates
public int numStates() -
numLexStates
public int numLexStates() -
entryState
public int entryState(int i) -
isFinal
public boolean isFinal(int i) -
table
public int table(int i, int j) -
action
-