package edu.stanford.nlp.trees.tregex.tsurgeon; import java.util.List; import java.util.Map; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.trees.Trees; import edu.stanford.nlp.trees.tregex.TregexMatcher; /** * @author Roger Levy (rog@stanford.edu) */ class DeleteNode extends TsurgeonPattern { public DeleteNode(TsurgeonPattern[] children) { super("delete", children); } public DeleteNode(List<TsurgeonPattern> children) { this(children.toArray(new TsurgeonPattern[children.size()])); } @Override public TsurgeonMatcher matcher(Map<String,Tree> newNodeNames, CoindexationGenerator coindexer) { return new Matcher(newNodeNames, coindexer); } private class Matcher extends TsurgeonMatcher { public Matcher(Map<String,Tree> newNodeNames, CoindexationGenerator coindexer) { super(DeleteNode.this, newNodeNames, coindexer); } @Override public Tree evaluate(Tree tree, TregexMatcher tregex) { Tree result = tree; for (TsurgeonMatcher child : childMatcher) { Tree nodeToDelete = child.evaluate(tree, tregex); if (nodeToDelete == tree) { result = null; } Tree parent = nodeToDelete.parent(tree); parent.removeChild(Trees.objectEqualityIndexOf(parent,nodeToDelete)); } return result; } } }