From: adam Date: Thu, 5 Jan 2006 03:08:57 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~434 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=e9565d3e145567a79e11ca7a3c3e8cd7fa6d3e57;hp=014de68a21aa2d17fdfd0bac7e404a725997a246 checkpoint darcs-hash:20060105030857-5007d-b000eca02d0f105f242d51a87014da0dd452ee4f.gz --- diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index 7d13fb2..1d401a5 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -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); 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);