checkpoint
[sbp.git] / src / edu / berkeley / sbp / Parser.java
index 076bc7d..cdf1715 100644 (file)
@@ -179,19 +179,21 @@ public abstract class Parser<T extends Token, R> {
             private           TopologicalBag<Token,State>     shifts              = new TopologicalBag<Token,State>();
             private           boolean                         accept              = false;
 
+            private TopologicalBag<Token,State> oshifts = shifts;
+            //private TopologicalBag<Token,Reduction> reductions2 = reductions;
+
             // Interface Methods //////////////////////////////////////////////////////////////////////////////
 
             public boolean             isAccepting()               { return accept; }
 
             public boolean             canShift(Token t)           { return shifts.contains(t); }
-            public Iterable<State>     getShifts(Token t)          { return shifts.get(t); }
-
-            public Iterable<Reduction> getReductions(Token t)      { return t==null ? eofReductions : reductions.get(t); }
-            public boolean             hasReductions(Token t)      { return t==null ? eofReductions.size()>0 : reductions.has(t); }
+            public boolean             canReduce(Token t)          { return t==null ? eofReductions.size()>0 : reductions.has(t); }
 
             public Iterator<Position>  iterator()                  { return hs.iterator(); }
 
-            public <B,C> void          invokeShifts(Token t, Invokable<State,B,C> irbc, B b, C c) { shifts.invoke(t, irbc, b, c); }
+            public <B,C> void          invokeShifts(Token t, Invokable<State,B,C> irbc, B b, C c) {
+                oshifts.invoke(t, irbc, b, c);
+            }
             public <B,C> void          invokeReductions(Token t, Invokable<Reduction,B,C> irbc, B b, C c) {
                 if (t==null) for(Reduction r : eofReductions) irbc.invoke(r, b, c);
                 else         reductions.invoke(t, irbc, b, c);