mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-04 13:32:13 +00:00
Move Tokens::operator and optimize the common path
This commit is contained in:
parent
96a1cb4a79
commit
7b96a7b798
@ -4,6 +4,25 @@
|
|||||||
namespace DB
|
namespace DB
|
||||||
{
|
{
|
||||||
|
|
||||||
|
const Token & Tokens::operator[](size_t index)
|
||||||
|
{
|
||||||
|
if (likely(index < data.size()))
|
||||||
|
return data[index];
|
||||||
|
|
||||||
|
while (data.empty() || !data.back().isEnd())
|
||||||
|
{
|
||||||
|
Token token = lexer.nextToken();
|
||||||
|
|
||||||
|
if (token.isSignificant())
|
||||||
|
{
|
||||||
|
data.emplace_back(std::move(token));
|
||||||
|
if (index < data.size())
|
||||||
|
return data[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data.back();
|
||||||
|
}
|
||||||
|
|
||||||
UnmatchedParentheses checkUnmatchedParentheses(TokenIterator begin)
|
UnmatchedParentheses checkUnmatchedParentheses(TokenIterator begin)
|
||||||
{
|
{
|
||||||
/// We have just two kind of parentheses: () and [].
|
/// We have just two kind of parentheses: () and [].
|
||||||
|
@ -25,22 +25,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
Tokens(const char * begin, const char * end, size_t max_query_size = 0) : lexer(begin, end, max_query_size) {}
|
Tokens(const char * begin, const char * end, size_t max_query_size = 0) : lexer(begin, end, max_query_size) {}
|
||||||
|
|
||||||
const Token & operator[] (size_t index)
|
const Token & operator[](size_t index);
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
if (index < data.size())
|
|
||||||
return data[index];
|
|
||||||
|
|
||||||
if (!data.empty() && data.back().isEnd())
|
|
||||||
return data.back();
|
|
||||||
|
|
||||||
Token token = lexer.nextToken();
|
|
||||||
|
|
||||||
if (token.isSignificant())
|
|
||||||
data.emplace_back(token);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const Token & max()
|
const Token & max()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user