From aaa5d101e054dc548e7ef7831b1fcb7913a4d4d4 Mon Sep 17 00:00:00 2001 From: adam Date: Sat, 15 Jul 2006 01:42:15 -0400 Subject: [PATCH] checkpoint darcs-hash:20060715054215-5007d-ed3fe5a5c10e09772e1c29240f113fde77b99623.gz --- src/edu/berkeley/sbp/Forest.java | 23 ++++++----------------- src/edu/berkeley/sbp/Sequence.java | 6 +++--- src/edu/berkeley/sbp/chr/CharParser.java | 2 +- src/edu/berkeley/sbp/util/ArrayUtil.java | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 src/edu/berkeley/sbp/util/ArrayUtil.java diff --git a/src/edu/berkeley/sbp/Forest.java b/src/edu/berkeley/sbp/Forest.java index b00f069..baf1265 100644 --- a/src/edu/berkeley/sbp/Forest.java +++ b/src/edu/berkeley/sbp/Forest.java @@ -77,12 +77,11 @@ public abstract class Forest /*extends PrintableTree>*/ public InnerAmbiguous(Forest f) { this.f = f; } } - static Forest singleton(Input.Region loc, Position p) { - return create(loc, null, new Forest[] { }, false, true, p); } + static Forest singleton(Input.Region loc, Position p) { return create(loc, null, new Forest[] { }, false, p); } static Forest singleton(Input.Region loc, Forest body, Position p) { return body; } - static Forest leaf(Input.Region loc, T tag, Position p) { return create(loc, tag, null, false, false, p); } - public static Forest create(Input.Region loc, T tag, Forest[] tokens, boolean unwrap, boolean singleton, Position p) { - return new MyBody(loc, tag, tokens, unwrap, singleton, p); + static Forest leaf(Input.Region loc, T tag, Position p) { return create(loc, tag, null, false, p); } + public static Forest create(Input.Region loc, T tag, Forest[] tokens, boolean unwrap, Position p) { + return new MyBody(loc, tag, tokens, unwrap, p); } // Body ////////////////////////////////////////////////////////////////////////////// @@ -121,21 +120,19 @@ public abstract class Forest /*extends PrintableTree>*/ ivbc.invoke(this, b, c); } - private final Input.Region location; + private final Input.Region location; private final T tag; private final Forest[] tokens; private final boolean unwrap; - private final boolean singleton; private final Sequence.Position reduction; - private MyBody(Input.Region loc, T tag, Forest[] tokens, boolean unwrap, boolean singleton, Position reduction) { + private MyBody(Input.Region loc, T tag, Forest[] tokens, boolean unwrap, Position reduction) { this.location = loc; this.tag = tag; this.tokens = tokens==null ? emptyForestArray : new Forest[tokens.length]; if (tokens != null) System.arraycopy(tokens, 0, this.tokens, 0, tokens.length); if (tokens != null) for(int i=0; i>[] ht, HashSet> target) { @@ -162,10 +159,6 @@ public abstract class Forest /*extends PrintableTree>*/ } } public void expand(TaskList tl, HashSet> ht) { - if (singleton) { - tokens[0].expand(tl, ht); - return; - } HashSet>[] children = new HashSet[tokens.length]; tl.gather(this, children, ht); for(int i=0; i /*extends PrintableTree>*/ } public void expand(final int i, final TreeBuilder h) { - if (singleton) { - tokens[0].visit(h, null, i); - return; - } if (i==0) h.start(tag, location); if (i==tokens.length) { diff --git a/src/edu/berkeley/sbp/Sequence.java b/src/edu/berkeley/sbp/Sequence.java index 33a91bb..1b336ff 100644 --- a/src/edu/berkeley/sbp/Sequence.java +++ b/src/edu/berkeley/sbp/Sequence.java @@ -215,13 +215,13 @@ public abstract class Sequence extends Element implements Iterable { Sequence _clone() { return new Unwrap(elements, drops); } public Forest postReduce(Input.Region loc, Forest[] args, Position p) { for(int i=0; i[] args2 = new Forest[count]; int j = 0; for(int i=0; i { int j = 0; for(int i=0; i { public CharParser(Union u) { super(u, new CharTopology()); } public Forest shiftToken(Location oldloc, Character ct, Location newloc) { - return Forest.create(new Input.Region(oldloc, newloc), ct.toString(), null, false, false, null); + return Forest.create(new Input.Region(oldloc, newloc), ct.toString(), null, false, null); } } diff --git a/src/edu/berkeley/sbp/util/ArrayUtil.java b/src/edu/berkeley/sbp/util/ArrayUtil.java new file mode 100644 index 0000000..f4f7278 --- /dev/null +++ b/src/edu/berkeley/sbp/util/ArrayUtil.java @@ -0,0 +1,14 @@ +package edu.berkeley.sbp.util; +import java.lang.reflect.*; +import java.util.*; + +public class ArrayUtil { + + public static T[] append(T[] arr, T t, Class c) { + T[] ret = (T[])Array.newInstance(c, arr.length+1); + System.arraycopy(arr, 0, ret, 0, arr.length); + ret[ret.length-1] = t; + return ret; + } + +} -- 1.7.10.4