public virtual void TestEnv() { SemanticGraph h = SemanticGraph.ValueOf("[married/VBN nsubjpass>Hughes/NNP auxpass>was/VBD nmod:to>Gracia/NNP]"); h.GetFirstRoot().Set(typeof(PatternsAnnotations.PatternLabel1), "YES"); //SemanticGraph t = SemanticGraph // .valueOf("[loved/VBD\nnsubj:Hughes/NNP\ndobj:[wife/NN poss:his/PRP$ appos:Gracia/NNP]\nconj_and:[obsessed/JJ\ncop:was/VBD\nadvmod:absolutely/RB\nprep_with:[Elicia/NN poss:his/PRP$ amod:little/JJ nn:daughter/NN]]]"); string macro = "macro WORD = married"; Env env = new Env(); env.Bind("pattern1", typeof(PatternsAnnotations.PatternLabel1)); string pattern = "({pattern1:YES}=parent >>nsubjpass {}=node)"; IList <SemgrexPattern> pats = SemgrexBatchParser.CompileStream(new ByteArrayInputStream(Sharpen.Runtime.GetBytesForString((macro + "\n" + pattern), StandardCharsets.Utf8)), env); SemgrexPattern pat3 = pats[0]; bool ignoreCase = true; SemgrexMatcher mat3 = pat3.Matcher(h, ignoreCase); if (mat3.Find()) { string parent = mat3.GetNode("parent").Word(); string node = mat3.GetNode("node").Word(); System.Console.Out.WriteLine("Result: parent is " + parent + " and node is " + node); NUnit.Framework.Assert.AreEqual(parent, "married"); NUnit.Framework.Assert.AreEqual(node, "Hughes"); } else { throw new Exception("failed!"); } }
public virtual void TestMacro() { SemanticGraph h = SemanticGraph.ValueOf("[married/VBN nsubjpass>Hughes/NNP auxpass>was/VBD nmod:to>Gracia/NNP]"); string macro = "macro WORD = married"; string pattern = "({word:${WORD}}=parent >>nsubjpass {}=node)"; IList <SemgrexPattern> pats = SemgrexBatchParser.CompileStream(new ByteArrayInputStream(Sharpen.Runtime.GetBytesForString((macro + "\n" + pattern), StandardCharsets.Utf8))); SemgrexPattern pat3 = pats[0]; bool ignoreCase = true; SemgrexMatcher mat3 = pat3.Matcher(h, ignoreCase); if (mat3.Find()) { string parent = mat3.GetNode("parent").Word(); string node = mat3.GetNode("node").Word(); System.Console.Out.WriteLine("Result: parent is " + parent + " and node is " + node); NUnit.Framework.Assert.AreEqual(parent, "married"); NUnit.Framework.Assert.AreEqual(node, "Hughes"); } else { throw new Exception("failed!"); } }