X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=cdf171560fb200e1042d0e9a7707583b968fafbb;hp=076bc7db578735732bef13d7aea34630b2497771;hb=e9565d3e145567a79e11ca7a3c3e8cd7fa6d3e57;hpb=014de68a21aa2d17fdfd0bac7e404a725997a246 diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 076bc7d..cdf1715 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -179,19 +179,21 @@ public abstract class Parser { private TopologicalBag shifts = new TopologicalBag(); private boolean accept = false; + private TopologicalBag oshifts = shifts; + //private TopologicalBag reductions2 = reductions; + // Interface Methods ////////////////////////////////////////////////////////////////////////////// public boolean isAccepting() { return accept; } public boolean canShift(Token t) { return shifts.contains(t); } - public Iterable getShifts(Token t) { return shifts.get(t); } - - public Iterable 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 iterator() { return hs.iterator(); } - public void invokeShifts(Token t, Invokable irbc, B b, C c) { shifts.invoke(t, irbc, b, c); } + public void invokeShifts(Token t, Invokable irbc, B b, C c) { + oshifts.invoke(t, irbc, b, c); + } public void invokeReductions(Token t, Invokable irbc, B b, C c) { if (t==null) for(Reduction r : eofReductions) irbc.invoke(r, b, c); else reductions.invoke(t, irbc, b, c);