X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2FParser.java;h=f087a05e0ea93e48d909ed04fc2e562bb7f725fd;hp=90f86f24c8167983504abc89cc243b5116d48032;hb=e4f373b56b1cdc2c086c0b86e5ec45bad784df0e;hpb=69965bfd571a733f573e2adc7fae06a653c83cae diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 90f86f2..f087a05 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -316,6 +316,19 @@ public abstract class Parser { return ret; } + public Forest reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild) { + int pos = numPop-1; + if (pos>=0) holder[pos] = parent.pending(); + Forest rex = null; + if (pos==0) { + if (rex==null) { + System.arraycopy(holder, 0, position.holder, 0, holder.length); + rex = position.rewrite(parent.phase().getLocation()); + } + } + return reduce(onlychild, pos-1, rex, null, parent.phase()); + } + private Forest zero = null; public Forest zero() { if (zero != null) return zero;