package edu.stanford.nlp.trees.tregex.tsurgeon; import edu.stanford.nlp.util.logging.Redwood; import java.util.Map; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.trees.tregex.TregexMatcher; /** * @author Roger Levy (rog@stanford.edu) */ public class FetchNode extends TsurgeonPattern { /** A logger for this class */ private static Redwood.RedwoodChannels log = Redwood.channels(FetchNode.class); public FetchNode(String nodeName) { super(nodeName, TsurgeonPattern.EMPTY_TSURGEON_PATTERN_ARRAY); } @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(FetchNode.this, newNodeNames, coindexer); } @Override public Tree evaluate(Tree tree, TregexMatcher tregex) { Tree result = newNodeNames.get(label); if (result == null) { result = tregex.getNode(label); } if (result == null) { log.info("Warning -- null node fetched by Tsurgeon operation for node: " + this + " (either no node labeled this, or the labeled node didn't match anything)"); } return result; } } }