void TestCFGParser_validate(string input) { ContextFreeGrammar cfg = GrammarParser <string> .Parse(MapTerminalToDummyAutomaton, input); Assert.IsNull(cfg.BuiltinTerminalAlgebra); Assert.AreEqual("START", cfg.StartSymbol.Name); Assert.AreEqual(3, cfg.Nonterminals.Count); var terminals = new List <GrammarSymbol>(cfg.GetTerminals()); Assert.AreEqual(3, terminals.Count); var a = new Terminal <string>("(a)"); var b = new Terminal <string>("(b)"); var at = new Terminal <string>("(@)"); Assert.IsTrue(terminals.Contains(a)); Assert.IsTrue(terminals.Contains(b)); Assert.IsTrue(terminals.Contains(at)); var productions = new List <Production>(cfg.GetProductions()); Assert.AreEqual(6, productions.Count); }