return zero = position.rewrite(null);
}
- public void reduce(GSS.Phase.Node parent) {
- Forest[] holder = new Forest[position.pos];
- if (position.pos==0) finish(parent, zero(), parent.phase(), holder);
- else reduce(parent, position.pos-1, parent.phase(), holder);
- }
-
public void reduce(GSS.Phase.Node parent, GSS.Phase.Node onlychild) {
Forest[] holder = new Forest[position.pos];
if (position.pos<=0) throw new Error("called wrong form of reduce()");
}
// FIXME: this could be more elegant and/or cleaner and/or somewhere else
- private void reduce(GSS.Phase.Node parent, int pos, GSS.Phase target, Forest[] holder) {
+ public void reduce(GSS.Phase.Node parent, int pos, GSS.Phase target, Forest[] holder) {
Forest old = holder[pos];
holder[pos] = parent.pending();
if (pos==0) {
}
holder[pos] = old;
}
- private void finish(GSS.Phase.Node parent, Forest result, GSS.Phase target, Forest[] holder) {
+ public void finish(GSS.Phase.Node parent, Forest result, GSS.Phase target, Forest[] holder) {
State state = parent.state.gotoSetNonTerminals.get(position.owner());
if (result==null) throw new Error();
if (state!=null)