- public abstract HashSet<Tree<T>> expand(boolean toss);
- public abstract boolean empty();
-
- static <T> Forest<T> singleton(Token.Location loc, Sequence creator) { return create(loc, null, new Forest[] { }, creator, false, true); }
- static <T> Forest<T> singleton(Token.Location loc, Forest<T> body, Sequence creator) { return create(loc, null, new Forest[] { body }, creator, false, true); }
- static <T> Forest<T> leaf(Token.Location loc, T tag, Sequence creator) { return create(loc, tag, null, creator, false, false); }
- public static <T> Forest<T> create(Token.Location loc, T tag, Forest<T>[] tokens, Sequence creator, boolean unwrap, boolean singleton) {
- return new MultiForest<T>(loc, tag, tokens, creator, unwrap, singleton);
+ public void expand(HashSet<Tree<T>> ht) { expand(ht, new HashSet<Forest<T>>(), null); }
+
+ /** create a new forest */
+ public static <T> Forest<T> create(Input.Region loc, T head, Forest<T>[] children, boolean lift) {
+ return new One<T>(loc, head, children, lift);