Sha256: 0163df4b1f79d64932975f3940fcbf18eb3d96398649c80a15100131f5b9d76b
Contents?: true
Size: 1.76 KB
Versions: 47
Compression:
Stored size: 1.76 KB
Contents
/* 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. */ #include "Exceptions.h" #include "ParserRuleContext.h" #include "InputMismatchException.h" #include "Parser.h" #include "BailErrorStrategy.h" using namespace antlr4; void BailErrorStrategy::recover(Parser *recognizer, std::exception_ptr e) { ParserRuleContext *context = recognizer->getContext(); do { context->exception = e; if (context->parent == nullptr) break; context = static_cast<ParserRuleContext *>(context->parent); } while (true); try { std::rethrow_exception(e); // Throw the exception to be able to catch and rethrow nested. #if defined(_MSC_FULL_VER) && _MSC_FULL_VER < 190023026 } catch (RecognitionException &inner) { throw ParseCancellationException(inner.what()); #else } catch (RecognitionException & /*inner*/) { std::throw_with_nested(ParseCancellationException()); #endif } } Token* BailErrorStrategy::recoverInline(Parser *recognizer) { InputMismatchException e(recognizer); std::exception_ptr exception = std::make_exception_ptr(e); ParserRuleContext *context = recognizer->getContext(); do { context->exception = exception; if (context->parent == nullptr) break; context = static_cast<ParserRuleContext *>(context->parent); } while (true); try { throw e; #if defined(_MSC_FULL_VER) && _MSC_FULL_VER < 190023026 } catch (InputMismatchException &inner) { throw ParseCancellationException(inner.what()); #else } catch (InputMismatchException & /*inner*/) { std::throw_with_nested(ParseCancellationException()); #endif } } void BailErrorStrategy::sync(Parser * /*recognizer*/) { }
Version data entries
47 entries across 47 versions & 4 rubygems