From: adam Date: Mon, 5 Nov 2007 02:39:53 +0000 (-0500) Subject: rename Result->ResultNode X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=c53fc2952c7885d727500ce404887d552c5dec5f rename Result->ResultNode darcs-hash:20071105023953-5007d-ec5775c3517af55664bcdc5772f0e522a58665ae.gz --- diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index db833b9..2e57348 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -134,7 +134,7 @@ class GSS { for(StateNode n : hash.values()) { if (token == null && n.state().isAccepting()) { if (finalResult==null) finalResult = new Forest.Many(); - for(Result r : n) + for(ResultNode r : n) finalResult.merge(r.getForest()); } if (token == null) continue; diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index e5cd67c..56ee0ca 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -314,7 +314,7 @@ public abstract class Parser implements Serializable { * some future reduction from a non-doomed StateNode. Because of * this, we "garbage-collect" Nodes with doomed states if * there are no more non-doomed Nodes which they could - * affect (see Result, Reduction, and StateNode for details). + * affect (see ResultNode, Reduction, and StateNode for details). * * Without this optimization, many seemingly-innocuous uses * of positive and negative conjuncts can trigger O(n^2) @@ -354,7 +354,7 @@ public abstract class Parser implements Serializable { if (t==null) for(Pos r : eofReductions) node.invoke(r, null, null); else oreductions.invoke(t, node, null, null); } - void invokeReductions(Token t, StateNode node, Result b) { + void invokeReductions(Token t, StateNode node, ResultNode b) { if (t==null) for(Pos r : eofReductions) node.invoke(r, b, null); else oreductions.invoke(t, node, b, null); } diff --git a/src/edu/berkeley/sbp/Result.java b/src/edu/berkeley/sbp/ResultNode.java similarity index 97% rename from src/edu/berkeley/sbp/Result.java rename to src/edu/berkeley/sbp/ResultNode.java index dfe12bb..671940a 100644 --- a/src/edu/berkeley/sbp/Result.java +++ b/src/edu/berkeley/sbp/ResultNode.java @@ -6,7 +6,7 @@ import edu.berkeley.sbp.Sequence.Pos; import edu.berkeley.sbp.Sequence.Pos; import java.util.*; -final class Result +final class ResultNode implements GraphViz.ToGraphViz { private Forest.Many f = new Forest.Many(); @@ -95,11 +95,11 @@ final class Result if (predecessors.size() > 1) throw new Error(); } - public Result() { + public ResultNode() { this(null, null, null); this.primordeal = true; } - public Result(Forest f, Pos reduction, StateNode pred) { + public ResultNode(Forest f, Pos reduction, StateNode pred) { this.f.merge(f); this.reduction = reduction; if (pred != null) addPred(pred); diff --git a/src/edu/berkeley/sbp/StateNode.java b/src/edu/berkeley/sbp/StateNode.java index 8fb1fd7..321334d 100644 --- a/src/edu/berkeley/sbp/StateNode.java +++ b/src/edu/berkeley/sbp/StateNode.java @@ -12,14 +12,14 @@ import java.lang.reflect.*; /** a node in the GSS */ final class StateNode - implements Invokable, + implements Invokable, IntegerMappable, GraphViz.ToGraphViz, - Iterable { + Iterable { /** which GSS.Phase this StateNode belongs to */ public GSS.Phase phase() { return phase; } - public Iterator iterator() { return results.iterator(); } + public Iterator iterator() { return results.iterator(); } public Parser.Table.State state() { return state; } public int toInt() { return idx; } @@ -34,7 +34,7 @@ final class StateNode // - be on the frontier or // - have a non-doomed node closer to the frontier than themself if (phase.isFrontier()) dead = false; - else for(Result r : successors) + 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; @@ -43,13 +43,13 @@ final class StateNode if (phase() != null && phase().hash != null) phase().hash.remove(state, predPhase); while(successors.size()>0) - for(Result r : successors) { + for(ResultNode r : successors) { successors.remove(r); r.removePred(this); break; } while(results.size()>0) - for(Result r : results) { + for(ResultNode r : results) { results.remove(r); r.removeSucc(this); break; @@ -67,12 +67,12 @@ final class StateNode private final GSS.Phase predPhase; private final Parser.Table.State state; private boolean fromEmptyReduction; - private FastSet results = new FastSet(); - private FastSet successors = new FastSet(); - //private HashSet results = new HashSet(); - //private HashSet successors = new HashSet(); + private FastSet results = new FastSet(); + private FastSet successors = new FastSet(); + //private HashSet results = new HashSet(); + //private HashSet successors = new HashSet(); - public final void invoke(Pos r, Result only, Object o) { + public final void invoke(Pos r, ResultNode only, Object o) { boolean emptyProductions = only==null; if (emptyProductions != (r.numPops()==0)) return; if (r.numPops()!=0) reduce(r, r.numPops()-1, phase(), only); @@ -82,8 +82,8 @@ final class StateNode } } - private void reduce(Pos r, int pos, GSS.Phase target, Result only) { - for(Result res : results) + private void reduce(Pos r, int pos, GSS.Phase target, ResultNode only) { + for(ResultNode res : results) if (only == null || res == only) for(StateNode pred : res.getPreds()) reduce2(r, pos, target, pred, res.getForest()); @@ -102,9 +102,9 @@ final class StateNode } StateNode(GSS.Phase phase, Forest f, Pos reduction, StateNode pred, State state, boolean fromEmptyReduction) { - this(phase, new Result(f, reduction, pred), state, fromEmptyReduction); + this(phase, new ResultNode(f, reduction, pred), state, fromEmptyReduction); } - StateNode(GSS.Phase phase, Result pred, State state, boolean fromEmptyReduction) { + StateNode(GSS.Phase phase, ResultNode pred, State state, boolean fromEmptyReduction) { this.phase = phase; this.state = state; this.fromEmptyReduction = fromEmptyReduction; @@ -122,24 +122,24 @@ final class StateNode // Add/Remove Successors/Results ////////////////////////////////////////////////////////////////////////////// - public void removeSucc(Result succ) { + public void removeSucc(ResultNode succ) { successors.remove(succ); check(); } - public void removeResult(Result result) { + public void removeResult(ResultNode result) { results.remove(result); check(); } - public void addSucc(Result succ) { + public void addSucc(ResultNode succ) { successors.add(succ); } public void addResult(Forest f, Pos reduction, StateNode pred) { - for(Result r : results) + for(ResultNode r : results) if (r.predecessorsContains(pred)) { r.merge(f); return; } - Result result = new Result(f, reduction, pred); + ResultNode result = new ResultNode(f, reduction, pred); results.add(result); result.addSucc(this); if (!this.fromEmptyReduction) state.invokeReductions(phase().getToken(), this, result); @@ -154,7 +154,7 @@ final class StateNode n.label = "state["+state.toInt()+"]"; n.shape = "rectangle"; boolean haspreds = false; - for(Result r : results) n.edge(r, ""); + for(ResultNode r : results) n.edge(r, ""); n.color = state.doomed ? "red" : "green"; ((GraphViz.Group)phase().toGraphViz(gv)).add(n); return n;