diff --git a/src/main/java/org/sablecc/sablecc/AcceptStates.java b/src/main/java/org/sablecc/sablecc/AcceptStates.java index d38ba438482902550af7af9231cb14e8ee6617fa..76e46e1dbb02a30d4c25352c3d2e0ea55aaa1e2a 100644 --- a/src/main/java/org/sablecc/sablecc/AcceptStates.java +++ b/src/main/java/org/sablecc/sablecc/AcceptStates.java @@ -27,9 +27,8 @@ public class AcceptStates extends DepthFirstAdapter @Override public void caseStart(Start node) { - for(int i = 0; i < dfa.states.size(); i++) + for(DFA.State state : dfa.states) { - DFA.State state = (DFA.State) dfa.states.elementAt(i); state.accept = -1; int accept = -1; diff --git a/src/main/java/org/sablecc/sablecc/DFA.java b/src/main/java/org/sablecc/sablecc/DFA.java index 4ab4bd999fd958b7a9b7aa2fe6df4766027579dc..8f8afb8ff37398365b8bb600edc94d5588ec6736 100644 --- a/src/main/java/org/sablecc/sablecc/DFA.java +++ b/src/main/java/org/sablecc/sablecc/DFA.java @@ -7,6 +7,7 @@ package org.sablecc.sablecc; +import java.util.Map; import java.util.Vector; import java.util.Hashtable; @@ -20,17 +21,17 @@ public class DFA } public NFA nfa; - public final Vector states = new Vector(0); - public final Hashtable finder = new Hashtable(1); + public final Vector<DFA.State> states = new Vector<>(0); + public final Map<IntSet, Integer> finder = new Hashtable<>(1); private void optimize() { - Vector transitions = new Vector(0); + Vector<Vector<DFA.Transition>> transitions = new Vector<>(0); for(int i = 0; i < states.size(); i++) { - DFA.State state = (DFA.State) states.elementAt(i); - transitions.addElement(new Vector(0)); + DFA.State state = states.elementAt(i); + transitions.addElement(new Vector<DFA.Transition>(0)); for(int j = 0; j < state.transitions.size(); j++) { @@ -50,15 +51,12 @@ public class DFA if(max < 2) { - ((Vector) transitions.elementAt(i)).addElement( - state.transitions.elementAt(j)); + transitions.elementAt(i).addElement(state.transitions.elementAt(j)); } else { - DFA.Transition transition1 = - (DFA.Transition) state.transitions.elementAt(j); - DFA.Transition transition2 = - (DFA.Transition) state.transitions.elementAt(j + max - 1); + DFA.Transition transition1 = state.transitions.elementAt(j); + DFA.Transition transition2 = state.transitions.elementAt(j + max - 1); DFA.Transition transition = new DFA.Transition( @@ -67,7 +65,7 @@ public class DFA transition2.interval().end), -2 - st); - ((Vector) transitions.elementAt(i)).addElement(transition); + transitions.elementAt(i).addElement(transition); j += max - 1; } } @@ -75,25 +73,23 @@ public class DFA for(int i = 0; i < states.size(); i++) { - DFA.State state = (DFA.State) states.elementAt(i); - state.transitions = (Vector) transitions.elementAt(i); + DFA.State state = states.elementAt(i); + state.transitions = transitions.elementAt(i); } } private int match(int st1, int tr, int st2) { - DFA.State state1 = (DFA.State) states.elementAt(st1); - DFA.State state2 = (DFA.State) states.elementAt(st2); + DFA.State state1 = states.elementAt(st1); + DFA.State state2 = states.elementAt(st2); - DFA.Transition first = - (DFA.Transition) state1.transitions.elementAt(tr); + DFA.Transition first = state1.transitions.elementAt(tr); int j = -1; for(int i = 0; i < state2.transitions.size(); i++) { - DFA.Transition transition = - (DFA.Transition) state2.transitions.elementAt(i); + DFA.Transition transition = state2.transitions.elementAt(i); if(transition.match(first)) { @@ -113,11 +109,9 @@ public class DFA while((i < state1.transitions.size()) && (j < state2.transitions.size())) { - DFA.Transition transition1 = - (DFA.Transition) state1.transitions.elementAt(i); + DFA.Transition transition1 = state1.transitions.elementAt(i); - DFA.Transition transition2 = - (DFA.Transition) state2.transitions.elementAt(j); + DFA.Transition transition2 = state2.transitions.elementAt(j); if(!transition1.match(transition2)) { @@ -148,7 +142,7 @@ public class DFA { System.out.print("."); - state = (State) states.elementAt(i); + state = states.elementAt(i); CharSet.Interval interval = new CharSet.Interval((char) 0, (char) 0xffff); @@ -217,7 +211,7 @@ public class DFA if(modified) { destination = eclosure(destination); - Integer dest = (Integer) finder.get(destination); + Integer dest = finder.get(destination); if(dest != null) { @@ -336,7 +330,7 @@ public class DFA } public IntSet nfaStates = new IntSet(); - public Vector transitions = new Vector(0); + public Vector<Transition> transitions = new Vector<>(0); public int accept; @Override @@ -355,9 +349,9 @@ public class DFA } }*/ - for(int i = 0; i < transitions.size(); i++) + for(DFA.Transition transition : transitions) { - result.append(transitions.elementAt(i) + ","); + result.append(transition + ","); } return result /*+ " " + nfaStates*/ + ""; diff --git a/src/main/java/org/sablecc/sablecc/GenLexer.java b/src/main/java/org/sablecc/sablecc/GenLexer.java index c72a0b4ce5224c9dadc1227f585f92992d0462e3..f0a29bac5b797d5be59b110f96cef816d446bf17 100644 --- a/src/main/java/org/sablecc/sablecc/GenLexer.java +++ b/src/main/java/org/sablecc/sablecc/GenLexer.java @@ -229,18 +229,14 @@ public class GenLexer extends AnalysisAdapter file.write(" { // " + acceptStatesArray[accSt].stateName + System.getProperty("line.separator")); Vector outerArray = new Vector(); - for(int i = 0; i < dfa.states.size(); i++) + for(DFA.State state : dfa.states) { Vector innerArray = new Vector(); - DFA.State state = (DFA.State) dfa.states.elementAt(i); file.write(" {"); - for(int j = 0; j < state.transitions.size(); j++) + for(DFA.Transition transition : state.transitions) { - DFA.Transition transition = - (DFA.Transition) state.transitions.elementAt(j); - file.write("{" + ((int) transition.interval().start) + ", " + ((int) transition.interval().end) + ", " + transition.destination + "}, "); @@ -288,10 +284,8 @@ public class GenLexer extends AnalysisAdapter file.write(" // " + acceptStatesArray[i].stateName + System.getProperty("line.separator")); file.write(" {"); - for(int j = 0; j < dfa.states.size(); j++) + for(DFA.State state : dfa.states) { - DFA.State state = (DFA.State) dfa.states.elementAt(j); - file.write(state.accept + ", "); innerArray.addElement(state.accept); }