コード例 #1
0
        public void TestSeekOnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       buffer        = encoding.GetBytes("One\r\nTwo\r\nThree");
            MemoryStream grammarStream = new MemoryStream(buffer);

            ANTLRInputStream stream = new ANTLRInputStream(grammarStream, encoding);

            Assert.AreEqual('O', stream.LA(1));
            Assert.AreEqual(0, stream.Index);
            Assert.AreEqual(0, stream.CharPositionInLine);
            Assert.AreEqual(1, stream.Line);

            stream.Seek(6);
            Assert.AreEqual('w', stream.LA(1));
            Assert.AreEqual(6, stream.Index);
            Assert.AreEqual(1, stream.CharPositionInLine);
            Assert.AreEqual(2, stream.Line);

            stream.Seek(11);
            Assert.AreEqual('h', stream.LA(1));
            Assert.AreEqual(11, stream.Index);
            Assert.AreEqual(1, stream.CharPositionInLine);
            Assert.AreEqual(3, stream.Line);

            // seeking backwards leaves state info (other than index in stream) unchanged
            stream.Seek(1);
            Assert.AreEqual('n', stream.LA(1));
            Assert.AreEqual(1, stream.Index);
            Assert.AreEqual(1, stream.CharPositionInLine);
            Assert.AreEqual(3, stream.Line);
        }
コード例 #2
0
		public void TestSeekOnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] buffer = encoding.GetBytes("One\r\nTwo\r\nThree");
			MemoryStream grammarStream = new MemoryStream(buffer);

			ANTLRInputStream stream = new ANTLRInputStream(grammarStream, encoding);
			Assert.AreEqual('O', stream.LA(1));
			Assert.AreEqual(0, stream.Index());
			Assert.AreEqual(0, stream.CharPositionInLine);
			Assert.AreEqual(1, stream.Line);

			stream.Seek(6);
			Assert.AreEqual('w', stream.LA(1));
			Assert.AreEqual(6, stream.Index());
			Assert.AreEqual(1, stream.CharPositionInLine);
			Assert.AreEqual(2, stream.Line);

			stream.Seek(11);
			Assert.AreEqual('h', stream.LA(1));
			Assert.AreEqual(11, stream.Index());
			Assert.AreEqual(1, stream.CharPositionInLine);
			Assert.AreEqual(3, stream.Line);

			// seeking backwards leaves state info (other than index in stream) unchanged
			stream.Seek(1);
			Assert.AreEqual('n', stream.LA(1));
			Assert.AreEqual(1, stream.Index());
			Assert.AreEqual(1, stream.CharPositionInLine);
			Assert.AreEqual(3, stream.Line);
		}