Class Parser
- Direct Known Subclasses:
ParserInterpreter
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanSpecifies whether or not the parser should construct a parse tree during the parsing process.protected ParserRuleContextTheParserRuleContextobject for the currently executing rule.protected ANTLRErrorStrategyThe error handling strategy for the parser.protected TokenStreamThe input stream.protected List<ParseTreeListener> The list ofParseTreeListenerlisteners registered to receive events during the parse.protected final IntegerStackprotected intThe number of syntax errors reported during parsing.protected booleanIndicates parser has match()ed EOF token.Fields inherited from class org.graalvm.shadowed.org.antlr.v4.runtime.Recognizer
_interp, EOF -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidvoidaddParseListener(ParseTreeListener listener) Registerslistenerto receive events during the parsing process.compileParseTreePattern(String pattern, int patternRuleIndex) The preferred method of getting a tree pattern.compileParseTreePattern(String pattern, int patternRuleIndex, Lexer lexer) The same ascompileParseTreePattern(String, int)but specify aLexerrather than trying to deduce it from this parser.consume()Consume and return the current symbol.createErrorNode(ParserRuleContext parent, Token t) How to create an error node, given a token, associated with a parent.createTerminalNode(ParserRuleContext parent, Token t) How to create a token leaf node associated with a parent.voiddumpDFA()voiddumpDFA(PrintStream dumpStream) For debugging and other purposes.voidenterOuterAlt(ParserRuleContext localctx, int altNum) voidenterRecursionRule(ParserRuleContext localctx, int ruleIndex) Deprecated.voidenterRecursionRule(ParserRuleContext localctx, int state, int ruleIndex, int precedence) voidenterRule(ParserRuleContext localctx, int state, int ruleIndex) Always called by generated parsers upon entry to a rule.voidexitRule()The ATN with bypass alternatives is expensive to create so we create it lazily.booleanGets whether or not a complete parse tree will be constructed while parsing.Match needs to return the current input symbol, which gets put into the label for the associated token ref; e.g., x=ID.For debugging and other purposes.Computes the set of input symbols which could follow the current parser state and context, as given byRecognizer.getState()andgetContext(), respectively.getInvokingContext(int ruleIndex) intGets the number of syntax errors reported during parsing.If profiling during the parse/lex, this will return DecisionInfo records for each decision in recognizer in a ParseInfo object.final intGet the precedence level for the top-most precedence rule.intgetRuleIndex(String ruleName) Get a rule's index (i.e.,RULE_ruleNamefield) or -1 if not found.Return List<String> of the rule names in your parser instance leading up to a call to the current rule.TokenFactory<?> booleanbooleanbooleanisExpectedToken(int symbol) Checks whether or notsymbolcan follow the current state in the ATN.booleanbooleanisTrace()Gets whether aParser.TraceListeneris registered as a parse listener for the parser.match(int ttype) Match current input symbol againstttype.Match current input symbol as a wildcard.final voidvoidnotifyErrorListeners(Token offendingToken, String msg, RecognitionException e) booleanprecpred(RuleContext localctx, int precedence) voidpushNewRecursionContext(ParserRuleContext localctx, int state, int ruleIndex) LikeenterRule(org.graalvm.shadowed.org.antlr.v4.runtime.ParserRuleContext, int, int)but for recursive rules.voidremoveParseListener(ParseTreeListener listener) Removelistenerfrom the list of parse listeners.voidRemove all parse listeners.voidreset()reset the parser's statevoidsetBuildParseTree(boolean buildParseTrees) Track theParserRuleContextobjects during the parse and hook them up using theParserRuleContext.childrenlist so that it forms a parse tree.voidvoidsetErrorHandler(ANTLRErrorStrategy handler) final voidsetInputStream(IntStream input) voidsetProfile(boolean profile) voidsetTokenFactory(TokenFactory<?> factory) Tell our token source and error strategy about a new way to create tokens.voidsetTokenStream(TokenStream input) Set the token stream and reset the parser.voidsetTrace(boolean trace) During a parse is sometimes useful to listen in on the rule entry and exit events as well as token matches.voidsetTrimParseTree(boolean trimParseTrees) Trim the internal lists of the parse tree during parsing to conserve memory.protected voidNotify any parse listeners of an enter rule event.protected voidNotify any parse listeners of an exit rule event.voidunrollRecursionContexts(ParserRuleContext _parentctx) Methods inherited from class org.graalvm.shadowed.org.antlr.v4.runtime.Recognizer
action, addErrorListener, getATN, getErrorHeader, getErrorListenerDispatch, getErrorListeners, getGrammarFileName, getInterpreter, getRuleIndexMap, getRuleNames, getSerializedATN, getState, getTokenErrorDisplay, getTokenNames, getTokenType, getTokenTypeMap, getVocabulary, removeErrorListener, removeErrorListeners, sempred, setInterpreter, setState
-
Field Details
-
_errHandler
The error handling strategy for the parser. The default value is a new instance ofDefaultErrorStrategy.- See Also:
-
_input
-
_precedenceStack
-
_ctx
TheParserRuleContextobject for the currently executing rule. This is always non-null during the parsing process. -
_buildParseTrees
protected boolean _buildParseTreesSpecifies whether or not the parser should construct a parse tree during the parsing process. The default value istrue.- See Also:
-
_parseListeners
The list ofParseTreeListenerlisteners registered to receive events during the parse.- See Also:
-
_syntaxErrors
protected int _syntaxErrorsThe number of syntax errors reported during parsing. This value is incremented each timenotifyErrorListeners(java.lang.String)is called. -
matchedEOF
protected boolean matchedEOFIndicates parser has match()ed EOF token. SeeexitRule().
-
-
Constructor Details
-
Parser
-
-
Method Details
-
reset
public void reset()reset the parser's state -
match
Match current input symbol againstttype. If the symbol type matches,ANTLRErrorStrategy.reportMatch(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)andconsume()are called to complete the match process.If the symbol type does not match,
ANTLRErrorStrategy.recoverInline(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)is called on the current error strategy to attempt recovery. IfgetBuildParseTree()istrueand the token index of the symbol returned byANTLRErrorStrategy.recoverInline(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)is -1, the symbol is added to the parse tree by callingcreateErrorNode(ParserRuleContext, Token)thenParserRuleContext.addErrorNode(ErrorNode).- Parameters:
ttype- the token type to match- Returns:
- the matched symbol
- Throws:
RecognitionException- if the current input symbol did not matchttypeand the error strategy could not recover from the mismatched symbol
-
matchWildcard
Match current input symbol as a wildcard. If the symbol type matches (i.e. has a value greater than 0),ANTLRErrorStrategy.reportMatch(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)andconsume()are called to complete the match process.If the symbol type does not match,
ANTLRErrorStrategy.recoverInline(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)is called on the current error strategy to attempt recovery. IfgetBuildParseTree()istrueand the token index of the symbol returned byANTLRErrorStrategy.recoverInline(org.graalvm.shadowed.org.antlr.v4.runtime.Parser)is -1, the symbol is added to the parse tree by callingcreateErrorNode(ParserRuleContext, Token). thenParserRuleContext.addErrorNode(ErrorNode)- Returns:
- the matched symbol
- Throws:
RecognitionException- if the current input symbol did not match a wildcard and the error strategy could not recover from the mismatched symbol
-
setBuildParseTree
public void setBuildParseTree(boolean buildParseTrees) Track theParserRuleContextobjects during the parse and hook them up using theParserRuleContext.childrenlist so that it forms a parse tree. TheParserRuleContextreturned 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.childrenlist. Contexts are then not candidates for garbage collection. -
getBuildParseTree
public boolean getBuildParseTree()Gets whether or not a complete parse tree will be constructed while parsing. This property istruefor a newly constructed parser.- Returns:
trueif a complete parse tree will be constructed while parsing, otherwisefalse
-
setTrimParseTree
public void setTrimParseTree(boolean trimParseTrees) Trim the internal lists of the parse tree during parsing to conserve memory. This property is set tofalseby default for a newly constructed parser.- Parameters:
trimParseTrees-trueto trim the capacity of theParserRuleContext.childrenlist to its size after a rule is parsed.
-
getTrimParseTree
public boolean getTrimParseTree()- Returns:
trueif theParserRuleContext.childrenlist is trimmed using the defaultParser.TrimToSizeListenerduring the parse process.
-
getParseListeners
-
addParseListener
Registerslistenerto 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.DEFAULTused 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.
- Alterations to the grammar used to generate code may change the behavior of the listener calls.
- Alterations to the command line options passed to ANTLR 4 when generating the parser may change the behavior of the listener calls.
- Changing the version of the ANTLR Tool used to generate the parser may change the behavior of the listener calls.
- Parameters:
listener- the listener to add- Throws:
NullPointerException- if listener isnull
-
removeParseListener
Removelistenerfrom the list of parse listeners.If
listenerisnullor has not been added as a parse listener, this method does nothing.- Parameters:
listener- the listener to remove- See Also:
-
removeParseListeners
public void removeParseListeners()Remove all parse listeners.- See Also:
-
triggerEnterRuleEvent
protected void triggerEnterRuleEvent()Notify any parse listeners of an enter rule event.- See Also:
-
triggerExitRuleEvent
protected void triggerExitRuleEvent()Notify any parse listeners of an exit rule event.- See Also:
-
getNumberOfSyntaxErrors
public int getNumberOfSyntaxErrors()Gets the number of syntax errors reported during parsing. This value is incremented each timenotifyErrorListeners(java.lang.String)is called.- See Also:
-
getTokenFactory
- Specified by:
getTokenFactoryin classRecognizer<Token,ParserATNSimulator>
-
setTokenFactory
Tell our token source and error strategy about a new way to create tokens.- Specified by:
setTokenFactoryin classRecognizer<Token,ParserATNSimulator>
-
getATNWithBypassAlts
The ATN with bypass alternatives is expensive to create so we create it lazily.- Throws:
UnsupportedOperationException- if the current parser does not implement theRecognizer.getSerializedATN()method.
-
compileParseTreePattern
The preferred method of getting a tree pattern. For example, here's a sample use:ParseTree t = parser.expr(); ParseTreePattern p = parser.compileParseTreePattern("<ID>+0", MyParser.RULE_expr); ParseTreeMatch m = p.match(t); String id = m.get("ID"); -
compileParseTreePattern
The same ascompileParseTreePattern(String, int)but specify aLexerrather than trying to deduce it from this parser. -
getErrorHandler
-
setErrorHandler
-
getInputStream
- Specified by:
getInputStreamin classRecognizer<Token,ParserATNSimulator>
-
setInputStream
- Specified by:
setInputStreamin classRecognizer<Token,ParserATNSimulator>
-
getTokenStream
-
setTokenStream
Set the token stream and reset the parser. -
getCurrentToken
Match needs to return the current input symbol, which gets put into the label for the associated token ref; e.g., x=ID. -
notifyErrorListeners
-
notifyErrorListeners
-
consume
Consume and return the current symbol.E.g., given the following input with
Abeing the current lookahead symbol, this function moves the cursor toBand returnsA.A B ^
If the parser is not in error recovery mode, the consumed symbol is added to the parse tree usingParserRuleContext.addChild(TerminalNode), andParseTreeListener.visitTerminal(org.graalvm.shadowed.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 usingcreateErrorNode(ParserRuleContext, Token)thenParserRuleContext.addErrorNode(ErrorNode)andParseTreeListener.visitErrorNode(org.graalvm.shadowed.org.antlr.v4.runtime.tree.ErrorNode)is called on any parse listeners. -
createTerminalNode
How to create a token leaf node associated with a parent. Typically, the terminal node to create is not a function of the parent.- Since:
- 4.7
-
createErrorNode
How to create an error node, given a token, associated with a parent. Typically, the error node to create is not a function of the parent.- Since:
- 4.7
-
addContextToParseTree
protected void addContextToParseTree() -
enterRule
Always called by generated parsers upon entry to a rule. Access field_ctxget the current context. -
exitRule
public void exitRule() -
enterOuterAlt
-
getPrecedence
public final int getPrecedence()Get the precedence level for the top-most precedence rule.- Returns:
- The precedence level for the top-most precedence rule, or -1 if the parser context is not nested within a precedence rule.
-
enterRecursionRule
Deprecated.UseenterRecursionRule(ParserRuleContext, int, int, int)instead. -
enterRecursionRule
public void enterRecursionRule(ParserRuleContext localctx, int state, int ruleIndex, int precedence) -
pushNewRecursionContext
LikeenterRule(org.graalvm.shadowed.org.antlr.v4.runtime.ParserRuleContext, int, int)but for recursive rules. Make the current context the child of the incoming localctx. -
unrollRecursionContexts
-
getInvokingContext
-
getContext
-
setContext
-
precpred
- Overrides:
precpredin classRecognizer<Token,ParserATNSimulator>
-
inContext
-
isExpectedToken
public boolean isExpectedToken(int symbol) Checks whether or notsymbolcan 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);
- Parameters:
symbol- the symbol type to check- Returns:
trueifsymbolcan follow the current state in the ATN, otherwisefalse.
-
isMatchedEOF
public boolean isMatchedEOF() -
getExpectedTokens
Computes the set of input symbols which could follow the current parser state and context, as given byRecognizer.getState()andgetContext(), respectively.- See Also:
-
getExpectedTokensWithinCurrentRule
-
getRuleIndex
Get a rule's index (i.e.,RULE_ruleNamefield) or -1 if not found. -
getRuleContext
-
getRuleInvocationStack
-
getRuleInvocationStack
-
getDFAStrings
-
dumpDFA
public void dumpDFA() -
dumpDFA
For debugging and other purposes. -
getSourceName
-
getParseInfo
Description copied from class:RecognizerIf profiling during the parse/lex, this will return DecisionInfo records for each decision in recognizer in a ParseInfo object.- Overrides:
getParseInfoin classRecognizer<Token,ParserATNSimulator>
-
setProfile
public void setProfile(boolean profile) - Since:
- 4.3
-
setTrace
public 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. This is for quick and dirty debugging. -
isTrace
public boolean isTrace()Gets whether aParser.TraceListeneris registered as a parse listener for the parser.- See Also:
-
enterRecursionRule(ParserRuleContext, int, int, int)instead.