public class BaseErrorListener extends Object implements ParserErrorListener
ANTLRErrorListener. The
default implementation of each method does nothing, but can be overridden as
necessary.| Constructor and Description |
|---|
BaseErrorListener() |
| Modifier and Type | Method and Description |
|---|---|
void |
reportAmbiguity(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
BitSet ambigAlts,
ATNConfigSet configs)
This method is called by the parser when a full-context prediction
results in an ambiguity.
|
void |
reportAttemptingFullContext(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
BitSet conflictingAlts,
SimulatorState conflictState)
This method is called when an SLL conflict occurs and the parser is about
to use the full context information to make an LL decision.
|
void |
reportContextSensitivity(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
int prediction,
SimulatorState acceptState)
This method is called by the parser when a full-context prediction has a
unique result.
|
<T extends Token> |
syntaxError(Recognizer<T,?> recognizer,
T offendingSymbol,
int line,
int charPositionInLine,
String msg,
RecognitionException e)
Upon syntax error, notify any interested parties.
|
public <T extends Token> void syntaxError(@NotNull Recognizer<T,?> recognizer, @Nullable T offendingSymbol, int line, int charPositionInLine, @NotNull String msg, @Nullable RecognitionException e)
ANTLRErrorListenerANTLRErrorStrategy
specifies how to recover from syntax errors and how to compute error
messages. This listener's job is simply to emit a computed message,
though it has enough information to create its own message in many cases.
The RecognitionException is non-null for all syntax errors except
when we discover mismatched token errors that we can recover from
in-line, without returning from the surrounding rule (via the single
token insertion and deletion mechanism).
syntaxError in interface ANTLRErrorListener<Token>recognizer - What parser got the error. From this
object, you can access the context as well
as the input stream.offendingSymbol - The offending token in the input token
stream, unless recognizer is a lexer (then it's null). If
no viable alternative error, e has token at which we
started production for the decision.line - The line number in the input where the error occurred.charPositionInLine - The character position within that line where the error occurred.msg - The message to emit.e - The exception generated by the parser that led to
the reporting of an error. It is null in the case where
the parser was able to recover in line without exiting the
surrounding rule.public void reportAmbiguity(@NotNull
Parser recognizer,
@NotNull
DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
@Nullable
BitSet ambigAlts,
@NotNull
ATNConfigSet configs)
ParserErrorListenerEach full-context prediction which does not result in a syntax error
will call either ParserErrorListener.reportContextSensitivity(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.dfa.DFA, int, int, int, org.antlr.v4.runtime.atn.SimulatorState) or
ParserErrorListener.reportAmbiguity(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.dfa.DFA, int, int, boolean, java.util.BitSet, org.antlr.v4.runtime.atn.ATNConfigSet).
When ambigAlts is not null, it contains the set of potentially
viable alternatives identified by the prediction algorithm. When
ambigAlts is null, use
ATNConfigSet.getRepresentedAlternatives() to obtain the represented
alternatives from the configs argument.
When exact is true, all of the potentially
viable alternatives are truly viable, i.e. this is reporting an exact
ambiguity. When exact is false, at least two of
the potentially viable alternatives are viable for the current input, but
the prediction algorithm terminated as soon as it determined that at
least the minimum potentially viable alternative is truly
viable.
When the PredictionMode.LL_EXACT_AMBIG_DETECTION prediction
mode is used, the parser is required to identify exact ambiguities so
exact will always be true.
reportAmbiguity in interface ParserErrorListenerrecognizer - the parser instancedfa - the DFA for the current decisionstartIndex - the input index where the decision startedstopIndex - the input input where the ambiguity was identifiedexact - true if the ambiguity is exactly known, otherwise
false. This is always true when
PredictionMode.LL_EXACT_AMBIG_DETECTION is used.ambigAlts - the potentially ambiguous alternatives, or null
to indicate that the potentially ambiguous alternatives are the complete
set of represented alternatives in configsconfigs - the ATN configuration set where the ambiguity was
identifiedpublic void reportAttemptingFullContext(@NotNull
Parser recognizer,
@NotNull
DFA dfa,
int startIndex,
int stopIndex,
@Nullable
BitSet conflictingAlts,
@NotNull
SimulatorState conflictState)
ParserErrorListenerIf one or more configurations in configs contains a semantic
predicate, the predicates are evaluated before this method is called. The
subset of alternatives which are still viable after predicates are
evaluated is reported in conflictingAlts.
reportAttemptingFullContext in interface ParserErrorListenerrecognizer - the parser instancedfa - the DFA for the current decisionstartIndex - the input index where the decision startedstopIndex - the input index where the SLL conflict occurredconflictingAlts - The specific conflicting alternatives. If this is
null, the conflicting alternatives are all alternatives
represented in configs.conflictState - the simulator state when the SLL conflict was
detectedpublic void reportContextSensitivity(@NotNull
Parser recognizer,
@NotNull
DFA dfa,
int startIndex,
int stopIndex,
int prediction,
@NotNull
SimulatorState acceptState)
ParserErrorListenerEach full-context prediction which does not result in a syntax error
will call either ParserErrorListener.reportContextSensitivity(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.dfa.DFA, int, int, int, org.antlr.v4.runtime.atn.SimulatorState) or
ParserErrorListener.reportAmbiguity(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.dfa.DFA, int, int, boolean, java.util.BitSet, org.antlr.v4.runtime.atn.ATNConfigSet).
For prediction implementations that only evaluate full-context
predictions when an SLL conflict is found (including the default
ParserATNSimulator implementation), this method reports cases
where SLL conflicts were resolved to unique full-context predictions,
i.e. the decision was context-sensitive. This report does not necessarily
indicate a problem, and it may appear even in completely unambiguous
grammars.
configs may have more than one represented alternative if the
full-context prediction algorithm does not evaluate predicates before
beginning the full-context prediction. In all cases, the final prediction
is passed as the prediction argument.
Note that the definition of "context sensitivity" in this method
differs from the concept in DecisionInfo.contextSensitivities.
This method reports all instances where an SLL conflict occurred but LL
parsing produced a unique result, whether or not that unique result
matches the minimum alternative in the SLL conflicting set.
reportContextSensitivity in interface ParserErrorListenerrecognizer - the parser instancedfa - the DFA for the current decisionstartIndex - the input index where the decision startedstopIndex - the input index where the context sensitivity was
finally determinedprediction - the unambiguous result of the full-context predictionacceptState - the simulator state when the unambiguous prediction
was determinedCopyright © 1992–2024 Daniel Sun. All rights reserved.