package edu.stanford.nlp.trees.tregex.tsurgeon;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.tregex.TregexMatcher;
/**
* @author Roger Levy (rog@stanford.edu)
*/
class ReplaceNode extends TsurgeonPattern {
public ReplaceNode(TsurgeonPattern oldNode, TsurgeonPattern newNode) {
super("replace", new TsurgeonPattern[] { oldNode, newNode });
}
public ReplaceNode(TsurgeonPattern oldNode, AuxiliaryTree t) {
this(oldNode, new HoldTreeNode(t));
}
@Override
public Tree evaluate(Tree t, TregexMatcher m) {
Tree oldNode = children[0].evaluate(t,m);
Tree newNode = children[1].evaluate(t,m);
if(oldNode==t)
return newNode;
Tree parent = oldNode.parent(t);
int i = parent.indexOf(oldNode);
parent.removeChild(i);
parent.insertDtr(newNode,i);
return t;
}
}