public class ProxyErrorListener extends Object implements ANTLRErrorListener
ANTLRErrorListener
dispatches all calls to a
collection of delegate listeners. This reduces the effort required to support multiple
listeners.Constructor and Description |
---|
ProxyErrorListener(Collection<? extends ANTLRErrorListener> delegates) |
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,
ATNConfigSet configs)
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,
ATNConfigSet configs)
This method is called by the parser when a full-context prediction has a
unique result.
|
void |
syntaxError(Recognizer<?,?> recognizer,
Object offendingSymbol,
int line,
int charPositionInLine,
String msg,
RecognitionException e)
Upon syntax error, notify any interested parties.
|
public ProxyErrorListener(Collection<? extends ANTLRErrorListener> delegates)
public void syntaxError(@NotNull Recognizer<?,?> recognizer, @Nullable Object offendingSymbol, int line, int charPositionInLine, @NotNull String msg, @Nullable RecognitionException e)
ANTLRErrorListener
ANTLRErrorStrategy
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
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)
ANTLRErrorListener
When exact
is true
, all of the alternatives in
ambigAlts
are viable, i.e. this is reporting an exact ambiguity.
When exact
is false
, at least two of the
alternatives in ambigAlts
are viable for the current input, but
the prediction algorithm terminated as soon as it determined that at
least the minimum alternative in ambigAlts
is 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
.
This method is not used by lexers.
reportAmbiguity
in interface ANTLRErrorListener
recognizer
- the parser instancedfa
- the DFA for the current decisionstartIndex
- the input index where the decision startedstopIndex
- the input input where the ambiguity is reportedexact
- 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 alternativesconfigs
- the ATN configuration set where the ambiguity was
determinedpublic void reportAttemptingFullContext(@NotNull Parser recognizer, @NotNull DFA dfa, int startIndex, int stopIndex, @Nullable BitSet conflictingAlts, @NotNull ATNConfigSet configs)
ANTLRErrorListener
If 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
.
This method is not used by lexers.
reportAttemptingFullContext
in interface ANTLRErrorListener
recognizer
- 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
.configs
- the ATN configuration set where the SLL conflict was
detectedpublic void reportContextSensitivity(@NotNull Parser recognizer, @NotNull DFA dfa, int startIndex, int stopIndex, int prediction, @NotNull ATNConfigSet configs)
ANTLRErrorListener
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.
This method is not used by lexers.
reportContextSensitivity
in interface ANTLRErrorListener
recognizer
- 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 predictionconfigs
- the ATN configuration set where the unambiguous prediction
was determinedCopyright © 1992–2014 ANTLR. All rights reserved.