pub struct BailErrorStrategy<'input, Ctx: ParserNodeType<'input>>(/* private fields */);Expand description
This implementation of ANTLRErrorStrategy responds to syntax errors
by immediately canceling the parse operation with a
ParseCancellationException. 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 syncimproves 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 BailErrorStrategyavoids wasting work on recovering from errors when the result will be ignored either way.
§Usage
ⓘ
use antlr_rust::error_strategy::BailErrorStrategy;
myparser.err_handler = BailErrorStrategy::new();*/
Implementations§
Source§impl<'input, Ctx: ParserNodeType<'input>> BailErrorStrategy<'input, Ctx>
 
impl<'input, Ctx: ParserNodeType<'input>> BailErrorStrategy<'input, Ctx>
Trait Implementations§
Source§impl<'input, Ctx: Debug + ParserNodeType<'input>> Debug for BailErrorStrategy<'input, Ctx>
 
impl<'input, Ctx: Debug + ParserNodeType<'input>> Debug for BailErrorStrategy<'input, Ctx>
Source§impl<'input, Ctx: Default + ParserNodeType<'input>> Default for BailErrorStrategy<'input, Ctx>
 
impl<'input, Ctx: Default + ParserNodeType<'input>> Default for BailErrorStrategy<'input, Ctx>
Source§fn default() -> BailErrorStrategy<'input, Ctx>
 
fn default() -> BailErrorStrategy<'input, Ctx>
Returns the “default value” for a type. Read more
Source§impl<'a, T: Parser<'a>> ErrorStrategy<'a, T> for BailErrorStrategy<'a, T::Node>
 
impl<'a, T: Parser<'a>> ErrorStrategy<'a, T> for BailErrorStrategy<'a, T::Node>
Source§fn reset(&mut self, recognizer: &mut T)
 
fn reset(&mut self, recognizer: &mut T)
Reset the error handler state for the specified 
recognizer.Source§fn recover_inline(
    &mut self,
    recognizer: &mut T,
) -> Result<<T::TF as TokenFactory<'a>>::Tok, ANTLRError>
 
fn recover_inline( &mut self, recognizer: &mut T, ) -> Result<<T::TF as TokenFactory<'a>>::Tok, ANTLRError>
This method is called when an unexpected symbol is encountered during an
inline match operation, such as 
Parser::match. If the error
strategy successfully recovers from the match failure, this method
returns the Token instance which should be treated as the
successful result of the match. Read moreSource§fn recover(
    &mut self,
    recognizer: &mut T,
    e: &ANTLRError,
) -> Result<(), ANTLRError>
 
fn recover( &mut self, recognizer: &mut T, e: &ANTLRError, ) -> Result<(), ANTLRError>
This method is called to recover from error 
e. This method is
called after ErrorStrategy::reportError by the default error handler
generated for a rule method.Source§fn sync(&mut self, _recognizer: &mut T) -> Result<(), ANTLRError>
 
fn sync(&mut self, _recognizer: &mut T) -> Result<(), ANTLRError>
This method provides the error handler with an opportunity to handle
syntactic or semantic errors in the input stream before they result in a
error. Read more
Source§fn in_error_recovery_mode(&mut self, recognizer: &mut T) -> bool
 
fn in_error_recovery_mode(&mut self, recognizer: &mut T) -> bool
Tests whether or not {@code recognizer} is in the process of recovering
from an error. In error recovery mode, 
Parser::consume will create
ErrorNode leaf instead of TerminalNode oneSource§fn report_error(&mut self, recognizer: &mut T, e: &ANTLRError)
 
fn report_error(&mut self, recognizer: &mut T, e: &ANTLRError)
Report any kind of 
ANTLRError. This method is called by
the default exception handler generated for a rule method.Source§fn report_match(&mut self, _recognizer: &mut T)
 
fn report_match(&mut self, _recognizer: &mut T)
This method is called when the parser successfully matches an input
symbol.
impl<'i, Ctx> TidAble<'i> for BailErrorStrategy<'i, Ctx>where
    Ctx: ParserNodeType<'i> + TidAble<'i>,
Auto Trait Implementations§
impl<'input, Ctx> Freeze for BailErrorStrategy<'input, Ctx>
impl<'input, Ctx> RefUnwindSafe for BailErrorStrategy<'input, Ctx>
impl<'input, Ctx> !Send for BailErrorStrategy<'input, Ctx>
impl<'input, Ctx> !Sync for BailErrorStrategy<'input, Ctx>
impl<'input, Ctx> Unpin for BailErrorStrategy<'input, Ctx>
impl<'input, Ctx> UnwindSafe for BailErrorStrategy<'input, Ctx>
Blanket Implementations§
Source§impl<T> AnyExt for T
 
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
    T: Any,
 
fn downcast_ref<T>(this: &Self) -> Option<&T>where
    T: Any,
Attempts to downcast this to 
T behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
    T: Any,
 
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
    T: Any,
Attempts to downcast this to 
T behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
    T: Any,
 
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
    T: Any,
Attempts to downcast this to 
T behind Rc pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
    T: Any,
 
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
    T: Any,
Attempts to downcast this to 
T behind Arc pointerSource§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, X> CoerceTo<T> for Xwhere
    T: CoerceFrom<X> + ?Sized,
 
impl<T, X> CoerceTo<T> for Xwhere
    T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
Source§impl<'a, X> TidExt<'a> for X
 
impl<'a, X> TidExt<'a> for X
Source§fn is<T>(&self) -> boolwhere
    T: Tid<'a>,
 
fn is<T>(&self) -> boolwhere
    T: Tid<'a>,
Returns true if type behind self is equal to the type of T.
Source§fn downcast_ref<'b, T>(&'b self) -> Option<&'b T>where
    T: Tid<'a>,
 
fn downcast_ref<'b, T>(&'b self) -> Option<&'b T>where
    T: Tid<'a>,
Attempts to downcast self to 
T behind referenceSource§fn downcast_mut<'b, T>(&'b mut self) -> Option<&'b mut T>where
    T: Tid<'a>,
 
fn downcast_mut<'b, T>(&'b mut self) -> Option<&'b mut T>where
    T: Tid<'a>,
Attempts to downcast self to 
T behind mutable referenceSource§fn downcast_rc<T>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
    T: Tid<'a>,
 
fn downcast_rc<T>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
    T: Tid<'a>,
Attempts to downcast self to 
T behind Rc pointerSource§fn downcast_arc<T>(self: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
    T: Tid<'a>,
 
fn downcast_arc<T>(self: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
    T: Tid<'a>,
Attempts to downcast self to 
T behind Arc pointer