protected T?TestTypedOutput <T>(string resourceName, string text) where T : class { var grammarText = GetResource(resourceName); var grammar = MetaGrammar.ParseGrammar(grammarText); Assert.IsNotNull(grammar, "Grammar couldn't get parsed"); var match = grammar !.Match(null, text); Assert.IsNotNull(match, "No match"); var output = match !.ComputeTypedOutput <T>(); return(output); }
private void TestChildren(string resourceName, string text, int expectedChildren) { var grammarText = GetResource(resourceName); var grammar = MetaGrammar.ParseGrammar(grammarText); Assert.IsNotNull(grammar, "Grammar"); var match = grammar !.Match("main", text); Assert.IsNotNull(match, "Match"); var output = ToList(match !.ComputeOutput()); Assert.IsNotNull(output, "Output null"); Assert.AreEqual(expectedChildren, output.Count(), "#Children"); }
public static Grammar?ParseGrammar(string grammarText) { var grammar = GetCachedGrammar(grammarText); if (grammar != null) { return(grammar); } else { grammar = MetaGrammar.ParseGrammar(grammarText); PushInCache(grammarText, grammar); return(grammar); } }
public void ParsingSequence() { var ruleSet = MetaGrammar.ParseGrammar("rule seq = \"a\" \"b\";"); Assert.IsNotNull(ruleSet); }
public void ParsingString() { var ruleSet = MetaGrammar.ParseGrammar("rule main = \"a\";"); Assert.IsNotNull(ruleSet); }