From b205c5ee125119b0372328b70e8a66164df18fd0 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 29 May 2006 23:25:47 -0400 Subject: [PATCH] tentative checkpoint darcs-hash:20060530032547-5007d-f271300cc6e31228efae40926763898e8cd186fe.gz --- Makefile | 6 ++++ src/edu/berkeley/sbp/GSS.java | 38 +++++++++++++----------- src/edu/berkeley/sbp/Sequence.java | 2 +- src/edu/berkeley/sbp/misc/MetaGrammarTree.java | 2 ++ tests/ifthen.tc | 14 +++++++++ 5 files changed, 43 insertions(+), 19 deletions(-) create mode 100644 tests/ifthen.tc diff --git a/Makefile b/Makefile index 4ce382c..45bddeb 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,12 @@ loop: edu.berkeley.sbp.jar tests/testcase.g \ tests/loop.tc +ifthen: edu.berkeley.sbp.jar + $(java) -cp $< edu.berkeley.sbp.misc.RegressionTests \ + tests/meta.g \ + tests/testcase.g \ + tests/ifthen.tc + boot: edu.berkeley.sbp.jar cd src; \ $(java) -cp ../$< \ diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index 9b091a7..3df0c21 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -148,7 +148,6 @@ class GSS { } private boolean newNode2(Node p, Node parent, Forest pending, State state, boolean fromEmptyReduction) { - //if (p.parents().contains(parent)) return true; if (p.merge(parent, pending)) return true; p.parents().add(parent, true); if (p!=parent && !fromEmptyReduction && reducing) p.performReductions(parent); @@ -273,22 +272,7 @@ class GSS { final class Node implements Invokable, IntegerMappable, GraphViz.ToGraphViz { public FastSet set = new FastSet(); - public GraphViz.Node toGraphViz(GraphViz gv) { - if (gv.hasNode(this)) return gv.createNode(this); - GraphViz.Node n = gv.createNode(this); - n.label = ""+state.toStringx(); - n.shape = "rectangle"; - n.fill = "green"; - //GraphViz.Node f = pending().toGraphViz(gv); - //n.add(f); - for(Forest result : results()) n.edge(result, ""); - for(Node parent : parents()) n.edge(parent, ""); - ((GraphViz.Group)phase().toGraphViz(gv)).add(n); - return n; - } - public boolean isTransparent() { return false; } - public boolean isHidden() { return false; } - + private boolean allqueued = false; /** what state this node is in */ @@ -346,6 +330,7 @@ class GSS { } public void reduce(Position r, int pos, Phase target, Forest[] holder, Node only) { + holder = r.holder; Forest old = holder[pos]; for(Forest result : results()) @@ -353,7 +338,7 @@ class GSS { if (only != null && child!=only) continue; holder[pos] = result; if (pos==0) { - System.arraycopy(holder, 0, r.holder, 0, holder.length); + //System.arraycopy(holder, 0, r.holder, 0, holder.length); for(int i=0; i { if (holder[i]==null) throw new Error("bad " + i); } Forest ret = Sequence.this.postReduce(loc, holder, this); - for(int k=0; k