From 7d87b6f9aa045ec7e4a802a88240a235c5fde5a3 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 4 Jan 2006 05:53:17 -0500 Subject: [PATCH] checkpoint darcs-hash:20060104105317-5007d-bed73d0e9cb6781fca85c4837237d63133667a5a.gz --- src/edu/berkeley/sbp/Parser.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 817aea6..a24c523 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -312,9 +312,8 @@ public abstract class Parser { public String toString() { return "[reduce " + position + "]"; } public Forest reduce(GSS.Phase.Node parent) { - Forest rex = numPop==0 ? zero() : null; - Forest ret = reduce(parent, numPop-1, rex, null, parent.phase()); - return ret; + if (numPop==0) return finish(parent, zero(), parent.phase()); + return reduce(parent, numPop-1, null, null, parent.phase()); } public Forest reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild) { @@ -357,12 +356,16 @@ public abstract class Parser { for(GSS.Phase.Node child : parent.parents()) reduce(child, pos-1, rex, null, target); } else { - State state = parent.state.gotoSetNonTerminals.get(position.owner()); - if (state!=null) - target.newNode(parent, rex, state, numPop<=0, parent.phase()); + return finish(parent, rex, target); } return rex; } + private Forest finish(GSS.Phase.Node parent, Forest result, GSS.Phase target) { + State state = parent.state.gotoSetNonTerminals.get(position.owner()); + if (state!=null) + target.newNode(parent, result, state, numPop<=0, parent.phase()); + return result; + } } } -- 1.7.10.4