aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
commit3565aad630864ecdbe53fdaa501ea708555b3c7c (patch)
treec743e4ad0bad39ebdb2f514c7cc52d34a257ebbe /SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
parent1fdc150116cad39aae5c5da407c3312b47a59e3a (diff)
New upstream version 3.4.4+dfsg.upstream/3.4.4+dfsg
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
index bf5185b..8660583 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
@@ -1,6 +1,5 @@
#include "lexer.h"
#include "keywords.h"
-#include "log.h"
#include "lexer_low_lev.h"
#include "sqlite3_parse.h"
#include "common/utils_sql.h"
@@ -26,6 +25,7 @@ TokenList Lexer::process(const QString &sql)
{
TokenList resultList;
int lgt;
+ TokenPtr prevToken;
TokenPtr token;
QString str = sql;
@@ -37,7 +37,7 @@ TokenList Lexer::process(const QString &sql)
else
token = TokenPtr::create();
- lgt = lexerGetToken(str, token, 3, tolerant);
+ lgt = lexerGetToken(str, token, prevToken, 3, tolerant);
if (lgt == 0)
break;
@@ -48,6 +48,8 @@ TokenList Lexer::process(const QString &sql)
resultList << token;
str = str.mid(lgt);
pos += lgt;
+ if (!token->isWhitespace())
+ prevToken = token;
}
return resultList;
@@ -70,7 +72,7 @@ TokenPtr Lexer::getToken()
else
token = TokenPtr::create();
- int lgt = lexerGetToken(sqlToTokenize, token, 3, tolerant);
+ int lgt = lexerGetToken(sqlToTokenize, token, prevTokenProcessed, 3, tolerant);
if (lgt == 0)
return TokenPtr();
@@ -80,6 +82,8 @@ TokenPtr Lexer::getToken()
sqlToTokenize = sqlToTokenize.mid(lgt);
tokenPosition += lgt;
+ if (!token->isWhitespace())
+ prevTokenProcessed = token;
return token;
}
@@ -190,6 +194,7 @@ void Lexer::staticInit()
createTokenType(TK3_ID_TRIG, Token::CTX_TRIGGER, "");
createTokenType(TK3_ID_TRIG_NEW, Token::CTX_TRIGGER_NEW, "");
createTokenType(TK3_CTX_ROWID_KW, Token::CTX_ROWID_KW, "ROWID");
+ createTokenType(TK3_CTX_STRICT_KW, Token::CTX_STRICT_KW, "STRICT");
createTokenType(TK3_ID, Token::CTX_OLD_KW, "OLD");
createTokenType(TK3_ID, Token::CTX_NEW_KW, "NEW");