X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=076bc7db578735732bef13d7aea34630b2497771;hp=5c399cc95c63246761ec4581af29816c2a664167;hb=014de68a21aa2d17fdfd0bac7e404a725997a246;hpb=c4431d19cc5ddaae29d22c8c56366b53b0bad352 diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 5c399cc..076bc7d 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -181,14 +181,22 @@ public abstract class Parser { // 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 boolean isAccepting() { return accept; } + 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 Iterable getEofReductions() { return eofReductions; } + 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 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); + } + // Constructor ////////////////////////////////////////////////////////////////////////////// /**