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); }
public IProgram Visit(Sequence program) { IList <IProgram> instructions = program.Accept(new InstructionList()); return(IProgram.MakeSequence(instructions)); }