aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp
diff options
context:
space:
mode:
authorvitalyisaev <vitalyisaev@ydb.tech>2023-11-30 13:26:22 +0300
committervitalyisaev <vitalyisaev@ydb.tech>2023-11-30 15:44:45 +0300
commit0a98fece5a9b54f16afeb3a94b3eb3105e9c3962 (patch)
tree291d72dbd7e9865399f668c84d11ed86fb190bbf /contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp
parentcb2c8d75065e5b3c47094067cb4aa407d4813298 (diff)
downloadydb-0a98fece5a9b54f16afeb3a94b3eb3105e9c3962.tar.gz
YQ Connector:Use docker-compose in integrational tests
Diffstat (limited to 'contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp')
-rw-r--r--contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp193
1 files changed, 193 insertions, 0 deletions
diff --git a/contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp b/contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp
new file mode 100644
index 0000000000..6e9f06a249
--- /dev/null
+++ b/contrib/libs/antlr4_cpp_runtime/src/CommonToken.cpp
@@ -0,0 +1,193 @@
+/* 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 "TokenSource.h"
+#include "CharStream.h"
+#include "Recognizer.h"
+#include "Vocabulary.h"
+
+#include "misc/Interval.h"
+
+#include "support/CPPUtils.h"
+#include "support/StringUtils.h"
+
+#include "CommonToken.h"
+
+using namespace antlr4;
+using namespace antlr4::misc;
+
+using namespace antlrcpp;
+
+const std::pair<TokenSource*, CharStream*> CommonToken::EMPTY_SOURCE;
+
+CommonToken::CommonToken(size_t type) {
+ InitializeInstanceFields();
+ _type = type;
+}
+
+CommonToken::CommonToken(std::pair<TokenSource*, CharStream*> source, size_t type, size_t channel, size_t start, size_t stop) {
+ InitializeInstanceFields();
+ _source = source;
+ _type = type;
+ _channel = channel;
+ _start = start;
+ _stop = stop;
+ if (_source.first != nullptr) {
+ _line = static_cast<int>(source.first->getLine());
+ _charPositionInLine = source.first->getCharPositionInLine();
+ }
+}
+
+CommonToken::CommonToken(size_t type, const std::string &text) {
+ InitializeInstanceFields();
+ _type = type;
+ _channel = DEFAULT_CHANNEL;
+ _text = text;
+ _source = EMPTY_SOURCE;
+}
+
+CommonToken::CommonToken(Token *oldToken) {
+ InitializeInstanceFields();
+ _type = oldToken->getType();
+ _line = oldToken->getLine();
+ _index = oldToken->getTokenIndex();
+ _charPositionInLine = oldToken->getCharPositionInLine();
+ _channel = oldToken->getChannel();
+ _start = oldToken->getStartIndex();
+ _stop = oldToken->getStopIndex();
+
+ if (is<CommonToken *>(oldToken)) {
+ _text = (static_cast<CommonToken *>(oldToken))->_text;
+ _source = (static_cast<CommonToken *>(oldToken))->_source;
+ } else {
+ _text = oldToken->getText();
+ _source = { oldToken->getTokenSource(), oldToken->getInputStream() };
+ }
+}
+
+size_t CommonToken::getType() const {
+ return _type;
+}
+
+void CommonToken::setLine(size_t line) {
+ _line = line;
+}
+
+std::string CommonToken::getText() const {
+ if (!_text.empty()) {
+ return _text;
+ }
+
+ CharStream *input = getInputStream();
+ if (input == nullptr) {
+ return "";
+ }
+ size_t n = input->size();
+ if (_start < n && _stop < n) {
+ return input->getText(misc::Interval(_start, _stop));
+ } else {
+ return "<EOF>";
+ }
+}
+
+void CommonToken::setText(const std::string &text) {
+ _text = text;
+}
+
+size_t CommonToken::getLine() const {
+ return _line;
+}
+
+size_t CommonToken::getCharPositionInLine() const {
+ return _charPositionInLine;
+}
+
+void CommonToken::setCharPositionInLine(size_t charPositionInLine) {
+ _charPositionInLine = charPositionInLine;
+}
+
+size_t CommonToken::getChannel() const {
+ return _channel;
+}
+
+void CommonToken::setChannel(size_t channel) {
+ _channel = channel;
+}
+
+void CommonToken::setType(size_t type) {
+ _type = type;
+}
+
+size_t CommonToken::getStartIndex() const {
+ return _start;
+}
+
+void CommonToken::setStartIndex(size_t start) {
+ _start = start;
+}
+
+size_t CommonToken::getStopIndex() const {
+ return _stop;
+}
+
+void CommonToken::setStopIndex(size_t stop) {
+ _stop = stop;
+}
+
+size_t CommonToken::getTokenIndex() const {
+ return _index;
+}
+
+void CommonToken::setTokenIndex(size_t index) {
+ _index = index;
+}
+
+antlr4::TokenSource *CommonToken::getTokenSource() const {
+ return _source.first;
+}
+
+antlr4::CharStream *CommonToken::getInputStream() const {
+ return _source.second;
+}
+
+std::string CommonToken::toString() const {
+ return toString(nullptr);
+}
+
+std::string CommonToken::toString(Recognizer *r) const {
+ std::stringstream ss;
+
+ std::string channelStr;
+ if (_channel > 0) {
+ channelStr = ",channel=" + std::to_string(_channel);
+ }
+ std::string txt = getText();
+ if (!txt.empty()) {
+ txt = antlrcpp::escapeWhitespace(txt);
+ } else {
+ txt = "<no text>";
+ }
+
+ std::string typeString = std::to_string(symbolToNumeric(_type));
+ if (r != nullptr)
+ typeString = r->getVocabulary().getDisplayName(_type);
+
+ ss << "[@" << symbolToNumeric(getTokenIndex()) << "," << symbolToNumeric(_start) << ":" << symbolToNumeric(_stop)
+ << "='" << txt << "',<" << typeString << ">" << channelStr << "," << _line << ":"
+ << getCharPositionInLine() << "]";
+
+ return ss.str();
+}
+
+void CommonToken::InitializeInstanceFields() {
+ _type = 0;
+ _line = 0;
+ _charPositionInLine = INVALID_INDEX;
+ _channel = DEFAULT_CHANNEL;
+ _index = INVALID_INDEX;
+ _start = 0;
+ _stop = 0;
+ _source = EMPTY_SOURCE;
+}