package edu.stanford.nlp.trees.tregex.tsurgeon;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.tregex.TregexMatcher;
import edu.stanford.nlp.util.Pair;
/**
* @author Roger Levy (rog@stanford.edu)
*/
class InsertNode extends TsurgeonPattern {
TreeLocation l;
public InsertNode(TsurgeonPattern child, TreeLocation l) {
super("insert", new TsurgeonPattern[] { child });
this.l = l;
}
@Override
protected void setRoot(TsurgeonPatternRoot root) {
super.setRoot(root);
l.setRoot(root);
}
public InsertNode(AuxiliaryTree t, TreeLocation l) {
this(new HoldTreeNode(t),l);
}
@Override
public Tree evaluate(Tree t, TregexMatcher m) {
Tree nodeToInsert = children[0].evaluate(t,m);
Pair<Tree,Integer> position = l.evaluate(t,m);
position.first().insertDtr(nodeToInsert.deepCopy(),position.second());
return t;
}
@Override
public String toString() {
return label + '(' + children[0] + ',' + l + ')';
}
}