}
public abstract Object plant(Object[] fields, int[] map);
public boolean isRaw() { return false; }
- public Object invokeRaw(Iterable<Tree> t) { return null; }
- public class TargetReducer implements Functor<Iterable<Tree>,Object> {
+ public Object invokeRaw(Iterable<Tree<Object>> t) { return null; }
+ public class TargetReducer implements Tree.TreeFunctor<Object,Object> {
private Production p;
private int[] map;
private String name;
this.name = name;
}
public String toString() { return name; }
- public Object invoke(Iterable<Tree> t) {
+ public Object invoke(Iterable<Tree<Object>> t) {
if (isRaw()) return invokeRaw(t);
ArrayList ret = new ArrayList();
for(Tree tc : t) {
if (tc.head() != null && tc.head() instanceof Functor)
- ret.add(((Functor<Iterable<Tree>,Object>)tc.head()).invoke(tc.children()));
+ ret.add(((Tree.TreeFunctor<Object,Object>)tc.head()).invoke(tc.children()));
else if (tc.numChildren() == 0)
ret.add(tc.head());
else {
return ret;
}
public boolean isRaw() { return _method.isAnnotationPresent(raw.class); }
- public Object invokeRaw(Iterable<Tree> t) {
+ public Object invokeRaw(Iterable<Tree<Object>> t) {
try {
return _method.invoke(null, new Object[] { t });
} catch (Exception e) {
}
public static Union make(Tree t, String s) { return make(t, s, new ReflectiveMeta()); }
public static Union make(Tree t, String s, ReflectiveMeta rm) {
- Functor<Iterable<Tree>,Object> red = (Functor<Iterable<Tree>,Object>)t.head();
+ Tree.TreeFunctor<Object,Object> red = (Tree.TreeFunctor<Object,Object>)t.head();
MG.Grammar g = (MG.Grammar)red.invoke(t.children());
Context cx = new Context(g,rm);
Union u = null;
}
public Context(Tree t, ReflectiveMeta rm) {
this.rm = rm;
- Functor<Iterable<Tree>,Object> red = (Functor<Iterable<Tree>,Object>)t.head();
+ Tree.TreeFunctor<Object,Object> red = (Tree.TreeFunctor<Object,Object>)t.head();
this.grammar = (MG.Grammar)red.invoke(t.children());
}
public Union peek(String name) { return map.get(name); }