public abstract class Parser extends Recognizer<Token,ParserATNSimulator>
Modifier and Type | Class and Description |
---|---|
class |
Parser.TraceListener |
static class |
Parser.TrimToSizeListener |
Modifier and Type | Field and Description |
---|---|
protected boolean |
_buildParseTrees
Specifies whether or not the parser should construct a parse tree during
the parsing process.
|
protected ParserRuleContext |
_ctx
The
ParserRuleContext object for the currently executing rule. |
protected ANTLRErrorStrategy |
_errHandler
The error handling strategy for the parser.
|
protected TokenStream |
_input
The input stream.
|
protected List<ParseTreeListener> |
_parseListeners
The list of
ParseTreeListener listeners registered to receive
events during the parse. |
protected IntegerStack |
_precedenceStack |
protected int |
_syntaxErrors
The number of syntax errors reported during parsing.
|
protected boolean |
matchedEOF
Indicates parser has match()ed EOF token.
|
_interp, EOF
Constructor and Description |
---|
Parser(TokenStream input) |
Modifier and Type | Method and Description |
---|---|
protected void |
addContextToParseTree() |
void |
addParseListener(ParseTreeListener listener)
Registers
listener to receive events during the parsing process. |
ParseTreePattern |
compileParseTreePattern(String pattern,
int patternRuleIndex)
The preferred method of getting a tree pattern.
|
ParseTreePattern |
compileParseTreePattern(String pattern,
int patternRuleIndex,
Lexer lexer)
The same as
compileParseTreePattern(String, int) but specify a
Lexer rather than trying to deduce it from this parser. |
Token |
consume()
Consume and return the current symbol.
|
void |
dumpDFA()
For debugging and other purposes.
|
void |
enterOuterAlt(ParserRuleContext localctx,
int altNum) |
void |
enterRecursionRule(ParserRuleContext localctx,
int ruleIndex)
Deprecated.
Use
enterRecursionRule(ParserRuleContext, int, int, int) instead. |
void |
enterRecursionRule(ParserRuleContext localctx,
int state,
int ruleIndex,
int precedence) |
void |
enterRule(ParserRuleContext localctx,
int state,
int ruleIndex)
Always called by generated parsers upon entry to a rule.
|
void |
exitRule() |
ATN |
getATNWithBypassAlts()
The ATN with bypass alternatives is expensive to create so we create it
lazily.
|
boolean |
getBuildParseTree()
Gets whether or not a complete parse tree will be constructed while
parsing.
|
ParserRuleContext |
getContext() |
Token |
getCurrentToken()
Match needs to return the current input symbol, which gets put
into the label for the associated token ref; e.g., x=ID.
|
List<String> |
getDFAStrings()
For debugging and other purposes.
|
ANTLRErrorStrategy |
getErrorHandler() |
IntervalSet |
getExpectedTokens()
Computes the set of input symbols which could follow the current parser
state and context, as given by
Recognizer.getState() and getContext() ,
respectively. |
IntervalSet |
getExpectedTokensWithinCurrentRule() |
TokenStream |
getInputStream() |
ParserRuleContext |
getInvokingContext(int ruleIndex) |
int |
getNumberOfSyntaxErrors()
Gets the number of syntax errors reported during parsing.
|
ParseInfo |
getParseInfo()
If profiling during the parse/lex, this will return DecisionInfo records
for each decision in recognizer in a ParseInfo object.
|
List<ParseTreeListener> |
getParseListeners() |
int |
getPrecedence()
Get the precedence level for the top-most precedence rule.
|
ParserRuleContext |
getRuleContext() |
int |
getRuleIndex(String ruleName)
Get a rule's index (i.e.,
RULE_ruleName field) or -1 if not found. |
List<String> |
getRuleInvocationStack()
Return List<String> of the rule names in your parser instance
leading up to a call to the current rule.
|
List<String> |
getRuleInvocationStack(RuleContext p) |
String |
getSourceName() |
TokenFactory<?> |
getTokenFactory() |
TokenStream |
getTokenStream() |
boolean |
getTrimParseTree() |
boolean |
inContext(String context) |
boolean |
isExpectedToken(int symbol)
Checks whether or not
symbol can follow the current state in the
ATN. |
boolean |
isMatchedEOF() |
boolean |
isTrace()
Gets whether a
Parser.TraceListener is registered as a parse listener
for the parser. |
Token |
match(int ttype)
Match current input symbol against
ttype . |
Token |
matchWildcard()
Match current input symbol as a wildcard.
|
void |
notifyErrorListeners(String msg) |
void |
notifyErrorListeners(Token offendingToken,
String msg,
RecognitionException e) |
boolean |
precpred(RuleContext localctx,
int precedence) |
void |
pushNewRecursionContext(ParserRuleContext localctx,
int state,
int ruleIndex)
Like
enterRule(org.antlr.v4.runtime.ParserRuleContext, int, int) but for recursive rules. |
void |
removeParseListener(ParseTreeListener listener)
Remove
listener from the list of parse listeners. |
void |
removeParseListeners()
Remove all parse listeners.
|
void |
reset()
reset the parser's state
|
void |
setBuildParseTree(boolean buildParseTrees)
Track the
ParserRuleContext objects during the parse and hook
them up using the ParserRuleContext.children list so that it
forms a parse tree. |
void |
setContext(ParserRuleContext ctx) |
void |
setErrorHandler(ANTLRErrorStrategy handler) |
void |
setInputStream(IntStream input) |
void |
setProfile(boolean profile) |
void |
setTokenFactory(TokenFactory<?> factory)
Tell our token source and error strategy about a new way to create tokens.
|
void |
setTokenStream(TokenStream input)
Set the token stream and reset the parser.
|
void |
setTrace(boolean trace)
During a parse is sometimes useful to listen in on the rule entry and exit
events as well as token matches.
|
void |
setTrimParseTree(boolean trimParseTrees)
Trim the internal lists of the parse tree during parsing to conserve memory.
|
protected void |
triggerEnterRuleEvent()
Notify any parse listeners of an enter rule event.
|
protected void |
triggerExitRuleEvent()
Notify any parse listeners of an exit rule event.
|
void |
unrollRecursionContexts(ParserRuleContext _parentctx) |
action, addErrorListener, getATN, getErrorHeader, getErrorListenerDispatch, getErrorListeners, getGrammarFileName, getInterpreter, getRuleIndexMap, getRuleNames, getSerializedATN, getState, getTokenErrorDisplay, getTokenNames, getTokenType, getTokenTypeMap, getVocabulary, removeErrorListener, removeErrorListeners, sempred, setInterpreter, setState
protected ANTLRErrorStrategy _errHandler
DefaultErrorStrategy
.protected TokenStream _input
protected final IntegerStack _precedenceStack
protected ParserRuleContext _ctx
ParserRuleContext
object for the currently executing rule.
This is always non-null during the parsing process.protected boolean _buildParseTrees
true
.protected List<ParseTreeListener> _parseListeners
ParseTreeListener
listeners registered to receive
events during the parse.protected int _syntaxErrors
notifyErrorListeners(java.lang.String)
is called.protected boolean matchedEOF
exitRule()
.public Parser(TokenStream input)
public void reset()
public Token match(int ttype) throws RecognitionException
ttype
. If the symbol type
matches, ANTLRErrorStrategy.reportMatch(org.antlr.v4.runtime.Parser)
and consume()
are
called to complete the match process.
If the symbol type does not match,
ANTLRErrorStrategy.recoverInline(org.antlr.v4.runtime.Parser)
is called on the current error
strategy to attempt recovery. If getBuildParseTree()
is
true
and the token index of the symbol returned by
ANTLRErrorStrategy.recoverInline(org.antlr.v4.runtime.Parser)
is -1, the symbol is added to
the parse tree by calling ParserRuleContext.addErrorNode(org.antlr.v4.runtime.Token)
.
ttype
- the token type to matchRecognitionException
- if the current input symbol did not match
ttype
and the error strategy could not recover from the
mismatched symbolpublic Token matchWildcard() throws RecognitionException
ANTLRErrorStrategy.reportMatch(org.antlr.v4.runtime.Parser)
and consume()
are called to complete the match process.
If the symbol type does not match,
ANTLRErrorStrategy.recoverInline(org.antlr.v4.runtime.Parser)
is called on the current error
strategy to attempt recovery. If getBuildParseTree()
is
true
and the token index of the symbol returned by
ANTLRErrorStrategy.recoverInline(org.antlr.v4.runtime.Parser)
is -1, the symbol is added to
the parse tree by calling ParserRuleContext.addErrorNode(org.antlr.v4.runtime.Token)
.
RecognitionException
- if the current input symbol did not match
a wildcard and the error strategy could not recover from the mismatched
symbolpublic void setBuildParseTree(boolean buildParseTrees)
ParserRuleContext
objects during the parse and hook
them up using the ParserRuleContext.children
list so that it
forms a parse tree. The ParserRuleContext
returned from the start
rule represents the root of the parse tree.
Note that if we are not building parse trees, rule contexts only point upwards. When a rule exits, it returns the context but that gets garbage collected if nobody holds a reference. It points upwards but nobody points at it.
When we build parse trees, we are adding all of these contexts to
ParserRuleContext.children
list. Contexts are then not candidates
for garbage collection.
public boolean getBuildParseTree()
true
for a newly constructed parser.true
if a complete parse tree will be constructed while
parsing, otherwise false
public void setTrimParseTree(boolean trimParseTrees)
false
by default for a newly constructed parser.trimParseTrees
- true
to trim the capacity of the ParserRuleContext.children
list to its size after a rule is parsed.public boolean getTrimParseTree()
true
if the ParserRuleContext.children
list is trimmed
using the default Parser.TrimToSizeListener
during the parse process.public List<ParseTreeListener> getParseListeners()
public void addParseListener(ParseTreeListener listener)
listener
to receive events during the parsing process.
To support output-preserving grammar transformations (including but not
limited to left-recursion removal, automated left-factoring, and
optimized code generation), calls to listener methods during the parse
may differ substantially from calls made by
ParseTreeWalker.DEFAULT
used after the parse is complete. In
particular, rule entry and exit events may occur in a different order
during the parse than after the parser. In addition, calls to certain
rule entry methods may be omitted.
With the following specific exceptions, calls to listener events are deterministic, i.e. for identical input the calls to listener methods will be the same.
listener
- the listener to addNullPointerException
- if
listener is null
public void removeParseListener(ParseTreeListener listener)
listener
from the list of parse listeners.
If listener
is null
or has not been added as a parse
listener, this method does nothing.
listener
- the listener to removeaddParseListener(org.antlr.v4.runtime.tree.ParseTreeListener)
public void removeParseListeners()
protected void triggerEnterRuleEvent()
protected void triggerExitRuleEvent()
public int getNumberOfSyntaxErrors()
notifyErrorListeners(java.lang.String)
is called.public TokenFactory<?> getTokenFactory()
getTokenFactory
in class Recognizer<Token,ParserATNSimulator>
public void setTokenFactory(TokenFactory<?> factory)
setTokenFactory
in class Recognizer<Token,ParserATNSimulator>
public ATN getATNWithBypassAlts()
UnsupportedOperationException
- if the current parser does not
implement the Recognizer.getSerializedATN()
method.public ParseTreePattern compileParseTreePattern(String pattern, int patternRuleIndex)
ParseTree t = parser.expr(); ParseTreePattern p = parser.compileParseTreePattern("<ID>+0", MyParser.RULE_expr); ParseTreeMatch m = p.match(t); String id = m.get("ID");
public ParseTreePattern compileParseTreePattern(String pattern, int patternRuleIndex, Lexer lexer)
compileParseTreePattern(String, int)
but specify a
Lexer
rather than trying to deduce it from this parser.public ANTLRErrorStrategy getErrorHandler()
public void setErrorHandler(ANTLRErrorStrategy handler)
public TokenStream getInputStream()
getInputStream
in class Recognizer<Token,ParserATNSimulator>
public final void setInputStream(IntStream input)
setInputStream
in class Recognizer<Token,ParserATNSimulator>
public TokenStream getTokenStream()
public void setTokenStream(TokenStream input)
public Token getCurrentToken()
public final void notifyErrorListeners(String msg)
public void notifyErrorListeners(Token offendingToken, String msg, RecognitionException e)
public Token consume()
E.g., given the following input with A
being the current
lookahead symbol, this function moves the cursor to B
and returns
A
.
A B ^If the parser is not in error recovery mode, the consumed symbol is added to the parse tree using
ParserRuleContext.addChild(Token)
, and
ParseTreeListener.visitTerminal(org.antlr.v4.runtime.tree.TerminalNode)
is called on any parse listeners.
If the parser is in error recovery mode, the consumed symbol is
added to the parse tree using
ParserRuleContext.addErrorNode(Token)
, and
ParseTreeListener.visitErrorNode(org.antlr.v4.runtime.tree.ErrorNode)
is called on any parse
listeners.protected void addContextToParseTree()
public void enterRule(ParserRuleContext localctx, int state, int ruleIndex)
_ctx
get the current context.public void exitRule()
public void enterOuterAlt(ParserRuleContext localctx, int altNum)
public final int getPrecedence()
@Deprecated public void enterRecursionRule(ParserRuleContext localctx, int ruleIndex)
enterRecursionRule(ParserRuleContext, int, int, int)
instead.public void enterRecursionRule(ParserRuleContext localctx, int state, int ruleIndex, int precedence)
public void pushNewRecursionContext(ParserRuleContext localctx, int state, int ruleIndex)
enterRule(org.antlr.v4.runtime.ParserRuleContext, int, int)
but for recursive rules.
Make the current context the child of the incoming localctx.public void unrollRecursionContexts(ParserRuleContext _parentctx)
public ParserRuleContext getInvokingContext(int ruleIndex)
public ParserRuleContext getContext()
public void setContext(ParserRuleContext ctx)
public boolean precpred(RuleContext localctx, int precedence)
precpred
in class Recognizer<Token,ParserATNSimulator>
public boolean inContext(String context)
public boolean isExpectedToken(int symbol)
symbol
can follow the current state in the
ATN. The behavior of this method is equivalent to the following, but is
implemented such that the complete context-sensitive follow set does not
need to be explicitly constructed.
return getExpectedTokens().contains(symbol);
symbol
- the symbol type to checktrue
if symbol
can follow the current state in
the ATN, otherwise false
.public boolean isMatchedEOF()
public IntervalSet getExpectedTokens()
Recognizer.getState()
and getContext()
,
respectively.public IntervalSet getExpectedTokensWithinCurrentRule()
public int getRuleIndex(String ruleName)
RULE_ruleName
field) or -1 if not found.public ParserRuleContext getRuleContext()
public List<String> getRuleInvocationStack()
public List<String> getRuleInvocationStack(RuleContext p)
public void dumpDFA()
public String getSourceName()
public ParseInfo getParseInfo()
Recognizer
getParseInfo
in class Recognizer<Token,ParserATNSimulator>
public void setProfile(boolean profile)
public void setTrace(boolean trace)
public boolean isTrace()
Parser.TraceListener
is registered as a parse listener
for the parser.setTrace(boolean)
Copyright © 1992-2016 ANTLR. All Rights Reserved.