org.antlr.runtime
Class RecognizerSharedState

java.lang.Object
  extended by org.antlr.runtime.RecognizerSharedState

public class RecognizerSharedState
extends java.lang.Object

The set of fields needed by an abstract recognizer to recognize input and recover from errors etc... As a separate state object, it can be shared among multiple grammars; e.g., when one grammar imports another. These fields are publically visible but the actual state pointer per parser is protected.


Field Summary
 int _fsp
           
 int backtracking
          If 0, no backtracking is going on.
 int channel
          The channel number for the current token
 boolean errorRecovery
          This is true when we see an error and before having successfully matched a token.
 boolean failed
          In lieu of a return value, this indicates that a rule or token has failed to match.
 BitSet[] following
          Track the set of token types that can follow any rule invocation.
 int lastErrorIndex
          The index into the input stream where the last error occurred.
 java.util.Map[] ruleMemo
          An array[size num rules] of Map that tracks the stop token index for each rule.
 int syntaxErrors
          Did the recognizer encounter a syntax error? Track how many.
 java.lang.String text
          You can set the text for the current token to override what is in the input char buffer.
 Token token
          The goal of all lexer rules/methods is to create a token object.
 int tokenStartCharIndex
          What character index in the stream did the current token start at? Needed, for example, to get the text for current token.
 int tokenStartCharPositionInLine
          The character position of first character within the line
 int tokenStartLine
          The line on which the first character of the token resides
 int type
          The token type for the current token
 
Constructor Summary
RecognizerSharedState()
           
RecognizerSharedState(RecognizerSharedState state)
           
 
Method Summary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

following

public BitSet[] following
Track the set of token types that can follow any rule invocation. Stack grows upwards. When it hits the max, it grows 2x in size and keeps going.


_fsp

public int _fsp

errorRecovery

public boolean errorRecovery
This is true when we see an error and before having successfully matched a token. Prevents generation of more than one error message per error.


lastErrorIndex

public int lastErrorIndex
The index into the input stream where the last error occurred. This is used to prevent infinite loops where an error is found but no token is consumed during recovery...another error is found, ad naseum. This is a failsafe mechanism to guarantee that at least one token/tree node is consumed for two errors.


failed

public boolean failed
In lieu of a return value, this indicates that a rule or token has failed to match. Reset to false upon valid token match.


syntaxErrors

public int syntaxErrors
Did the recognizer encounter a syntax error? Track how many.


backtracking

public int backtracking
If 0, no backtracking is going on. Safe to exec actions etc... If >0 then it's the level of backtracking.


ruleMemo

public java.util.Map[] ruleMemo
An array[size num rules] of Map that tracks the stop token index for each rule. ruleMemo[ruleIndex] is the memoization table for ruleIndex. For key ruleStartIndex, you get back the stop token for associated rule or MEMO_RULE_FAILED. This is only used if rule memoization is on (which it is by default).


token

public Token token
The goal of all lexer rules/methods is to create a token object. This is an instance variable as multiple rules may collaborate to create a single token. nextToken will return this object after matching lexer rule(s). If you subclass to allow multiple token emissions, then set this to the last token to be matched or something nonnull so that the auto token emit mechanism will not emit another token.


tokenStartCharIndex

public int tokenStartCharIndex
What character index in the stream did the current token start at? Needed, for example, to get the text for current token. Set at the start of nextToken.


tokenStartLine

public int tokenStartLine
The line on which the first character of the token resides


tokenStartCharPositionInLine

public int tokenStartCharPositionInLine
The character position of first character within the line


channel

public int channel
The channel number for the current token


type

public int type
The token type for the current token


text

public java.lang.String text
You can set the text for the current token to override what is in the input char buffer. Use setText() or can set this instance var.

Constructor Detail

RecognizerSharedState

public RecognizerSharedState()

RecognizerSharedState

public RecognizerSharedState(RecognizerSharedState state)


Copyright © 2011. All Rights Reserved.