X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=f37c5751b1a636c18dd2fd668c084d3f7d4c4c2a;hp=58d0bc2a217118aaeb174974af72fc4a13dfd02c;hb=f71911854d01647a743d52bfccff8d78a4497550;hpb=7fbee73b4dd985cb5b217ed297710c00fd9d7004 diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 58d0bc2..f37c575 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -134,7 +134,7 @@ public abstract class Parser { Walk.Follow wf = new Walk.Follow(top.empty(), p.owner(), all_elements, cache); Reduction red = new Reduction(p); state.reductions.put(wf.walk(p.owner()), red); - if (wf.includesEof()) state.eofReductions.add(red, true); + if (wf.includesEof()) state.eofReductions.add(red); } // if the element following this position is an atom, copy the corresponding @@ -168,14 +168,14 @@ public abstract class Parser { } */ - public final int idx = master_state_idx++; + public final int idx = master_state_idx++; private final HashSet hs; private transient HashMap gotoSetNonTerminals = new HashMap(); private transient TopologicalBag gotoSetTerminals = new TopologicalBag(); private TopologicalBag reductions = new TopologicalBag(); - private FastSet eofReductions = new FastSet(); + private HashSet eofReductions = new HashSet(); private TopologicalBag shifts = new TopologicalBag(); private boolean accept = false; @@ -314,8 +314,8 @@ public abstract class Parser { holder[numPop-1] = f; return reduce(parent, numPop-2, rex, onlychild, target); } - public Forest reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild, GSS.Phase target, Forest rex) { - return reduce(parent, numPop-1, rex, onlychild, target); + public Forest reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild, Forest rex) { + return reduce(parent, numPop-1, rex, onlychild, parent.phase()); } private Forest zero = null; @@ -341,7 +341,7 @@ public abstract class Parser { } else { State state = parent.state.gotoSetNonTerminals.get(position.owner()); if (state!=null) - target.newNode(parent, rex, state, numPop<=0, parent.phase); + target.newNode(parent, rex, state, numPop<=0, parent.phase()); } return rex; }