tentative checkpoint
authoradam <adam@megacz.com>
Mon, 29 May 2006 21:34:41 +0000 (17:34 -0400)
committeradam <adam@megacz.com>
Mon, 29 May 2006 21:34:41 +0000 (17:34 -0400)
darcs-hash:20060529213441-5007d-2f12172142075baf1e0e0acd0aae06c1aec0dbea.gz

src/edu/berkeley/sbp/GSS.java
src/edu/berkeley/sbp/misc/MetaGrammarTree.java

index 11904d8..bde44df 100644 (file)
@@ -384,51 +384,27 @@ class GSS {
                     //        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.
 
-                    if (only != null)  {
-                        for(Forest result : results())
-                            for(Node child : ((Forest.Ref<?>)result).parents) {
-                                if (child!=only) continue;
-                                pending = holder[pos] = result;
-                                System.arraycopy(holder, 0, r.holder, 0, holder.length);
-                                for(int i=0; i<r.pos; i++) if (r.holder[i]==null) throw new Error("realbad");
-                                Forest rex = null;
-                                if (r.pos==1)  rex = singularReductions.get(pending, r);
-                                if (rex==null) {
-                                    rex = r.rewrite(phase().getLocation());
-                                    if (r.pos==1) singularReductions.put(pending, r, rex);
-                                }
-                                only.finish(r, rex, target, holder);
-                            }
-                    } else {
-                        for(Forest result : results()) {
+                    for(Forest result : results())
+                        for(Node child : ((Forest.Ref<?>)result).parents) {
+                            if (only != null && child!=only) continue;
                             pending = holder[pos] = result;
                             System.arraycopy(holder, 0, r.holder, 0, holder.length);
                             for(int i=0; i<r.pos; i++) if (r.holder[i]==null) throw new Error("realbad");
                             Forest rex = null;
-                            if (rex==null && r.pos==1)  rex = singularReductions.get(pending, r);
+                            if (r.pos==1)  rex = singularReductions.get(pending, r);
                             if (rex==null) {
                                 rex = r.rewrite(phase().getLocation());
                                 if (r.pos==1) singularReductions.put(pending, r, rex);
                             }
-                            for(Node child : ((Forest.Ref<?>)result).parents)
-                                child.finish(r, rex, target, holder);
+                            child.finish(r, rex, target, holder);
                         }
-                    }
                 } else {
-                    if (only != null)  {
-                        for(Forest result : results())
-                            for(Node child : ((Forest.Ref<?>)result).parents) {
-                                if (child!=only) continue;
-                                holder[pos] = result;
-                                only.reduce(r, pos-1, target, holder, null, null);
-                            }
-                    } else {
-                        for(Forest result : results())
-                            for(Node child : ((Forest.Ref<?>)result).parents) {
-                                holder[pos] = result;
-                                child.reduce(r, pos-1, target, holder, null, null);
-                            }
-                    }
+                    for(Forest result : results())
+                        for(Node child : ((Forest.Ref<?>)result).parents) {
+                            if (only!=null && child!=only) continue;
+                            holder[pos] = result;
+                            child.reduce(r, pos-1, target, holder, null, null);
+                        }
                 }
                 holder[pos] = old;
             }
index 4c4888b..70b2318 100644 (file)
@@ -66,6 +66,8 @@ 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[] { }),
@@ -608,3 +610,5 @@ new edu.berkeley.sbp.Tree(null, "grammar", new edu.berkeley.sbp.Tree[] { new edu
 
 
 
+
+