Top Description Fields Constructors Methods
org.antlr.runtime

public abstract Class Lexer

extends BaseRecognizer
implements TokenSource
Class Inheritance
All Implemented Interfaces
org.antlr.runtime.TokenSource

A lexer is recognizer that draws input symbols from a character stream. lexer grammars result in a subclass of this object. A Lexer object uses simplified match() and error recovery mechanisms in the interest of speed.

Field Summary

Modifier and TypeField and Description
protected CharStream
input

Where is the lexer drawing characters from?

Inherited from org.antlr.runtime.BaseRecognizer:
DEFAULT_TOKEN_CHANNELHIDDENINITIAL_FOLLOW_STACK_SIZEMEMO_RULE_FAILEDMEMO_RULE_UNKNOWNNEXT_TOKEN_RULE_NAMEstate

Constructor Summary

AccessConstructor and Description
public
public
public

Method Summary

Modifier and TypeMethod and Description
public void
emit(Token token)

Currently does not support multiple emits per nextToken invocation for efficiency reasons.

public Token
emit()

The standard method called to automatically emit a token at the outermost lexical rule.

public String
public int
getCharIndex()

What is the index of the current character of lookahead?

public int
public CharStream
public Token
getEOFToken()

Returns the EOF token (default), if you need to return a custom token instead override this method.

public String
getErrorMessage(RecognitionException e, String[] tokenNames)

Overrides org.antlr.runtime.BaseRecognizer.getErrorMessage.

What error message should be generated for the various exception types?
public int
public String
getSourceName()

Implements abstract org.antlr.runtime.BaseRecognizer.getSourceName.

Implements org.antlr.runtime.TokenSource.getSourceName.

Where are you getting tokens from?
public String
getText()

Return the text matched so far for the current token or any text override.

public void
public void
match(int c)

public void
public void
matchRange(int a, int b)

public abstract void
mTokens()

This is the lexer entry point that sets instance var 'token'

public Token
nextToken()

Implements org.antlr.runtime.TokenSource.nextToken.

Return a token from this source; i.e., match a token on the char stream.
public void
recover(RecognitionException re)

Lexers can normally match any char in it's vocabulary after matching a token, so do the easy thing and just kill a character and hope it all works out.

public void
public void
reset()

Overrides org.antlr.runtime.BaseRecognizer.reset.

reset the parser's state; subclasses must rewinds the input stream
public void
setCharStream(CharStream input)

Set the char stream and reset the lexer

public void
setText(String text)

Set the complete text of this token; it wipes any previous changes to the text.

public void
skip()

Instruct the lexer to skip creating a token for current lexer rule and look for another token.

public void
traceIn(String ruleName, int ruleIndex)

public void
traceOut(String ruleName, int ruleIndex)

Inherited from org.antlr.runtime.BaseRecognizer:
alreadyParsedRulebeginResynccombineFollowscomputeContextSensitiveRuleFOLLOWcomputeErrorRecoverySetconsumeUntilconsumeUntildisplayRecognitionErroremitErrorMessageendResyncfailedgetBacktrackingLevelgetCurrentInputSymbolgetErrorHeadergetGrammarFileNamegetMissingSymbolgetNumberOfSyntaxErrorsgetRuleInvocationStackgetRuleInvocationStackgetRuleMemoizationgetRuleMemoizationCacheSizegetTokenErrorDisplaygetTokenNamesmatchmatchAnymemoizemismatchIsMissingTokenmismatchIsUnwantedTokenpushFollowrecoverrecoverFromMismatchedSetrecoverFromMismatchedTokensetBacktrackingLeveltoStringstraceIntraceOut

Field Detail

inputback to summary
protected CharStream input

Where is the lexer drawing characters from?

Constructor Detail

Lexerback to summary
public Lexer()
Lexerback to summary
public Lexer(CharStream input)
Lexerback to summary
public Lexer(CharStream input, RecognizerSharedState state)

Method Detail

emitback to summary
public void emit(Token token)

Currently does not support multiple emits per nextToken invocation for efficiency reasons. Subclass and override this method and nextToken (to push tokens into a list and pull from that list rather than a single variable as this implementation does).

emitback to summary
public Token emit()

The standard method called to automatically emit a token at the outermost lexical rule. The token object should point into the char buffer start..stop. If there is a text override in 'text', use that to set the token's text. Override this method to emit custom Token objects. If you are building trees, then you should also override Parser or TreeParser.getMissingSymbol().

getCharErrorDisplayback to summary
public String getCharErrorDisplay(int c)
getCharIndexback to summary
public int getCharIndex()

What is the index of the current character of lookahead?

getCharPositionInLineback to summary
public int getCharPositionInLine()
getCharStreamback to summary
public CharStream getCharStream()
getEOFTokenback to summary
public Token getEOFToken()

Returns the EOF token (default), if you need to return a custom token instead override this method.

getErrorMessageback to summary
public String getErrorMessage(RecognitionException e, String[] tokenNames)

Overrides org.antlr.runtime.BaseRecognizer.getErrorMessage.

Doc from org.antlr.runtime.BaseRecognizer.getErrorMessage.

What error message should be generated for the various exception types? Not very object-oriented code, but I like having all error message generation within one method rather than spread among all of the exception classes. This also makes it much easier for the exception handling because the exception classes do not have to have pointers back to this object to access utility routines and so on. Also, changing the message for an exception type would be difficult because you would have to subclassing exception, but then somehow get ANTLR to make those kinds of exception objects instead of the default. This looks weird, but trust me--it makes the most sense in terms of flexibility. For grammar debugging, you will want to override this to add more information such as the stack frame with getRuleInvocationStack(e, this.getClass().getName()) and, for no viable alts, the decision description and state etc... Override this to change the message generated for one or more exception types.

Annotations
@Override
getLineback to summary
public int getLine()
getSourceNameback to summary
public String getSourceName()

Implements abstract org.antlr.runtime.BaseRecognizer.getSourceName.

Implements org.antlr.runtime.TokenSource.getSourceName.

Doc from org.antlr.runtime.TokenSource.getSourceName.

Where are you getting tokens from? normally the implication will simply ask lexers input stream.

Annotations
@Override
getTextback to summary
public String getText()

Return the text matched so far for the current token or any text override.

matchback to summary
public void match(String s) throws MismatchedTokenException
matchback to summary
public void match(int c) throws MismatchedTokenException
matchAnyback to summary
public void matchAny()
matchRangeback to summary
public void matchRange(int a, int b) throws MismatchedRangeException
mTokensback to summary
public abstract void mTokens() throws RecognitionException

This is the lexer entry point that sets instance var 'token'

nextTokenback to summary
public Token nextToken()

Implements org.antlr.runtime.TokenSource.nextToken.

Return a token from this source; i.e., match a token on the char stream.

recoverback to summary
public void recover(RecognitionException re)

Lexers can normally match any char in it's vocabulary after matching a token, so do the easy thing and just kill a character and hope it all works out. You can instead use the rule invocation stack to do sophisticated error recovery if you are in a fragment rule.

reportErrorback to summary
public void reportError(RecognitionException e)

Overrides org.antlr.runtime.BaseRecognizer.reportError.

Doc from org.antlr.runtime.BaseRecognizer.reportError.

Report a recognition problem. This method sets errorRecovery to indicate the parser is recovering not parsing. Once in recovery mode, no errors are generated. To get out of recovery mode, the parser must successfully match a token (after a resync). So it will go: 1. error occurs 2. enter recovery mode, report error 3. consume until token found in resynch set 4. try to resume parsing 5. next match() will reset errorRecovery mode If you override, make sure to update syntaxErrors if you care about that.

Annotations
@Override
resetback to summary
public void reset()

Overrides org.antlr.runtime.BaseRecognizer.reset.

Doc from org.antlr.runtime.BaseRecognizer.reset.

reset the parser's state; subclasses must rewinds the input stream

Annotations
@Override
setCharStreamback to summary
public void setCharStream(CharStream input)

Set the char stream and reset the lexer

setTextback to summary
public void setText(String text)

Set the complete text of this token; it wipes any previous changes to the text.

skipback to summary
public void skip()

Instruct the lexer to skip creating a token for current lexer rule and look for another token. nextToken() knows to keep looking when a lexer rule finishes with token set to SKIP_TOKEN. Recall that if token==null at end of any token rule, it creates one for you and emits it.

traceInback to summary
public void traceIn(String ruleName, int ruleIndex)
traceOutback to summary
public void traceOut(String ruleName, int ruleIndex)