From: adam Date: Sun, 22 Jan 2006 09:26:24 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~337 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=4eeae516c2ef96ca11d24f23fd5e80d12e7734a6 checkpoint darcs-hash:20060122092624-5007d-421f2cd5bf5315cf84138b8c9f30bc98f916132a.gz --- diff --git a/src/edu/berkeley/sbp/Forest.java b/src/edu/berkeley/sbp/Forest.java index 933515b..4f4baac 100644 --- a/src/edu/berkeley/sbp/Forest.java +++ b/src/edu/berkeley/sbp/Forest.java @@ -7,23 +7,7 @@ import java.util.*; import java.lang.reflect.*; /** an efficient representation of a collection of trees (Tomita's shared packed parse forest) */ -public abstract class Forest /*extends PrintableTree>*/ implements Visitable> { - - public abstract void invoke(Invokable,B,C> ivbc, B b, C c); - private static class TreeMaker extends HashSet> implements Invokable,Boolean,Integer> { - public ArrayList> toks = new ArrayList>(); - public void invoke(Forest.Body bod, Boolean toss, Integer i) { - if (i==null) { - ArrayList> toks = this.toks; - this.toks = new ArrayList>(); - //addAll(bod.expand(toss, 0, new TreeMaker())); - bod.expand(toss, 0, this); - this.toks = toks; - } else { - bod.expand(toss, i, this); - } - } - } +public abstract class Forest /*extends PrintableTree>*/ implements Visitable> { /** assume that this forest contains exactly one tree and return it; otherwise throw an exception */ public final Tree expand1() throws Ambiguous, ParseFailed { @@ -126,6 +110,20 @@ public abstract class Forest /*extends PrintableTree>*/ implem public Forest resolve() { return this; } } + public abstract void invoke(Invokable,B,C> ivbc, B b, C c); + private static class TreeMaker extends HashSet> implements Invokable,Boolean,Integer> { + public ArrayList> toks = new ArrayList>(); + public void invoke(Forest.Body bod, Boolean toss, Integer i) { + if (i==null) { + ArrayList> toks = this.toks; + this.toks = new ArrayList>(); + bod.expand(toss, 0, this); + this.toks = toks; + } else { + bod.expand(toss, i, this); + } + } + } // Statics ////////////////////////////////////////////////////////////////////////////// diff --git a/src/edu/berkeley/sbp/util/FastSet.java b/src/edu/berkeley/sbp/util/FastSet.java index b94613e..1e6c6d5 100644 --- a/src/edu/berkeley/sbp/util/FastSet.java +++ b/src/edu/berkeley/sbp/util/FastSet.java @@ -1,7 +1,7 @@ package edu.berkeley.sbp.util; import java.util.*; -public /*final*/ class FastSet implements Iterator, Iterable { +public /*final*/ class FastSet implements Iterator, Iterable, Visitable { public static final int INITIAL_SIZE = 8; @@ -28,6 +28,12 @@ public /*final*/ class FastSet implements Iterator, Iterable { for(T t : s) array[size++] = t; } + public void invoke(Invokable ivbc, B b, C c) { + if (only!=null) ivbc.invoke(only, b, c); + else for(int j=0; j