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); }