X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/9f94b672a5dc32da5ad01742bd4e976315a30d9c..c6ad2948bb98d42f8e0883ef82cd14cd2d5eda60:/antlr4-cpp-runtime-4.9.2-source/runtime/src/NoViableAltException.cpp diff --git a/antlr4-cpp-runtime-4.9.2-source/runtime/src/NoViableAltException.cpp b/antlr4-cpp-runtime-4.9.2-source/runtime/src/NoViableAltException.cpp new file mode 100644 index 0000000..273c208 --- /dev/null +++ b/antlr4-cpp-runtime-4.9.2-source/runtime/src/NoViableAltException.cpp @@ -0,0 +1,46 @@ +/* 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 "Parser.h" + +#include "NoViableAltException.h" + +using namespace antlr4; + +namespace { + +// Create a normal shared pointer if the configurations are to be deleted. If not, then +// the shared pointer is created with a deleter that does nothing. +Ref buildConfigsRef(atn::ATNConfigSet *configs, bool deleteConfigs) { + if (deleteConfigs) { + return Ref(configs); + } else { + return Ref(configs, [](atn::ATNConfigSet *){}); + } +} + +} + +NoViableAltException::NoViableAltException(Parser *recognizer) + : NoViableAltException(recognizer, recognizer->getTokenStream(), recognizer->getCurrentToken(), + recognizer->getCurrentToken(), nullptr, recognizer->getContext(), false) { +} + +NoViableAltException::NoViableAltException(Parser *recognizer, TokenStream *input,Token *startToken, + Token *offendingToken, atn::ATNConfigSet *deadEndConfigs, ParserRuleContext *ctx, bool deleteConfigs) + : RecognitionException("No viable alternative", recognizer, input, ctx, offendingToken), + _deadEndConfigs(buildConfigsRef(deadEndConfigs, deleteConfigs)), _startToken(startToken) { +} + +NoViableAltException::~NoViableAltException() { +} + +Token* NoViableAltException::getStartToken() const { + return _startToken; +} + +atn::ATNConfigSet* NoViableAltException::getDeadEndConfigs() const { + return _deadEndConfigs.get(); +}