diff options
| author | 2021-12-17 07:06:30 -0500 | |
|---|---|---|
| committer | 2021-12-17 07:06:30 -0500 | |
| commit | 1fdc150116cad39aae5c5da407c3312b47a59e3a (patch) | |
| tree | 123c79a4d7ad2d45781ba03ce939f7539fb428d8 /SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp | |
| parent | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff) | |
New upstream version 3.3.3+dfsg1.upstream/3.3.3+dfsg1
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp | 86 |
1 files changed, 15 insertions, 71 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp index 55669a5..b54c786 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp @@ -18,18 +18,8 @@ void sqlite3_parseRestoreParserState(void* saved, void* target); void sqlite3_parseFreeSavedState(void* other); void sqlite3_parseAddToken(void* other, Token* token); -void* sqlite2_parseAlloc(void *(*mallocProc)(size_t)); -void sqlite2_parseFree(void *p, void (*freeProc)(void*)); -void sqlite2_parse(void *yyp, int yymajor, Token* yyminor, ParserContext* parserContext); -void sqlite2_parseTrace(FILE *stream, char *zPrefix); -void* sqlite2_parseCopyParserState(void* other); -void sqlite2_parseRestoreParserState(void* saved, void* target); -void sqlite2_parseFreeSavedState(void* other); -void sqlite2_parseAddToken(void* other, Token* token); - -Parser::Parser(Dialect dialect) +Parser::Parser() { - this->dialect = dialect; init(); } @@ -53,74 +43,44 @@ void Parser::cleanUp() } } -void Parser::fillSqliteDialect() -{ - for (SqliteQueryPtr query : context->parsedQueries) - query->setSqliteDialect(dialect); -} - void *Parser::parseAlloc(void *(*mallocProc)(size_t)) { - if (dialect == Dialect::Sqlite2) - return sqlite2_parseAlloc(mallocProc); - else - return sqlite3_parseAlloc(mallocProc); + return sqlite3_parseAlloc(mallocProc); } void Parser::parseFree(void *p, void (*freeProc)(void *)) { - if (dialect == Dialect::Sqlite2) - sqlite2_parseFree(p, freeProc); - else - sqlite3_parseFree(p, freeProc); + sqlite3_parseFree(p, freeProc); } void Parser::parse(void *yyp, int yymajor, TokenPtr yyminor, ParserContext *parserContext) { - if (dialect == Dialect::Sqlite2) - sqlite2_parse(yyp, yymajor, yyminor.data(), parserContext); - else - sqlite3_parse(yyp, yymajor, yyminor.data(), parserContext); + sqlite3_parse(yyp, yymajor, yyminor.data(), parserContext); } void Parser::parseTrace(FILE *stream, char *zPrefix) { - if (dialect == Dialect::Sqlite2) - sqlite2_parseTrace(stream, zPrefix); - else - sqlite3_parseTrace(stream, zPrefix); + sqlite3_parseTrace(stream, zPrefix); } void *Parser::parseCopyParserState(void *other) { - if (dialect == Dialect::Sqlite2) - return sqlite2_parseCopyParserState(other); - else - return sqlite3_parseCopyParserState(other); + return sqlite3_parseCopyParserState(other); } void Parser::parseRestoreParserState(void *saved, void *target) { - if (dialect == Dialect::Sqlite2) - sqlite2_parseRestoreParserState(saved, target); - else - sqlite3_parseRestoreParserState(saved, target); + sqlite3_parseRestoreParserState(saved, target); } void Parser::parseFreeSavedState(void *other) { - if (dialect == Dialect::Sqlite2) - sqlite2_parseFreeSavedState(other); - else - sqlite3_parseFreeSavedState(other); + sqlite3_parseFreeSavedState(other); } void Parser::parseAddToken(void *other, TokenPtr token) { - if (dialect == Dialect::Sqlite2) - sqlite2_parseAddToken(other, token.data()); - else - sqlite3_parseAddToken(other, token.data()); + sqlite3_parseAddToken(other, token.data()); } bool Parser::parse(const QString &sql, bool ignoreMinorErrors) @@ -134,21 +94,17 @@ bool Parser::parseInternal(const QString &sql, bool lookForExpectedToken) void* pParser = parseAlloc( malloc ); if (debugLemon) { - char* label = nullptr; - if (dialect == Dialect::Sqlite2) - label = const_cast<char*>("[LEMON2]: "); - else - label = const_cast<char*>("[LEMON3]: "); - + char* label = const_cast<char*>("[LEMON3]: "); parseTrace(stderr, label); } + else + parseTrace(nullptr, nullptr); reset(); lexer->prepare(sql); context->setupTokens = !lookForExpectedToken; context->executeRules = !lookForExpectedToken; context->doFallbacks = !lookForExpectedToken; - context->dialect = dialect; TokenPtr token = lexer->getToken(); if (!token.isNull()) @@ -186,17 +142,15 @@ bool Parser::parseInternal(const QString &sql, bool lookForExpectedToken) { if (!endsWithSemicolon) { - token = Lexer::getSemicolonToken(dialect); + token = Lexer::getSemicolonToken(); parse(pParser, token->lemonType, token, context); } qint64 endIdx = sql.length(); - TokenPtr endToken = TokenPtr::create(0, Token::INVALID, QString::null, endIdx, endIdx); + TokenPtr endToken = TokenPtr::create(0, Token::INVALID, QString(), endIdx, endIdx); parse(pParser, 0, endToken, context); } - fillSqliteDialect(); - // Free all non-termials having destructors parseFree(pParser, free); @@ -278,7 +232,7 @@ void Parser::expectedTokenLookup(void* pParser) void Parser::init() { - lexer = new Lexer(dialect); + lexer = new Lexer(); context = new ParserContext(); } @@ -307,16 +261,6 @@ void Parser::setLemonDebug(bool enabled) debugLemon = enabled; } -void Parser::setDialect(Dialect dialect) -{ - if (this->dialect == dialect) - return; - - this->dialect = dialect; - delete lexer; - lexer = new Lexer(dialect); -} - const QList<SqliteQueryPtr>& Parser::getQueries() { return context->getQueries(); |
