示例#1
0
        public void TestMemoizeAlternate()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("a | b", parser.AlternateEOF);

            Assert.IsTrue(match.Success);
        }
示例#2
0
        public void TestMemoizeAlternate()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("a | b", parser.AlternateEOF);

            Assert.IsTrue(match.Success);
        }
示例#3
0
        public void TestMemoizeSequence()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("a b", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(2, parser.charCount);
        }
示例#4
0
        public void TestMemoizeChar()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("a", parser.Char);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(1, parser.charCount);
        }
示例#5
0
        public void TestMemoizeSequence()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("a b", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(2, parser.charCount);
        }
示例#6
0
        public void TestMemoizeChar()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("a", parser.Char);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(1, parser.charCount);
        }
示例#7
0
        public void TestMemoizeCombo()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("a | [b [c d]]", parser.AlternateEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(4, parser.charCount);
            Assert.AreEqual(2, parser.categoryCount);
        }
示例#8
0
        public void TestMemoizeEmbed()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("[[a b] c]", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(3, parser.charCount);
            Assert.AreEqual(2, parser.categoryCount);
        }
示例#9
0
        public void TestMemoizeCombo()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("a | [b [c d]]", parser.AlternateEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(4, parser.charCount);
            Assert.AreEqual(2, parser.categoryCount);
        }
示例#10
0
        public void TestMemoizeEmbed()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("[[a b] c]", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.AreEqual(3, parser.charCount);
            Assert.AreEqual(2, parser.categoryCount);
        }
示例#11
0
        public void TestMemoizeCategory()
        {
            var parser = new MemoizeParser();
            var match  = parser.GetMatch("[a b]", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.IsTrue(match.Result is CategoryNode);
            Assert.AreEqual(2, ((CategoryNode)match.Result).Children.Count());
            Assert.AreEqual('a', ((CharNode)((CategoryNode)match.Result).Children.ElementAt(0)).Value);
            Assert.AreEqual('b', ((CharNode)((CategoryNode)match.Result).Children.ElementAt(1)).Value);
            Assert.AreEqual(1, parser.categoryCount);
            Assert.AreEqual(2, parser.charCount);
        }
示例#12
0
        public void TestMemoizeCategory()
        {
            var parser = new MemoizeParser();
            var match = parser.GetMatch("[a b]", parser.SequenceEOF);

            Assert.IsTrue(match.Success);
            Assert.IsTrue(match.Result is CategoryNode);
            Assert.AreEqual(2, ((CategoryNode)match.Result).Children.Count());
            Assert.AreEqual('a', ((CharNode)((CategoryNode)match.Result).Children.ElementAt(0)).Value);
            Assert.AreEqual('b', ((CharNode)((CategoryNode)match.Result).Children.ElementAt(1)).Value);
            Assert.AreEqual(1, parser.categoryCount);
            Assert.AreEqual(2, parser.charCount);
        }