Exemplo n.º 1
0
        public void TestConflictGrammar_HintsOnTerms()
        {
            var grammar = new ConflictGrammarWithHintsOnTerms();
            var parser  = new Parser(grammar);

            Assert.True(parser.Language.Errors.Count == 0);

            //Field list sample
            var sample = FieldListSample;
            var tree   = parser.Parse(sample);

            Assert.NotNull(tree);
            Assert.False(tree.HasErrors());

            Assert.NotNull(tree.Root);
            var term = tree.Root.Term as NonTerminal;

            Assert.NotNull(term);
            Assert.Equal("StatementList", term.Name);

            Assert.Equal(2, tree.Root.ChildNodes.Count);
            var nodes = tree.Root.ChildNodes.Select(t => t.ChildNodes[0]).ToArray();

            Assert.Equal("fieldDef", nodes[0].Term.Name);
            Assert.Equal("fieldDef", nodes[1].Term.Name);

            //Mixed sample
            sample = MixedListSample;
            tree   = parser.Parse(sample);
            Assert.NotNull(tree);
            Assert.False(tree.HasErrors());

            Assert.NotNull(tree.Root);
            term = tree.Root.Term as NonTerminal;
            Assert.NotNull(term);
            Assert.Equal("StatementList", term.Name);

            Assert.Equal(3, tree.Root.ChildNodes.Count);
            nodes = tree.Root.ChildNodes.Select(t => t.ChildNodes[0]).ToArray();
            Assert.Equal("propDef", nodes[0].Term.Name);
            Assert.Equal("fieldDef", nodes[1].Term.Name);
            Assert.Equal("methodDef", nodes[2].Term.Name);
        }
        public void TestConflictGrammar_HintsOnTerms()
        {
            var grammar = new ConflictGrammarWithHintsOnTerms();
            var parser = new Parser(grammar);
            Assert.True(parser.Language.Errors.Count == 0);

            //Field list sample
            var sample = FieldListSample;
            var tree = parser.Parse(sample);
            Assert.NotNull(tree);
            Assert.False(tree.HasErrors());

            Assert.NotNull(tree.Root);
            var term = tree.Root.Term as NonTerminal;
            Assert.NotNull(term);
            Assert.Equal("StatementList", term.Name);

            Assert.Equal(2, tree.Root.ChildNodes.Count);
            var nodes = tree.Root.ChildNodes.Select(t => t.ChildNodes[0]).ToArray();
            Assert.Equal("fieldDef", nodes[0].Term.Name);
            Assert.Equal("fieldDef", nodes[1].Term.Name);

            //Mixed sample
            sample = MixedListSample;
            tree = parser.Parse(sample);
            Assert.NotNull(tree);
            Assert.False(tree.HasErrors());

            Assert.NotNull(tree.Root);
            term = tree.Root.Term as NonTerminal;
            Assert.NotNull(term);
            Assert.Equal("StatementList", term.Name);

            Assert.Equal(3, tree.Root.ChildNodes.Count);
            nodes = tree.Root.ChildNodes.Select(t => t.ChildNodes[0]).ToArray();
            Assert.Equal("propDef", nodes[0].Term.Name);
            Assert.Equal("fieldDef", nodes[1].Term.Name);
            Assert.Equal("methodDef", nodes[2].Term.Name);
        }