public InnerAmbiguous(Forest<?> f) { this.f = f; }
}
- static <T> Forest<T> singleton(Input.Region loc, Position p) { return create(loc, null, new Forest[] { }, false, p); }
- static <T> Forest<T> singleton(Input.Region loc, Forest<T> body, Position p) { return body; }
- static <T> Forest<T> leaf(Input.Region loc, T tag, Position p) { return create(loc, tag, null, false, p); }
- public static <T> Forest<T> create(Input.Region loc, T tag, Forest<T>[] tokens, boolean unwrap, Position p) {
- return new MyBody<T>(loc, tag, tokens, unwrap, p);
+ static <T> Forest<T> leaf(Input.Region loc, T tag) { return create(loc, tag, null, false); }
+ public static <T> Forest<T> create(Input.Region loc, T tag, Forest<T>[] tokens, boolean unwrap) {
+ return new MyBody<T>(loc, tag, tokens, unwrap);
}
// Body //////////////////////////////////////////////////////////////////////////////
public boolean ambiguous() { return false; }
public /*protected*/ static class MyBody<T> extends Forest<T> implements Body<T> /* extends PrintableTree<Forest<T>> implements */ {
+ private final Input.Region location;
+ private final T tag;
+ private final Forest<T>[] tokens;
+ private final boolean unwrap;
+
public boolean isTransparent() { return false; }
public boolean isHidden() { return false; }
public GraphViz.Node toGraphViz(GraphViz gv) {
GraphViz.Node n = gv.createNode(this);
n.label = headToString()==null?"":headToString();
n.directed = true;
- n.comment = reduction==null?null:reduction+"";
+ //n.comment = reduction==null?null:reduction+"";
edges(n);
return n;
}
ivbc.invoke(this, b, c);
}
- private final Input.Region location;
- private final T tag;
- private final Forest<T>[] tokens;
- private final boolean unwrap;
- private final Sequence.Position reduction;
-
- private MyBody(Input.Region loc, T tag, Forest<T>[] tokens, boolean unwrap, Position reduction) {
+ private MyBody(Input.Region loc, T tag, Forest<T>[] tokens, boolean unwrap) {
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<tokens.length; i++) if (tokens[i]==null) throw new Error(i+"");
this.unwrap = unwrap;
- this.reduction = reduction;
}
public void gather(TaskList tl, HashSet<Tree<T>>[] ht, HashSet<Tree<T>> target) {
gather(tl, ht, target, new Tree[ht.length], 0);