public class BufferedTokenStream extends Object implements TokenStream
<names:{hi, <it>}> has to parse names as part of an
 expression but "hi, <it>" as a nested template.
 
 You can't use this stream if you pass whitespace or other off-channel tokens
 to the parser. The stream can't ignore off-channel tokens.
 (UnbufferedTokenStream is the same way.) Use
 CommonTokenStream.| Modifier and Type | Field and Description | 
|---|---|
protected boolean | 
fetchedEOF
Set to  
true when the EOF token is fetched. | 
protected int | 
p
The index into  
tokens of the current token (next token to
 consume). | 
protected List<Token> | 
tokens
Record every single token pulled from the source so we can reproduce
 chunks of it later. 
 | 
protected TokenSource | 
tokenSource  | 
EOF, UNKNOWN_SOURCE_NAME| Constructor and Description | 
|---|
BufferedTokenStream(TokenSource tokenSource)  | 
| Modifier and Type | Method and Description | 
|---|---|
protected int | 
adjustSeekIndex(int i)
Allowed derived classes to modify the behavior of operations which change
 the current stream position by adjusting the target token index of a seek
 operation. 
 | 
void | 
consume()
Consumes the current symbol in the stream. 
 | 
protected int | 
fetch(int n)
Add  
n elements to buffer. | 
void | 
fill()
Get all tokens from lexer until EOF 
 | 
protected List<Token> | 
filterForChannel(int from,
                int to,
                int channel)  | 
Token | 
get(int i)
Gets the  
Token at the specified index in the stream. | 
List<Token> | 
get(int start,
   int stop)
Get all tokens from start..stop inclusively 
 | 
List<Token> | 
getHiddenTokensToLeft(int tokenIndex)
Collect all hidden tokens (any off-default channel) to the left of
  the current token up until we see a token on DEFAULT_TOKEN_CHANNEL. 
 | 
List<Token> | 
getHiddenTokensToLeft(int tokenIndex,
                     int channel)
Collect all tokens on specified channel to the left of
  the current token up until we see a token on DEFAULT_TOKEN_CHANNEL. 
 | 
List<Token> | 
getHiddenTokensToRight(int tokenIndex)
Collect all hidden tokens (any off-default channel) to the right of
  the current token up until we see a token on DEFAULT_TOKEN_CHANNEL
  of EOF. 
 | 
List<Token> | 
getHiddenTokensToRight(int tokenIndex,
                      int channel)
Collect all tokens on specified channel to the right of
  the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or
  EOF. 
 | 
String | 
getSourceName()
Gets the name of the underlying symbol source. 
 | 
String | 
getText()
Get the text of all tokens in this buffer. 
 | 
String | 
getText(Interval interval)
Return the text of all tokens within the specified  
interval. | 
String | 
getText(RuleContext ctx)
Return the text of all tokens in the source interval of the specified
 context. 
 | 
String | 
getText(Token start,
       Token stop)
Return the text of all tokens in this stream between  
start and
 stop (inclusive). | 
List<Token> | 
getTokens()  | 
List<Token> | 
getTokens(int start,
         int stop)  | 
List<Token> | 
getTokens(int start,
         int stop,
         int ttype)  | 
List<Token> | 
getTokens(int start,
         int stop,
         Set<Integer> types)
Given a start and stop index, return a List of all tokens in
  the token type BitSet. 
 | 
TokenSource | 
getTokenSource()
Gets the underlying  
TokenSource which provides tokens for this
 stream. | 
int | 
index()
Return the index into the stream of the input symbol referred to by
  
LA(1). | 
int | 
LA(int i)
Gets the value of the symbol at offset  
i from the current
 position. | 
protected void | 
lazyInit()  | 
protected Token | 
LB(int k)  | 
Token | 
LT(int k)
 | 
int | 
mark()
 | 
protected int | 
nextTokenOnChannel(int i,
                  int channel)
Given a starting index, return the index of the next token on channel. 
 | 
protected int | 
previousTokenOnChannel(int i,
                      int channel)
Given a starting index, return the index of the previous token on channel. 
 | 
void | 
release(int marker)
This method releases a marked range created by a call to
  
mark(). | 
void | 
reset()  | 
void | 
seek(int index)
Set the input cursor to the position indicated by  
index. | 
void | 
setTokenSource(TokenSource tokenSource)
Reset this token stream by setting its token source. 
 | 
protected void | 
setup()  | 
int | 
size()
Returns the total number of symbols in the stream, including a single EOF
 symbol. 
 | 
protected boolean | 
sync(int i)
Make sure index  
i in tokens has a token. | 
@NotNull protected TokenSource tokenSource
protected List<Token> tokens
protected int p
protected boolean fetchedEOF
true when the EOF token is fetched. Do not continue fetching
 tokens after that point, or multiple EOF tokens could end up in the
 tokens array.fetch(int)public BufferedTokenStream(TokenSource tokenSource)
public TokenSource getTokenSource()
TokenStreamTokenSource which provides tokens for this
 stream.getTokenSource in interface TokenStreampublic int index()
IntStreamLA(1).
 
 The behavior of this method is unspecified if no call to an
 initializing method has occurred after this stream was
 constructed.public int mark()
IntStreamseek() operations will be
 valid over a "marked range" extending from the index where mark()
 was called to the current index(). This allows the use of
 streaming input sources by specifying the minimum buffering requirements
 to support arbitrary lookahead during prediction.
 
 The returned mark is an opaque handle (type int) which is passed
 to release() when the guarantees provided by the marked
 range are no longer necessary. When calls to
 mark()/release() are nested, the marks must be released
 in reverse order of which they were obtained. Since marked regions are
 used during performance-critical sections of prediction, the specific
 behavior of invalid usage is unspecified (i.e. a mark is not released, or
 a mark is released twice, or marks are not released in reverse order from
 which they were created).
 
 The behavior of this method is unspecified if no call to an
 initializing method has occurred after this stream was
 constructed.
 
 This method does not change the current position in the input stream.
 
 The following example shows the use of mark(),
 release(mark), index(), and
 seek(index) as part of an operation to safely work within a
 marked region, then restore the stream position to its original value and
 release the mark.
 
 IntStream stream = ...;
 int index = -1;
 int mark = stream.mark();
 try {
   index = stream.index();
   // perform work here...
 } finally {
   if (index != -1) {
     stream.seek(index);
   }
   stream.release(mark);
 }
 public void release(int marker)
IntStreammark(). Calls to release() must appear in the
 reverse order of the corresponding calls to mark(). If a mark is
 released twice, or if marks are not released in reverse order of the
 corresponding calls to mark(), the behavior is unspecified.
 
 For more information and an example, see IntStream.mark().release in interface IntStreammarker - A marker returned by a call to mark().IntStream.mark()public void reset()
public void seek(int index)
IntStreamindex. If the
 specified index lies past the end of the stream, the operation behaves as
 though index was the index of the EOF symbol. After this method
 returns without throwing an exception, the at least one of the following
 will be true.
 index() will return the index of the first symbol
     appearing at or after the specified index. Specifically,
     implementations which filter their sources should automatically
     adjust index forward the minimum amount required for the
     operation to target a non-ignored symbol.LA(1) returns IntStream.EOFindex
 lies within a marked region. For more information on marked regions, see
 IntStream.mark(). The behavior of this method is unspecified if no call to
 an initializing method has occurred after this stream
 was constructed.public int size()
IntStreampublic void consume()
IntStreamindex()
                before calling this method is less than the value of index()
                after calling this method.LA(1) before
                calling this method becomes the value of LA(-1) after calling
                this method.index() is
 incremented by exactly 1, as that would preclude the ability to implement
 filtering streams (e.g. CommonTokenStream which distinguishes
 between "on-channel" and "off-channel" tokens).protected boolean sync(int i)
i in tokens has a token.true if a token is located at index i, otherwise
    false.get(int i)protected int fetch(int n)
n elements to buffer.public Token get(int i)
TokenStreamToken at the specified index in the stream. When
 the preconditions of this method are met, the return value is non-null.
 
 The preconditions for this method are the same as the preconditions of
 IntStream.seek(int). If the behavior of seek(index) is
 unspecified for the current state and given index, then the
 behavior of this method is also unspecified.
 
 The symbol referred to by index differs from seek() only
 in the case of filtering streams where index lies before the end
 of the stream. Unlike seek(), this method does not adjust
 index to point to a non-ignored symbol.get in interface TokenStreampublic int LA(int i)
IntStreami from the current
 position. When i==1, this method returns the value of the current
 symbol in the stream (which is the next symbol to be consumed). When
 i==-1, this method returns the value of the previously read
 symbol in the stream. It is not valid to call this method with
 i==0, but the specific behavior is unspecified because this
 method is frequently called from performance-critical code.
 
 This method is guaranteed to succeed if any of the following are true:
 i>0i==-1 and index() returns a value greater
     than the value of index() after the stream was constructed
     and LA(1) was called in that order. Specifying the current
     index() relative to the index after the stream was created
     allows for filtering implementations that do not return every symbol
     from the underlying source. Specifying the call to LA(1)
     allows for lazily initialized streams.LA(i) refers to a symbol consumed within a marked region
     that has not yet been released.i represents a position at or beyond the end of the stream,
 this method returns IntStream.EOF.
 
 The return value is unspecified if i<0 and fewer than -i
 calls to consume() have occurred from the beginning of
 the stream before calling this method.protected Token LB(int k)
public Token LT(int k)
TokenStreamToken instance associated with the value returned by
 LA(k). This method has the same pre- and post-conditions as
 IntStream.LA(int). In addition, when the preconditions of this method
 are met, the return value is non-null and the value of
 LT(k).getType()==LA(k).LT in interface TokenStreamIntStream.LA(int)protected int adjustSeekIndex(int i)
i. If an
 exception is thrown in this method, the current stream index should not be
 changed.
 
 For example, CommonTokenStream overrides this method to ensure that
 the seek target is always an on-channel token.i - The target token index.protected final void lazyInit()
protected void setup()
public void setTokenSource(TokenSource tokenSource)
public List<Token> getTokens(int start, int stop, Set<Integer> types)
protected int nextTokenOnChannel(int i,
                     int channel)
protected int previousTokenOnChannel(int i,
                         int channel)
public List<Token> getHiddenTokensToRight(int tokenIndex, int channel)
public List<Token> getHiddenTokensToRight(int tokenIndex)
public List<Token> getHiddenTokensToLeft(int tokenIndex, int channel)
public List<Token> getHiddenTokensToLeft(int tokenIndex)
public String getSourceName()
IntStreamIntStream.UNKNOWN_SOURCE_NAME.getSourceName in interface IntStream@NotNull public String getText()
getText in interface TokenStream@NotNull public String getText(Interval interval)
TokenStreaminterval. This
 method behaves like the following code (including potential exceptions
 for violating preconditions of TokenStream.get(int), but may be optimized by the
 specific implementation.
 
 TokenStream stream = ...;
 String text = "";
 for (int i = interval.a; i <= interval.b; i++) {
   text += stream.get(i).getText();
 }
 getText in interface TokenStreaminterval - The interval of tokens within this stream to get text
 for.@NotNull public String getText(RuleContext ctx)
TokenStreamTokenStream.getText(Interval), but may be
 optimized by the specific implementation.
 
 If ctx.getSourceInterval() does not return a valid interval of
 tokens provided by this stream, the behavior is unspecified.
 TokenStream stream = ...; String text = stream.getText(ctx.getSourceInterval());
getText in interface TokenStreamctx - The context providing the source interval of tokens to get
 text for.ctx.@NotNull public String getText(Token start, Token stop)
TokenStreamstart and
 stop (inclusive).
 
 If the specified start or stop token was not provided by
 this stream, or if the stop occurred before the start
 token, the behavior is unspecified.
 
 For streams which ensure that the Token.getTokenIndex() method is
 accurate for all of its provided tokens, this method behaves like the
 following code. Other streams may implement this method in other ways
 provided the behavior is consistent with this at a high level.
 
 TokenStream stream = ...;
 String text = "";
 for (int i = start.getTokenIndex(); i <= stop.getTokenIndex(); i++) {
   text += stream.get(i).getText();
 }
 getText in interface TokenStreamstart - The first token in the interval to get text for.stop - The last token in the interval to get text for (inclusive).start
 and stop tokens.public void fill()
Copyright © 1992-2013 ANTLR. All Rights Reserved.