aboutsummaryrefslogtreecommitdiff
path: root/runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs')
-rw-r--r--runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs181
1 files changed, 0 insertions, 181 deletions
diff --git a/runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs b/runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs
deleted file mode 100644
index 28813cb..0000000
--- a/runtime/CSharp3/Sources/Antlr3.Runtime/CommonTokenStream.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * [The "BSD licence"]
- * Copyright (c) 2005-2008 Terence Parr
- * All rights reserved.
- *
- * Conversion to C#:
- * Copyright (c) 2008-2009 Sam Harwell, Pixel Mine, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-namespace Antlr.Runtime
-{
- using System.Collections.Generic;
-
- using InvalidOperationException = System.InvalidOperationException;
- using StringBuilder = System.Text.StringBuilder;
-
- /** <summary>
- * The most common stream of tokens is one where every token is buffered up
- * and tokens are prefiltered for a certain channel (the parser will only
- * see these tokens and cannot change the filter channel number during the
- * parse).
- * </summary>
- *
- * <remarks>TODO: how to access the full token stream? How to track all tokens matched per rule?</remarks>
- */
- [System.Serializable]
- public class CommonTokenStream : BufferedTokenStream
- {
- /** Skip tokens on any channel but this one; this is how we skip whitespace... */
- private int _channel;
-
- public CommonTokenStream()
- {
- }
-
- public CommonTokenStream(ITokenSource tokenSource)
- : this(tokenSource, TokenChannels.Default)
- {
- }
-
- public CommonTokenStream(ITokenSource tokenSource, int channel)
- : base(tokenSource)
- {
- this._channel = channel;
- }
-
- public int Channel
- {
- get
- {
- return _channel;
- }
- }
-
- /** Reset this token stream by setting its token source. */
- public override ITokenSource TokenSource
- {
- get
- {
- return base.TokenSource;
- }
- set
- {
- base.TokenSource = value;
- _channel = TokenChannels.Default;
- }
- }
-
- /** Always leave p on an on-channel token. */
- public override void Consume()
- {
- if (_p == -1)
- Setup();
- _p++;
- _p = SkipOffTokenChannels(_p);
- }
-
- protected override IToken LB(int k)
- {
- if (k == 0 || (_p - k) < 0)
- return null;
-
- int i = _p;
- int n = 1;
- // find k good tokens looking backwards
- while (n <= k)
- {
- // skip off-channel tokens
- i = SkipOffTokenChannelsReverse(i - 1);
- n++;
- }
- if (i < 0)
- return null;
- return _tokens[i];
- }
-
- public override IToken LT(int k)
- {
- if (_p == -1)
- Setup();
- if (k == 0)
- return null;
- if (k < 0)
- return LB(-k);
- int i = _p;
- int n = 1; // we know tokens[p] is a good one
- // find k good tokens
- while (n < k)
- {
- // skip off-channel tokens
- i = SkipOffTokenChannels(i + 1);
- n++;
- }
-
- if (i > Range)
- Range = i;
-
- return _tokens[i];
- }
-
- /** Given a starting index, return the index of the first on-channel
- * token.
- */
- protected virtual int SkipOffTokenChannels(int i)
- {
- Sync(i);
- while (_tokens[i].Channel != _channel)
- {
- // also stops at EOF (it's on channel)
- i++;
- Sync(i);
- }
- return i;
- }
-
- protected virtual int SkipOffTokenChannelsReverse(int i)
- {
- while (i >= 0 && ((IToken)_tokens[i]).Channel != _channel)
- {
- i--;
- }
-
- return i;
- }
-
- public override void Reset()
- {
- base.Reset();
- _p = SkipOffTokenChannels(0);
- }
-
- protected override void Setup()
- {
- _p = 0;
- _p = SkipOffTokenChannels(_p);
- }
- }
-}