forked from jasder/antlr
wasn't killing all states
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 6766]
This commit is contained in:
parent
f871e2dbf7
commit
ad036f9ab1
|
@ -194,17 +194,22 @@ public class DFAMinimizer {
|
||||||
for (IntervalSet s : uniq) {
|
for (IntervalSet s : uniq) {
|
||||||
List<Interval> intervals = s.getIntervals();
|
List<Interval> intervals = s.getIntervals();
|
||||||
for (Interval I : intervals) {
|
for (Interval I : intervals) {
|
||||||
for (int i=I.a+1; i<=I.b; i++) {
|
for (int i=I.a; i<=I.b; i++) {
|
||||||
System.out.println("kill "+i);
|
if ( states[i].stateNumber != i ) { // if not one of our merged states
|
||||||
dfa.stateSet.remove(dfa.states.get(i));
|
System.out.println("kill "+i);
|
||||||
dfa.states.set(i, null);
|
DFAState d = dfa.states.get(i);
|
||||||
|
dfa.stateSet.remove(d);
|
||||||
|
if ( d.isAcceptState ) {
|
||||||
|
dfa.altToAcceptStates[d.predictsAlt].remove(d);
|
||||||
|
}
|
||||||
|
dfa.states.set(i, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void print(boolean[][] distinct) {
|
void print(boolean[][] distinct) {
|
||||||
int n = distinct.length;
|
int n = distinct.length;
|
||||||
for (int i=0; i<n; i++) {
|
for (int i=0; i<n; i++) {
|
||||||
System.out.print(dfa.states.get(i).stateNumber+":");
|
System.out.print(dfa.states.get(i).stateNumber+":");
|
||||||
|
|
Loading…
Reference in New Issue