コード例 #1
0
        public void Terminal_Any()
        {
            var         input    = "ijk";
            var         bytes    = Encoding.UTF8.GetBytes(input);
            var         iterator = new ByteInputIterator(bytes);
            AExpression any      = new Sequence(new AnyCharacter(), new AnyCharacter());
            var         visitor  = new NpegParserVisitor(iterator);

            any.Accept(visitor);
            Assert.IsTrue(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 2,
                          "Expected two characters to be consumed and Iterator updated by 2.  0, 1 .. points to 2");

            input    = "ij";
            bytes    = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            visitor  = new NpegParserVisitor(iterator);
            any.Accept(visitor);
            Assert.IsTrue(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 2,
                          "Expected two characters to be consumed and Iterator updated by 2.  0, 1 .. points to 2");

            input    = "";
            bytes    = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            any      = new AnyCharacter();
            visitor  = new NpegParserVisitor(iterator);
            any.Accept(visitor);
            Assert.IsFalse(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 0, "Expected no characters to be consumed and index stay at zero.");

            var number = new Sequence(
                new OneOrMore(new CharacterClass {
                ClassExpression = "[0-9]"
            }),
                new NotPredicate(
                    new AnyCharacter()
                    )
                );

            input    = "012345.";
            bytes    = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            visitor  = new NpegParserVisitor(iterator);
            number.Accept(visitor);
            Assert.IsFalse(visitor.IsMatch);
        }
コード例 #2
0
ファイル: TerminalNodes.cs プロジェクト: philiplaureano/NPEG
        public void Terminal_Any()
        {
            var input = "ijk";
            var bytes = Encoding.UTF8.GetBytes(input);
            var iterator = new ByteInputIterator(bytes);
            AExpression any = new Sequence(new AnyCharacter(), new AnyCharacter());
            var visitor = new NpegParserVisitor(iterator);
            any.Accept(visitor);
            Assert.IsTrue(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 2,
                          "Expected two characters to be consumed and Iterator updated by 2.  0, 1 .. points to 2");

            input = "ij";
            bytes = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            visitor = new NpegParserVisitor(iterator);
            any.Accept(visitor);
            Assert.IsTrue(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 2,
                          "Expected two characters to be consumed and Iterator updated by 2.  0, 1 .. points to 2");

            input = "";
            bytes = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            any = new AnyCharacter();
            visitor = new NpegParserVisitor(iterator);
            any.Accept(visitor);
            Assert.IsFalse(visitor.IsMatch);
            Assert.IsTrue(iterator.Index == 0, "Expected no characters to be consumed and index stay at zero.");

            var number = new Sequence(
                new OneOrMore(new CharacterClass {ClassExpression = "[0-9]"}),
                new NotPredicate(
                    new AnyCharacter()
                    )
                );
            input = "012345.";
            bytes = Encoding.UTF8.GetBytes(input);
            iterator = new ByteInputIterator(bytes);
            visitor = new NpegParserVisitor(iterator);
            number.Accept(visitor);
            Assert.IsFalse(visitor.IsMatch);
        }