package edu.stanford.nlp.semgraph.semgrex.ssurgeon; import edu.stanford.nlp.semgraph.semgrex.SemgrexMatcher; import edu.stanford.nlp.semgraph.SemanticGraph; import edu.stanford.nlp.ling.IndexedWord; public abstract class SsurgeonEdit { private SsurgeonPattern owningPattern = null; /** * Given a matching instance (via the SemgrexMatcher), performs an in-place * modification on the given SemanticGraph. */ public abstract void evaluate(SemanticGraph sg, SemgrexMatcher sm); public abstract String toEditString(); // This should be a parseable String representing the edit @Override public String toString() { return toEditString(); } public boolean equals(SsurgeonEdit tgt) { return this.toString().equals(tgt.toString()); } public SsurgeonPattern getOwningPattern() { return owningPattern; } public void setOwningPattern(SsurgeonPattern owningPattern) { this.owningPattern = owningPattern; } /** * Used to retrieve the named node. If not found in the SemgrexMatcher, check the * owning pattern object, as this could've been a created node. */ public IndexedWord getNamedNode(String nodeName, SemgrexMatcher sm) { IndexedWord ret = sm.getNode(nodeName); if ((ret == null) && getOwningPattern() != null) return getOwningPattern().getNamedNode(nodeName); return ret; } public void addNamedNode(IndexedWord newNode, String name) { getOwningPattern().addNamedNode(newNode, name); } }