/// <summary> /// Given the root Element for a SemgrexPattern (SSURGEON_ELEM_TAG), converts /// it into its corresponding SemgrexPattern object. /// </summary> /// <exception cref="System.Exception"/> public static SsurgeonPattern SsurgeonPatternFromXML(IElement elt) { string uid = GetTagText(elt, SsurgeonPattern.UidElemTag); string notes = GetTagText(elt, SsurgeonPattern.NotesElemTag); string semgrexString = GetTagText(elt, SsurgeonPattern.SemgrexElemTag); SemgrexPattern semgrexPattern = SemgrexPattern.Compile(semgrexString); SsurgeonPattern retPattern = new SsurgeonPattern(uid, semgrexPattern); retPattern.SetNotes(notes); INodeList editNodes = elt.GetElementsByTagName(SsurgeonPattern.EditListElemTag); for (int i = 0; i < editNodes.GetLength(); i++) { INode node = editNodes.Item(i); if (node.GetNodeType() == NodeConstants.ElementNode) { IElement editElt = (IElement)node; string editVal = GetEltText(editElt); retPattern.AddEdit(Edu.Stanford.Nlp.Semgraph.Semgrex.Ssurgeon.Ssurgeon.ParseEditLine(editVal)); } } // If predicate available, parse IElement predElt = GetFirstTag(elt, SsurgeonPattern.PredicateTag); if (predElt != null) { ISsurgPred pred = AssemblePredFromXML(GetFirstChildElement(predElt)); retPattern.SetPredicate(pred); } return(retPattern); }
/// <summary> /// Constructs a /// <c>SsurgPred</c> /// structure from file, given the root element. /// </summary> /// <exception cref="System.Exception"/> public static ISsurgPred AssemblePredFromXML(IElement elt) { string eltName = elt.GetTagName(); switch (eltName) { case SsurgeonPattern.PredicateAndTag: { SsurgAndPred andPred = new SsurgAndPred(); foreach (IElement childElt in GetChildElements(elt)) { ISsurgPred childPred = AssemblePredFromXML(childElt); andPred.Add(childPred); return(andPred); } break; } case SsurgeonPattern.PredicateOrTag: { SsurgOrPred orPred = new SsurgOrPred(); foreach (IElement childElt_1 in GetChildElements(elt)) { ISsurgPred childPred = AssemblePredFromXML(childElt_1); orPred.Add(childPred); return(orPred); } break; } case SsurgeonPattern.PredWordlistTestTag: { string id = elt.GetAttribute(SsurgeonPattern.PredIdAttr); string resourceID = elt.GetAttribute("resourceID"); string typeStr = elt.GetAttribute("type"); string matchName = GetEltText(elt).Trim(); // node name to match on if (matchName == null) { throw new Exception("Could not find match name for " + elt); } if (id == null) { throw new Exception("No ID attribute for element = " + elt); } return(new WordlistTest(id, resourceID, typeStr, matchName)); } } // Not a valid node, error out! throw new Exception("Invalid node encountered during Ssurgeon predicate processing, node name=" + eltName); }
public virtual void SetPredicate(ISsurgPred predicateTest) { this.predicateTest = predicateTest; }