C# 클래스 Antlr4.Runtime.BailErrorStrategy

This implementation of IAntlrErrorStrategy responds to syntax errors by immediately canceling the parse operation with a ParseCanceledException . The implementation ensures that the ParserRuleContext.exception field is set for all parse tree nodes that were not completed prior to encountering the error.

This error strategy is useful in the following scenarios.

  • Two-stage parsing: This error strategy allows the first stage of two-stage parsing to immediately terminate if an error is encountered, and immediately fall back to the second stage. In addition to avoiding wasted work by attempting to recover from errors here, the empty implementation of Sync(Parser) improves the performance of the first stage.
  • Silent validation: When syntax errors are not being reported or logged, and the parse result is simply ignored if errors occur, the BailErrorStrategy avoids wasting work on recovering from errors when the result will be ignored either way.

myparser.setErrorHandler(new BailErrorStrategy());

상속: DefaultErrorStrategy
파일 보기 프로젝트 열기: antlr/antlr4

공개 메소드들

메소드 설명
Recover ( Parser recognizer, RecognitionException e ) : void

Instead of recovering from exception e , re-throw it wrapped in a ParseCanceledException so it is not caught by the rule function catches. Use System.Exception.InnerException() to get the original RecognitionException .

RecoverInline ( Parser recognizer ) : IToken

Make sure we don't attempt to recover inline; if the parser successfully recovers, it won't throw an exception.

Make sure we don't attempt to recover inline; if the parser successfully recovers, it won't throw an exception.

Sync ( Parser recognizer ) : void

Make sure we don't attempt to recover from problems in subrules.

Make sure we don't attempt to recover from problems in subrules.

메소드 상세

Recover() 공개 메소드

Instead of recovering from exception e , re-throw it wrapped in a ParseCanceledException so it is not caught by the rule function catches. Use System.Exception.InnerException() to get the original RecognitionException .
public Recover ( Parser recognizer, RecognitionException e ) : void
recognizer Parser
e RecognitionException
리턴 void

RecoverInline() 공개 메소드

Make sure we don't attempt to recover inline; if the parser successfully recovers, it won't throw an exception.
Make sure we don't attempt to recover inline; if the parser successfully recovers, it won't throw an exception.
public RecoverInline ( Parser recognizer ) : IToken
recognizer Parser
리턴 IToken

Sync() 공개 메소드

Make sure we don't attempt to recover from problems in subrules.
Make sure we don't attempt to recover from problems in subrules.
public Sync ( Parser recognizer ) : void
recognizer Parser
리턴 void