コード例 #1
0
 public void EbnfGrammarGeneratorShouldCreateGrammarForMultipleProductions()
 {
     // S = 'a';
     // S = 'b';
     var definition = new EbnfDefinitionConcatenation(
         new EbnfBlockRule(
             new EbnfRule(
                 new EbnfQualifiedIdentifier("S"),
                 new EbnfExpression(
                     new EbnfTerm(
                         new EbnfFactorLiteral("a"))))),
         new EbnfDefinition(
             new EbnfBlockRule(
                 new EbnfRule(
                     new EbnfQualifiedIdentifier("S"),
                     new EbnfExpression(
                         new EbnfTerm(
                             new EbnfFactorLiteral("b")))))));
     var grammar = GenerateGrammar(definition);
     Assert.IsNotNull(grammar);
     Assert.IsNotNull(grammar.Start);
     Assert.AreEqual(2, grammar.Productions.Count);
 }
コード例 #2
0
ファイル: EbnfParserTests.cs プロジェクト: bilsaboob/Pliant
 public void EbnfParserShouldParseMultipleRules()
 {
     var expected = new EbnfDefinitionConcatenation(
         new EbnfBlockRule(
             new EbnfRule(
                 new EbnfQualifiedIdentifier("S"),
                 new EbnfExpression(
                     new EbnfTermConcatenation(
                         new EbnfFactorIdentifier(
                             new EbnfQualifiedIdentifier("A")),
                         new EbnfTerm(
                             new EbnfFactorIdentifier(
                                 new EbnfQualifiedIdentifier("B"))))))),
         new EbnfDefinitionConcatenation(
             new EbnfBlockRule(
                 new EbnfRule(
                     new EbnfQualifiedIdentifier("A"),
                     new EbnfExpression(
                         new EbnfTerm(
                             new EbnfFactorLiteral("a"))))),
             new EbnfDefinition(
                 new EbnfBlockRule(
                     new EbnfRule(
                         new EbnfQualifiedIdentifier(
                             "B"),
                         new EbnfExpression(
                             new EbnfTerm(
                                 new EbnfFactorLiteral("b"))))))));
     var actual = Parse(@"
         S = A B;
         A = 'a';
         B = 'b';
     ");
     Assert.AreEqual(expected, actual);
 }