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