/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ #pragma once #include "DefaultErrorStrategy.h" namespace antlr4 { /** * This implementation of {@link ANTLRErrorStrategy} responds to syntax errors * by immediately canceling the parse operation with a * {@link ParseCancellationException}. The implementation ensures that the * {@link 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.

* * * *

* {@code myparser.setErrorHandler(new BailErrorStrategy());}

* * @see Parser#setErrorHandler(ANTLRErrorStrategy) */ class ANTLR4CPP_PUBLIC BailErrorStrategy : public DefaultErrorStrategy { /// /// Instead of recovering from exception {@code e}, re-throw it wrapped /// in a so it is not caught by the /// rule function catches. Use to get the /// original . /// public: virtual void recover(Parser *recognizer, std::exception_ptr e) override; /// Make sure we don't attempt to recover inline; if the parser /// successfully recovers, it won't throw an exception. virtual Token* recoverInline(Parser *recognizer) override; /// /// Make sure we don't attempt to recover from problems in subrules. virtual void sync(Parser *recognizer) override; }; } // namespace antlr4