Class BaseErrorListener

java.lang.Object
org.antlr.v4.runtime.BaseErrorListener
All Implemented Interfaces:
ANTLRErrorListener<Token>, ParserErrorListener
Direct Known Subclasses:
DiagnosticErrorListener

public class BaseErrorListener extends Object implements ParserErrorListener
Provides an empty default implementation of ANTLRErrorListener. The default implementation of each method does nothing, but can be overridden as necessary.
  • Constructor Details

    • BaseErrorListener

      public BaseErrorListener()
  • Method Details

    • syntaxError

      public <T extends Token> void syntaxError(@NotNull Recognizer<T,?> recognizer, @Nullable T offendingSymbol, int line, int charPositionInLine, @NotNull String msg, @Nullable RecognitionException e)
      Description copied from interface: ANTLRErrorListener
      Upon syntax error, notify any interested parties. This is not how to recover from errors or compute error messages. 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).

      Specified by:
      syntaxError in interface ANTLRErrorListener<Token>
      Parameters:
      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.
    • reportAmbiguity

      public void reportAmbiguity(@NotNull Parser recognizer, @NotNull DFA dfa, int startIndex, int stopIndex, boolean exact, @Nullable BitSet ambigAlts, @NotNull ATNConfigSet configs)
      Description copied from interface: ParserErrorListener
      This method is called by the parser when a full-context prediction results in an ambiguity.

      Each 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.

      Specified by:
      reportAmbiguity in interface ParserErrorListener
      Parameters:
      recognizer - the parser instance
      dfa - the DFA for the current decision
      startIndex - the input index where the decision started
      stopIndex - the input input where the ambiguity was identified
      exact - 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 configs
      configs - the ATN configuration set where the ambiguity was identified
    • reportAttemptingFullContext

      public void reportAttemptingFullContext(@NotNull Parser recognizer, @NotNull DFA dfa, int startIndex, int stopIndex, @Nullable BitSet conflictingAlts, @NotNull SimulatorState conflictState)
      Description copied from interface: ParserErrorListener
      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.

      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.

      Specified by:
      reportAttemptingFullContext in interface ParserErrorListener
      Parameters:
      recognizer - the parser instance
      dfa - the DFA for the current decision
      startIndex - the input index where the decision started
      stopIndex - the input index where the SLL conflict occurred
      conflictingAlts - 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 detected
    • reportContextSensitivity

      public void reportContextSensitivity(@NotNull Parser recognizer, @NotNull DFA dfa, int startIndex, int stopIndex, int prediction, @NotNull SimulatorState acceptState)
      Description copied from interface: ParserErrorListener
      This method is called by the parser when a full-context prediction has a unique result.

      Each 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.

      Specified by:
      reportContextSensitivity in interface ParserErrorListener
      Parameters:
      recognizer - the parser instance
      dfa - the DFA for the current decision
      startIndex - the input index where the decision started
      stopIndex - the input index where the context sensitivity was finally determined
      prediction - the unambiguous result of the full-context prediction
      acceptState - the simulator state when the unambiguous prediction was determined