checkpoint
authoradam <adam@megacz.com>
Thu, 5 Jan 2006 03:08:57 +0000 (22:08 -0500)
committeradam <adam@megacz.com>
Thu, 5 Jan 2006 03:08:57 +0000 (22:08 -0500)
darcs-hash:20060105030857-5007d-b000eca02d0f105f242d51a87014da0dd452ee4f.gz

src/edu/berkeley/sbp/GSS.java
src/edu/berkeley/sbp/Parser.java

index 7d13fb2..1d401a5 100644 (file)
@@ -90,7 +90,7 @@ class GSS {
                 if (token==null) break;
                 int count = 0;
                 Parser.Table.Reduction r = null;
-                if (!state.hasReductions(token)) return;
+                if (!state.canReduce(token)) return;
                 //if (count > 1) break;
                 //if (r.numPop == 0) break;
                 //r.reduce(pending, parent, null, Phase.this, null);
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);