Package edu.stanford.nlp.trees.tregex.tsurgeon

Source Code of edu.stanford.nlp.trees.tregex.tsurgeon.ExciseNode

package edu.stanford.nlp.trees.tregex.tsurgeon;

import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.Trees;
import edu.stanford.nlp.trees.tregex.TregexMatcher;

/** Excises all nodes from the top to the bottom, and puts all the children of bottom node in where the top was.
* @author Roger Levy (rog@stanford.edu)
*/
class ExciseNode extends TsurgeonPattern {

  /**
   * Top should evaluate to a node that dominates bottom, but this is not checked!
   */
  public ExciseNode(TsurgeonPattern top, TsurgeonPattern bottom) {
    super("excise", new TsurgeonPattern[] { top, bottom });
  }

  /**
   * Excises only the directed node.
   */
  public ExciseNode(TsurgeonPattern node) {
    super("excise", new TsurgeonPattern[] { node,node });
  }

  @Override
  public Tree evaluate(Tree t, TregexMatcher m) {
    Tree topNode = children[0].evaluate(t,m);
    Tree bottomNode = children[1].evaluate(t,m);
    if(Tsurgeon.verbose) {
      System.err.println("Excising...original tree:");
      t.pennPrint(System.err);
      System.err.println("top: " + topNode + "\nbottom:" + bottomNode);
    }
    if(topNode==t)
      return null;
    Tree parent = topNode.parent(t);
    if(Tsurgeon.verbose)
      System.err.println("Parent: " + parent);
    int i = Trees.objectEqualityIndexOf(parent,topNode);
    parent.removeChild(i);
    for(Tree child : bottomNode.children()) {
      parent.addChild(i,child);
      i++;
    }
    if(Tsurgeon.verbose)
      t.pennPrint(System.err);
    return t;
  }
}
TOP

Related Classes of edu.stanford.nlp.trees.tregex.tsurgeon.ExciseNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.