Class DescriptiveErrorStrategy

java.lang.Object
org.antlr.v4.runtime.DefaultErrorStrategy
org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy
All Implemented Interfaces:
org.antlr.v4.runtime.ANTLRErrorStrategy

public class DescriptiveErrorStrategy extends org.antlr.v4.runtime.DefaultErrorStrategy
Fail-fast parser error strategy with friendly diagnostics (default Parrot mode).

Cancels the parse with ParseCancellationException after reporting, matching BailErrorStrategy. sync(org.antlr.v4.runtime.Parser) is a no-op so the SLL stage of two-stage parsing stays cheap. Diagnostics are emitted from recover(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.RecognitionException): after a failed SLL probe the strategy may still be in ANTLR's internal recovery mode, which suppresses DefaultErrorStrategy.reportError(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.RecognitionException), while recover still runs under LL.

For IDE multi-error collection use create(CharStream, boolean) with recover == true, which selects RecoveringDescriptiveErrorStrategy. Hosts should treat ErrorCollector as the multi-error source of truth: recovery may still produce a partial tree that fails later during AST building.

See Also:
  • Field Summary

    Fields inherited from class org.antlr.v4.runtime.DefaultErrorStrategy

    errorRecoveryMode, lastErrorIndex, lastErrorStates, nextTokensContext, nextTokensState
  • Constructor Summary

    Constructors
    Constructor
    Description
    DescriptiveErrorStrategy(org.antlr.v4.runtime.CharStream charStream)
    Fail-fast strategy with friendly diagnostics.
  • Method Summary

    Modifier and Type
    Method
    Description
    static org.antlr.v4.runtime.ANTLRErrorStrategy
    create(org.antlr.v4.runtime.CharStream charStream, boolean recover)
    Select fail-fast or recovering strategy.
    protected String
    createFailedPredicateErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.FailedPredicateException e)
    Format a failed-predicate diagnostic.
    protected String
    createInputMismatchErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.InputMismatchException e)
     
    protected String
    createNoViableAlternativeErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.NoViableAltException e)
     
    void
    recover(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.RecognitionException e)
    org.antlr.v4.runtime.Token
    recoverInline(org.antlr.v4.runtime.Parser recognizer)
    protected void
    reportFailedPredicate(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.FailedPredicateException e)
     
    protected void
    reportInputMismatch(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.InputMismatchException e)
     
    protected void
    reportNoViableAlternative(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.NoViableAltException e)
     
    void
    sync(org.antlr.v4.runtime.Parser recognizer)

    Methods inherited from class org.antlr.v4.runtime.DefaultErrorStrategy

    beginErrorCondition, constructToken, consumeUntil, endErrorCondition, escapeWSAndQuote, getErrorRecoverySet, getExpectedTokens, getMissingSymbol, getSymbolText, getSymbolType, getTokenErrorDisplay, inErrorRecoveryMode, notifyErrorListeners, reportError, reportMatch, reportMissingToken, reportUnwantedToken, reset, singleTokenDeletion, singleTokenInsertion

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DescriptiveErrorStrategy

      public DescriptiveErrorStrategy(org.antlr.v4.runtime.CharStream charStream)
      Fail-fast strategy with friendly diagnostics.
      Parameters:
      charStream - source character stream used for snippet extraction
  • Method Details

    • create

      public static org.antlr.v4.runtime.ANTLRErrorStrategy create(org.antlr.v4.runtime.CharStream charStream, boolean recover)
      Select fail-fast or recovering strategy.
      Parameters:
      charStream - source character stream used for snippet extraction
      recover - true for multi-error resync; false for fail-fast
      Returns:
      an error strategy instance (never null)
    • recover

      public void recover(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.RecognitionException e)

      Mark incomplete contexts, emit a friendly LL diagnostic, then cancel.

      Specified by:
      recover in interface org.antlr.v4.runtime.ANTLRErrorStrategy
      Overrides:
      recover in class org.antlr.v4.runtime.DefaultErrorStrategy
    • recoverInline

      public org.antlr.v4.runtime.Token recoverInline(org.antlr.v4.runtime.Parser recognizer) throws org.antlr.v4.runtime.RecognitionException

      Bail-style: never return a synthetic token; report then cancel.

      Specified by:
      recoverInline in interface org.antlr.v4.runtime.ANTLRErrorStrategy
      Overrides:
      recoverInline in class org.antlr.v4.runtime.DefaultErrorStrategy
      Throws:
      org.antlr.v4.runtime.RecognitionException
    • sync

      public void sync(org.antlr.v4.runtime.Parser recognizer)

      No-op (matches BailErrorStrategy) so SLL stays cheap.

      Specified by:
      sync in interface org.antlr.v4.runtime.ANTLRErrorStrategy
      Overrides:
      sync in class org.antlr.v4.runtime.DefaultErrorStrategy
    • createNoViableAlternativeErrorMessage

      protected String createNoViableAlternativeErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.NoViableAltException e)
    • reportNoViableAlternative

      protected void reportNoViableAlternative(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.NoViableAltException e)
      Overrides:
      reportNoViableAlternative in class org.antlr.v4.runtime.DefaultErrorStrategy
    • createInputMismatchErrorMessage

      protected String createInputMismatchErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.InputMismatchException e)
    • reportInputMismatch

      protected void reportInputMismatch(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.InputMismatchException e)
      Overrides:
      reportInputMismatch in class org.antlr.v4.runtime.DefaultErrorStrategy
    • createFailedPredicateErrorMessage

      protected String createFailedPredicateErrorMessage(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.FailedPredicateException e)
      Format a failed-predicate diagnostic.

      recognizer is part of the protected hook surface (parity with createNoViableAlternativeErrorMessage(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.NoViableAltException) / createInputMismatchErrorMessage(org.antlr.v4.runtime.Parser, org.antlr.v4.runtime.InputMismatchException)) so subclasses can include parser state when customising the message.

    • reportFailedPredicate

      protected void reportFailedPredicate(org.antlr.v4.runtime.Parser recognizer, org.antlr.v4.runtime.FailedPredicateException e)
      Overrides:
      reportFailedPredicate in class org.antlr.v4.runtime.DefaultErrorStrategy