From 60a01254256be2e3b4be2edb66bd84e72de5f1c9 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 29 May 2006 17:36:32 -0400 Subject: [PATCH] tentative checkpoint darcs-hash:20060529213632-5007d-41e55b3906c6c31f5bf8e8d622adeb11b80af659.gz --- src/edu/berkeley/sbp/GSS.java | 33 ++++++++++-------------- src/edu/berkeley/sbp/misc/MetaGrammarTree.java | 2 ++ 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index bde44df..0718a10 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -376,18 +376,17 @@ class GSS { */ public void reduce(Position r, int pos, Phase target, Forest[] holder, Node only, Forest pending) { Forest old = holder[pos]; - holder[pos] = pending; - if (pos==0) { - - // FIXME: I'm unsure about this -- basically we want to deal with the case where - // there are two nodes, each of whose Ref points to the same Forest instance. - // Some node in the next phase has both of these as parents. This might happen - // since the same reduction can appear in more than one state. - - for(Forest result : results()) - for(Node child : ((Forest.Ref)result).parents) { - if (only != null && child!=only) continue; - pending = holder[pos] = result; + + // FIXME: I'm unsure about this -- basically we want to deal with the case where + // there are two nodes, each of whose Ref points to the same Forest instance. + // Some node in the next phase has both of these as parents. This might happen + // since the same reduction can appear in more than one state. + + for(Forest result : results()) + for(Node child : ((Forest.Ref)result).parents) { + if (only != null && child!=only) continue; + pending = holder[pos] = result; + if (pos==0) { System.arraycopy(holder, 0, r.holder, 0, holder.length); for(int i=0; i)result).parents) { - if (only!=null && child!=only) continue; - holder[pos] = result; + } else { child.reduce(r, pos-1, target, holder, null, null); } - } + } + holder[pos] = old; } diff --git a/src/edu/berkeley/sbp/misc/MetaGrammarTree.java b/src/edu/berkeley/sbp/misc/MetaGrammarTree.java index 70b2318..eaf4b88 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammarTree.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammarTree.java @@ -68,6 +68,7 @@ public class MetaGrammarTree { + // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "=", new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, null, new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "G", new edu.berkeley.sbp.Tree[] { }), new edu.berkeley.sbp.Tree(null, "r", new edu.berkeley.sbp.Tree[] { }), @@ -612,3 +613,4 @@ new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu + -- 1.7.10.4