From: adam Date: Sun, 8 Jan 2006 09:44:07 +0000 (-0500) Subject: integermappable X-Git-Tag: tag_for_25-Mar~413 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=3eb9fa560dee4f8c3b3af0460ff850d755676d81 integermappable darcs-hash:20060108094407-5007d-a309c996154ec8f0447c8395fb4bfec349b33bb3.gz --- diff --git a/src/edu/berkeley/sbp/GSS.java b/src/edu/berkeley/sbp/GSS.java index 1adb8e4..a8f8053 100644 --- a/src/edu/berkeley/sbp/GSS.java +++ b/src/edu/berkeley/sbp/GSS.java @@ -24,7 +24,8 @@ class GSS { HashSet tail = new HashSet(); /** corresponds to a positions between tokens the input stream; same as Tomita's U_i's */ - public class Phase implements Invokable { + public class Phase implements Invokable, IntegerMappable { + public int toInt() { return pos+1; } /** the token immediately after this phase */ public final Token token; @@ -304,7 +305,6 @@ class GSS { Forest res = null; boolean ok = false; for(Phase.Node n : hash.values()) { - //if (n.holder().empty() && pos>0) continue; if (token == null && n.state.isAccepting()) { if (finalResult==null) finalResult = new Forest.Ref(); finalResult.merge(n.holder); @@ -398,7 +398,6 @@ class GSS { this.fe = fe; this.state = state; this.holder().merge(pending); - //if (holder().empty()) throw new Error(holder()+""); Phase start = parent==null ? null : parent.phase(); if (parent != null) parents().add(parent, true); if (Phase.this.hash.get(code(state, start)) != null) throw new Error("severe problem!"); diff --git a/src/edu/berkeley/sbp/Parser.java b/src/edu/berkeley/sbp/Parser.java index 3609182..95c3985 100644 --- a/src/edu/berkeley/sbp/Parser.java +++ b/src/edu/berkeley/sbp/Parser.java @@ -162,8 +162,10 @@ public abstract class Parser { } /** a single state in the LR table and the transitions possible from it */ - public class State implements Comparable, Iterable { + public class State implements Comparable, Iterable, IntegerMappable { + public int toInt() { return idx; } + /* public boolean isResolvable(Token t) { boolean found = false; diff --git a/src/edu/berkeley/sbp/misc/CharToken.java b/src/edu/berkeley/sbp/misc/CharToken.java index 2df1a4a..0793d80 100644 --- a/src/edu/berkeley/sbp/misc/CharToken.java +++ b/src/edu/berkeley/sbp/misc/CharToken.java @@ -9,7 +9,7 @@ import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; /** an implementation of Token for streams of Java char values */ -public class CharToken implements Token, IntegerTopology.IntegerMappable { +public class CharToken implements Token, IntegerMappable { // Public ////////////////////////////////////////////////////////////////////////////// diff --git a/src/edu/berkeley/sbp/util/IntegerTopology.java b/src/edu/berkeley/sbp/util/IntegerTopology.java index e1bec15..e82ce73 100644 --- a/src/edu/berkeley/sbp/util/IntegerTopology.java +++ b/src/edu/berkeley/sbp/util/IntegerTopology.java @@ -7,7 +7,7 @@ import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; /** implementation of Topology for any class for which there is a mapping to the ints */ -public class IntegerTopology implements Topology { +public class IntegerTopology implements Topology { private final Range.Set rs; private static final IntegerTopology empty = new IntegerTopology(); @@ -67,7 +67,4 @@ public class IntegerTopology implemen return sb.toString(); } */ - public static interface IntegerMappable { - public int toInt(); - } } diff --git a/src/edu/berkeley/sbp/util/TopologicalBag.java b/src/edu/berkeley/sbp/util/TopologicalBag.java index 6c538e6..9a18eef 100644 --- a/src/edu/berkeley/sbp/util/TopologicalBag.java +++ b/src/edu/berkeley/sbp/util/TopologicalBag.java @@ -157,7 +157,7 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< final Object[][] v = new Object[size][]; v_.toArray(v); return new VisitableMap() { public boolean contains(K k) { - IntegerTopology.IntegerMappable im = (IntegerTopology.IntegerMappable)k; + IntegerMappable im = (IntegerMappable)k; int asint = im.toInt(); for(int i=0; i= asint && v[i].length > 0) @@ -165,7 +165,7 @@ public class TopologicalBag implements MapBag,V>, VisitableMap< return false; } public void invoke(K k, Invokable ivbc, B b, C c) { - IntegerTopology.IntegerMappable im = (IntegerTopology.IntegerMappable)k; + IntegerMappable im = (IntegerMappable)k; int asint = im.toInt(); for(int i=0; i= asint) {