diff options
| author | 2023-04-30 18:30:36 -0400 | |
|---|---|---|
| committer | 2023-04-30 18:30:36 -0400 | |
| commit | 3565aad630864ecdbe53fdaa501ea708555b3c7c (patch) | |
| tree | c743e4ad0bad39ebdb2f514c7cc52d34a257ebbe /SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp | |
| parent | 1fdc150116cad39aae5c5da407c3312b47a59e3a (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.cpp | 11 |
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"); |
