コード例 #1
0
        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);
        }