/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/libs/antlr4_cpp_runtime/src/BailErrorStrategy.cpp
61 строка
2 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
/* 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*/) { }