From: adam Date: Mon, 5 Nov 2007 02:45:41 +0000 (-0500) Subject: rename Node.results to Node.predecessors, add type parameter to Node X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=e0642797cf50d33913d996056146bd5ca79ddbd8;ds=sidebyside rename Node.results to Node.predecessors, add type parameter to Node darcs-hash:20071105024541-5007d-394638d59376c9611edf6bd832d2f8ad72784d07.gz --- diff --git a/src/edu/berkeley/sbp/Node.java b/src/edu/berkeley/sbp/Node.java index 1dcf050..532a4a8 100644 --- a/src/edu/berkeley/sbp/Node.java +++ b/src/edu/berkeley/sbp/Node.java @@ -10,7 +10,7 @@ import java.io.*; import java.util.*; import java.lang.reflect.*; -class Node +class Node implements IntegerMappable, GraphViz.ToGraphViz { diff --git a/src/edu/berkeley/sbp/ResultNode.java b/src/edu/berkeley/sbp/ResultNode.java index d61b06b..bce43c5 100644 --- a/src/edu/berkeley/sbp/ResultNode.java +++ b/src/edu/berkeley/sbp/ResultNode.java @@ -6,7 +6,8 @@ import edu.berkeley.sbp.Sequence.Pos; import edu.berkeley.sbp.Sequence.Pos; import java.util.*; -final class ResultNode extends Node { +final class ResultNode + extends Node { private Forest.Many f = new Forest.Many(); //private HashSet predecessors = new HashSet(); diff --git a/src/edu/berkeley/sbp/StateNode.java b/src/edu/berkeley/sbp/StateNode.java index f54e65f..6401a1e 100644 --- a/src/edu/berkeley/sbp/StateNode.java +++ b/src/edu/berkeley/sbp/StateNode.java @@ -12,13 +12,13 @@ import java.lang.reflect.*; /** a node in the GSS */ final class StateNode - extends Node + extends Node implements Invokable, Iterable { /** which GSS.Phase this StateNode belongs to */ public GSS.Phase phase() { return phase; } - public Iterator iterator() { return results.iterator(); } + public Iterator iterator() { return predecessors.iterator(); } public Parser.Table.State state() { return state; } boolean destroyed = false; @@ -34,7 +34,7 @@ final class StateNode else for(ResultNode r : successors) if (state.doomed) { if (r.usedByAnyNode()) { dead = false; break; } } else { if (r.usedByNonDoomedNode()) { dead = false; break; } } - dead |= results.size()==0; + dead |= predecessors.size()==0; if (!dead) return; destroyed = true; if (phase() != null && phase().hash != null) @@ -45,13 +45,13 @@ final class StateNode r.removePred(this); break; } - while(results.size()>0) - for(ResultNode r : results) { - results.remove(r); + while(predecessors.size()>0) + for(ResultNode r : predecessors) { + predecessors.remove(r); r.removeSucc(this); break; } - results = null; + predecessors = null; successors = null; } @@ -61,9 +61,9 @@ final class StateNode private final GSS.Phase predPhase; private final Parser.Table.State state; private boolean fromEmptyReduction; - private FastSet results = new FastSet(); + private FastSet predecessors = new FastSet(); private FastSet successors = new FastSet(); - //private HashSet results = new HashSet(); + //private HashSet predecessors = new HashSet(); //private HashSet successors = new HashSet(); public final void invoke(Pos r, ResultNode only, Object o) { @@ -77,7 +77,7 @@ final class StateNode } private void reduce(Pos r, int pos, GSS.Phase target, ResultNode only) { - for(ResultNode res : results) + for(ResultNode res : predecessors) if (only == null || res == only) for(StateNode pred : res.getPreds()) reduce2(r, pos, target, pred, res.getForest()); @@ -106,7 +106,7 @@ final class StateNode this.predPhase = pred.phase(); phase.hash.put(state, pred.phase(), this); - results.add(pred); + predecessors.add(pred); pred.addSucc(this); if (!fromEmptyReduction) state.invokeReductions(phase().getToken(), this, pred); @@ -114,27 +114,27 @@ final class StateNode state.invokeEpsilonReductions(phase().token, this); } - // Add/Remove Successors/Results ////////////////////////////////////////////////////////////////////////////// + // Add/Remove Successors/Predecessors ////////////////////////////////////////////////////////////////////////////// public void removeSucc(ResultNode succ) { successors.remove(succ); check(); } public void removeResult(ResultNode result) { - results.remove(result); + predecessors.remove(result); check(); } public void addSucc(ResultNode succ) { successors.add(succ); } public void addResult(Forest f, Pos reduction, StateNode pred) { - for(ResultNode r : results) + for(ResultNode r : predecessors) if (r.predecessorsContains(pred)) { r.merge(f); return; } ResultNode result = new ResultNode(f, reduction, pred); - results.add(result); + predecessors.add(result); result.addSucc(this); if (!this.fromEmptyReduction) state.invokeReductions(phase().getToken(), this, result); }