コード例 #1
0
        public void TestGrammar1Letter()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.LetterA());

            Assert.AreEqual("LetterA", nonterminal.Name);
            Assert.AreEqual('a', ((CharacterTerminal)nonterminal.Expression).Character);
        }
コード例 #2
0
        public void LetterA()
        {
            TestGrammar1 grammar = TestGrammar1.Create();
            PegParser    parser  = new PegParser(grammar, grammar.GetNonterminal(o => o.LetterA()));

            Assert.IsNotNull(parser.ParseString("a"));
            Assert.IsNull(parser.ParseString("b"));
        }
コード例 #3
0
        public void TestGrammarOptionalLetterA()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.OptionalLetterA());

            Assert.AreEqual("OptionalLetterA", nonterminal.Name);
            Optional expression = (Optional)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)expression.Operand).Name);
        }
コード例 #4
0
        public void TestGrammarZeroOrMoreLetterA()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.ZeroOrMoreLetterA());

            Assert.AreEqual("ZeroOrMoreLetterA", nonterminal.Name);
            ZeroOrMore expression = (ZeroOrMore)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)expression.Operand).Name);
        }
コード例 #5
0
        public void TestGrammarAndLetterA()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.AndLetterA());

            Assert.AreEqual("AndLetterA", nonterminal.Name);
            AndPredicate expression = (AndPredicate)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)expression.Operand).Name);
        }
コード例 #6
0
        public void TestGrammar1NonterminalAndNonterminalSequence()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.NonterminalAndNonterminalSequence());

            Assert.AreEqual("NonterminalAndNonterminalSequence", nonterminal.Name);
            Sequence orderedChoice = (Sequence)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)orderedChoice.Expressions[0]).Name);
            Assert.AreEqual("LetterB", ((Nonterminal)orderedChoice.Expressions[1]).Name);
        }
コード例 #7
0
        public void TestGrammar1LetterSequence()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.LetterSequence());

            Assert.AreEqual("LetterSequence", nonterminal.Name);
            Sequence orderedChoice = (Sequence)nonterminal.Expression;

            Assert.AreEqual('a', ((CharacterTerminal)orderedChoice.Expressions[0]).Character);
            Assert.AreEqual('b', ((CharacterTerminal)orderedChoice.Expressions[1]).Character);
        }
コード例 #8
0
        public void TestGrammar1NonterminalAndLetterChoice()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.NonterminalAndLetterChoice());

            Assert.AreEqual("NonterminalAndLetterChoice", nonterminal.Name);
            OrderedChoice orderedChoice = (OrderedChoice)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)orderedChoice.Expressions[0]).Name);
            Assert.AreEqual('b', ((CharacterTerminal)orderedChoice.Expressions[1]).Character);
        }
コード例 #9
0
        public void TestGrammarThreeExpressionSequence()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.ThreeExpressionSequence());

            Assert.AreEqual("ThreeExpressionSequence", nonterminal.Name);
            Sequence sequence = (Sequence)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)sequence.Expressions[0]).Name);
            Assert.AreEqual("LetterB", ((Nonterminal)sequence.Expressions[1]).Name);
            Assert.AreEqual('c', ((CharacterTerminal)sequence.Expressions[2]).Character);
        }
コード例 #10
0
        public void TestGrammarThreeChoices()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.ThreeChoices());

            Assert.AreEqual("ThreeChoices", nonterminal.Name);
            OrderedChoice orderedChoice = (OrderedChoice)nonterminal.Expression;

            Assert.AreEqual("LetterA", ((Nonterminal)orderedChoice.Expressions[0]).Name);
            Assert.AreEqual("LetterB", ((Nonterminal)orderedChoice.Expressions[1]).Name);
            Assert.AreEqual('c', ((CharacterTerminal)orderedChoice.Expressions[2]).Character);
        }
コード例 #11
0
        public void TestGrammarTwoSequences()
        {
            TestGrammar1 grammar     = TestGrammar1.Create();
            Nonterminal  nonterminal = grammar.GetNonterminal(o => o.TwoSequences());

            Assert.AreEqual("TwoSequences", nonterminal.Name);
            OrderedChoice orderedChoice = (OrderedChoice)nonterminal.Expression;
            Sequence      sequence1     = (Sequence)orderedChoice.Expressions[0];
            Sequence      sequence2     = (Sequence)orderedChoice.Expressions[1];

            Assert.AreEqual("LetterA", ((Nonterminal)sequence1.Expressions[0]).Name);
            Assert.AreEqual("LetterB", ((Nonterminal)sequence1.Expressions[1]).Name);
            Assert.AreEqual("LetterB", ((Nonterminal)sequence2.Expressions[0]).Name);
            Assert.AreEqual("LetterA", ((Nonterminal)sequence2.Expressions[1]).Name);
        }