aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp68
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.h5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp92
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.h32
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp56
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp24
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.h13
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp43
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp34
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.h16
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp20
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequerytype.cpp5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp24
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitestatement.h6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp24
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewindowdefinition.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.cpp22
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.h10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/keywords.cpp12
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lempar.c4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp11
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.h7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp129
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.h3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.h16
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp14
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp6834
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h296
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y179
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp21
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.h3
45 files changed, 4324 insertions, 3777 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp
index 5ca593f..42cb59b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp
@@ -8,7 +8,8 @@ SqliteAlterTable::SqliteAlterTable()
}
SqliteAlterTable::SqliteAlterTable(const SqliteAlterTable& other)
- : SqliteQuery(other), command(other.command), newName(other.newName), database(other.database), table(other.table), columnKw(other.columnKw)
+ : SqliteQuery(other), command(other.command), newName(other.newName), database(other.database), table(other.table),
+ dropColumnName(other.dropColumnName), columnKw(other.columnKw)
{
DEEP_COPY_FIELD(SqliteCreateTable::Column, newColumn);
}
@@ -32,10 +33,17 @@ SqliteAlterTable::SqliteAlterTable(const QString& name1, const QString& name2, b
column->setParent(this);
}
+SqliteAlterTable::SqliteAlterTable(const QString& name1, const QString& name2, bool columnKw, const QString& dropColumn)
+ : SqliteAlterTable()
+{
+ command = Command::DROP_COLUMN;
+ initName(name1, name2);
+ this->columnKw = columnKw;
+ this->dropColumnName = dropColumn;
+}
+
SqliteAlterTable::~SqliteAlterTable()
{
-// if (newColumn)
- // delete newColumn;
}
SqliteStatement* SqliteAlterTable::clone()
@@ -43,6 +51,15 @@ SqliteStatement* SqliteAlterTable::clone()
return new SqliteAlterTable(*this);
}
+QStringList SqliteAlterTable::getColumnsInStatement()
+{
+ QStringList list;
+ if (!dropColumnName.isNull())
+ list << dropColumnName;
+
+ return list;
+}
+
QStringList SqliteAlterTable::getTablesInStatement()
{
QStringList list;
@@ -60,6 +77,14 @@ QStringList SqliteAlterTable::getDatabasesInStatement()
return getStrListFromValue(database);
}
+TokenList SqliteAlterTable::getColumnTokensInStatement()
+{
+ if (command == Command::DROP_COLUMN && tokensMap.contains("nm"))
+ return extractPrintableTokens(tokensMap["nm"]);
+
+ return TokenList();
+}
+
TokenList SqliteAlterTable::getTableTokensInStatement()
{
return getObjectTokenListFromFullname();
@@ -110,17 +135,32 @@ TokenList SqliteAlterTable::rebuildTokensFromContents()
builder.withOther(table).withSpace();
- if (newColumn)
- {
- builder.withKeyword("ADD").withSpace();
- if (columnKw)
- builder.withKeyword("COLUMN").withSpace();
-
- builder.withStatement(newColumn);
- }
- else if (!newName.isNull())
- {
- builder.withKeyword("RENAME").withSpace().withKeyword("TO").withSpace().withOther(newName);
+ switch (command) {
+ case Command::RENAME:
+ {
+ builder.withKeyword("RENAME").withSpace().withKeyword("TO").withSpace().withOther(newName);
+ break;
+ }
+ case Command::ADD_COLUMN:
+ {
+ builder.withKeyword("ADD").withSpace();
+ if (columnKw)
+ builder.withKeyword("COLUMN").withSpace();
+
+ builder.withStatement(newColumn);
+ break;
+ }
+ case Command::DROP_COLUMN:
+ {
+ builder.withKeyword("DROP").withSpace();
+ if (columnKw)
+ builder.withKeyword("COLUMN").withSpace();
+
+ builder.withOther(dropColumnName);
+ break;
+ }
+ case Command::null:
+ break;
}
builder.withOperator(";");
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.h
index fbac3fe..1733dfc 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.h
@@ -11,6 +11,7 @@ class API_EXPORT SqliteAlterTable : public SqliteQuery
{
RENAME,
ADD_COLUMN,
+ DROP_COLUMN,
null
};
@@ -18,12 +19,15 @@ class API_EXPORT SqliteAlterTable : public SqliteQuery
SqliteAlterTable(const SqliteAlterTable& other);
SqliteAlterTable(const QString& name1, const QString& name2, const QString& newName);
SqliteAlterTable(const QString& name1, const QString& name2, bool columnKw, SqliteCreateTable::Column* column);
+ SqliteAlterTable(const QString& name1, const QString& name2, bool columnKw, const QString& dropColumn);
~SqliteAlterTable();
SqliteStatement* clone();
protected:
+ QStringList getColumnsInStatement();
QStringList getTablesInStatement();
QStringList getDatabasesInStatement();
+ TokenList getColumnTokensInStatement();
TokenList getTableTokensInStatement();
TokenList getDatabaseTokensInStatement();
QList<FullObject> getFullObjectsInStatement();
@@ -37,6 +41,7 @@ class API_EXPORT SqliteAlterTable : public SqliteQuery
QString newName = QString();
QString database = QString();
QString table = QString();
+ QString dropColumnName = QString();
bool columnKw = false;
SqliteCreateTable::Column* newColumn = nullptr;
};
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp
deleted file mode 100644
index c3ff500..0000000
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include "sqlitecopy.h"
-#include "sqlitequerytype.h"
-
-#include <parser/statementtokenbuilder.h>
-
-SqliteCopy::SqliteCopy()
-{
- queryType = SqliteQueryType::Copy;
-}
-
-SqliteCopy::SqliteCopy(const SqliteCopy& other) :
- SqliteQuery(other), onConflict(other.onConflict), database(other.database), table(other.table), file(other.file), delimiter(other.delimiter)
-{
-}
-
-SqliteCopy::SqliteCopy(SqliteConflictAlgo onConflict, const QString &name1, const QString &name2, const QString &name3, const QString &delim)
- : SqliteCopy()
-{
- this->onConflict = onConflict;
-
- if (!name2.isNull())
- {
- database = name1;
- table = name2;
- }
- else
- table = name1;
-
- file = name3;
- delimiter = delim;
-}
-
-SqliteStatement* SqliteCopy::clone()
-{
- return new SqliteCopy(*this);
-}
-
-QStringList SqliteCopy::getTablesInStatement()
-{
- return getStrListFromValue(table);
-}
-
-QStringList SqliteCopy::getDatabasesInStatement()
-{
- return getStrListFromValue(database);
-}
-
-TokenList SqliteCopy::getTableTokensInStatement()
-{
- return getObjectTokenListFromNmDbnm();
-}
-
-TokenList SqliteCopy::getDatabaseTokensInStatement()
-{
- return getDbTokenListFromNmDbnm();
-}
-
-QList<SqliteStatement::FullObject> SqliteCopy::getFullObjectsInStatement()
-{
- QList<FullObject> result;
-
- FullObject fullObj = getFullObjectFromNmDbnm(FullObject::TABLE);
- if (fullObj.isValid())
- result << fullObj;
-
- fullObj = getFirstDbFullObject();
- if (fullObj.isValid())
- result << fullObj;
-
- return result;
-}
-
-TokenList SqliteCopy::rebuildTokensFromContents()
-{
- StatementTokenBuilder builder;
- builder.withTokens(SqliteQuery::rebuildTokensFromContents());
- builder.withKeyword("COPY").withSpace();
- if (onConflict != SqliteConflictAlgo::null)
- builder.withKeyword("OR").withSpace().withKeyword(sqliteConflictAlgo(onConflict)).withSpace();
-
- if (!database.isNull())
- builder.withOther(database).withSpace();
-
- builder.withOther(table).withSpace().withKeyword("FROM").withSpace().withString(file);
-
- if (!delimiter.isNull())
- builder.withSpace().withKeyword("USING").withSpace().withKeyword("DELIMITERS").withSpace().withString(delimiter);
-
- builder.withOperator(";");
-
- return builder.build();
-}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.h
deleted file mode 100644
index 1e4b5b7..0000000
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef SQLITECOPY_H
-#define SQLITECOPY_H
-
-#include "sqlitequery.h"
-#include "sqliteconflictalgo.h"
-
-class API_EXPORT SqliteCopy : public SqliteQuery
-{
- public:
- SqliteCopy();
- SqliteCopy(const SqliteCopy& other);
- SqliteCopy(SqliteConflictAlgo onConflict, const QString& name1, const QString& name2, const QString& name3, const QString& delim = QString());
- SqliteStatement* clone();
-
- SqliteConflictAlgo onConflict = SqliteConflictAlgo::null;
- QString database = QString();
- QString table = QString();
- QString file = QString();
- QString delimiter = QString();
-
- protected:
- QStringList getTablesInStatement();
- QStringList getDatabasesInStatement();
- TokenList getTableTokensInStatement();
- TokenList getDatabaseTokensInStatement();
- QList<FullObject> getFullObjectsInStatement();
- TokenList rebuildTokensFromContents();
-};
-
-typedef QSharedPointer<SqliteCopy> SqliteCopyPtr;
-
-#endif // SQLITECOPY_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
index b747c33..1749e9a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
@@ -172,3 +172,13 @@ void SqliteCreateIndex::setTargetDatabase(const QString& database)
{
this->database = database;
}
+
+QString SqliteCreateIndex::getObjectName() const
+{
+ return index;
+}
+
+void SqliteCreateIndex::setObjectName(const QString& name)
+{
+ index = name;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
index 870ed17..b8876a2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
@@ -29,6 +29,8 @@ class API_EXPORT SqliteCreateIndex : public SqliteQuery, public SqliteTableRelat
QString getTargetTable() const;
QString getTargetDatabase() const;
void setTargetDatabase(const QString& database);
+ QString getObjectName() const;
+ void setObjectName(const QString& name);
bool uniqueKw = false;
bool ifNotExistsKw = false;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
index d82270e..fff4036 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
@@ -1,6 +1,6 @@
#include "sqlitecreatetable.h"
+#include "parser/parser_helper_stubs.h"
#include "parser/statementtokenbuilder.h"
-#include "common/utils_sql.h"
#include "common/global.h"
const QRegExp SqliteCreateTable::Column::GENERATED_ALWAYS_REGEXP = QRegExp("GENERATED\\s+ALWAYS");
@@ -12,7 +12,7 @@ SqliteCreateTable::SqliteCreateTable()
SqliteCreateTable::SqliteCreateTable(const SqliteCreateTable& other) :
SqliteQuery(other), ifNotExistsKw(other.ifNotExistsKw), tempKw(other.tempKw), temporaryKw(other.temporaryKw),
- database(other.database), table(other.table), withOutRowId(other.withOutRowId)
+ database(other.database), table(other.table), withOutRowId(other.withOutRowId), strict(other.strict)
{
DEEP_COPY_COLLECTION(Column, columns);
DEEP_COPY_COLLECTION(Constraint, constraints);
@@ -40,10 +40,11 @@ SqliteCreateTable::SqliteCreateTable(bool ifNotExistsKw, int temp, const QString
}
}
-SqliteCreateTable::SqliteCreateTable(bool ifNotExistsKw, int temp, const QString& name1, const QString& name2, const QList<SqliteCreateTable::Column*>& columns, const QList<SqliteCreateTable::Constraint*>& constraints, const QString& withOutRowId) :
+SqliteCreateTable::SqliteCreateTable(bool ifNotExistsKw, int temp, const QString& name1, const QString& name2, const QList<SqliteCreateTable::Column*>& columns, const QList<SqliteCreateTable::Constraint*>& constraints, const QList<ParserStubCreateTableOption*>& options) :
SqliteCreateTable(ifNotExistsKw, temp, name1, name2, columns, constraints)
{
- this->withOutRowId = withOutRowId;
+ this->withOutRowId = parserStubFindCreateTableOption(options, ParserStubCreateTableOption::WITHOUT_ROWID) != nullptr;
+ this->strict = parserStubFindCreateTableOption(options, ParserStubCreateTableOption::STRICT) != nullptr;
}
SqliteCreateTable::SqliteCreateTable(bool ifNotExistsKw, int temp, const QString &name1, const QString &name2, SqliteSelect *select)
@@ -76,7 +77,7 @@ QList<SqliteCreateTable::Constraint*> SqliteCreateTable::getConstraints(SqliteCr
SqliteStatement* SqliteCreateTable::getPrimaryKey() const
{
- for (Constraint* constr : getConstraints(Constraint::PRIMARY_KEY))
+ for (Constraint*& constr : getConstraints(Constraint::PRIMARY_KEY))
return constr;
Column::Constraint* colConstr = nullptr;
@@ -115,7 +116,7 @@ QStringList SqliteCreateTable::getPrimaryKeyColumns() const
SqliteCreateTable::Column* SqliteCreateTable::getColumn(const QString& colName)
{
- for (Column* col : columns)
+ for (Column*& col : columns)
{
if (col->name.compare(colName, Qt::CaseInsensitive) == 0)
return col;
@@ -142,6 +143,18 @@ QList<SqliteCreateTable::Column::Constraint*> SqliteCreateTable::getColumnForeig
return results;
}
+void SqliteCreateTable::removeColumnConstraint(Column::Constraint* constr)
+{
+ for (Column* col : columns)
+ {
+ if (col->constraints.contains(constr))
+ {
+ col->constraints.removeOne(constr);
+ return;
+ }
+ }
+}
+
QStringList SqliteCreateTable::getColumnNames() const
{
QStringList names;
@@ -236,8 +249,21 @@ TokenList SqliteCreateTable::rebuildTokensFromContents()
builder.withParRight();
- if (!withOutRowId.isNull())
+ bool atLeastOneOption = false;
+ if (withOutRowId)
+ {
builder.withSpace().withKeyword("WITHOUT").withSpace().withOther("ROWID");
+ atLeastOneOption = true;
+ }
+
+ if (strict)
+ {
+ if (atLeastOneOption)
+ builder.withOperator(",");
+
+ builder.withSpace().withOther("STRICT");
+ //atLeastOneOption = true; // to uncomment if there are further options down below
+ }
}
builder.withOperator(";");
@@ -564,7 +590,7 @@ bool SqliteCreateTable::Constraint::doesAffectColumn(const QString& columnName)
int SqliteCreateTable::Constraint::getAffectedColumnIdx(const QString& columnName)
{
int i = 0;
- for (SqliteIndexedColumn* idxCol : indexedColumns)
+ for (SqliteIndexedColumn*& idxCol : indexedColumns)
{
if (idxCol->name.compare(columnName, Qt::CaseInsensitive) == 0)
return i;
@@ -604,12 +630,12 @@ TokenList SqliteCreateTable::Constraint::rebuildTokensFromContents()
{
case SqliteCreateTable::Constraint::PRIMARY_KEY:
{
- builder.withKeyword("PRIMARY").withSpace().withKeyword("KEY").withSpace().withParLeft().withStatementList(indexedColumns).withParRight();
+ builder.withKeyword("PRIMARY").withSpace().withKeyword("KEY").withSpace().withParLeft().withStatementList(indexedColumns);
if (autoincrKw)
builder.withSpace().withKeyword("AUTOINCREMENT");
- builder.withConflict(onConflict);
+ builder.withParRight().withConflict(onConflict);
break;
}
case SqliteCreateTable::Constraint::UNIQUE:
@@ -861,3 +887,13 @@ void SqliteCreateTable::setTargetDatabase(const QString& database)
{
this->database = database;
}
+
+QString SqliteCreateTable::getObjectName() const
+{
+ return table;
+}
+
+void SqliteCreateTable::setObjectName(const QString& name)
+{
+ table = name;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
index d34688c..5d797c1 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
@@ -15,6 +15,8 @@
#include <QList>
#include <QRegExp>
+struct ParserStubCreateTableOption;
+
class API_EXPORT SqliteCreateTable : public SqliteQuery, public SqliteDdlWithDbContext
{
public:
@@ -189,7 +191,7 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery, public SqliteDdlWithDbC
const QList<Column*>& columns, const QList<Constraint*>& constraints);
SqliteCreateTable(bool ifNotExistsKw, int temp, const QString& name1, const QString& name2,
const QList<Column*>& columns, const QList<Constraint*>& constraints,
- const QString& withOutRowId);
+ const QList<ParserStubCreateTableOption*>& options);
SqliteCreateTable(bool ifNotExistsKw, int temp, const QString& name1, const QString& name2,
SqliteSelect* select);
~SqliteCreateTable();
@@ -201,10 +203,13 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery, public SqliteDdlWithDbC
Column* getColumn(const QString& colName);
QList<Constraint*> getForeignKeysByTable(const QString& foreignTable) const;
QList<Column::Constraint*> getColumnForeignKeysByTable(const QString& foreignTable) const;
+ void removeColumnConstraint(Column::Constraint* constr);
QStringList getColumnNames() const;
QHash<QString,QString> getModifiedColumnsMap(bool lowercaseKeys = false, Qt::CaseSensitivity cs = Qt::CaseInsensitive) const;
QString getTargetDatabase() const;
void setTargetDatabase(const QString& database);
+ QString getObjectName() const;
+ void setObjectName(const QString& name);
bool ifNotExistsKw = false;
bool tempKw = false;
@@ -213,8 +218,9 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery, public SqliteDdlWithDbC
QString table = QString();
QList<Column*> columns;
QList<Constraint*> constraints;
+ bool withOutRowId = false;
+ bool strict = false;
SqliteSelect* select = nullptr;
- QString withOutRowId = QString();
protected:
QStringList getTablesInStatement();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
index 3f2c4e3..597395f 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
@@ -370,3 +370,13 @@ void SqliteCreateTrigger::setTargetDatabase(const QString& database)
{
this->database = database;
}
+
+QString SqliteCreateTrigger::getObjectName() const
+{
+ return trigger;
+}
+
+void SqliteCreateTrigger::setObjectName(const QString& name)
+{
+ trigger = name;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
index ac7b81f..44b953a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
@@ -66,6 +66,8 @@ class API_EXPORT SqliteCreateTrigger : public SqliteQuery, public SqliteTableRel
QString getTargetTable() const;
QString getTargetDatabase() const;
void setTargetDatabase(const QString& database);
+ QString getObjectName() const;
+ void setObjectName(const QString& name);
bool tempKw = false;
bool temporaryKw = false;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
index f5b54e7..0e11619 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
@@ -129,3 +129,13 @@ void SqliteCreateView::setTargetDatabase(const QString& database)
{
this->database = database;
}
+
+QString SqliteCreateView::getObjectName() const
+{
+ return view;
+}
+
+void SqliteCreateView::setObjectName(const QString& name)
+{
+ view = name;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
index 74f6b91..645532c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
@@ -21,6 +21,8 @@ class API_EXPORT SqliteCreateView : public SqliteQuery, public SqliteDdlWithDbCo
SqliteStatement* clone();
QString getTargetDatabase() const;
void setTargetDatabase(const QString& database);
+ QString getObjectName() const;
+ void setObjectName(const QString& name);
bool tempKw = false;
bool temporaryKw = false;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h
index cb64986..0daf378 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h
@@ -9,6 +9,9 @@ class API_EXPORT SqliteDdlWithDbContext
public:
virtual QString getTargetDatabase() const = 0;
virtual void setTargetDatabase(const QString& database) = 0;
+
+ virtual QString getObjectName() const = 0;
+ virtual void setObjectName(const QString& name) = 0;
};
typedef QSharedPointer<SqliteDdlWithDbContext> SqliteDdlWithDbContextPtr;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp
index dd4d7cb..faf92a4 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp
@@ -16,20 +16,21 @@ SqliteDelete::SqliteDelete(const SqliteDelete& other) :
{
DEEP_COPY_FIELD(SqliteExpr, where);
DEEP_COPY_FIELD(SqliteWith, with);
+ DEEP_COPY_COLLECTION(SqliteResultColumn, returning);
}
-SqliteDelete::SqliteDelete(const QString &name1, const QString &name2, const QString& indexedByName, SqliteExpr *where, SqliteWith* with)
+SqliteDelete::SqliteDelete(const QString &name1, const QString &name2, const QString& indexedByName, SqliteExpr *where, SqliteWith* with, const QList<SqliteResultColumn*>& returning)
: SqliteDelete()
{
- init(name1, name2, where, with);
+ init(name1, name2, where, with, returning);
this->indexedBy = indexedByName;
this->indexedByKw = true;
}
-SqliteDelete::SqliteDelete(const QString &name1, const QString &name2, bool notIndexedKw, SqliteExpr *where, SqliteWith* with)
+SqliteDelete::SqliteDelete(const QString &name1, const QString &name2, bool notIndexedKw, SqliteExpr *where, SqliteWith* with, const QList<SqliteResultColumn*>& returning)
: SqliteDelete()
{
- init(name1, name2, where, with);
+ init(name1, name2, where, with, returning);
this->notIndexedKw = notIndexedKw;
}
@@ -37,7 +38,7 @@ SqliteDelete::~SqliteDelete()
{
}
-SqliteStatement*SqliteDelete::clone()
+SqliteStatement* SqliteDelete::clone()
{
return new SqliteDelete(*this);
}
@@ -91,7 +92,7 @@ QList<SqliteStatement::FullObject> SqliteDelete::getFullObjectsInStatement()
return result;
}
-void SqliteDelete::init(const QString &name1, const QString &name2, SqliteExpr *where, SqliteWith* with)
+void SqliteDelete::init(const QString &name1, const QString &name2, SqliteExpr *where, SqliteWith* with, const QList<SqliteResultColumn*>& returning)
{
this->where = where;
if (where)
@@ -108,6 +109,10 @@ void SqliteDelete::init(const QString &name1, const QString &name2, SqliteExpr *
}
else
table = name1;
+
+ this->returning = returning;
+ for (SqliteResultColumn*& retCol : this->returning)
+ retCol->setParent(this);
}
TokenList SqliteDelete::rebuildTokensFromContents()
@@ -131,6 +136,13 @@ TokenList SqliteDelete::rebuildTokensFromContents()
if (where)
builder.withSpace().withKeyword("WHERE").withStatement(where);
+ if (!returning.isEmpty())
+ {
+ builder.withKeyword("RETURNING");
+ for (SqliteResultColumn*& retCol : returning)
+ builder.withSpace().withStatement(retCol);
+ }
+
builder.withOperator(";");
return builder.build();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.h
index 5d24619..faa38fe 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.h
@@ -2,8 +2,9 @@
#define SQLITEDELETE_H
#include "sqlitequery.h"
-
+#include "sqliteselect.h"
#include <QString>
+#include <QList>
class SqliteExpr;
class SqliteWith;
@@ -13,8 +14,10 @@ class API_EXPORT SqliteDelete : public SqliteQuery
public:
SqliteDelete();
SqliteDelete(const SqliteDelete& other);
- SqliteDelete(const QString& name1, const QString& name2, const QString& indexedByName, SqliteExpr* where, SqliteWith* with);
- SqliteDelete(const QString& name1, const QString& name2, bool notIndexedKw, SqliteExpr* where, SqliteWith* with);
+ SqliteDelete(const QString& name1, const QString& name2, const QString& indexedByName, SqliteExpr* where, SqliteWith* with,
+ const QList<SqliteResultColumn*>& returning);
+ SqliteDelete(const QString& name1, const QString& name2, bool notIndexedKw, SqliteExpr* where, SqliteWith* with,
+ const QList<SqliteResultColumn*>& returning);
~SqliteDelete();
SqliteStatement* clone();
@@ -28,7 +31,8 @@ class API_EXPORT SqliteDelete : public SqliteQuery
TokenList rebuildTokensFromContents();
private:
- void init(const QString& name1, const QString& name2, SqliteExpr* where, SqliteWith* with);
+ void init(const QString& name1, const QString& name2, SqliteExpr* where, SqliteWith* with,
+ const QList<SqliteResultColumn*>& returning);
public:
QString database = QString();
@@ -38,6 +42,7 @@ class API_EXPORT SqliteDelete : public SqliteQuery
QString indexedBy = QString();
SqliteExpr* where = nullptr;
SqliteWith* with = nullptr;
+ QList<SqliteResultColumn*> returning;
};
typedef QSharedPointer<SqliteDelete> SqliteDeletePtr;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
index e2c79ea..89c6b9b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
@@ -231,6 +231,19 @@ void SqliteExpr::initUnaryOp(SqliteExpr *expr, const QString& op)
expr->setParent(this);
}
+void SqliteExpr::initPtrOp(SqliteExpr* expr1, const QString& op, SqliteExpr* expr2)
+{
+ mode = SqliteExpr::Mode::PTR_OP;
+ this->expr1 = expr1;
+ this->expr2 = expr2;
+ ptrOp = op;
+ if (expr1)
+ expr1->setParent(this);
+
+ if (expr2)
+ expr2->setParent(this);
+}
+
void SqliteExpr::initLike(SqliteExpr *expr1, bool notKw, LikeOp likeOp, SqliteExpr *expr2, SqliteExpr *expr3)
{
mode = SqliteExpr::Mode::LIKE;
@@ -271,6 +284,19 @@ void SqliteExpr::initIs(SqliteExpr *expr1, bool notKw, SqliteExpr *expr2)
expr2->setParent(this);
}
+void SqliteExpr::initDistinct(SqliteExpr* expr1, bool notKw, SqliteExpr* expr2)
+{
+ mode = SqliteExpr::Mode::DISTINCT;
+ this->expr1 = expr1;
+ this->notKw = notKw;
+ this->expr2 = expr2;
+ if (expr1)
+ expr1->setParent(this);
+
+ if (expr2)
+ expr2->setParent(this);
+}
+
void SqliteExpr::initBetween(SqliteExpr *expr1, bool notKw, SqliteExpr *expr2, SqliteExpr *expr3)
{
mode = SqliteExpr::Mode::BETWEEN;
@@ -549,6 +575,9 @@ TokenList SqliteExpr::rebuildTokensFromContents()
case SqliteExpr::Mode::BINARY_OP:
builder.withStatement(expr1).withSpace().withOperator(binaryOp).withSpace().withStatement(expr2);
break;
+ case SqliteExpr::Mode::PTR_OP:
+ builder.withStatement(expr1).withSpace().withOperator(ptrOp).withSpace().withStatement(expr2);
+ break;
case SqliteExpr::Mode::FUNCTION:
builder.withOther(function).withParLeft();
if (distinctKw)
@@ -598,6 +627,9 @@ TokenList SqliteExpr::rebuildTokensFromContents()
case SqliteExpr::Mode::IS:
builder.withTokens(rebuildIs());
break;
+ case SqliteExpr::Mode::DISTINCT:
+ builder.withTokens(rebuildDistinct());
+ break;
case SqliteExpr::Mode::BETWEEN:
builder.withTokens(rebuildBetween());
break;
@@ -691,6 +723,17 @@ TokenList SqliteExpr::rebuildIs()
return builder.build();
}
+TokenList SqliteExpr::rebuildDistinct()
+{
+ StatementTokenBuilder builder;
+ builder.withStatement(expr1).withSpace().withKeyword("IS");
+ if (notKw)
+ builder.withSpace().withKeyword("NOT");
+
+ builder.withSpace().withKeyword("DISTINCT").withSpace().withKeyword("FROM").withSpace().withStatement(expr2);
+ return builder.build();
+}
+
TokenList SqliteExpr::rebuildBetween()
{
StatementTokenBuilder builder;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
index ef4c7da..f5fc6c2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h
@@ -23,6 +23,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
ID,
UNARY_OP,
BINARY_OP,
+ PTR_OP,
FUNCTION,
SUB_EXPR,
ROW_VALUE,
@@ -32,6 +33,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
NULL_,
NOTNULL,
IS,
+ DISTINCT,
BETWEEN,
IN,
EXISTS,
@@ -85,9 +87,11 @@ class API_EXPORT SqliteExpr : public SqliteStatement
void initWindowFunction(const QString& fnName, SqliteFilterOver* filterOver);
void initBinOp(SqliteExpr* expr1, const QString& op, SqliteExpr* expr2);
void initUnaryOp(SqliteExpr* expr, const QString& op);
+ void initPtrOp(SqliteExpr* expr1, const QString& op, SqliteExpr* expr2);
void initLike(SqliteExpr* expr1, bool notKw, SqliteExpr::LikeOp likeOp, SqliteExpr* expr2, SqliteExpr* expr3 = nullptr);
void initNull(SqliteExpr* expr, const QString& value);
void initIs(SqliteExpr* expr1, bool notKw, SqliteExpr* expr2);
+ void initDistinct(SqliteExpr* expr1, bool notKw, SqliteExpr* expr2);
void initBetween(SqliteExpr* expr1, bool notKw, SqliteExpr* expr2, SqliteExpr* expr3);
void initIn(SqliteExpr* expr, bool notKw, const QList<SqliteExpr*>& exprList);
void initIn(SqliteExpr* expr, bool notKw, SqliteSelect* select);
@@ -108,6 +112,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
QString column = QString();
QString unaryOp = QString();
QString binaryOp = QString();
+ QString ptrOp = QString();
QString function = QString();
QString collation = QString();
QString ctime = QString();
@@ -144,6 +149,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement
TokenList rebuildLike();
TokenList rebuildNotNull();
TokenList rebuildIs();
+ TokenList rebuildDistinct();
TokenList rebuildBetween();
TokenList rebuildIn();
TokenList rebuildCase();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp
index 906b385..5242fa6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp
@@ -20,14 +20,14 @@ SqliteInsert::SqliteInsert(const SqliteInsert& other) :
DEEP_COPY_FIELD(SqliteSelect, select);
DEEP_COPY_FIELD(SqliteWith, with);
DEEP_COPY_FIELD(SqliteUpsert, upsert);
+ DEEP_COPY_COLLECTION(SqliteResultColumn, returning);
}
SqliteInsert::SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString &name1, const QString &name2, const QList<QString> &columns,
- const QList<SqliteExpr *> &row, SqliteWith* with) :
+ const QList<SqliteExpr *> &row, SqliteWith* with, const QList<SqliteResultColumn*>& returning) :
SqliteInsert()
{
- initName(name1, name2);
- initMode(replace, onConflict);
+ init(name1, name2, replace, onConflict, returning);
columnNames = columns;
values = row;
@@ -40,11 +40,10 @@ SqliteInsert::SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QS
}
SqliteInsert::SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString &name1, const QString &name2, const QList<QString> &columns,
- SqliteSelect *select, SqliteWith* with, SqliteUpsert* upsert) :
+ SqliteSelect *select, SqliteWith* with, SqliteUpsert* upsert, const QList<SqliteResultColumn*>& returning) :
SqliteInsert()
{
- initName(name1, name2);
- initMode(replace, onConflict);
+ init(name1, name2, replace, onConflict, returning);
this->with = with;
if (with)
@@ -61,11 +60,10 @@ SqliteInsert::SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QS
}
SqliteInsert::SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString &name1, const QString &name2, const QList<QString> &columns,
- SqliteWith* with) :
+ SqliteWith* with, const QList<SqliteResultColumn*>& returning) :
SqliteInsert()
{
- initName(name1, name2);
- initMode(replace, onConflict);
+ init(name1, name2, replace, onConflict, returning);
this->with = with;
if (with)
@@ -104,7 +102,7 @@ QStringList SqliteInsert::getDatabasesInStatement()
TokenList SqliteInsert::getColumnTokensInStatement()
{
TokenList list;
- for (TokenPtr token : getTokenListFromNamedKey("idlist_opt", -1))
+ for (TokenPtr& token : getTokenListFromNamedKey("idlist_opt", -1))
{
if (token->type != Token::OTHER && token->type != Token::KEYWORD)
continue;
@@ -153,7 +151,7 @@ QList<SqliteStatement::FullObject> SqliteInsert::getFullObjectsInStatement()
return result;
}
-void SqliteInsert::initName(const QString& name1, const QString& name2)
+void SqliteInsert::init(const QString& name1, const QString& name2, bool replace, SqliteConflictAlgo onConflict, const QList<SqliteResultColumn*>& returning)
{
if (!name2.isNull())
{
@@ -162,12 +160,13 @@ void SqliteInsert::initName(const QString& name1, const QString& name2)
}
else
table = name1;
-}
-void SqliteInsert::initMode(bool replace, SqliteConflictAlgo onConflict)
-{
replaceKw = replace;
this->onConflict = onConflict;
+
+ this->returning = returning;
+ for (SqliteResultColumn*& retCol : this->returning)
+ retCol->setParent(this);
}
TokenList SqliteInsert::rebuildTokensFromContents()
@@ -212,6 +211,13 @@ TokenList SqliteInsert::rebuildTokensFromContents()
}
}
+ if (!returning.isEmpty())
+ {
+ builder.withKeyword("RETURNING");
+ for (SqliteResultColumn*& retCol : returning)
+ builder.withSpace().withStatement(retCol);
+ }
+
builder.withOperator(";");
return builder.build();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.h
index 40581cd..b409abc 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.h
@@ -3,10 +3,10 @@
#include "sqlitequery.h"
#include "sqliteconflictalgo.h"
+#include "sqliteselect.h"
#include <QString>
#include <QList>
-class SqliteSelect;
class SqliteExpr;
class SqliteWith;
class SqliteUpsert;
@@ -18,11 +18,14 @@ class API_EXPORT SqliteInsert : public SqliteQuery
SqliteInsert(const SqliteInsert& other);
SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1,
const QString& name2, const QList<QString>& columns,
- const QList<SqliteExpr*>& row, SqliteWith* with);
+ const QList<SqliteExpr*>& row, SqliteWith* with,
+ const QList<SqliteResultColumn*>& returning);
SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1,
- const QString& name2, const QList<QString>& columns, SqliteSelect* select, SqliteWith* with, SqliteUpsert* upsert = nullptr);
+ const QString& name2, const QList<QString>& columns, SqliteSelect* select, SqliteWith* with,
+ SqliteUpsert* upsert, const QList<SqliteResultColumn*>& returning);
SqliteInsert(bool replace, SqliteConflictAlgo onConflict, const QString& name1,
- const QString& name2, const QList<QString>& columns, SqliteWith* with);
+ const QString& name2, const QList<QString>& columns, SqliteWith* with,
+ const QList<SqliteResultColumn*>& returning);
~SqliteInsert();
SqliteStatement* clone();
@@ -38,8 +41,8 @@ class API_EXPORT SqliteInsert : public SqliteQuery
TokenList rebuildTokensFromContents();
private:
- void initName(const QString& name1, const QString& name2);
- void initMode(bool replace, SqliteConflictAlgo onConflict);
+ void init(const QString& name1, const QString& name2, bool replace, SqliteConflictAlgo onConflict,
+ const QList<SqliteResultColumn*>& returning);
public:
bool replaceKw = false;
@@ -52,6 +55,7 @@ class API_EXPORT SqliteInsert : public SqliteQuery
SqliteSelect* select = nullptr;
SqliteWith* with = nullptr;
SqliteUpsert* upsert = nullptr;
+ QList<SqliteResultColumn*> returning;
};
typedef QSharedPointer<SqliteInsert> SqliteInsertPtr;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
index 732c0a2..4db4b5d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
@@ -88,18 +88,20 @@ void SqliteOrderBy::setColumnName(const QString& name)
void SqliteOrderBy::setCollation(const QString& name)
{
- if (expr && expr->mode == SqliteExpr::Mode::COLLATE)
+ if (!expr)
+ return;
+
+ if (expr->mode == SqliteExpr::Mode::COLLATE)
{
expr->collation = name;
+ return;
}
- else
- {
- SqliteExpr* theExpr = expr;
- SqliteExpr* collationExpr = new SqliteExpr();
- collationExpr->initCollate(theExpr, name);
- theExpr->setParent(collationExpr);
- collationExpr->setParent(this);
- }
+
+ SqliteExpr* collationExpr = new SqliteExpr();
+ collationExpr->initCollate(expr, name);
+ expr->setParent(collationExpr);
+ collationExpr->setParent(this);
+ expr = collationExpr;
}
TokenList SqliteOrderBy::rebuildTokensFromContents()
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequerytype.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequerytype.cpp
index 1c04ca6..b70778e 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequerytype.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequerytype.cpp
@@ -60,9 +60,8 @@ QString sqliteQueryTypeToString(const SqliteQueryType& type)
return "Update";
case SqliteQueryType::Vacuum:
return "Vacuum";
- default:
- return QString();
}
+ return QString();
}
bool isDataReturningQuery(const SqliteQueryType& type)
@@ -98,7 +97,7 @@ bool isDataReturningQuery(const SqliteQueryType& type)
case SqliteQueryType::Savepoint:
case SqliteQueryType::Update:
case SqliteQueryType::Vacuum:
- default:
return false;
}
+ return false;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp
index e0439d2..501f7f3 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp
@@ -118,7 +118,7 @@ SqliteSelect::CompoundOperator SqliteSelect::compoundOperator(const QString& op)
void SqliteSelect::reset()
{
- for (Core* core : coreSelects)
+ for (Core*& core : coreSelects)
delete core;
coreSelects.clear();
@@ -443,7 +443,7 @@ QStringList SqliteSelect::Core::JoinConstraint::getColumnsInStatement()
TokenList SqliteSelect::Core::JoinConstraint::getColumnTokensInStatement()
{
TokenList list;
- for (TokenPtr token : getTokenListFromNamedKey("idlist", -1))
+ for (TokenPtr& token : getTokenListFromNamedKey("idlist", -1))
{
if (token->type == Token::OPERATOR) // a COMMA
continue;
@@ -573,7 +573,7 @@ SqliteSelect::Core::JoinSource::JoinSource(SqliteSelect::Core::SingleSource *sin
if (singleSource)
singleSource->setParent(this);
- for (JoinSourceOther* other : otherSources)
+ for (JoinSourceOther*& other : otherSources)
other->setParent(this);
}
@@ -667,11 +667,6 @@ TokenList SqliteSelect::Core::SingleSource::rebuildTokensFromContents()
TokenList SqliteSelect::Core::JoinOp::rebuildTokensFromContents()
{
- return rebuildTokensForSqlite3();
-}
-
-TokenList SqliteSelect::Core::JoinOp::rebuildTokensForSqlite3()
-{
StatementTokenBuilder builder;
if (comma)
{
@@ -682,9 +677,16 @@ TokenList SqliteSelect::Core::JoinOp::rebuildTokensForSqlite3()
if (naturalKw)
builder.withKeyword("NATURAL").withSpace();
- if (leftKw)
+ if (leftKw || fullKw || rightKw)
{
- builder.withKeyword("LEFT").withSpace();
+ if (leftKw)
+ builder.withKeyword("LEFT");
+ else if (fullKw)
+ builder.withKeyword("FULL");
+ else if (rightKw)
+ builder.withKeyword("RIGHT");
+
+ builder.withSpace();
if (outerKw)
builder.withKeyword("OUTER").withSpace();
}
@@ -780,7 +782,7 @@ TokenList SqliteSelect::rebuildTokensFromContents()
if (with)
builder.withStatement(with);
- for (SqliteSelect::Core* core : coreSelects)
+ for (SqliteSelect::Core*& core : coreSelects)
{
if (core->compoundOp == CompoundOperator::UNION_ALL)
{
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.h
index 58babfe..dfed9c2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.h
@@ -123,9 +123,6 @@ class API_EXPORT SqliteSelect : public SqliteQuery
protected:
TokenList rebuildTokensFromContents();
-
- private:
- TokenList rebuildTokensForSqlite3();
};
class API_EXPORT JoinConstraint : public SqliteStatement
@@ -232,5 +229,6 @@ class API_EXPORT SqliteSelect : public SqliteQuery
};
typedef QSharedPointer<SqliteSelect> SqliteSelectPtr;
+typedef SqliteSelect::Core::ResultColumn SqliteResultColumn;
#endif // SQLITESELECT_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitestatement.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitestatement.h
index 43a60ba..167321f 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitestatement.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitestatement.h
@@ -228,6 +228,12 @@ class API_EXPORT SqliteStatement : public QObject
virtual SqliteStatement* clone() = 0;
template <class T>
+ T* typeClone()
+ {
+ return dynamic_cast<T*>(clone());
+ }
+
+ template <class T>
void attach(QList<T*>& listMemberForChild, T* childStatementToAttach)
{
listMemberForChild << childStatementToAttach;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp
index 89c8195..55d8b34 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp
@@ -27,6 +27,7 @@ SqliteUpdate::SqliteUpdate(const SqliteUpdate& other) :
DEEP_COPY_FIELD(SqliteExpr, where);
DEEP_COPY_FIELD(SqliteWith, with);
DEEP_COPY_FIELD(SqliteSelect::Core::JoinSource, from);
+ DEEP_COPY_COLLECTION(SqliteResultColumn, returning);
}
SqliteUpdate::~SqliteUpdate()
@@ -34,7 +35,7 @@ SqliteUpdate::~SqliteUpdate()
}
SqliteUpdate::SqliteUpdate(SqliteConflictAlgo onConflict, const QString &name1, const QString &name2, bool notIndexedKw, const QString &indexedBy,
- const QList<ColumnAndValue>& values, SqliteSelect::Core::JoinSource* from, SqliteExpr *where, SqliteWith* with)
+ const QList<ColumnAndValue>& values, SqliteSelect::Core::JoinSource* from, SqliteExpr *where, SqliteWith* with, const QList<SqliteResultColumn*>& returning)
: SqliteUpdate()
{
this->onConflict = onConflict;
@@ -64,8 +65,12 @@ SqliteUpdate::SqliteUpdate(SqliteConflictAlgo onConflict, const QString &name1,
if (with)
with->setParent(this);
- for (const ColumnAndValue& keyValue : keyValueMap)
+ for (ColumnAndValue& keyValue : keyValueMap)
keyValue.second->setParent(this);
+
+ this->returning = returning;
+ for (SqliteResultColumn*& retCol : this->returning)
+ retCol->setParent(this);
}
SqliteStatement*SqliteUpdate::clone()
@@ -75,7 +80,7 @@ SqliteStatement*SqliteUpdate::clone()
SqliteExpr* SqliteUpdate::getValueForColumnSet(const QString& column)
{
- for (const ColumnAndValue& keyValue : keyValueMap)
+ for (ColumnAndValue& keyValue : keyValueMap)
{
if (keyValue.first == column)
return keyValue.second;
@@ -86,7 +91,7 @@ SqliteExpr* SqliteUpdate::getValueForColumnSet(const QString& column)
QStringList SqliteUpdate::getColumnsInStatement()
{
QStringList columns;
- for (const ColumnAndValue& keyValue : keyValueMap)
+ for (ColumnAndValue& keyValue : keyValueMap)
{
if (keyValue.first.type() == QVariant::StringList)
columns += keyValue.first.toStringList();
@@ -120,7 +125,7 @@ TokenList SqliteUpdate::getColumnTokensInStatement()
int end;
int start = 0;
SqliteExpr* expr = nullptr;
- for (const ColumnAndValue& keyValue : keyValueMap)
+ for (ColumnAndValue& keyValue : keyValueMap)
{
expr = keyValue.second;
end = setListTokens.indexOf(expr->tokens[0]);
@@ -205,7 +210,7 @@ TokenList SqliteUpdate::rebuildTokensFromContents()
builder.withKeyword("SET").withSpace();
bool first = true;
- for (const ColumnAndValue& keyVal : keyValueMap)
+ for (ColumnAndValue& keyVal : keyValueMap)
{
if (!first)
builder.withOperator(",").withSpace();
@@ -225,6 +230,13 @@ TokenList SqliteUpdate::rebuildTokensFromContents()
if (where)
builder.withSpace().withKeyword("WHERE").withStatement(where);
+ if (!returning.isEmpty())
+ {
+ builder.withKeyword("RETURNING");
+ for (SqliteResultColumn*& retCol : returning)
+ builder.withSpace().withStatement(retCol);
+ }
+
builder.withOperator(";");
return builder.build();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.h
index e843bcd..be121b2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.h
@@ -21,7 +21,7 @@ class API_EXPORT SqliteUpdate : public SqliteQuery
~SqliteUpdate();
SqliteUpdate(SqliteConflictAlgo onConflict, const QString& name1, const QString& name2,
bool notIndexedKw, const QString& indexedBy, const QList<ColumnAndValue>& values,
- SqliteSelect::Core::JoinSource* from, SqliteExpr* where, SqliteWith* with);
+ SqliteSelect::Core::JoinSource* from, SqliteExpr* where, SqliteWith* with, const QList<SqliteResultColumn*>& returning);
SqliteStatement* clone();
SqliteExpr* getValueForColumnSet(const QString& column);
@@ -36,6 +36,7 @@ class API_EXPORT SqliteUpdate : public SqliteQuery
SqliteSelect::Core::JoinSource* from = nullptr;
SqliteExpr* where = nullptr;
SqliteWith* with = nullptr;
+ QList<SqliteResultColumn*> returning;
protected:
QStringList getColumnsInStatement();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewindowdefinition.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewindowdefinition.cpp
index adf135f..69138b6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewindowdefinition.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewindowdefinition.cpp
@@ -265,7 +265,7 @@ SqliteWindowDefinition::Window::Frame::Bound::Bound(SqliteExpr* expr, const QStr
if (upper == "UNBOUNDED PRECEDING")
type = Type::UNBOUNDED_PRECEDING;
else if (expr && upper == "PRECEDING")
- type = Type::EXPR_FOLLOWING;
+ type = Type::EXPR_PRECEDING;
else if (upper == "UNBOUNDED FOLLOWING")
type = Type::UNBOUNDED_FOLLOWING;
else if (expr && upper == "FOLLOWING")
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.cpp
index 901ac56..c15b447 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.cpp
@@ -36,19 +36,19 @@ SqliteWith::CommonTableExpression::CommonTableExpression()
}
SqliteWith::CommonTableExpression::CommonTableExpression(const SqliteWith::CommonTableExpression& other) :
- SqliteStatement(other), table(other.table)
+ SqliteStatement(other), table(other.table), asMode(other.asMode)
{
DEEP_COPY_COLLECTION(SqliteIndexedColumn, indexedColumns);
DEEP_COPY_FIELD(SqliteSelect, select);
}
-SqliteWith::CommonTableExpression::CommonTableExpression(const QString& tableName, const QList<SqliteIndexedColumn*>& indexedColumns, SqliteSelect* select) :
- table(tableName), indexedColumns(indexedColumns), select(select)
+SqliteWith::CommonTableExpression::CommonTableExpression(const QString& tableName, const QList<SqliteIndexedColumn*>& indexedColumns, SqliteSelect* select, AsMode asMode) :
+ table(tableName), indexedColumns(indexedColumns), select(select), asMode(asMode)
{
select->setParent(this);
}
-SqliteStatement*SqliteWith::CommonTableExpression::clone()
+SqliteStatement* SqliteWith::CommonTableExpression::clone()
{
return new SqliteWith::CommonTableExpression(*this);
}
@@ -61,7 +61,19 @@ TokenList SqliteWith::CommonTableExpression::rebuildTokensFromContents()
if (indexedColumns.size() > 0)
builder.withSpace().withParLeft().withStatementList(indexedColumns).withParRight();
- builder.withSpace().withKeyword("AS").withSpace().withParLeft().withStatement(select).withParRight();
+ builder.withSpace().withKeyword("AS");
+ switch (asMode) {
+ case ANY:
+ break;
+ case MATERIALIZED:
+ builder.withKeyword("MATERIALIZED");
+ break;
+ case NOT_MATERIALIZED:
+ builder.withKeyword("NOT").withSpace().withKeyword("MATERIALIZED");
+ break;
+ }
+
+ builder.withSpace().withParLeft().withStatement(select).withParRight();
return builder.build();
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.h
index 30f8181..8429e53 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitewith.h
@@ -12,15 +12,23 @@ class SqliteWith : public SqliteStatement
class CommonTableExpression : public SqliteStatement
{
public:
+ enum AsMode {
+ ANY,
+ MATERIALIZED,
+ NOT_MATERIALIZED
+ };
+
CommonTableExpression();
CommonTableExpression(const CommonTableExpression& other);
- CommonTableExpression(const QString& tableName, const QList<SqliteIndexedColumn*>& indexedColumns, SqliteSelect* select);
+ CommonTableExpression(const QString& tableName, const QList<SqliteIndexedColumn*>& indexedColumns, SqliteSelect* select,
+ AsMode asMode);
SqliteStatement* clone();
QString table;
QList<SqliteIndexedColumn*> indexedColumns;
SqliteSelect* select = nullptr;
+ AsMode asMode = ANY;
protected:
TokenList rebuildTokensFromContents();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/keywords.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/keywords.cpp
index a5651db..3d877c8 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/keywords.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/keywords.cpp
@@ -118,6 +118,7 @@ void initKeywords()
keywords3["LIKE"] = TK3_LIKE_KW;
keywords3["LIMIT"] = TK3_LIMIT;
keywords3["MATCH"] = TK3_MATCH;
+ keywords3["MATERIALIZED"] = TK3_MATERIALIZED;
keywords3["NATURAL"] = TK3_JOIN_KW;
keywords3["NO"] = TK3_NO;
keywords3["NOT"] = TK3_NOT;
@@ -149,6 +150,7 @@ void initKeywords()
keywords3["RENAME"] = TK3_RENAME;
keywords3["REPLACE"] = TK3_REPLACE;
keywords3["RESTRICT"] = TK3_RESTRICT;
+ keywords3["RETURNING"] = TK3_RETURNING;
keywords3["RIGHT"] = TK3_JOIN_KW;
keywords3["ROLLBACK"] = TK3_ROLLBACK;
keywords3["ROW"] = TK3_ROW;
@@ -192,11 +194,11 @@ void initKeywords()
softKeywords3 << "ABORT" << "ACTION" << "AFTER" << "ALWAYS" << "ANALYZE" << "ASC" << "ATTACH" << "BEFORE" << "BEGIN" << "BY" << "CASCADE"
<< "CAST" << "COLUMNKW" << "CONFLICT" << "CURRENT" << "DATABASE" << "DEFERRED" << "DESC" << "DETACH" << "DO" << "EACH"
<< "END" << "EXCLUDE" << "EXCLUSIVE" << "EXPLAIN" << "FAIL" << "FIRST" << "FOLLOWING" << "FOR" << "GENERATED" << "GROUPS"
- << "IGNORE" << "IMMEDIATE" << "INDEXED" << "INITIALLY" << "INSTEAD" << "LAST" << "LIKE_KW" << "MATCH" << "NO" << "NULLS"
- << "OTHERS" << "PLAN" << "QUERY" << "KEY" << "OF" << "OFFSET" << "PARTITION" << "PRAGMA" << "PRECEDING" << "RAISE" << "RANGE"
- << "RECURSIVE" << "RELEASE" << "REPLACE" << "RESTRICT" << "ROW" << "ROWS" << "ROLLBACK" << "SAVEPOINT" << "TEMP" << "TIES"
- << "TRIGGER" << "UNBOUNDED" << "VACUUM" << "VIEW" << "VIRTUAL" << "WITH" << "WITHOUT" << "REINDEX" << "RENAME" << "IF"
- << "CURRENT_DATE" << "CURRENT_TIME" << "CURRENT_TIMESTAMP";
+ << "IGNORE" << "IMMEDIATE" << "INDEXED" << "INITIALLY" << "INSTEAD" << "LAST" << "LIKE_KW" << "MATCH" << "MATERIALIZED" << "NO"
+ << "NULLS" << "OTHERS" << "PLAN" << "QUERY" << "KEY" << "OF" << "OFFSET" << "PARTITION" << "PRAGMA" << "PRECEDING" << "RAISE"
+ << "RANGE" << "RECURSIVE" << "RELEASE" << "REPLACE" << "RESTRICT" << "ROW" << "ROWS" << "ROLLBACK" << "SAVEPOINT" << "TEMP"
+ << "TIES" << "TRIGGER" << "UNBOUNDED" << "VACUUM" << "VIEW" << "VIRTUAL" << "WITH" << "WITHOUT" << "REINDEX" << "RENAME"
+ << "IF" << "CURRENT_DATE" << "CURRENT_TIME" << "CURRENT_TIMESTAMP" << "WINDOW" << "OVER" << "FILTER";
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
index 3b239dc..5bb7412 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
@@ -782,7 +782,7 @@ static void yy_reduce(
#endif
{
yy_shift(yypParser,yyact,yygoto,&yygotominor);
- if (parserContext->setupTokens)
+ if (parserContext->setupTokens && yypParser->yyidx >= 0)
{
QList<Token*>* tokensPtr = yypParser->yystack[yypParser->yyidx].tokens;
*tokensPtr = allTokensWithAllInherited + *tokensPtr;
@@ -1023,4 +1023,4 @@ void Parse(
}
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
return;
-} \ No newline at end of file
+}
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");
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
index 10db9ce..07b2d06 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
@@ -202,6 +202,13 @@ class API_EXPORT Lexer
QString sqlToTokenize;
/**
+ * @brief Token produced by the lexer previously.
+ *
+ * This is used only by the stateful lexer processing (i.e. with getToken())
+ */
+ TokenPtr prevTokenProcessed;
+
+ /**
* @brief Current tokenizer position in the sqlToTokenize.
*
* This position index is used to track which SQL characters should be tokenized
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
index 65f9222..6b76768 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.cpp
@@ -4,6 +4,7 @@
#include "sqlite3_parse.h"
#include "common/utils.h"
#include "common/utils_sql.h"
+#include "common/unused.h"
#include <QByteArray>
#include <QChar>
@@ -13,19 +14,131 @@
// Low-level lexer routines based on tokenizer from SQLite 3.7.15.2
//
+int lexerGetToken(const QString& z, TokenPtr& token, bool tolerant);
+
bool isIdChar(const QChar& c)
{
return c.isPrint() && !c.isSpace() && !doesObjectNeedWrapping(c);
}
-int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tolerant)
+// From SQLite source code:
+/*
+** The following three functions are called immediately after the tokenizer
+** reads the keywords WINDOW, OVER and FILTER, respectively, to determine
+** whether the token should be treated as a keyword or an SQL identifier.
+** This cannot be handled by the usual lemon %fallback method, due to
+** the ambiguity in some constructions. e.g.
+**
+** SELECT sum(x) OVER ...
+**
+** In the above, "OVER" might be a keyword, or it might be an alias for the
+** sum(x) expression. If a "%fallback ID OVER" directive were added to
+** grammar, then SQLite would always treat "OVER" as an alias, making it
+** impossible to call a window-function without a FILTER clause.
+**
+** WINDOW is treated as a keyword if:
+**
+** * the following token is an identifier, or a keyword that can fallback
+** to being an identifier, and
+** * the token after than one is TK_AS.
+**
+** OVER is a keyword if:
+**
+** * the previous token was TK_RP, and
+** * the next token is either TK_LP or an identifier.
+**
+** FILTER is a keyword if:
+**
+** * the previous token was TK_RP, and
+** * the next token is TK_LP.
+*/
+
+int sqlite3ParserFallback(int iToken); // defined in parse.y
+int lexerWindowSpecificGetToken(const QString& z, TokenPtr& token, const TokenPtr& prevToken, bool tolerant)
+{
+ int lgt = 0;
+ do
+ lgt += lexerGetToken(z.mid(lgt), token, prevToken, tolerant);
+ while (token->lemonType == TK3_SPACE);
+
+ if (
+ token->lemonType == TK3_ID ||
+ token->lemonType == TK3_STRING ||
+ token->lemonType == TK3_JOIN_KW ||
+ token->lemonType == TK3_WINDOW ||
+ token->lemonType == TK3_OVER ||
+ sqlite3ParserFallback(token->lemonType) == TK3_ID
+ ) {
+ token->lemonType = TK3_ID;
+ token->type = Token::OTHER;
+ }
+
+ return lgt;
+}
+
+void lexerHandleWindowKeyword(const QString& z, TokenPtr& token, const TokenPtr& prevToken, bool tolerant)
{
- if (sqliteVersion < 3 || sqliteVersion > 3)
+ UNUSED(prevToken);
+ TokenPtr firstAfter = TokenPtr::create();
+ int lgt = lexerWindowSpecificGetToken(z, firstAfter, token, tolerant);
+ if (firstAfter->lemonType != TK3_ID)
{
- qCritical() << "lexerGetToken() called with invalid sqliteVersion:" << sqliteVersion;
- return 0;
+ token->lemonType = TK3_ID;
+ token->type = Token::OTHER;
+ return;
+ }
+
+ TokenPtr secondAfter = TokenPtr::create();
+ lexerWindowSpecificGetToken(z.mid(lgt), secondAfter, firstAfter, tolerant);
+ if (secondAfter->lemonType != TK3_AS)
+ {
+ token->lemonType = TK3_ID;
+ token->type = Token::OTHER;
+ return;
+ }
+}
+
+void lexerHandleOverKeyword(const QString& z, TokenPtr& token, const TokenPtr& prevToken, bool tolerant)
+{
+ if (prevToken && prevToken->lemonType == TK3_RP) {
+ TokenPtr firstAfter = TokenPtr::create();
+ lexerWindowSpecificGetToken(z, firstAfter, token, tolerant);
+ if (firstAfter->lemonType == TK3_LP || firstAfter->lemonType == TK3_ID)
+ return; // remains OVER keyword
+ }
+ token->lemonType = TK3_ID;
+ token->type = Token::OTHER;
+}
+
+void lexerHandleFilterKeyword(const QString& z, TokenPtr& token, const TokenPtr& prevToken, bool tolerant)
+{
+ if (prevToken && prevToken->lemonType == TK3_RP) {
+ TokenPtr firstAfter = TokenPtr::create();
+ lexerWindowSpecificGetToken(z, firstAfter, token, tolerant);
+ if (firstAfter->lemonType == TK3_LP)
+ return; // remains FILTER keyword
}
+ token->lemonType = TK3_ID;
+ token->type = Token::OTHER;
+}
+
+int lexerGetToken(const QString& z, TokenPtr& token, const TokenPtr& prevToken, int sqliteVersion, bool tolerant)
+{
+ UNUSED(sqliteVersion);
+ int lgt = lexerGetToken(z, token, tolerant);
+ if (token->lemonType == TK3_WINDOW)
+ lexerHandleWindowKeyword(z.mid(lgt), token, prevToken, tolerant);
+ else if (token->lemonType == TK3_OVER)
+ lexerHandleOverKeyword(z.mid(lgt), token, prevToken, tolerant);
+ else if (token->lemonType == TK3_FILTER)
+ lexerHandleFilterKeyword(z.mid(lgt), token, prevToken, tolerant);
+
+ return lgt;
+}
+
+int lexerGetToken(const QString& z, TokenPtr& token, bool tolerant)
+{
if (tolerant && !token.dynamicCast<TolerantToken>())
{
qCritical() << "lexerGetToken() called with tolerant=true, but not a TolerantToken entity!";
@@ -54,6 +167,12 @@ int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tole
token->type = Token::COMMENT;
return i;
}
+ else if (charAt(z, 1) == '>')
+ {
+ token->lemonType = TK3_PTR;
+ token->type = Token::OPERATOR;
+ return (charAt(z, 2) == '>') ? 3 : 2;
+ }
token->lemonType = TK3_MINUS;
token->type = Token::OPERATOR;
return 1;
@@ -453,7 +572,7 @@ int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tole
for (i = 1; isIdChar(charAt(z, i)); i++) {}
- token->lemonType = getKeywordId3(z.mid(0, i));
+ token->lemonType = getKeywordId3(z.mid(0, i));
if (token->lemonType == TK3_ID)
token->type = Token::OTHER;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.h b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.h
index d642177..4f2cc35 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer_low_lev.h
@@ -11,6 +11,7 @@
* @brief Low level tokenizer function used by the Lexer.
* @param z Query to tokenize.
* @param[out] token Token container to fill with values. Can be also a TolerantToken.
+ * @param prevToken Previous token returned from this function (if this is a subsequent call), or empty pointer othwewise. It's required for a contextual logic.
* @param sqliteVersion SQLite version, for which the tokenizer should work (currently only 3).
* Version affects the list of recognized keywords, a BLOB expression and an object name wrapper with the grave accent character (`).
* @param tolerant If true, then all multi-line and unfinished tokens (strings, comments)
@@ -23,6 +24,6 @@
* Most of the method code was taken from SQLite tokenizer code. It is modified to support both SQLite 3 gramma
* and other SQLiteStudio specific features.
*/
-int lexerGetToken(const QString& z, TokenPtr token, int sqliteVersion, bool tolerant = false);
+int lexerGetToken(const QString& z, TokenPtr& token, const TokenPtr& prevToken, int sqliteVersion, bool tolerant = false);
#endif // LEXER_LOW_LEV_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp
index b54c786..b80d45a 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser.cpp
@@ -214,7 +214,7 @@ void Parser::expectedTokenLookup(void* pParser)
Token::CTX_ALIAS, Token::CTX_TABLE_NEW, Token::CTX_INDEX_NEW, Token::CTX_TRIGGER_NEW,
Token::CTX_VIEW_NEW, Token::CTX_COLUMN_NEW, Token::CTX_TRANSACTION,
Token::CTX_CONSTRAINT, Token::CTX_COLUMN_TYPE, Token::CTX_OLD_KW, Token::CTX_NEW_KW,
- Token::CTX_ROWID_KW, Token::INVALID
+ Token::CTX_ROWID_KW, Token::CTX_STRICT_KW, Token::INVALID
});
for (TokenPtr token : tokenSet)
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
index 8b14f07..b8534cc 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.cpp
@@ -75,3 +75,13 @@ bool ParserTermOrLiteral::isLiteral() const
{
return !nameMode;
}
+
+ParserStubCreateTableOption* parserStubFindCreateTableOption(const QList<ParserStubCreateTableOption*>& options, ParserStubCreateTableOption::Type type)
+{
+ return findFirst<ParserStubCreateTableOption>(options, [type](auto opt) -> bool {return opt->type == type;});
+}
+
+ParserStubCreateTableOption::ParserStubCreateTableOption(Type type) :
+ type(type)
+{
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.h b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.h
index 5160b10..ec71f8b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parser_helper_stubs.h
@@ -68,6 +68,21 @@ struct ParserStubTransDetails
SqliteConflictAlgo onConflict = SqliteConflictAlgo::null;
};
+struct ParserStubCreateTableOption
+{
+ enum Type
+ {
+ WITHOUT_ROWID,
+ STRICT
+ };
+
+ ParserStubCreateTableOption(Type type);
+
+ Type type;
+};
+
+ParserStubCreateTableOption* parserStubFindCreateTableOption(const QList<ParserStubCreateTableOption*>& options, ParserStubCreateTableOption::Type type);
+
typedef QList<SqliteCreateTable::Column*> ParserCreateTableColumnList;
typedef QList<SqliteCreateTable::Constraint*> ParserCreateTableConstraintList;
typedef QList<SqliteCreateTable::Column::Constraint*> ParserCreateTableColumnConstraintList;
@@ -83,6 +98,7 @@ typedef QList<ParserSetValue> ParserSetValueList;
typedef QList<SqliteIndexedColumn*> ParserIndexedColumnList;
typedef QList<ParserExprList> ParserExprNestedList;
typedef QList<SqliteWindowDefinition*> ParserWindowDefList;
+typedef QList<ParserStubCreateTableOption*> ParserCreateTableOptionList;
/**
* @brief Stores parameters for defferable foreign keys.
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
index a9eae82..a275882 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp
@@ -167,9 +167,9 @@ const QList<ParserError *> &ParserContext::getErrors()
QVariant *ParserContext::handleNumberToken(const QString &tokenValue)
{
recentNumberIsCandidateForMaxNegative = false;
+ bool ok;
if (tokenValue.startsWith("0x", Qt::CaseInsensitive))
{
- bool ok;
qint64 i64 = tokenValue.toLongLong(&ok, 16);
if (!ok)
{
@@ -183,10 +183,12 @@ QVariant *ParserContext::handleNumberToken(const QString &tokenValue)
recentNumberIsCandidateForMaxNegative = true;
return new QVariant(static_cast<qint64>(0L));
}
- else
- {
- return new QVariant(QVariant(tokenValue).toLongLong());
- }
+
+ QVariant varLong = QVariant(tokenValue).toLongLong(&ok);
+ if (!ok)
+ varLong = QVariant(tokenValue).toDouble();
+
+ return new QVariant(varLong);
}
bool ParserContext::isCandidateForMaxNegativeNumber() const
@@ -196,7 +198,7 @@ bool ParserContext::isCandidateForMaxNegativeNumber() const
void ParserContext::cleanUp()
{
- for (ParserError* err : errors)
+ for (ParserError*& err : errors)
delete err;
parsedQueries.clear();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
index c980096..7be06fb 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
@@ -22,7 +22,6 @@
#include "parser/ast/sqliteattach.h"
#include "parser/ast/sqlitebegintrans.h"
#include "parser/ast/sqlitecommittrans.h"
-#include "parser/ast/sqlitecopy.h"
#include "parser/ast/sqlitecreateindex.h"
#include "parser/ast/sqlitecreatetable.h"
#include "parser/ast/sqlitecreatetrigger.h"
@@ -62,6 +61,7 @@
#define assert(X) Q_ASSERT(X)
#define UNUSED_PARAMETER(X) (void)(X)
#define DONT_INHERIT_TOKENS(X) noTokenInheritanceFields << X
+
/* Next is all token values, in a form suitable for use by makeheaders.
** This section will be null unless lemon is run with the -m switch.
*/
@@ -112,77 +112,80 @@
** defined, then do no error processing.
*/
#define YYCODETYPE unsigned short int
-#define YYNOCODE 321
+#define YYNOCODE 328
#define YYACTIONTYPE unsigned short int
-#define YYWILDCARD 78
+#define YYWILDCARD 80
#define sqlite3_parseTOKENTYPE Token*
typedef union {
int yyinit;
sqlite3_parseTOKENTYPE yy0;
- SqliteWith* yy1;
- SqliteLimit* yy4;
- ParserDeferSubClause* yy9;
- SqliteSelect::Core::JoinSource* yy31;
- SqliteExpr::LikeOp* yy40;
- SqliteWindowDefinition::Window::Frame* yy41;
- ParserCreateTableColumnList* yy42;
- ParserCreateTableColumnConstraintList* yy51;
- ParserResultColumnList* yy53;
- SqliteColumnType* yy57;
- SqliteWindowDefinition::Window::Frame::Exclude* yy63;
- ParserExprList* yy71;
- SqliteCreateTrigger::Scope* yy83;
- ParserStubTransDetails* yy84;
- ParserStubExplain* yy91;
- SqliteForeignKey::Condition::Reaction* yy104;
- ParserQueryList* yy110;
- SqliteCreateTable::Column* yy147;
- SqliteCreateTrigger::Event* yy151;
- ParserStubAlias* yy200;
- ParserSetValueList* yy201;
- SqliteSelect::Core::JoinOp* yy221;
- ParserIndexedColumnList* yy223;
- QVariant* yy229;
- SqliteCreateTable::Constraint* yy246;
- SqliteFilterOver* yy247;
- SqliteFilterOver::Over* yy248;
- SqliteWindowDefinition* yy266;
- SqliteIndexedColumn* yy268;
- SqliteSelect::Core::JoinConstraint* yy295;
- ParserWindowDefList* yy299;
- SqliteInitially* yy312;
- SqliteSelect* yy313;
+ SqliteCreateTable::Column* yy3;
+ SqliteFilterOver::Over* yy11;
+ SqliteWith::CommonTableExpression::AsMode* yy21;
+ ParserResultColumnList* yy27;
+ SqliteSortOrder* yy35;
+ SqliteFilterOver::Filter* yy39;
+ SqliteQuery* yy41;
+ ParserDeferSubClause* yy53;
+ SqliteForeignKey::Condition::Reaction* yy106;
+ ParserOtherSourceList* yy107;
+ SqliteIndexedColumn* yy110;
+ ParserCreateTableConstraintList* yy115;
+ SqliteCreateTrigger::Time* yy120;
+ int* yy130;
+ SqliteConflictAlgo* yy136;
+ SqliteSelect::CompoundOperator* yy142;
+ SqliteWindowDefinition::Window::Frame::RangeOrRows* yy143;
+ SqliteWith::CommonTableExpression* yy146;
+ SqliteWindowDefinition::Window::Frame* yy149;
+ ParserFkConditionList* yy156;
+ SqliteWith* yy161;
+ SqliteWindowDefinition::Window* yy162;
+ ParserCteList* yy164;
+ QStringList* yy173;
+ SqliteFilterOver* yy181;
+ SqliteExpr* yy186;
+ SqliteForeignKey::Condition* yy205;
+ SqliteSelect::Core::JoinConstraint* yy215;
+ bool* yy225;
+ ParserOrderByList* yy226;
+ SqliteWindowDefinition::Window::Frame::Exclude* yy237;
+ ParserQueryList* yy240;
+ SqliteCreateTrigger::Event* yy259;
+ SqliteColumnType* yy267;
+ SqliteExpr::LikeOp* yy274;
+ SqliteWindowDefinition::Window::Frame::Bound* yy285;
+ SqliteSelect* yy297;
+ ParserIndexedBy* yy300;
+ ParserStubInsertOrReplace* yy308;
+ SqliteNulls* yy315;
QString* yy319;
- SqliteWindowDefinition::Window* yy334;
- SqliteQuery* yy363;
- SqliteSelect::CompoundOperator* yy382;
- int* yy386;
- SqliteFilterOver::Filter* yy397;
- SqliteUpsert* yy400;
- ParserOrderByList* yy403;
- SqliteConflictAlgo* yy418;
- SqliteWindowDefinition::Window::Frame::RangeOrRows* yy419;
- ParserFullName* yy440;
- SqliteSelect::Core::SingleSource* yy441;
- SqliteWindowDefinition::Window::Frame::Bound* yy442;
- SqliteWith::CommonTableExpression* yy446;
- ParserOtherSourceList* yy451;
- SqliteCreateTable::Column::Constraint* yy464;
- SqliteSelect::Core* yy470;
- ParserExprNestedList* yy486;
- ParserCreateTableConstraintList* yy493;
- ParserStubInsertOrReplace* yy504;
- SqliteForeignKey::Condition* yy507;
- SqliteExpr* yy512;
- SqliteCreateTrigger::Time* yy532;
- SqliteSortOrder* yy549;
- QStringList* yy575;
- SqliteNulls* yy579;
- ParserFkConditionList* yy584;
- ParserTermOrLiteral* yy590;
- ParserIndexedBy* yy592;
- ParserCteList* yy593;
- bool* yy611;
+ ParserCreateTableColumnConstraintList* yy323;
+ SqliteUpsert* yy332;
+ SqliteLimit* yy360;
+ SqliteSelect::Core* yy378;
+ ParserTermOrLiteral* yy380;
+ ParserCreateTableColumnList* yy390;
+ QVariant* yy393;
+ ParserFullName* yy396;
+ SqliteCreateTable::Constraint* yy400;
+ SqliteCreateTable::Column::Constraint* yy448;
+ SqliteSelect::Core::JoinOp* yy449;
+ ParserCreateTableOptionList* yy455;
+ SqliteCreateTrigger::Scope* yy456;
+ ParserStubExplain* yy499;
+ ParserStubTransDetails* yy512;
+ ParserExprNestedList* yy522;
+ ParserWindowDefList* yy525;
+ SqliteSelect::Core::JoinSource* yy553;
+ SqliteWindowDefinition* yy562;
+ SqliteSelect::Core::SingleSource* yy595;
+ SqliteInitially* yy612;
+ ParserExprList* yy615;
+ ParserSetValueList* yy621;
+ ParserIndexedColumnList* yy627;
+ ParserStubAlias* yy628;
+ ParserStubCreateTableOption* yy629;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
@@ -191,8 +194,8 @@ typedef union {
#define sqlite3_parseARG_PDECL ,ParserContext* parserContext
#define sqlite3_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext
#define sqlite3_parseARG_STORE yypParser->parserContext = parserContext
-#define YYNSTATE 844
-#define YYNRULE 472
+#define YYNSTATE 870
+#define YYNRULE 487
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
@@ -264,806 +267,778 @@ static const YYMINORTYPE yyzerominor = { 0 };
** shifting non-terminals after a reduce.
** yy_default[] Default action for each state.
*/
-#define YY_ACTTAB_COUNT (3037)
+#define YY_ACTTAB_COUNT (2866)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 510, 625, 284, 836, 655, 288, 841, 64, 65, 509,
- /* 10 */ 339, 626, 501, 795, 795, 62, 62, 63, 63, 63,
- /* 20 */ 63, 351, 61, 61, 61, 61, 60, 60, 59, 59,
- /* 30 */ 59, 58, 253, 485, 1085, 61, 61, 61, 61, 60,
- /* 40 */ 60, 59, 59, 59, 58, 253, 835, 290, 794, 1085,
- /* 50 */ 71, 506, 63, 63, 63, 63, 40, 61, 61, 61,
- /* 60 */ 61, 60, 60, 59, 59, 59, 58, 253, 805, 635,
- /* 70 */ 836, 347, 785, 836, 592, 70, 452, 54, 817, 88,
- /* 80 */ 338, 835, 835, 59, 59, 59, 58, 253, 1085, 836,
- /* 90 */ 806, 223, 836, 835, 51, 52, 693, 1085, 635, 508,
- /* 100 */ 325, 53, 1012, 348, 261, 415, 622, 621, 88, 2,
- /* 110 */ 1012, 835, 681, 117, 793, 286, 498, 1012, 324, 807,
- /* 120 */ 833, 634, 834, 833, 510, 810, 157, 466, 453, 439,
- /* 130 */ 436, 435, 793, 809, 808, 807, 501, 1012, 563, 682,
- /* 140 */ 682, 611, 486, 746, 1078, 327, 677, 434, 366, 575,
- /* 150 */ 1012, 254, 1012, 1012, 396, 403, 1012, 296, 425, 303,
- /* 160 */ 749, 1012, 1012, 1012, 1012, 1012, 793, 274, 456, 793,
- /* 170 */ 748, 783, 12, 356, 565, 506, 273, 586, 77, 69,
- /* 180 */ 39, 138, 69, 1012, 701, 440, 22, 701, 768, 834,
- /* 190 */ 833, 805, 834, 833, 14, 836, 785, 111, 1, 489,
- /* 200 */ 798, 54, 702, 804, 835, 702, 587, 589, 834, 833,
- /* 210 */ 588, 834, 833, 806, 223, 570, 659, 701, 51, 52,
- /* 220 */ 701, 137, 508, 649, 706, 53, 1078, 836, 1029, 1029,
- /* 230 */ 21, 412, 386, 2, 1078, 172, 117, 328, 793, 705,
- /* 240 */ 498, 1078, 157, 807, 833, 439, 436, 435, 510, 810,
- /* 250 */ 392, 75, 443, 188, 421, 250, 793, 809, 808, 807,
- /* 260 */ 501, 1078, 784, 434, 1178, 275, 935, 835, 648, 56,
- /* 270 */ 455, 366, 687, 686, 1078, 130, 1078, 1078, 174, 121,
- /* 280 */ 326, 445, 321, 444, 159, 1078, 1078, 1078, 1078, 811,
- /* 290 */ 793, 700, 812, 793, 162, 783, 12, 245, 319, 506,
- /* 300 */ 60, 60, 59, 59, 59, 58, 253, 1078, 840, 526,
- /* 310 */ 836, 650, 651, 513, 834, 833, 563, 805, 836, 798,
- /* 320 */ 785, 717, 805, 23, 611, 54, 527, 526, 158, 257,
- /* 330 */ 835, 797, 699, 695, 835, 835, 242, 241, 240, 806,
- /* 340 */ 223, 523, 51, 52, 806, 208, 834, 833, 508, 53,
- /* 350 */ 1063, 356, 564, 508, 384, 526, 171, 2, 1063, 523,
- /* 360 */ 548, 77, 793, 786, 498, 1063, 431, 807, 833, 798,
- /* 370 */ 578, 329, 836, 810, 723, 579, 466, 451, 729, 465,
- /* 380 */ 793, 809, 808, 807, 835, 1063, 789, 523, 786, 547,
- /* 390 */ 546, 388, 788, 545, 502, 475, 497, 366, 1063, 729,
- /* 400 */ 1063, 1063, 754, 407, 798, 729, 692, 1160, 1160, 1063,
- /* 410 */ 329, 1063, 1063, 76, 793, 635, 117, 793, 516, 783,
- /* 420 */ 12, 786, 787, 835, 519, 88, 370, 108, 835, 834,
- /* 430 */ 833, 1063, 319, 117, 464, 361, 479, 834, 833, 731,
- /* 440 */ 836, 1163, 792, 836, 64, 65, 509, 339, 1160, 1160,
- /* 450 */ 795, 795, 62, 62, 63, 63, 63, 63, 781, 61,
- /* 460 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 470 */ 836, 807, 729, 722, 361, 55, 792, 810, 58, 253,
- /* 480 */ 167, 73, 777, 776, 604, 809, 808, 807, 798, 1160,
- /* 490 */ 1160, 834, 833, 729, 64, 65, 509, 339, 66, 729,
- /* 500 */ 795, 795, 62, 62, 63, 63, 63, 63, 474, 61,
- /* 510 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 520 */ 836, 770, 836, 798, 712, 771, 64, 65, 509, 339,
- /* 530 */ 1160, 1160, 795, 795, 62, 62, 63, 63, 63, 63,
- /* 540 */ 765, 61, 61, 61, 61, 60, 60, 59, 59, 59,
- /* 550 */ 58, 253, 764, 729, 613, 836, 562, 562, 44, 834,
- /* 560 */ 833, 191, 834, 833, 566, 805, 246, 685, 45, 454,
- /* 570 */ 482, 365, 1160, 1160, 729, 772, 636, 252, 835, 662,
- /* 580 */ 729, 1317, 184, 514, 3, 538, 613, 806, 208, 834,
- /* 590 */ 833, 765, 1163, 313, 1163, 661, 508, 393, 835, 357,
- /* 600 */ 1269, 742, 792, 764, 539, 540, 835, 1269, 130, 64,
- /* 610 */ 65, 509, 339, 1160, 1160, 795, 795, 62, 62, 63,
- /* 620 */ 63, 63, 63, 742, 61, 61, 61, 61, 60, 60,
- /* 630 */ 59, 59, 59, 58, 253, 818, 792, 769, 158, 834,
- /* 640 */ 833, 834, 833, 113, 566, 754, 836, 76, 64, 65,
- /* 650 */ 509, 339, 1160, 1160, 795, 795, 62, 62, 63, 63,
- /* 660 */ 63, 63, 488, 61, 61, 61, 61, 60, 60, 59,
- /* 670 */ 59, 59, 58, 253, 834, 833, 541, 775, 836, 357,
- /* 680 */ 1268, 330, 734, 473, 87, 814, 836, 1268, 836, 64,
- /* 690 */ 65, 509, 339, 1160, 1160, 795, 795, 62, 62, 63,
- /* 700 */ 63, 63, 63, 447, 61, 61, 61, 61, 60, 60,
- /* 710 */ 59, 59, 59, 58, 253, 63, 63, 63, 63, 56,
- /* 720 */ 61, 61, 61, 61, 60, 60, 59, 59, 59, 58,
- /* 730 */ 253, 494, 64, 65, 509, 339, 370, 671, 795, 795,
- /* 740 */ 62, 62, 63, 63, 63, 63, 813, 61, 61, 61,
- /* 750 */ 61, 60, 60, 59, 59, 59, 58, 253, 811, 1086,
- /* 760 */ 571, 812, 190, 488, 309, 834, 833, 312, 591, 64,
- /* 770 */ 65, 509, 339, 469, 1086, 795, 795, 62, 62, 63,
- /* 780 */ 63, 63, 63, 836, 61, 61, 61, 61, 60, 60,
- /* 790 */ 59, 59, 59, 58, 253, 107, 1087, 834, 833, 836,
- /* 800 */ 758, 798, 1164, 836, 485, 834, 833, 834, 833, 349,
- /* 810 */ 802, 1087, 755, 1086, 78, 836, 468, 835, 64, 65,
- /* 820 */ 509, 339, 1086, 571, 795, 795, 62, 62, 63, 63,
- /* 830 */ 63, 63, 510, 61, 61, 61, 61, 60, 60, 59,
- /* 840 */ 59, 59, 58, 253, 501, 1088, 271, 270, 1214, 836,
- /* 850 */ 1087, 78, 603, 493, 791, 64, 65, 509, 339, 1087,
- /* 860 */ 1088, 795, 795, 62, 62, 63, 63, 63, 63, 538,
- /* 870 */ 61, 61, 61, 61, 60, 60, 59, 59, 59, 58,
- /* 880 */ 253, 798, 835, 506, 1167, 777, 776, 20, 539, 398,
- /* 890 */ 117, 675, 69, 1022, 580, 581, 409, 701, 337, 1088,
- /* 900 */ 78, 753, 834, 833, 785, 391, 780, 779, 1088, 54,
- /* 910 */ 8, 835, 167, 576, 745, 702, 805, 620, 834, 833,
- /* 920 */ 798, 670, 834, 833, 327, 677, 51, 52, 44, 835,
- /* 930 */ 701, 1277, 1277, 53, 834, 833, 390, 112, 806, 223,
- /* 940 */ 1229, 2, 1170, 236, 235, 484, 793, 508, 498, 836,
- /* 950 */ 282, 807, 833, 1164, 117, 1164, 712, 810, 68, 136,
- /* 960 */ 399, 775, 782, 835, 793, 809, 808, 807, 807, 85,
- /* 970 */ 714, 836, 835, 504, 810, 466, 467, 42, 576, 775,
- /* 980 */ 1277, 1277, 809, 808, 807, 816, 759, 772, 499, 252,
- /* 990 */ 86, 19, 767, 643, 442, 832, 366, 470, 793, 111,
- /* 1000 */ 798, 793, 830, 783, 12, 27, 64, 65, 509, 339,
- /* 1010 */ 836, 831, 795, 795, 62, 62, 63, 63, 63, 63,
- /* 1020 */ 836, 61, 61, 61, 61, 60, 60, 59, 59, 59,
- /* 1030 */ 58, 253, 50, 1229, 48, 64, 65, 509, 339, 74,
- /* 1040 */ 544, 795, 795, 62, 62, 63, 63, 63, 63, 510,
- /* 1050 */ 61, 61, 61, 61, 60, 60, 59, 59, 59, 58,
- /* 1060 */ 253, 501, 1243, 532, 477, 136, 836, 329, 834, 833,
- /* 1070 */ 483, 724, 4, 83, 836, 500, 780, 779, 835, 341,
- /* 1080 */ 835, 335, 611, 798, 617, 617, 64, 65, 509, 339,
- /* 1090 */ 834, 833, 795, 795, 62, 62, 63, 63, 63, 63,
- /* 1100 */ 506, 61, 61, 61, 61, 60, 60, 59, 59, 59,
- /* 1110 */ 58, 253, 480, 476, 798, 668, 720, 667, 586, 77,
- /* 1120 */ 739, 785, 114, 168, 608, 1172, 54, 532, 6, 834,
- /* 1130 */ 833, 265, 310, 756, 836, 744, 311, 481, 615, 834,
- /* 1140 */ 833, 78, 608, 51, 52, 835, 1172, 587, 589, 775,
- /* 1150 */ 53, 588, 1172, 374, 238, 510, 738, 805, 2, 736,
- /* 1160 */ 271, 270, 836, 793, 689, 498, 836, 501, 807, 833,
- /* 1170 */ 835, 56, 413, 247, 810, 117, 450, 724, 4, 806,
- /* 1180 */ 223, 793, 809, 808, 807, 834, 833, 836, 508, 5,
- /* 1190 */ 535, 836, 531, 834, 833, 717, 1172, 414, 836, 777,
- /* 1200 */ 776, 729, 798, 537, 1172, 536, 506, 844, 835, 733,
- /* 1210 */ 416, 1172, 805, 371, 761, 793, 466, 457, 793, 730,
- /* 1220 */ 783, 12, 729, 78, 732, 835, 338, 785, 729, 805,
- /* 1230 */ 18, 1172, 54, 798, 806, 118, 395, 366, 597, 835,
- /* 1240 */ 718, 786, 835, 508, 1172, 641, 1172, 1172, 549, 51,
- /* 1250 */ 52, 806, 118, 834, 833, 1172, 53, 1172, 1172, 737,
- /* 1260 */ 508, 317, 17, 305, 2, 381, 786, 259, 111, 793,
- /* 1270 */ 837, 498, 666, 713, 807, 833, 835, 1172, 843, 3,
- /* 1280 */ 810, 834, 833, 487, 432, 834, 833, 793, 809, 808,
- /* 1290 */ 807, 111, 754, 836, 529, 665, 713, 836, 406, 786,
- /* 1300 */ 170, 602, 1165, 1277, 1277, 594, 834, 833, 110, 754,
- /* 1310 */ 834, 833, 338, 842, 549, 640, 639, 834, 833, 602,
- /* 1320 */ 707, 793, 529, 594, 793, 835, 783, 12, 631, 64,
- /* 1330 */ 65, 509, 339, 492, 757, 795, 795, 62, 62, 63,
- /* 1340 */ 63, 63, 63, 704, 61, 61, 61, 61, 60, 60,
- /* 1350 */ 59, 59, 59, 58, 253, 64, 65, 509, 339, 298,
- /* 1360 */ 16, 795, 795, 62, 62, 63, 63, 63, 63, 11,
- /* 1370 */ 61, 61, 61, 61, 60, 60, 59, 59, 59, 58,
- /* 1380 */ 253, 395, 64, 65, 509, 339, 743, 4, 795, 795,
- /* 1390 */ 62, 62, 63, 63, 63, 63, 117, 61, 61, 61,
- /* 1400 */ 61, 60, 60, 59, 59, 59, 58, 253, 422, 728,
- /* 1410 */ 4, 559, 834, 833, 166, 168, 834, 833, 56, 496,
- /* 1420 */ 757, 836, 727, 4, 64, 65, 509, 339, 49, 559,
- /* 1430 */ 795, 795, 62, 62, 63, 63, 63, 63, 165, 61,
- /* 1440 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1450 */ 607, 836, 667, 709, 64, 65, 509, 339, 842, 676,
- /* 1460 */ 795, 795, 62, 62, 63, 63, 63, 63, 708, 61,
- /* 1470 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1480 */ 164, 46, 725, 4, 64, 65, 509, 339, 163, 674,
- /* 1490 */ 795, 795, 62, 62, 63, 63, 63, 63, 696, 61,
- /* 1500 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1510 */ 246, 685, 836, 454, 64, 65, 509, 339, 124, 657,
- /* 1520 */ 795, 795, 62, 62, 63, 63, 63, 63, 460, 61,
- /* 1530 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1540 */ 834, 833, 419, 691, 64, 65, 509, 339, 458, 189,
- /* 1550 */ 795, 795, 62, 62, 63, 63, 63, 63, 7, 61,
- /* 1560 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1570 */ 834, 833, 726, 4, 64, 65, 509, 339, 690, 316,
- /* 1580 */ 795, 795, 62, 62, 63, 63, 63, 63, 15, 61,
- /* 1590 */ 61, 61, 61, 60, 60, 59, 59, 59, 58, 253,
- /* 1600 */ 612, 1193, 64, 65, 509, 339, 274, 456, 795, 795,
- /* 1610 */ 62, 62, 63, 63, 63, 63, 825, 61, 61, 61,
- /* 1620 */ 61, 60, 60, 59, 59, 59, 58, 253, 574, 688,
- /* 1630 */ 836, 834, 833, 64, 65, 509, 339, 836, 28, 795,
- /* 1640 */ 795, 62, 62, 63, 63, 63, 63, 684, 61, 61,
- /* 1650 */ 61, 61, 60, 60, 59, 59, 59, 58, 253, 836,
- /* 1660 */ 1244, 64, 65, 509, 339, 683, 836, 795, 795, 62,
- /* 1670 */ 62, 63, 63, 63, 63, 510, 61, 61, 61, 61,
- /* 1680 */ 60, 60, 59, 59, 59, 58, 253, 501, 1242, 420,
- /* 1690 */ 477, 64, 65, 509, 339, 116, 168, 795, 795, 62,
- /* 1700 */ 62, 63, 63, 63, 63, 798, 61, 61, 61, 61,
- /* 1710 */ 60, 60, 59, 59, 59, 58, 253, 123, 600, 280,
- /* 1720 */ 302, 255, 679, 805, 258, 168, 506, 421, 297, 401,
- /* 1730 */ 337, 279, 115, 835, 353, 44, 835, 448, 337, 476,
- /* 1740 */ 835, 823, 835, 835, 836, 806, 208, 785, 836, 834,
- /* 1750 */ 833, 835, 54, 37, 508, 25, 834, 833, 293, 133,
- /* 1760 */ 300, 127, 525, 821, 299, 44, 350, 836, 260, 51,
- /* 1770 */ 52, 352, 178, 835, 263, 805, 53, 104, 834, 833,
- /* 1780 */ 78, 510, 122, 441, 2, 834, 833, 333, 835, 793,
- /* 1790 */ 525, 498, 805, 501, 807, 833, 477, 806, 223, 805,
- /* 1800 */ 810, 713, 256, 754, 568, 835, 508, 793, 809, 808,
- /* 1810 */ 807, 358, 835, 556, 806, 223, 167, 354, 759, 176,
- /* 1820 */ 956, 806, 118, 508, 798, 78, 766, 623, 647, 836,
- /* 1830 */ 508, 36, 506, 713, 267, 836, 638, 331, 438, 717,
- /* 1840 */ 731, 793, 82, 247, 793, 478, 783, 12, 703, 836,
- /* 1850 */ 318, 266, 835, 785, 433, 366, 836, 367, 54, 584,
- /* 1860 */ 712, 836, 332, 834, 833, 81, 634, 834, 833, 24,
- /* 1870 */ 169, 838, 366, 160, 449, 51, 52, 80, 826, 754,
- /* 1880 */ 264, 517, 53, 824, 835, 289, 834, 833, 156, 561,
- /* 1890 */ 2, 835, 324, 397, 717, 793, 835, 498, 835, 517,
- /* 1900 */ 807, 833, 698, 616, 10, 510, 810, 835, 429, 380,
- /* 1910 */ 187, 152, 822, 793, 809, 808, 807, 501, 247, 101,
- /* 1920 */ 99, 64, 38, 509, 339, 835, 35, 795, 795, 62,
- /* 1930 */ 62, 63, 63, 63, 63, 836, 61, 61, 61, 61,
- /* 1940 */ 60, 60, 59, 59, 59, 58, 253, 793, 834, 833,
- /* 1950 */ 793, 713, 783, 12, 834, 833, 506, 34, 33, 836,
- /* 1960 */ 819, 805, 32, 555, 379, 98, 805, 644, 834, 833,
- /* 1970 */ 552, 836, 805, 835, 835, 834, 833, 785, 717, 835,
- /* 1980 */ 834, 833, 54, 806, 223, 835, 378, 697, 806, 223,
- /* 1990 */ 836, 835, 508, 376, 806, 118, 555, 508, 694, 51,
- /* 2000 */ 52, 97, 653, 508, 836, 805, 53, 595, 596, 590,
- /* 2010 */ 585, 510, 410, 337, 2, 656, 552, 247, 835, 793,
- /* 2020 */ 387, 498, 805, 501, 807, 833, 835, 806, 223, 836,
- /* 2030 */ 810, 583, 105, 168, 805, 835, 508, 793, 809, 808,
- /* 2040 */ 807, 366, 577, 377, 806, 118, 490, 835, 408, 336,
- /* 2050 */ 147, 383, 754, 508, 834, 833, 806, 216, 295, 13,
- /* 2060 */ 815, 292, 506, 181, 471, 508, 192, 624, 558, 92,
- /* 2070 */ 534, 793, 619, 835, 793, 533, 783, 12, 834, 833,
- /* 2080 */ 394, 337, 287, 785, 836, 366, 557, 803, 54, 139,
- /* 2090 */ 834, 833, 515, 375, 835, 835, 90, 247, 790, 262,
- /* 2100 */ 835, 759, 754, 582, 243, 51, 52, 109, 836, 834,
- /* 2110 */ 833, 835, 53, 503, 754, 239, 369, 510, 368, 382,
- /* 2120 */ 2, 315, 610, 834, 833, 793, 835, 498, 805, 501,
- /* 2130 */ 807, 833, 839, 179, 805, 180, 810, 829, 827, 805,
- /* 2140 */ 828, 835, 719, 793, 809, 808, 807, 835, 834, 833,
- /* 2150 */ 806, 194, 835, 836, 177, 835, 806, 204, 836, 508,
- /* 2160 */ 512, 806, 226, 285, 554, 508, 430, 553, 506, 759,
- /* 2170 */ 508, 511, 715, 836, 805, 614, 835, 793, 836, 805,
- /* 2180 */ 793, 72, 783, 12, 836, 835, 103, 835, 836, 785,
- /* 2190 */ 175, 820, 835, 836, 54, 801, 806, 224, 800, 173,
- /* 2200 */ 710, 806, 232, 834, 833, 508, 274, 836, 754, 836,
- /* 2210 */ 508, 51, 52, 835, 754, 343, 606, 23, 53, 754,
- /* 2220 */ 43, 569, 472, 510, 342, 805, 2, 834, 833, 67,
- /* 2230 */ 836, 793, 186, 498, 253, 501, 807, 833, 835, 799,
- /* 2240 */ 805, 836, 810, 752, 495, 805, 84, 806, 231, 793,
- /* 2250 */ 809, 808, 807, 835, 754, 251, 508, 283, 835, 754,
- /* 2260 */ 269, 550, 806, 233, 268, 47, 334, 806, 237, 57,
- /* 2270 */ 835, 508, 834, 833, 506, 751, 508, 834, 833, 488,
- /* 2280 */ 750, 161, 836, 793, 747, 601, 793, 389, 783, 12,
- /* 2290 */ 1168, 741, 834, 833, 835, 785, 244, 834, 833, 134,
- /* 2300 */ 54, 520, 463, 834, 833, 754, 756, 834, 833, 678,
- /* 2310 */ 522, 735, 834, 833, 135, 835, 572, 51, 52, 459,
- /* 2320 */ 754, 320, 835, 654, 53, 754, 834, 833, 834, 833,
- /* 2330 */ 456, 805, 2, 1170, 835, 680, 835, 793, 551, 498,
- /* 2340 */ 160, 560, 807, 833, 835, 663, 669, 510, 810, 834,
- /* 2350 */ 833, 542, 664, 806, 272, 793, 809, 808, 807, 501,
- /* 2360 */ 834, 833, 508, 446, 65, 509, 339, 385, 322, 795,
- /* 2370 */ 795, 62, 62, 63, 63, 63, 63, 805, 61, 61,
- /* 2380 */ 61, 61, 60, 60, 59, 59, 59, 58, 253, 793,
- /* 2390 */ 835, 660, 793, 276, 783, 12, 760, 372, 506, 806,
- /* 2400 */ 340, 834, 833, 632, 659, 805, 835, 716, 508, 314,
- /* 2410 */ 307, 754, 805, 404, 658, 637, 835, 618, 835, 785,
- /* 2420 */ 630, 360, 835, 835, 54, 835, 835, 806, 230, 155,
- /* 2430 */ 629, 521, 628, 346, 806, 203, 508, 805, 507, 627,
- /* 2440 */ 154, 51, 52, 508, 835, 308, 835, 359, 53, 30,
- /* 2450 */ 835, 835, 102, 510, 428, 132, 2, 754, 835, 806,
- /* 2460 */ 221, 793, 423, 498, 153, 501, 807, 833, 508, 249,
- /* 2470 */ 294, 805, 810, 291, 281, 835, 805, 411, 277, 793,
- /* 2480 */ 809, 808, 807, 835, 835, 754, 835, 835, 278, 835,
- /* 2490 */ 306, 835, 754, 806, 225, 426, 31, 151, 806, 364,
- /* 2500 */ 609, 835, 508, 131, 506, 100, 150, 508, 605, 149,
- /* 2510 */ 185, 106, 418, 793, 599, 148, 793, 754, 783, 12,
- /* 2520 */ 417, 593, 129, 128, 405, 785, 402, 146, 573, 96,
- /* 2530 */ 54, 145, 400, 95, 144, 94, 143, 93, 142, 30,
- /* 2540 */ 543, 141, 29, 530, 518, 26, 126, 51, 52, 373,
- /* 2550 */ 528, 754, 524, 805, 53, 125, 754, 140, 805, 193,
- /* 2560 */ 79, 778, 2, 344, 774, 763, 835, 793, 721, 498,
- /* 2570 */ 491, 835, 834, 833, 711, 806, 363, 183, 810, 323,
- /* 2580 */ 806, 362, 182, 655, 508, 793, 809, 808, 807, 508,
- /* 2590 */ 437, 234, 598, 304, 424, 509, 339, 301, 355, 795,
- /* 2600 */ 795, 62, 62, 63, 63, 63, 63, 9, 61, 61,
- /* 2610 */ 61, 61, 60, 60, 59, 59, 59, 58, 253, 793,
- /* 2620 */ 796, 773, 793, 762, 783, 12, 642, 805, 248, 345,
- /* 2630 */ 427, 41, 505, 754, 805, 740, 652, 91, 754, 567,
- /* 2640 */ 835, 805, 646, 78, 673, 645, 836, 835, 672, 806,
- /* 2650 */ 220, 1318, 633, 805, 835, 1318, 806, 206, 508, 1318,
- /* 2660 */ 805, 1318, 1318, 806, 219, 508, 835, 805, 1318, 1318,
- /* 2670 */ 1318, 1318, 508, 835, 1318, 806, 218, 1318, 1318, 805,
- /* 2680 */ 835, 805, 806, 205, 508, 1318, 1318, 1318, 1318, 806,
- /* 2690 */ 202, 508, 835, 805, 835, 1318, 1318, 1318, 508, 1318,
- /* 2700 */ 1318, 806, 119, 806, 201, 1318, 835, 754, 1318, 1318,
- /* 2710 */ 508, 1318, 508, 1318, 754, 806, 199, 1318, 1318, 805,
- /* 2720 */ 1318, 754, 1318, 1318, 508, 1318, 1318, 1318, 1318, 1318,
- /* 2730 */ 1318, 1318, 835, 754, 1318, 1318, 1318, 1318, 1318, 1318,
- /* 2740 */ 754, 806, 227, 1318, 1318, 1318, 1318, 754, 1318, 1318,
- /* 2750 */ 508, 1318, 1318, 805, 1318, 1318, 805, 1318, 805, 754,
- /* 2760 */ 1318, 754, 1318, 1318, 1318, 1318, 835, 1318, 1318, 835,
- /* 2770 */ 1318, 835, 805, 754, 1318, 806, 229, 1318, 806, 222,
- /* 2780 */ 806, 228, 1318, 1318, 508, 835, 1318, 508, 805, 508,
- /* 2790 */ 1318, 1318, 1318, 1318, 806, 217, 1318, 1318, 1318, 754,
- /* 2800 */ 805, 835, 1318, 508, 805, 1318, 1318, 1318, 1318, 1318,
- /* 2810 */ 806, 214, 1318, 835, 1318, 1318, 1318, 835, 1318, 508,
- /* 2820 */ 1318, 1318, 806, 198, 805, 1318, 806, 197, 1318, 1318,
- /* 2830 */ 1318, 508, 1318, 754, 1318, 508, 754, 835, 754, 1318,
- /* 2840 */ 805, 1318, 1318, 1318, 1318, 1318, 806, 196, 1318, 1318,
- /* 2850 */ 1318, 1318, 754, 835, 805, 508, 805, 1318, 1318, 1318,
- /* 2860 */ 805, 1318, 806, 195, 1318, 1318, 1318, 835, 754, 835,
- /* 2870 */ 1318, 508, 1318, 835, 1318, 805, 806, 207, 806, 212,
- /* 2880 */ 754, 1318, 806, 211, 754, 508, 1318, 508, 835, 1318,
- /* 2890 */ 805, 508, 805, 1318, 805, 1318, 1318, 806, 120, 1318,
- /* 2900 */ 1318, 1318, 1318, 835, 754, 835, 508, 835, 1318, 1318,
- /* 2910 */ 1318, 1318, 806, 210, 806, 209, 806, 215, 1318, 805,
- /* 2920 */ 754, 508, 1318, 508, 1318, 508, 1318, 1318, 1318, 1318,
- /* 2930 */ 1318, 1318, 835, 1318, 754, 1318, 754, 1318, 1318, 1318,
- /* 2940 */ 754, 806, 213, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
- /* 2950 */ 508, 1318, 1318, 805, 1318, 754, 805, 1318, 1318, 1318,
- /* 2960 */ 1318, 1318, 1318, 1318, 1318, 1318, 835, 1318, 1318, 835,
- /* 2970 */ 754, 1318, 754, 1318, 754, 806, 200, 1318, 806, 89,
- /* 2980 */ 1318, 1318, 1318, 1318, 508, 1318, 1318, 462, 1318, 1318,
- /* 2990 */ 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 754,
- /* 3000 */ 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
- /* 3010 */ 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
- /* 3020 */ 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
- /* 3030 */ 1318, 1318, 1318, 754, 1318, 1318, 754,
+ /* 0 */ 530, 162, 431, 771, 456, 453, 452, 27, 67, 68,
+ /* 10 */ 529, 282, 521, 770, 818, 818, 65, 65, 66, 66,
+ /* 20 */ 66, 66, 451, 64, 64, 64, 64, 63, 63, 62,
+ /* 30 */ 62, 62, 61, 59, 263, 464, 1230, 807, 67, 68,
+ /* 40 */ 529, 282, 58, 116, 818, 818, 65, 65, 66, 66,
+ /* 50 */ 66, 66, 526, 64, 64, 64, 64, 63, 63, 62,
+ /* 60 */ 62, 62, 61, 59, 263, 681, 1280, 62, 62, 62,
+ /* 70 */ 61, 59, 263, 808, 432, 66, 66, 66, 66, 56,
+ /* 80 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 90 */ 59, 263, 834, 862, 14, 835, 53, 54, 715, 704,
+ /* 100 */ 704, 353, 828, 619, 55, 1042, 508, 633, 295, 781,
+ /* 110 */ 530, 299, 2, 1042, 343, 861, 861, 816, 1042, 354,
+ /* 120 */ 867, 518, 521, 830, 859, 829, 230, 672, 673, 833,
+ /* 130 */ 1108, 821, 324, 861, 528, 327, 816, 832, 831, 830,
+ /* 140 */ 406, 1042, 39, 143, 608, 80, 862, 128, 515, 291,
+ /* 150 */ 472, 265, 709, 708, 1042, 301, 1042, 1042, 828, 585,
+ /* 160 */ 1042, 290, 526, 366, 368, 1042, 1042, 1042, 1042, 1042,
+ /* 170 */ 1042, 816, 861, 609, 816, 611, 806, 12, 610, 364,
+ /* 180 */ 560, 829, 230, 808, 510, 506, 163, 351, 1042, 56,
+ /* 190 */ 528, 782, 132, 82, 861, 371, 587, 365, 21, 428,
+ /* 200 */ 561, 562, 367, 183, 805, 72, 53, 54, 109, 89,
+ /* 210 */ 723, 81, 497, 127, 55, 1108, 860, 859, 483, 468,
+ /* 220 */ 530, 560, 2, 1108, 862, 297, 448, 816, 1108, 724,
+ /* 230 */ 791, 518, 521, 830, 859, 861, 107, 809, 498, 833,
+ /* 240 */ 381, 561, 414, 8, 723, 172, 816, 832, 831, 830,
+ /* 250 */ 369, 1108, 181, 745, 821, 1059, 1059, 141, 72, 52,
+ /* 260 */ 758, 50, 809, 723, 1108, 502, 1108, 1108, 688, 860,
+ /* 270 */ 859, 861, 526, 563, 798, 1108, 1108, 1108, 1108, 861,
+ /* 280 */ 1108, 816, 724, 78, 816, 194, 806, 12, 386, 862,
+ /* 290 */ 734, 382, 687, 808, 334, 79, 809, 723, 1108, 56,
+ /* 300 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 310 */ 59, 263, 751, 858, 415, 798, 53, 54, 790, 614,
+ /* 320 */ 856, 722, 828, 116, 55, 1093, 742, 167, 413, 857,
+ /* 330 */ 469, 173, 2, 1093, 751, 42, 861, 816, 1093, 809,
+ /* 340 */ 751, 518, 821, 830, 859, 829, 230, 860, 859, 833,
+ /* 350 */ 1358, 190, 535, 3, 528, 487, 816, 832, 831, 830,
+ /* 360 */ 815, 1093, 711, 759, 809, 721, 717, 58, 122, 505,
+ /* 370 */ 522, 500, 746, 4, 1093, 817, 1093, 1093, 767, 828,
+ /* 380 */ 1197, 1197, 483, 470, 600, 1093, 828, 1093, 1093, 601,
+ /* 390 */ 1093, 816, 91, 861, 816, 815, 806, 12, 809, 44,
+ /* 400 */ 861, 113, 829, 215, 381, 307, 442, 317, 1093, 829,
+ /* 410 */ 123, 528, 860, 859, 1200, 284, 473, 423, 528, 67,
+ /* 420 */ 68, 529, 282, 1197, 1197, 818, 818, 65, 65, 66,
+ /* 430 */ 66, 66, 66, 74, 64, 64, 64, 64, 63, 63,
+ /* 440 */ 62, 62, 62, 61, 59, 263, 63, 63, 62, 62,
+ /* 450 */ 62, 61, 59, 263, 800, 799, 172, 332, 504, 73,
+ /* 460 */ 626, 775, 116, 1197, 1197, 821, 389, 247, 775, 67,
+ /* 470 */ 68, 529, 282, 69, 264, 818, 818, 65, 65, 66,
+ /* 480 */ 66, 66, 66, 412, 64, 64, 64, 64, 63, 63,
+ /* 490 */ 62, 62, 62, 61, 59, 263, 496, 58, 142, 753,
+ /* 500 */ 588, 734, 67, 68, 529, 282, 1197, 1197, 818, 818,
+ /* 510 */ 65, 65, 66, 66, 66, 66, 862, 64, 64, 64,
+ /* 520 */ 64, 63, 63, 62, 62, 62, 61, 59, 263, 788,
+ /* 530 */ 449, 703, 828, 830, 340, 116, 372, 1307, 177, 833,
+ /* 540 */ 657, 787, 1307, 45, 505, 363, 861, 832, 831, 830,
+ /* 550 */ 643, 92, 339, 254, 861, 829, 230, 407, 803, 802,
+ /* 560 */ 285, 1197, 1197, 380, 528, 342, 699, 795, 658, 261,
+ /* 570 */ 1200, 81, 1200, 66, 66, 66, 66, 40, 64, 64,
+ /* 580 */ 64, 64, 63, 63, 62, 62, 62, 61, 59, 263,
+ /* 590 */ 693, 862, 483, 484, 281, 280, 862, 1201, 286, 836,
+ /* 600 */ 67, 68, 529, 282, 1197, 1197, 818, 818, 65, 65,
+ /* 610 */ 66, 66, 66, 66, 381, 64, 64, 64, 64, 63,
+ /* 620 */ 63, 62, 62, 62, 61, 59, 263, 862, 1, 751,
+ /* 630 */ 430, 141, 798, 827, 812, 800, 799, 788, 647, 860,
+ /* 640 */ 859, 677, 328, 1197, 1197, 861, 409, 492, 648, 787,
+ /* 650 */ 87, 751, 67, 68, 529, 282, 861, 751, 818, 818,
+ /* 660 */ 65, 65, 66, 66, 66, 66, 862, 64, 64, 64,
+ /* 670 */ 64, 63, 63, 62, 62, 62, 61, 59, 263, 251,
+ /* 680 */ 250, 249, 67, 68, 529, 282, 1197, 1197, 818, 818,
+ /* 690 */ 65, 65, 66, 66, 66, 66, 176, 64, 64, 64,
+ /* 700 */ 64, 63, 63, 62, 62, 62, 61, 59, 263, 764,
+ /* 710 */ 502, 135, 777, 656, 860, 859, 657, 1266, 162, 860,
+ /* 720 */ 859, 456, 453, 452, 861, 811, 840, 92, 843, 357,
+ /* 730 */ 861, 350, 764, 255, 707, 531, 471, 841, 163, 451,
+ /* 740 */ 839, 684, 861, 584, 584, 467, 746, 4, 665, 459,
+ /* 750 */ 860, 859, 271, 1201, 644, 1201, 862, 683, 67, 68,
+ /* 760 */ 529, 282, 23, 491, 818, 818, 65, 65, 66, 66,
+ /* 770 */ 66, 66, 486, 64, 64, 64, 64, 63, 63, 62,
+ /* 780 */ 62, 62, 61, 59, 263, 67, 68, 529, 282, 860,
+ /* 790 */ 859, 818, 818, 65, 65, 66, 66, 66, 66, 751,
+ /* 800 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 810 */ 59, 263, 530, 1266, 866, 862, 636, 485, 344, 534,
+ /* 820 */ 457, 751, 503, 768, 521, 344, 180, 751, 597, 466,
+ /* 830 */ 633, 697, 861, 482, 419, 67, 68, 529, 282, 861,
+ /* 840 */ 386, 818, 818, 65, 65, 66, 66, 66, 66, 810,
+ /* 850 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 860 */ 59, 263, 821, 828, 526, 342, 699, 570, 80, 401,
+ /* 870 */ 353, 122, 119, 61, 59, 263, 842, 861, 585, 860,
+ /* 880 */ 859, 81, 744, 376, 861, 808, 829, 223, 692, 481,
+ /* 890 */ 376, 56, 135, 259, 804, 528, 569, 592, 568, 325,
+ /* 900 */ 283, 567, 633, 326, 965, 520, 803, 802, 53, 54,
+ /* 910 */ 22, 246, 245, 861, 371, 586, 55, 179, 126, 341,
+ /* 920 */ 462, 336, 461, 164, 2, 1207, 537, 71, 57, 816,
+ /* 930 */ 602, 603, 425, 518, 79, 830, 859, 334, 830, 608,
+ /* 940 */ 80, 833, 588, 165, 833, 775, 793, 1215, 816, 832,
+ /* 950 */ 831, 830, 832, 831, 830, 795, 519, 261, 197, 862,
+ /* 960 */ 789, 438, 1202, 354, 1315, 1315, 173, 690, 609, 689,
+ /* 970 */ 611, 255, 707, 610, 471, 613, 172, 861, 372, 1306,
+ /* 980 */ 798, 293, 821, 816, 1306, 821, 816, 792, 806, 12,
+ /* 990 */ 67, 68, 529, 282, 429, 861, 818, 818, 65, 65,
+ /* 1000 */ 66, 66, 66, 66, 435, 64, 64, 64, 64, 63,
+ /* 1010 */ 63, 62, 62, 62, 61, 59, 263, 67, 68, 529,
+ /* 1020 */ 282, 734, 81, 818, 818, 65, 65, 66, 66, 66,
+ /* 1030 */ 66, 780, 64, 64, 64, 64, 63, 63, 62, 62,
+ /* 1040 */ 62, 61, 59, 263, 67, 68, 529, 282, 662, 661,
+ /* 1050 */ 818, 818, 65, 65, 66, 66, 66, 66, 1251, 64,
+ /* 1060 */ 64, 64, 64, 63, 63, 62, 62, 62, 61, 59,
+ /* 1070 */ 263, 779, 512, 566, 778, 639, 639, 870, 67, 68,
+ /* 1080 */ 529, 282, 860, 859, 818, 818, 65, 65, 66, 66,
+ /* 1090 */ 66, 66, 51, 64, 64, 64, 64, 63, 63, 62,
+ /* 1100 */ 62, 62, 61, 59, 263, 821, 411, 794, 862, 67,
+ /* 1110 */ 68, 529, 282, 118, 698, 818, 818, 65, 65, 66,
+ /* 1120 */ 66, 66, 66, 437, 64, 64, 64, 64, 63, 63,
+ /* 1130 */ 62, 62, 62, 61, 59, 263, 834, 861, 862, 835,
+ /* 1140 */ 196, 67, 68, 529, 282, 696, 48, 818, 818, 65,
+ /* 1150 */ 65, 66, 66, 66, 66, 776, 64, 64, 64, 64,
+ /* 1160 */ 63, 63, 62, 62, 62, 61, 59, 263, 1204, 869,
+ /* 1170 */ 3, 436, 67, 68, 529, 282, 173, 679, 818, 818,
+ /* 1180 */ 65, 65, 66, 66, 66, 66, 868, 64, 64, 64,
+ /* 1190 */ 64, 63, 63, 62, 62, 62, 61, 59, 263, 774,
+ /* 1200 */ 267, 862, 622, 67, 68, 529, 282, 173, 195, 818,
+ /* 1210 */ 818, 65, 65, 66, 66, 66, 66, 735, 64, 64,
+ /* 1220 */ 64, 64, 63, 63, 62, 62, 62, 61, 59, 263,
+ /* 1230 */ 507, 860, 859, 309, 67, 68, 529, 282, 44, 331,
+ /* 1240 */ 818, 818, 65, 65, 66, 66, 66, 66, 862, 64,
+ /* 1250 */ 64, 64, 64, 63, 63, 62, 62, 62, 61, 59,
+ /* 1260 */ 263, 860, 859, 671, 729, 862, 67, 68, 529, 282,
+ /* 1270 */ 720, 28, 818, 818, 65, 65, 66, 66, 66, 66,
+ /* 1280 */ 735, 64, 64, 64, 64, 63, 63, 62, 62, 62,
+ /* 1290 */ 61, 59, 263, 460, 1281, 67, 68, 529, 282, 862,
+ /* 1300 */ 719, 818, 818, 65, 65, 66, 66, 66, 66, 670,
+ /* 1310 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 1320 */ 59, 263, 530, 1279, 860, 859, 304, 726, 320, 354,
+ /* 1330 */ 735, 44, 269, 81, 521, 837, 47, 494, 67, 68,
+ /* 1340 */ 529, 282, 861, 861, 818, 818, 65, 65, 66, 66,
+ /* 1350 */ 66, 66, 862, 64, 64, 64, 64, 63, 63, 62,
+ /* 1360 */ 62, 62, 61, 59, 263, 598, 46, 828, 530, 606,
+ /* 1370 */ 828, 860, 859, 590, 526, 509, 20, 716, 373, 517,
+ /* 1380 */ 521, 861, 554, 494, 861, 821, 862, 493, 860, 859,
+ /* 1390 */ 829, 230, 828, 829, 230, 808, 843, 256, 399, 528,
+ /* 1400 */ 501, 56, 528, 6, 862, 846, 861, 437, 44, 986,
+ /* 1410 */ 861, 112, 117, 122, 645, 829, 215, 122, 53, 54,
+ /* 1420 */ 526, 861, 860, 859, 528, 77, 55, 408, 417, 862,
+ /* 1430 */ 483, 474, 598, 493, 2, 751, 862, 766, 516, 816,
+ /* 1440 */ 778, 808, 861, 518, 513, 830, 859, 56, 554, 381,
+ /* 1450 */ 530, 833, 381, 499, 539, 828, 441, 751, 816, 832,
+ /* 1460 */ 831, 830, 521, 751, 53, 54, 22, 862, 861, 861,
+ /* 1470 */ 625, 629, 55, 689, 775, 860, 859, 862, 829, 215,
+ /* 1480 */ 2, 864, 122, 19, 266, 816, 739, 528, 551, 518,
+ /* 1490 */ 761, 830, 859, 816, 862, 861, 816, 833, 806, 12,
+ /* 1500 */ 861, 828, 526, 548, 816, 832, 831, 830, 821, 860,
+ /* 1510 */ 859, 345, 756, 642, 755, 861, 551, 828, 637, 81,
+ /* 1520 */ 820, 549, 548, 808, 829, 230, 5, 860, 859, 56,
+ /* 1530 */ 311, 861, 760, 528, 862, 765, 4, 775, 862, 816,
+ /* 1540 */ 829, 230, 816, 863, 806, 12, 53, 54, 754, 528,
+ /* 1550 */ 548, 122, 860, 859, 55, 752, 122, 403, 18, 860,
+ /* 1560 */ 859, 277, 2, 281, 280, 728, 821, 816, 122, 490,
+ /* 1570 */ 862, 518, 346, 830, 859, 753, 735, 276, 316, 833,
+ /* 1580 */ 727, 387, 268, 381, 750, 4, 816, 832, 831, 830,
+ /* 1590 */ 860, 859, 861, 17, 630, 557, 16, 256, 344, 381,
+ /* 1600 */ 860, 859, 1315, 1315, 800, 799, 821, 530, 559, 862,
+ /* 1610 */ 558, 593, 861, 630, 749, 4, 553, 860, 859, 521,
+ /* 1620 */ 411, 816, 494, 725, 816, 11, 806, 12, 67, 38,
+ /* 1630 */ 529, 282, 284, 473, 818, 818, 65, 65, 66, 66,
+ /* 1640 */ 66, 66, 821, 64, 64, 64, 64, 63, 63, 62,
+ /* 1650 */ 62, 62, 61, 59, 263, 828, 115, 860, 859, 526,
+ /* 1660 */ 348, 860, 859, 275, 747, 4, 862, 828, 422, 861,
+ /* 1670 */ 825, 353, 495, 735, 547, 58, 593, 851, 829, 123,
+ /* 1680 */ 808, 861, 828, 852, 828, 861, 56, 528, 171, 821,
+ /* 1690 */ 829, 123, 862, 860, 859, 353, 861, 861, 861, 528,
+ /* 1700 */ 868, 784, 547, 53, 54, 829, 230, 829, 123, 861,
+ /* 1710 */ 270, 55, 748, 4, 528, 730, 528, 256, 90, 2,
+ /* 1720 */ 274, 170, 347, 169, 816, 168, 635, 175, 518, 821,
+ /* 1730 */ 830, 859, 860, 859, 398, 862, 833, 775, 718, 174,
+ /* 1740 */ 129, 657, 402, 816, 832, 831, 830, 477, 828, 775,
+ /* 1750 */ 862, 541, 92, 313, 862, 861, 392, 312, 713, 635,
+ /* 1760 */ 850, 782, 861, 475, 381, 821, 775, 861, 739, 710,
+ /* 1770 */ 7, 829, 123, 849, 861, 712, 862, 663, 816, 256,
+ /* 1780 */ 528, 816, 861, 806, 12, 782, 68, 529, 282, 860,
+ /* 1790 */ 859, 818, 818, 65, 65, 66, 66, 66, 66, 847,
+ /* 1800 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 1810 */ 59, 263, 530, 15, 465, 860, 859, 706, 705, 81,
+ /* 1820 */ 390, 862, 121, 701, 521, 120, 273, 529, 282, 862,
+ /* 1830 */ 775, 818, 818, 65, 65, 66, 66, 66, 66, 396,
+ /* 1840 */ 64, 64, 64, 64, 63, 63, 62, 62, 62, 61,
+ /* 1850 */ 59, 263, 828, 138, 862, 848, 828, 862, 860, 859,
+ /* 1860 */ 37, 25, 72, 1052, 526, 669, 861, 723, 741, 861,
+ /* 1870 */ 861, 545, 862, 860, 859, 829, 230, 860, 859, 829,
+ /* 1880 */ 201, 845, 861, 353, 528, 808, 724, 458, 528, 862,
+ /* 1890 */ 545, 56, 660, 571, 36, 861, 862, 861, 455, 860,
+ /* 1900 */ 859, 723, 1315, 1315, 86, 739, 862, 333, 53, 54,
+ /* 1910 */ 524, 85, 488, 24, 530, 450, 55, 323, 545, 861,
+ /* 1920 */ 84, 862, 397, 828, 2, 678, 521, 714, 300, 816,
+ /* 1930 */ 161, 861, 583, 518, 381, 830, 859, 861, 775, 446,
+ /* 1940 */ 828, 833, 861, 739, 860, 859, 829, 211, 816, 832,
+ /* 1950 */ 831, 830, 860, 859, 861, 528, 339, 861, 638, 193,
+ /* 1960 */ 157, 571, 10, 829, 233, 815, 526, 105, 838, 745,
+ /* 1970 */ 862, 624, 528, 782, 574, 862, 395, 860, 859, 35,
+ /* 1980 */ 860, 859, 861, 816, 103, 828, 816, 808, 806, 12,
+ /* 1990 */ 624, 844, 814, 56, 34, 860, 859, 33, 862, 861,
+ /* 2000 */ 815, 828, 32, 102, 391, 775, 577, 393, 829, 231,
+ /* 2010 */ 53, 54, 860, 859, 394, 861, 530, 528, 55, 860,
+ /* 2020 */ 859, 574, 775, 616, 829, 241, 2, 330, 521, 860,
+ /* 2030 */ 859, 816, 828, 528, 828, 518, 101, 830, 859, 862,
+ /* 2040 */ 577, 618, 616, 833, 860, 859, 861, 828, 861, 828,
+ /* 2050 */ 816, 832, 831, 830, 862, 829, 240, 829, 242, 862,
+ /* 2060 */ 731, 861, 862, 861, 528, 308, 528, 775, 526, 612,
+ /* 2070 */ 829, 243, 829, 262, 607, 605, 862, 426, 828, 528,
+ /* 2080 */ 736, 528, 298, 775, 110, 816, 579, 581, 816, 808,
+ /* 2090 */ 806, 12, 861, 860, 859, 56, 861, 826, 860, 859,
+ /* 2100 */ 173, 829, 356, 296, 599, 306, 581, 575, 152, 739,
+ /* 2110 */ 528, 861, 53, 54, 775, 538, 775, 861, 530, 13,
+ /* 2120 */ 55, 860, 859, 861, 303, 862, 187, 828, 2, 775,
+ /* 2130 */ 521, 775, 580, 816, 538, 439, 198, 518, 556, 830,
+ /* 2140 */ 859, 861, 828, 96, 828, 833, 740, 555, 410, 861,
+ /* 2150 */ 829, 239, 816, 832, 831, 830, 861, 862, 861, 528,
+ /* 2160 */ 775, 862, 860, 859, 862, 829, 355, 829, 210, 144,
+ /* 2170 */ 526, 536, 94, 256, 528, 666, 528, 860, 859, 862,
+ /* 2180 */ 424, 248, 860, 859, 862, 860, 859, 816, 76, 828,
+ /* 2190 */ 816, 808, 806, 12, 1205, 604, 813, 56, 252, 860,
+ /* 2200 */ 859, 272, 862, 861, 828, 862, 114, 675, 385, 775,
+ /* 2210 */ 861, 185, 829, 228, 53, 54, 384, 865, 861, 294,
+ /* 2220 */ 530, 528, 55, 572, 775, 855, 775, 829, 232, 828,
+ /* 2230 */ 2, 1207, 521, 861, 854, 816, 528, 853, 634, 518,
+ /* 2240 */ 533, 830, 859, 861, 862, 184, 287, 833, 860, 859,
+ /* 2250 */ 383, 828, 829, 379, 816, 832, 831, 830, 862, 653,
+ /* 2260 */ 861, 528, 862, 523, 862, 861, 862, 182, 108, 447,
+ /* 2270 */ 532, 775, 526, 641, 829, 378, 737, 861, 75, 359,
+ /* 2280 */ 860, 859, 828, 528, 860, 859, 775, 860, 859, 816,
+ /* 2290 */ 861, 862, 816, 808, 806, 12, 861, 646, 178, 56,
+ /* 2300 */ 632, 824, 860, 859, 284, 829, 377, 860, 859, 358,
+ /* 2310 */ 823, 775, 862, 732, 528, 628, 53, 54, 23, 489,
+ /* 2320 */ 623, 591, 530, 192, 55, 860, 859, 861, 860, 859,
+ /* 2330 */ 43, 828, 2, 775, 521, 822, 70, 816, 166, 305,
+ /* 2340 */ 263, 518, 352, 830, 859, 861, 828, 88, 862, 833,
+ /* 2350 */ 862, 279, 861, 861, 829, 227, 816, 832, 831, 830,
+ /* 2360 */ 861, 480, 862, 528, 775, 700, 260, 860, 859, 829,
+ /* 2370 */ 213, 405, 278, 349, 526, 861, 49, 505, 528, 861,
+ /* 2380 */ 1209, 860, 859, 514, 596, 860, 859, 860, 859, 860,
+ /* 2390 */ 859, 816, 335, 828, 816, 808, 806, 12, 828, 773,
+ /* 2400 */ 594, 56, 1209, 772, 253, 404, 861, 861, 1209, 578,
+ /* 2410 */ 769, 763, 861, 775, 860, 859, 829, 226, 53, 54,
+ /* 2420 */ 862, 829, 225, 862, 676, 528, 55, 582, 775, 573,
+ /* 2430 */ 528, 139, 862, 828, 2, 860, 859, 757, 861, 816,
+ /* 2440 */ 140, 476, 473, 518, 702, 860, 859, 861, 165, 564,
+ /* 2450 */ 862, 833, 691, 686, 1209, 654, 829, 212, 816, 832,
+ /* 2460 */ 831, 830, 1209, 400, 463, 528, 542, 1209, 329, 861,
+ /* 2470 */ 685, 860, 859, 860, 859, 775, 576, 322, 828, 337,
+ /* 2480 */ 775, 420, 861, 681, 544, 860, 859, 682, 659, 680,
+ /* 2490 */ 1209, 861, 861, 816, 543, 861, 816, 828, 806, 12,
+ /* 2500 */ 375, 829, 238, 1209, 362, 1209, 1209, 652, 861, 828,
+ /* 2510 */ 528, 861, 651, 374, 1209, 775, 1209, 1209, 861, 1209,
+ /* 2520 */ 829, 237, 160, 861, 650, 527, 828, 649, 302, 528,
+ /* 2530 */ 106, 445, 829, 209, 30, 640, 777, 1209, 828, 861,
+ /* 2540 */ 861, 528, 861, 860, 859, 828, 860, 859, 159, 829,
+ /* 2550 */ 124, 158, 861, 292, 137, 860, 859, 288, 528, 861,
+ /* 2560 */ 775, 829, 208, 427, 828, 258, 289, 861, 829, 206,
+ /* 2570 */ 528, 861, 656, 860, 859, 31, 321, 528, 861, 775,
+ /* 2580 */ 861, 443, 156, 318, 199, 631, 104, 829, 234, 136,
+ /* 2590 */ 155, 775, 627, 314, 783, 154, 528, 191, 828, 111,
+ /* 2600 */ 828, 310, 828, 738, 434, 828, 621, 617, 775, 433,
+ /* 2610 */ 615, 134, 861, 153, 861, 421, 861, 828, 133, 861,
+ /* 2620 */ 775, 829, 236, 829, 229, 829, 235, 775, 829, 224,
+ /* 2630 */ 528, 861, 528, 595, 528, 151, 418, 528, 828, 100,
+ /* 2640 */ 829, 221, 416, 828, 150, 99, 775, 149, 98, 528,
+ /* 2650 */ 148, 97, 861, 147, 30, 565, 388, 861, 146, 29,
+ /* 2660 */ 552, 829, 205, 550, 131, 828, 829, 204, 546, 828,
+ /* 2670 */ 528, 828, 26, 130, 145, 528, 83, 540, 186, 861,
+ /* 2680 */ 775, 200, 775, 861, 775, 861, 360, 775, 829, 203,
+ /* 2690 */ 786, 801, 829, 202, 829, 214, 511, 528, 189, 775,
+ /* 2700 */ 828, 528, 188, 528, 60, 828, 797, 828, 743, 733,
+ /* 2710 */ 338, 677, 244, 315, 861, 454, 319, 440, 370, 861,
+ /* 2720 */ 775, 861, 620, 829, 219, 775, 819, 9, 829, 218,
+ /* 2730 */ 829, 125, 528, 796, 785, 41, 828, 528, 664, 528,
+ /* 2740 */ 444, 828, 361, 257, 525, 762, 674, 775, 668, 95,
+ /* 2750 */ 861, 775, 695, 775, 655, 861, 828, 667, 694, 829,
+ /* 2760 */ 217, 589, 828, 81, 829, 216, 862, 1359, 528, 1359,
+ /* 2770 */ 861, 1359, 1359, 528, 1359, 1359, 861, 1359, 1359, 829,
+ /* 2780 */ 222, 828, 775, 828, 1359, 829, 220, 775, 528, 775,
+ /* 2790 */ 1359, 1359, 1359, 1359, 528, 861, 1359, 861, 1359, 1359,
+ /* 2800 */ 1359, 1359, 1359, 1359, 829, 207, 829, 93, 1359, 1359,
+ /* 2810 */ 1359, 1359, 1359, 528, 1359, 479, 1359, 1359, 775, 1359,
+ /* 2820 */ 1359, 1359, 1359, 775, 1359, 1359, 1359, 1359, 1359, 1359,
+ /* 2830 */ 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 775, 1359,
+ /* 2840 */ 1359, 1359, 1359, 1359, 775, 1359, 1359, 1359, 1359, 1359,
+ /* 2850 */ 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359,
+ /* 2860 */ 1359, 1359, 1359, 775, 1359, 775,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 4, 228, 67, 4, 231, 70, 106, 79, 80, 81,
- /* 10 */ 82, 238, 16, 85, 86, 87, 88, 89, 90, 91,
- /* 20 */ 92, 110, 94, 95, 96, 97, 98, 99, 100, 101,
- /* 30 */ 102, 103, 104, 199, 106, 94, 95, 96, 97, 98,
- /* 40 */ 99, 100, 101, 102, 103, 104, 212, 112, 129, 121,
- /* 50 */ 88, 55, 89, 90, 91, 92, 93, 94, 95, 96,
- /* 60 */ 97, 98, 99, 100, 101, 102, 103, 104, 199, 199,
- /* 70 */ 4, 114, 76, 4, 59, 113, 207, 81, 208, 209,
- /* 80 */ 199, 212, 212, 100, 101, 102, 103, 104, 160, 4,
- /* 90 */ 221, 222, 4, 212, 98, 99, 100, 169, 199, 230,
- /* 100 */ 129, 105, 106, 204, 234, 24, 236, 208, 209, 113,
- /* 110 */ 114, 212, 285, 244, 118, 180, 120, 121, 147, 123,
- /* 120 */ 124, 122, 123, 124, 4, 129, 127, 258, 259, 130,
- /* 130 */ 131, 132, 136, 137, 138, 139, 16, 141, 78, 42,
- /* 140 */ 43, 207, 308, 309, 24, 318, 319, 148, 279, 65,
- /* 150 */ 154, 113, 156, 157, 75, 71, 160, 142, 143, 144,
- /* 160 */ 31, 165, 166, 167, 168, 169, 170, 152, 153, 173,
- /* 170 */ 41, 175, 176, 113, 114, 55, 250, 243, 244, 113,
- /* 180 */ 83, 84, 113, 187, 118, 34, 260, 118, 307, 123,
- /* 190 */ 124, 199, 123, 124, 113, 4, 76, 121, 113, 207,
- /* 200 */ 4, 81, 136, 118, 212, 136, 272, 273, 123, 124,
- /* 210 */ 276, 123, 124, 221, 222, 131, 140, 151, 98, 99,
- /* 220 */ 151, 116, 230, 15, 136, 105, 106, 4, 162, 163,
- /* 230 */ 296, 297, 81, 113, 114, 116, 244, 121, 118, 151,
- /* 240 */ 120, 121, 127, 123, 124, 130, 131, 132, 4, 129,
- /* 250 */ 258, 113, 44, 115, 199, 104, 136, 137, 138, 139,
- /* 260 */ 16, 141, 114, 148, 180, 186, 115, 212, 60, 121,
- /* 270 */ 154, 279, 156, 157, 154, 121, 156, 157, 127, 128,
- /* 280 */ 129, 130, 131, 132, 133, 165, 166, 167, 168, 155,
- /* 290 */ 170, 121, 158, 173, 124, 175, 176, 113, 147, 55,
- /* 300 */ 98, 99, 100, 101, 102, 103, 104, 187, 191, 118,
- /* 310 */ 4, 128, 129, 196, 123, 124, 78, 199, 4, 123,
- /* 320 */ 76, 199, 199, 169, 207, 81, 135, 136, 43, 274,
- /* 330 */ 212, 135, 162, 163, 212, 212, 142, 143, 144, 221,
- /* 340 */ 222, 118, 98, 99, 221, 222, 123, 124, 230, 105,
- /* 350 */ 106, 113, 114, 230, 146, 164, 121, 113, 114, 136,
- /* 360 */ 243, 244, 118, 5, 120, 121, 81, 123, 124, 4,
- /* 370 */ 7, 199, 4, 129, 121, 12, 258, 259, 35, 207,
- /* 380 */ 136, 137, 138, 139, 212, 141, 114, 164, 30, 272,
- /* 390 */ 273, 269, 114, 276, 36, 52, 207, 279, 154, 56,
- /* 400 */ 156, 157, 279, 40, 4, 62, 100, 42, 43, 165,
- /* 410 */ 199, 167, 168, 160, 170, 199, 244, 173, 301, 175,
- /* 420 */ 176, 63, 114, 212, 208, 209, 141, 113, 212, 123,
- /* 430 */ 124, 187, 147, 244, 262, 263, 313, 123, 124, 316,
- /* 440 */ 4, 26, 136, 4, 79, 80, 81, 82, 83, 84,
- /* 450 */ 85, 86, 87, 88, 89, 90, 91, 92, 114, 94,
- /* 460 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 470 */ 4, 123, 35, 262, 263, 113, 170, 129, 103, 104,
- /* 480 */ 115, 113, 137, 138, 170, 137, 138, 139, 123, 42,
- /* 490 */ 43, 123, 124, 56, 79, 80, 81, 82, 51, 62,
- /* 500 */ 85, 86, 87, 88, 89, 90, 91, 92, 165, 94,
- /* 510 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 520 */ 4, 114, 4, 123, 159, 125, 79, 80, 81, 82,
- /* 530 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- /* 540 */ 10, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- /* 550 */ 103, 104, 22, 35, 118, 4, 117, 118, 121, 123,
- /* 560 */ 124, 113, 123, 124, 78, 199, 245, 246, 121, 248,
- /* 570 */ 52, 210, 42, 43, 56, 214, 215, 216, 212, 21,
- /* 580 */ 62, 192, 193, 194, 195, 199, 150, 221, 222, 123,
- /* 590 */ 124, 10, 177, 199, 179, 37, 230, 203, 212, 113,
- /* 600 */ 114, 32, 136, 22, 218, 219, 212, 121, 121, 79,
- /* 610 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- /* 620 */ 90, 91, 92, 54, 94, 95, 96, 97, 98, 99,
- /* 630 */ 100, 101, 102, 103, 104, 119, 170, 114, 43, 123,
- /* 640 */ 124, 123, 124, 121, 78, 279, 4, 160, 79, 80,
- /* 650 */ 81, 82, 42, 43, 85, 86, 87, 88, 89, 90,
- /* 660 */ 91, 92, 165, 94, 95, 96, 97, 98, 99, 100,
- /* 670 */ 101, 102, 103, 104, 123, 124, 290, 291, 4, 113,
- /* 680 */ 114, 315, 316, 165, 187, 134, 4, 121, 4, 79,
- /* 690 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- /* 700 */ 90, 91, 92, 100, 94, 95, 96, 97, 98, 99,
- /* 710 */ 100, 101, 102, 103, 104, 89, 90, 91, 92, 121,
- /* 720 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 730 */ 104, 115, 79, 80, 81, 82, 141, 212, 85, 86,
- /* 740 */ 87, 88, 89, 90, 91, 92, 221, 94, 95, 96,
- /* 750 */ 97, 98, 99, 100, 101, 102, 103, 104, 155, 106,
- /* 760 */ 118, 158, 113, 165, 67, 123, 124, 70, 26, 79,
- /* 770 */ 80, 81, 82, 38, 121, 85, 86, 87, 88, 89,
- /* 780 */ 90, 91, 92, 4, 94, 95, 96, 97, 98, 99,
- /* 790 */ 100, 101, 102, 103, 104, 113, 106, 123, 124, 4,
- /* 800 */ 114, 4, 26, 4, 199, 123, 124, 123, 124, 112,
- /* 810 */ 136, 121, 26, 160, 72, 4, 81, 212, 79, 80,
- /* 820 */ 81, 82, 169, 181, 85, 86, 87, 88, 89, 90,
- /* 830 */ 91, 92, 4, 94, 95, 96, 97, 98, 99, 100,
- /* 840 */ 101, 102, 103, 104, 16, 106, 98, 99, 106, 4,
- /* 850 */ 160, 72, 170, 207, 170, 79, 80, 81, 82, 169,
- /* 860 */ 121, 85, 86, 87, 88, 89, 90, 91, 92, 199,
- /* 870 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 880 */ 104, 4, 212, 55, 177, 137, 138, 14, 218, 219,
- /* 890 */ 244, 285, 113, 114, 142, 143, 144, 118, 199, 160,
- /* 900 */ 72, 114, 123, 124, 76, 217, 218, 219, 169, 81,
- /* 910 */ 113, 212, 115, 118, 309, 136, 199, 207, 123, 124,
- /* 920 */ 123, 76, 123, 124, 318, 319, 98, 99, 121, 212,
- /* 930 */ 151, 152, 153, 105, 123, 124, 237, 121, 221, 222,
- /* 940 */ 13, 113, 114, 98, 99, 115, 118, 230, 120, 4,
- /* 950 */ 199, 123, 124, 177, 244, 179, 159, 129, 113, 199,
- /* 960 */ 290, 291, 114, 212, 136, 137, 138, 139, 123, 121,
- /* 970 */ 159, 4, 212, 174, 129, 258, 259, 141, 183, 291,
- /* 980 */ 152, 153, 137, 138, 139, 220, 287, 214, 215, 216,
- /* 990 */ 113, 14, 114, 228, 229, 21, 279, 161, 170, 121,
- /* 1000 */ 123, 173, 28, 175, 176, 49, 79, 80, 81, 82,
- /* 1010 */ 4, 37, 85, 86, 87, 88, 89, 90, 91, 92,
- /* 1020 */ 4, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- /* 1030 */ 103, 104, 177, 106, 179, 79, 80, 81, 82, 113,
- /* 1040 */ 289, 85, 86, 87, 88, 89, 90, 91, 92, 4,
- /* 1050 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 1060 */ 104, 16, 106, 118, 19, 199, 4, 199, 123, 124,
- /* 1070 */ 310, 311, 312, 57, 4, 217, 218, 219, 212, 255,
- /* 1080 */ 212, 257, 207, 4, 117, 118, 79, 80, 81, 82,
- /* 1090 */ 123, 124, 85, 86, 87, 88, 89, 90, 91, 92,
- /* 1100 */ 55, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- /* 1110 */ 103, 104, 19, 68, 4, 239, 114, 241, 243, 244,
- /* 1120 */ 46, 76, 115, 121, 118, 35, 81, 182, 83, 123,
- /* 1130 */ 124, 263, 199, 117, 4, 114, 203, 44, 207, 123,
- /* 1140 */ 124, 72, 136, 98, 99, 212, 56, 272, 273, 291,
- /* 1150 */ 105, 276, 62, 302, 303, 4, 61, 199, 113, 66,
- /* 1160 */ 98, 99, 4, 118, 114, 120, 4, 16, 123, 124,
- /* 1170 */ 212, 121, 297, 280, 129, 244, 310, 311, 312, 221,
- /* 1180 */ 222, 136, 137, 138, 139, 123, 124, 4, 230, 80,
- /* 1190 */ 128, 4, 299, 123, 124, 199, 106, 128, 4, 137,
- /* 1200 */ 138, 35, 123, 141, 114, 143, 55, 0, 212, 32,
- /* 1210 */ 144, 121, 199, 201, 135, 170, 258, 259, 173, 54,
- /* 1220 */ 175, 176, 56, 72, 61, 212, 199, 76, 62, 199,
- /* 1230 */ 14, 141, 81, 123, 221, 222, 29, 279, 172, 212,
- /* 1240 */ 170, 5, 212, 230, 154, 135, 156, 157, 118, 98,
- /* 1250 */ 99, 221, 222, 123, 124, 165, 105, 167, 168, 166,
- /* 1260 */ 230, 114, 14, 199, 113, 269, 30, 203, 121, 118,
- /* 1270 */ 108, 120, 36, 214, 123, 124, 212, 187, 194, 195,
- /* 1280 */ 129, 123, 124, 270, 114, 123, 124, 136, 137, 138,
- /* 1290 */ 139, 121, 279, 4, 136, 59, 214, 4, 286, 63,
- /* 1300 */ 270, 118, 26, 152, 153, 118, 123, 124, 113, 279,
- /* 1310 */ 123, 124, 199, 106, 184, 212, 213, 123, 124, 136,
- /* 1320 */ 261, 170, 164, 136, 173, 212, 175, 176, 134, 79,
- /* 1330 */ 80, 81, 82, 306, 307, 85, 86, 87, 88, 89,
- /* 1340 */ 90, 91, 92, 261, 94, 95, 96, 97, 98, 99,
- /* 1350 */ 100, 101, 102, 103, 104, 79, 80, 81, 82, 207,
- /* 1360 */ 14, 85, 86, 87, 88, 89, 90, 91, 92, 14,
- /* 1370 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 1380 */ 104, 29, 79, 80, 81, 82, 311, 312, 85, 86,
- /* 1390 */ 87, 88, 89, 90, 91, 92, 244, 94, 95, 96,
- /* 1400 */ 97, 98, 99, 100, 101, 102, 103, 104, 114, 311,
- /* 1410 */ 312, 118, 123, 124, 14, 121, 123, 124, 121, 306,
- /* 1420 */ 307, 4, 311, 312, 79, 80, 81, 82, 178, 136,
- /* 1430 */ 85, 86, 87, 88, 89, 90, 91, 92, 114, 94,
- /* 1440 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1450 */ 239, 4, 241, 164, 79, 80, 81, 82, 106, 114,
- /* 1460 */ 85, 86, 87, 88, 89, 90, 91, 92, 38, 94,
- /* 1470 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1480 */ 114, 178, 311, 312, 79, 80, 81, 82, 114, 114,
- /* 1490 */ 85, 86, 87, 88, 89, 90, 91, 92, 162, 94,
- /* 1500 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1510 */ 245, 246, 4, 248, 79, 80, 81, 82, 116, 114,
- /* 1520 */ 85, 86, 87, 88, 89, 90, 91, 92, 116, 94,
- /* 1530 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1540 */ 123, 124, 277, 100, 79, 80, 81, 82, 121, 114,
- /* 1550 */ 85, 86, 87, 88, 89, 90, 91, 92, 113, 94,
- /* 1560 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1570 */ 123, 124, 311, 312, 79, 80, 81, 82, 114, 114,
- /* 1580 */ 85, 86, 87, 88, 89, 90, 91, 92, 113, 94,
- /* 1590 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1600 */ 183, 106, 79, 80, 81, 82, 152, 153, 85, 86,
- /* 1610 */ 87, 88, 89, 90, 91, 92, 108, 94, 95, 96,
- /* 1620 */ 97, 98, 99, 100, 101, 102, 103, 104, 181, 155,
- /* 1630 */ 4, 123, 124, 79, 80, 81, 82, 4, 115, 85,
- /* 1640 */ 86, 87, 88, 89, 90, 91, 92, 114, 94, 95,
- /* 1650 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 4,
- /* 1660 */ 106, 79, 80, 81, 82, 114, 4, 85, 86, 87,
- /* 1670 */ 88, 89, 90, 91, 92, 4, 94, 95, 96, 97,
- /* 1680 */ 98, 99, 100, 101, 102, 103, 104, 16, 106, 114,
- /* 1690 */ 19, 79, 80, 81, 82, 114, 121, 85, 86, 87,
- /* 1700 */ 88, 89, 90, 91, 92, 4, 94, 95, 96, 97,
- /* 1710 */ 98, 99, 100, 101, 102, 103, 104, 9, 114, 11,
- /* 1720 */ 199, 13, 114, 199, 203, 121, 55, 199, 114, 199,
- /* 1730 */ 199, 23, 114, 212, 26, 121, 212, 113, 199, 68,
- /* 1740 */ 212, 108, 212, 212, 4, 221, 222, 76, 4, 123,
- /* 1750 */ 124, 212, 81, 169, 230, 113, 123, 124, 114, 18,
- /* 1760 */ 199, 53, 136, 108, 203, 121, 58, 4, 237, 98,
- /* 1770 */ 99, 63, 64, 212, 49, 199, 105, 69, 123, 124,
- /* 1780 */ 72, 4, 74, 115, 113, 123, 124, 224, 212, 118,
- /* 1790 */ 164, 120, 199, 16, 123, 124, 19, 221, 222, 199,
- /* 1800 */ 129, 214, 274, 279, 114, 212, 230, 136, 137, 138,
- /* 1810 */ 139, 121, 212, 151, 221, 222, 115, 109, 287, 111,
- /* 1820 */ 114, 221, 222, 230, 123, 72, 287, 121, 6, 4,
- /* 1830 */ 230, 113, 55, 214, 258, 4, 8, 313, 49, 199,
- /* 1840 */ 316, 170, 113, 280, 173, 68, 175, 176, 261, 4,
- /* 1850 */ 114, 258, 212, 76, 49, 279, 4, 149, 81, 106,
- /* 1860 */ 159, 4, 224, 123, 124, 113, 122, 123, 124, 113,
- /* 1870 */ 270, 199, 279, 188, 189, 98, 99, 113, 199, 279,
- /* 1880 */ 261, 118, 105, 199, 212, 199, 123, 124, 133, 203,
- /* 1890 */ 113, 212, 147, 185, 199, 118, 212, 120, 212, 136,
- /* 1900 */ 123, 124, 162, 120, 13, 4, 129, 212, 81, 269,
- /* 1910 */ 115, 141, 199, 136, 137, 138, 139, 16, 280, 160,
- /* 1920 */ 146, 79, 80, 81, 82, 212, 88, 85, 86, 87,
- /* 1930 */ 88, 89, 90, 91, 92, 4, 94, 95, 96, 97,
- /* 1940 */ 98, 99, 100, 101, 102, 103, 104, 170, 123, 124,
- /* 1950 */ 173, 214, 175, 176, 123, 124, 55, 88, 88, 4,
- /* 1960 */ 199, 199, 88, 118, 269, 171, 199, 136, 123, 124,
- /* 1970 */ 118, 4, 199, 212, 212, 123, 124, 76, 199, 212,
- /* 1980 */ 123, 124, 81, 221, 222, 212, 18, 162, 221, 222,
- /* 1990 */ 4, 212, 230, 24, 221, 222, 151, 230, 261, 98,
- /* 2000 */ 99, 146, 145, 230, 4, 199, 105, 153, 172, 106,
- /* 2010 */ 106, 4, 25, 199, 113, 114, 164, 280, 212, 118,
- /* 2020 */ 258, 120, 199, 16, 123, 124, 212, 221, 222, 4,
- /* 2030 */ 129, 61, 50, 121, 199, 212, 230, 136, 137, 138,
- /* 2040 */ 139, 279, 50, 270, 221, 222, 279, 212, 269, 282,
- /* 2050 */ 141, 237, 279, 230, 123, 124, 221, 222, 180, 113,
- /* 2060 */ 199, 112, 55, 161, 258, 230, 113, 136, 120, 112,
- /* 2070 */ 114, 170, 117, 212, 173, 114, 175, 176, 123, 124,
- /* 2080 */ 48, 199, 199, 76, 4, 279, 203, 199, 81, 110,
- /* 2090 */ 123, 124, 47, 270, 212, 212, 211, 280, 199, 227,
- /* 2100 */ 212, 287, 279, 136, 264, 98, 99, 227, 4, 123,
- /* 2110 */ 124, 212, 105, 199, 279, 303, 305, 4, 305, 237,
- /* 2120 */ 113, 114, 136, 123, 124, 118, 212, 120, 199, 16,
- /* 2130 */ 123, 124, 198, 200, 199, 107, 129, 198, 64, 199,
- /* 2140 */ 198, 212, 199, 136, 137, 138, 139, 212, 123, 124,
- /* 2150 */ 221, 222, 212, 4, 200, 212, 221, 222, 4, 230,
- /* 2160 */ 198, 221, 222, 199, 164, 230, 77, 203, 55, 287,
- /* 2170 */ 230, 205, 199, 4, 199, 150, 212, 170, 4, 199,
- /* 2180 */ 173, 121, 175, 176, 4, 212, 202, 212, 4, 76,
- /* 2190 */ 73, 206, 212, 4, 81, 267, 221, 222, 246, 116,
- /* 2200 */ 199, 221, 222, 123, 124, 230, 152, 4, 279, 4,
- /* 2210 */ 230, 98, 99, 212, 279, 252, 136, 169, 105, 279,
- /* 2220 */ 167, 117, 166, 4, 253, 199, 113, 123, 124, 168,
- /* 2230 */ 4, 118, 254, 120, 104, 16, 123, 124, 212, 256,
- /* 2240 */ 199, 4, 129, 81, 226, 199, 113, 221, 222, 136,
- /* 2250 */ 137, 138, 139, 212, 279, 104, 230, 199, 212, 279,
- /* 2260 */ 288, 203, 221, 222, 283, 177, 255, 221, 222, 280,
- /* 2270 */ 212, 230, 123, 124, 55, 256, 230, 123, 124, 165,
- /* 2280 */ 271, 199, 4, 170, 271, 136, 173, 45, 175, 176,
- /* 2290 */ 177, 314, 123, 124, 212, 76, 27, 123, 124, 116,
- /* 2300 */ 81, 117, 199, 123, 124, 279, 117, 123, 124, 199,
- /* 2310 */ 136, 314, 123, 124, 267, 212, 136, 98, 99, 248,
- /* 2320 */ 279, 199, 212, 199, 105, 279, 123, 124, 123, 124,
- /* 2330 */ 153, 199, 113, 114, 212, 319, 212, 118, 184, 120,
- /* 2340 */ 188, 136, 123, 124, 212, 233, 223, 4, 129, 123,
- /* 2350 */ 124, 182, 223, 221, 222, 136, 137, 138, 139, 16,
- /* 2360 */ 123, 124, 230, 141, 80, 81, 82, 39, 223, 85,
- /* 2370 */ 86, 87, 88, 89, 90, 91, 92, 199, 94, 95,
- /* 2380 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 170,
- /* 2390 */ 212, 225, 173, 199, 175, 176, 170, 203, 55, 221,
- /* 2400 */ 222, 123, 124, 199, 140, 199, 212, 170, 230, 199,
- /* 2410 */ 199, 279, 199, 199, 223, 233, 212, 267, 212, 76,
- /* 2420 */ 223, 226, 212, 212, 81, 212, 212, 221, 222, 116,
- /* 2430 */ 223, 199, 223, 199, 221, 222, 230, 199, 199, 223,
- /* 2440 */ 116, 98, 99, 230, 212, 199, 212, 226, 105, 171,
- /* 2450 */ 212, 212, 202, 4, 226, 202, 113, 279, 212, 221,
- /* 2460 */ 222, 118, 199, 120, 116, 16, 123, 124, 230, 267,
- /* 2470 */ 199, 199, 129, 199, 199, 212, 199, 33, 199, 136,
- /* 2480 */ 137, 138, 139, 212, 212, 279, 212, 212, 199, 212,
- /* 2490 */ 294, 212, 279, 221, 222, 295, 177, 116, 221, 222,
- /* 2500 */ 252, 212, 230, 79, 55, 240, 116, 230, 252, 116,
- /* 2510 */ 275, 113, 141, 170, 278, 116, 173, 279, 175, 176,
- /* 2520 */ 252, 240, 202, 202, 267, 76, 267, 116, 252, 242,
- /* 2530 */ 81, 116, 77, 242, 116, 242, 116, 242, 116, 171,
- /* 2540 */ 289, 116, 298, 20, 17, 298, 116, 98, 99, 267,
- /* 2550 */ 267, 279, 267, 199, 105, 116, 279, 116, 199, 249,
- /* 2560 */ 300, 291, 113, 251, 291, 224, 212, 118, 266, 120,
- /* 2570 */ 284, 212, 123, 124, 268, 221, 222, 255, 129, 224,
- /* 2580 */ 221, 222, 255, 231, 230, 136, 137, 138, 139, 230,
- /* 2590 */ 225, 235, 252, 268, 268, 81, 82, 251, 197, 85,
- /* 2600 */ 86, 87, 88, 89, 90, 91, 92, 249, 94, 95,
- /* 2610 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 170,
- /* 2620 */ 214, 214, 173, 214, 175, 176, 214, 199, 292, 247,
- /* 2630 */ 293, 281, 241, 279, 199, 317, 232, 265, 279, 304,
- /* 2640 */ 212, 199, 232, 72, 221, 232, 4, 212, 221, 221,
- /* 2650 */ 222, 320, 236, 199, 212, 320, 221, 222, 230, 320,
- /* 2660 */ 199, 320, 320, 221, 222, 230, 212, 199, 320, 320,
- /* 2670 */ 320, 320, 230, 212, 320, 221, 222, 320, 320, 199,
- /* 2680 */ 212, 199, 221, 222, 230, 320, 320, 320, 320, 221,
- /* 2690 */ 222, 230, 212, 199, 212, 320, 320, 320, 230, 320,
- /* 2700 */ 320, 221, 222, 221, 222, 320, 212, 279, 320, 320,
- /* 2710 */ 230, 320, 230, 320, 279, 221, 222, 320, 320, 199,
- /* 2720 */ 320, 279, 320, 320, 230, 320, 320, 320, 320, 320,
- /* 2730 */ 320, 320, 212, 279, 320, 320, 320, 320, 320, 320,
- /* 2740 */ 279, 221, 222, 320, 320, 320, 320, 279, 320, 320,
- /* 2750 */ 230, 320, 320, 199, 320, 320, 199, 320, 199, 279,
- /* 2760 */ 320, 279, 320, 320, 320, 320, 212, 320, 320, 212,
- /* 2770 */ 320, 212, 199, 279, 320, 221, 222, 320, 221, 222,
- /* 2780 */ 221, 222, 320, 320, 230, 212, 320, 230, 199, 230,
- /* 2790 */ 320, 320, 320, 320, 221, 222, 320, 320, 320, 279,
- /* 2800 */ 199, 212, 320, 230, 199, 320, 320, 320, 320, 320,
- /* 2810 */ 221, 222, 320, 212, 320, 320, 320, 212, 320, 230,
- /* 2820 */ 320, 320, 221, 222, 199, 320, 221, 222, 320, 320,
- /* 2830 */ 320, 230, 320, 279, 320, 230, 279, 212, 279, 320,
- /* 2840 */ 199, 320, 320, 320, 320, 320, 221, 222, 320, 320,
- /* 2850 */ 320, 320, 279, 212, 199, 230, 199, 320, 320, 320,
- /* 2860 */ 199, 320, 221, 222, 320, 320, 320, 212, 279, 212,
- /* 2870 */ 320, 230, 320, 212, 320, 199, 221, 222, 221, 222,
- /* 2880 */ 279, 320, 221, 222, 279, 230, 320, 230, 212, 320,
- /* 2890 */ 199, 230, 199, 320, 199, 320, 320, 221, 222, 320,
- /* 2900 */ 320, 320, 320, 212, 279, 212, 230, 212, 320, 320,
- /* 2910 */ 320, 320, 221, 222, 221, 222, 221, 222, 320, 199,
- /* 2920 */ 279, 230, 320, 230, 320, 230, 320, 320, 320, 320,
- /* 2930 */ 320, 320, 212, 320, 279, 320, 279, 320, 320, 320,
- /* 2940 */ 279, 221, 222, 320, 320, 320, 320, 320, 320, 320,
- /* 2950 */ 230, 320, 320, 199, 320, 279, 199, 320, 320, 320,
- /* 2960 */ 320, 320, 320, 320, 320, 320, 212, 320, 320, 212,
- /* 2970 */ 279, 320, 279, 320, 279, 221, 222, 320, 221, 222,
- /* 2980 */ 320, 320, 320, 320, 230, 320, 320, 230, 320, 320,
- /* 2990 */ 320, 320, 320, 320, 320, 320, 320, 320, 320, 279,
- /* 3000 */ 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- /* 3010 */ 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- /* 3020 */ 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
- /* 3030 */ 320, 320, 320, 279, 320, 320, 279,
+ /* 0 */ 4, 131, 24, 31, 134, 135, 136, 50, 81, 82,
+ /* 10 */ 83, 84, 16, 41, 87, 88, 89, 90, 91, 92,
+ /* 20 */ 93, 94, 152, 96, 97, 98, 99, 100, 101, 102,
+ /* 30 */ 103, 104, 105, 106, 107, 102, 109, 117, 81, 82,
+ /* 40 */ 83, 84, 122, 122, 87, 88, 89, 90, 91, 92,
+ /* 50 */ 93, 94, 56, 96, 97, 98, 99, 100, 101, 102,
+ /* 60 */ 103, 104, 105, 106, 107, 144, 109, 102, 103, 104,
+ /* 70 */ 105, 106, 107, 77, 148, 91, 92, 93, 94, 83,
+ /* 80 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 90 */ 106, 107, 159, 4, 116, 162, 100, 101, 102, 42,
+ /* 100 */ 43, 203, 203, 177, 108, 109, 83, 211, 68, 44,
+ /* 110 */ 4, 71, 116, 117, 122, 217, 217, 121, 122, 203,
+ /* 120 */ 109, 125, 16, 127, 128, 226, 227, 132, 133, 133,
+ /* 130 */ 24, 4, 68, 217, 235, 71, 140, 141, 142, 143,
+ /* 140 */ 242, 145, 85, 86, 248, 249, 4, 9, 83, 11,
+ /* 150 */ 158, 13, 160, 161, 158, 115, 160, 161, 203, 80,
+ /* 160 */ 164, 23, 56, 113, 26, 169, 170, 171, 172, 173,
+ /* 170 */ 174, 175, 217, 277, 178, 279, 180, 181, 282, 115,
+ /* 180 */ 203, 226, 227, 77, 285, 162, 43, 288, 192, 83,
+ /* 190 */ 235, 293, 54, 117, 217, 116, 117, 59, 302, 303,
+ /* 200 */ 223, 224, 64, 65, 117, 116, 100, 101, 70, 122,
+ /* 210 */ 121, 73, 19, 75, 108, 109, 127, 128, 263, 264,
+ /* 220 */ 4, 203, 116, 117, 4, 185, 83, 121, 122, 140,
+ /* 230 */ 314, 125, 16, 127, 128, 217, 122, 5, 45, 133,
+ /* 240 */ 285, 223, 224, 116, 155, 118, 140, 141, 142, 143,
+ /* 250 */ 112, 145, 114, 122, 127, 166, 167, 203, 116, 182,
+ /* 260 */ 67, 184, 30, 121, 158, 203, 160, 161, 36, 127,
+ /* 270 */ 128, 217, 56, 296, 297, 169, 170, 171, 172, 217,
+ /* 280 */ 174, 175, 140, 116, 178, 118, 180, 181, 145, 4,
+ /* 290 */ 163, 153, 60, 77, 151, 164, 64, 155, 192, 83,
+ /* 300 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 310 */ 106, 107, 35, 21, 296, 297, 100, 101, 117, 60,
+ /* 320 */ 28, 122, 203, 122, 108, 109, 117, 128, 190, 37,
+ /* 330 */ 211, 122, 116, 117, 57, 145, 217, 121, 122, 5,
+ /* 340 */ 63, 125, 4, 127, 128, 226, 227, 127, 128, 133,
+ /* 350 */ 196, 197, 198, 199, 235, 165, 140, 141, 142, 143,
+ /* 360 */ 140, 145, 117, 170, 30, 166, 167, 122, 249, 169,
+ /* 370 */ 36, 317, 318, 319, 158, 133, 160, 161, 316, 203,
+ /* 380 */ 42, 43, 263, 264, 7, 169, 203, 171, 172, 12,
+ /* 390 */ 174, 175, 192, 217, 178, 175, 180, 181, 64, 122,
+ /* 400 */ 217, 116, 226, 227, 285, 146, 147, 148, 192, 226,
+ /* 410 */ 227, 235, 127, 128, 26, 156, 157, 40, 235, 81,
+ /* 420 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ /* 430 */ 92, 93, 94, 90, 96, 97, 98, 99, 100, 101,
+ /* 440 */ 102, 103, 104, 105, 106, 107, 100, 101, 102, 103,
+ /* 450 */ 104, 105, 106, 107, 141, 142, 118, 117, 275, 116,
+ /* 460 */ 175, 285, 122, 42, 43, 127, 308, 309, 285, 81,
+ /* 470 */ 82, 83, 84, 52, 116, 87, 88, 89, 90, 91,
+ /* 480 */ 92, 93, 94, 76, 96, 97, 98, 99, 100, 101,
+ /* 490 */ 102, 103, 104, 105, 106, 107, 320, 122, 119, 323,
+ /* 500 */ 80, 163, 81, 82, 83, 84, 85, 86, 87, 88,
+ /* 510 */ 89, 90, 91, 92, 93, 94, 4, 96, 97, 98,
+ /* 520 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 10,
+ /* 530 */ 117, 291, 203, 127, 133, 122, 116, 117, 119, 133,
+ /* 540 */ 203, 22, 122, 122, 169, 208, 217, 141, 142, 143,
+ /* 550 */ 213, 214, 151, 116, 217, 226, 227, 222, 223, 224,
+ /* 560 */ 153, 42, 43, 215, 235, 325, 326, 219, 220, 221,
+ /* 570 */ 182, 73, 184, 91, 92, 93, 94, 95, 96, 97,
+ /* 580 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ /* 590 */ 217, 4, 263, 264, 100, 101, 4, 26, 191, 226,
+ /* 600 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ /* 610 */ 91, 92, 93, 94, 285, 96, 97, 98, 99, 100,
+ /* 620 */ 101, 102, 103, 104, 105, 106, 107, 4, 116, 35,
+ /* 630 */ 132, 203, 297, 121, 117, 141, 142, 10, 233, 127,
+ /* 640 */ 128, 236, 203, 42, 43, 217, 207, 53, 243, 22,
+ /* 650 */ 58, 57, 81, 82, 83, 84, 217, 63, 87, 88,
+ /* 660 */ 89, 90, 91, 92, 93, 94, 4, 96, 97, 98,
+ /* 670 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 146,
+ /* 680 */ 147, 148, 81, 82, 83, 84, 85, 86, 87, 88,
+ /* 690 */ 89, 90, 91, 92, 93, 94, 122, 96, 97, 98,
+ /* 700 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 32,
+ /* 710 */ 203, 122, 120, 126, 127, 128, 203, 13, 131, 127,
+ /* 720 */ 128, 134, 135, 136, 217, 117, 213, 214, 203, 260,
+ /* 730 */ 217, 262, 55, 250, 251, 210, 253, 212, 43, 152,
+ /* 740 */ 225, 21, 217, 120, 121, 317, 318, 319, 233, 234,
+ /* 750 */ 127, 128, 239, 182, 241, 184, 4, 37, 81, 82,
+ /* 760 */ 83, 84, 173, 169, 87, 88, 89, 90, 91, 92,
+ /* 770 */ 93, 94, 38, 96, 97, 98, 99, 100, 101, 102,
+ /* 780 */ 103, 104, 105, 106, 107, 81, 82, 83, 84, 127,
+ /* 790 */ 128, 87, 88, 89, 90, 91, 92, 93, 94, 35,
+ /* 800 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 810 */ 106, 107, 4, 109, 195, 4, 154, 83, 203, 200,
+ /* 820 */ 34, 57, 315, 316, 16, 203, 74, 63, 66, 79,
+ /* 830 */ 211, 291, 217, 211, 72, 81, 82, 83, 84, 217,
+ /* 840 */ 145, 87, 88, 89, 90, 91, 92, 93, 94, 117,
+ /* 850 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 860 */ 106, 107, 4, 203, 56, 325, 326, 248, 249, 83,
+ /* 870 */ 203, 249, 118, 105, 106, 107, 124, 217, 80, 127,
+ /* 880 */ 128, 73, 267, 268, 217, 77, 226, 227, 77, 267,
+ /* 890 */ 268, 83, 122, 107, 117, 235, 277, 135, 279, 203,
+ /* 900 */ 255, 282, 211, 207, 118, 222, 223, 224, 100, 101,
+ /* 910 */ 265, 100, 101, 217, 116, 117, 108, 131, 132, 133,
+ /* 920 */ 134, 135, 136, 137, 116, 117, 307, 116, 116, 121,
+ /* 930 */ 146, 147, 148, 125, 164, 127, 128, 151, 127, 248,
+ /* 940 */ 249, 133, 80, 193, 133, 285, 117, 185, 140, 141,
+ /* 950 */ 142, 143, 141, 142, 143, 219, 220, 221, 116, 4,
+ /* 960 */ 293, 117, 26, 203, 156, 157, 122, 244, 277, 246,
+ /* 970 */ 279, 250, 251, 282, 253, 26, 118, 217, 116, 117,
+ /* 980 */ 297, 203, 4, 175, 122, 127, 178, 117, 180, 181,
+ /* 990 */ 81, 82, 83, 84, 303, 217, 87, 88, 89, 90,
+ /* 1000 */ 91, 92, 93, 94, 283, 96, 97, 98, 99, 100,
+ /* 1010 */ 101, 102, 103, 104, 105, 106, 107, 81, 82, 83,
+ /* 1020 */ 84, 163, 73, 87, 88, 89, 90, 91, 92, 93,
+ /* 1030 */ 94, 44, 96, 97, 98, 99, 100, 101, 102, 103,
+ /* 1040 */ 104, 105, 106, 107, 81, 82, 83, 84, 217, 218,
+ /* 1050 */ 87, 88, 89, 90, 91, 92, 93, 94, 109, 96,
+ /* 1060 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ /* 1070 */ 107, 117, 312, 295, 314, 120, 121, 0, 81, 82,
+ /* 1080 */ 83, 84, 127, 128, 87, 88, 89, 90, 91, 92,
+ /* 1090 */ 93, 94, 183, 96, 97, 98, 99, 100, 101, 102,
+ /* 1100 */ 103, 104, 105, 106, 107, 127, 29, 129, 4, 81,
+ /* 1110 */ 82, 83, 84, 122, 117, 87, 88, 89, 90, 91,
+ /* 1120 */ 92, 93, 94, 203, 96, 97, 98, 99, 100, 101,
+ /* 1130 */ 102, 103, 104, 105, 106, 107, 159, 217, 4, 162,
+ /* 1140 */ 116, 81, 82, 83, 84, 117, 183, 87, 88, 89,
+ /* 1150 */ 90, 91, 92, 93, 94, 26, 96, 97, 98, 99,
+ /* 1160 */ 100, 101, 102, 103, 104, 105, 106, 107, 182, 198,
+ /* 1170 */ 199, 117, 81, 82, 83, 84, 122, 117, 87, 88,
+ /* 1180 */ 89, 90, 91, 92, 93, 94, 109, 96, 97, 98,
+ /* 1190 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 117,
+ /* 1200 */ 280, 4, 117, 81, 82, 83, 84, 122, 117, 87,
+ /* 1210 */ 88, 89, 90, 91, 92, 93, 94, 219, 96, 97,
+ /* 1220 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ /* 1230 */ 162, 127, 128, 117, 81, 82, 83, 84, 122, 117,
+ /* 1240 */ 87, 88, 89, 90, 91, 92, 93, 94, 4, 96,
+ /* 1250 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ /* 1260 */ 107, 127, 128, 15, 266, 4, 81, 82, 83, 84,
+ /* 1270 */ 166, 118, 87, 88, 89, 90, 91, 92, 93, 94,
+ /* 1280 */ 219, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ /* 1290 */ 105, 106, 107, 45, 109, 81, 82, 83, 84, 4,
+ /* 1300 */ 166, 87, 88, 89, 90, 91, 92, 93, 94, 61,
+ /* 1310 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 1320 */ 106, 107, 4, 109, 127, 128, 117, 266, 203, 203,
+ /* 1330 */ 219, 122, 207, 73, 16, 138, 164, 19, 81, 82,
+ /* 1340 */ 83, 84, 217, 217, 87, 88, 89, 90, 91, 92,
+ /* 1350 */ 93, 94, 4, 96, 97, 98, 99, 100, 101, 102,
+ /* 1360 */ 103, 104, 105, 106, 107, 121, 164, 203, 4, 109,
+ /* 1370 */ 203, 127, 128, 117, 56, 211, 14, 266, 122, 211,
+ /* 1380 */ 16, 217, 121, 19, 217, 4, 4, 69, 127, 128,
+ /* 1390 */ 226, 227, 203, 226, 227, 77, 203, 286, 150, 235,
+ /* 1400 */ 118, 83, 235, 85, 4, 212, 217, 203, 122, 117,
+ /* 1410 */ 217, 116, 122, 249, 122, 226, 227, 249, 100, 101,
+ /* 1420 */ 56, 217, 127, 128, 235, 116, 108, 263, 203, 4,
+ /* 1430 */ 263, 264, 188, 69, 116, 35, 4, 117, 312, 121,
+ /* 1440 */ 314, 77, 217, 125, 211, 127, 128, 83, 187, 285,
+ /* 1450 */ 4, 133, 285, 53, 203, 203, 255, 57, 140, 141,
+ /* 1460 */ 142, 143, 16, 63, 100, 101, 265, 4, 217, 217,
+ /* 1470 */ 175, 244, 108, 246, 285, 127, 128, 4, 226, 227,
+ /* 1480 */ 116, 203, 249, 14, 280, 121, 203, 235, 140, 125,
+ /* 1490 */ 47, 127, 128, 175, 4, 217, 178, 133, 180, 181,
+ /* 1500 */ 217, 203, 56, 121, 140, 141, 142, 143, 127, 127,
+ /* 1510 */ 128, 322, 323, 211, 32, 217, 168, 203, 211, 73,
+ /* 1520 */ 139, 139, 140, 77, 226, 227, 82, 127, 128, 83,
+ /* 1530 */ 211, 217, 62, 235, 4, 318, 319, 285, 4, 175,
+ /* 1540 */ 226, 227, 178, 111, 180, 181, 100, 101, 62, 235,
+ /* 1550 */ 168, 249, 127, 128, 108, 55, 249, 274, 14, 127,
+ /* 1560 */ 128, 263, 116, 100, 101, 140, 4, 121, 249, 169,
+ /* 1570 */ 4, 125, 320, 127, 128, 323, 219, 263, 203, 133,
+ /* 1580 */ 155, 205, 207, 285, 318, 319, 140, 141, 142, 143,
+ /* 1590 */ 127, 128, 217, 14, 121, 132, 14, 286, 203, 285,
+ /* 1600 */ 127, 128, 156, 157, 141, 142, 4, 4, 145, 4,
+ /* 1610 */ 147, 121, 217, 140, 318, 319, 305, 127, 128, 16,
+ /* 1620 */ 29, 175, 19, 266, 178, 14, 180, 181, 81, 82,
+ /* 1630 */ 83, 84, 156, 157, 87, 88, 89, 90, 91, 92,
+ /* 1640 */ 93, 94, 4, 96, 97, 98, 99, 100, 101, 102,
+ /* 1650 */ 103, 104, 105, 106, 107, 203, 116, 127, 128, 56,
+ /* 1660 */ 229, 127, 128, 268, 318, 319, 4, 203, 292, 217,
+ /* 1670 */ 140, 203, 69, 219, 140, 122, 186, 111, 226, 227,
+ /* 1680 */ 77, 217, 203, 203, 203, 217, 83, 235, 14, 127,
+ /* 1690 */ 226, 227, 4, 127, 128, 203, 217, 217, 217, 235,
+ /* 1700 */ 109, 139, 168, 100, 101, 226, 227, 226, 227, 217,
+ /* 1710 */ 242, 108, 318, 319, 235, 38, 235, 286, 116, 116,
+ /* 1720 */ 266, 117, 229, 117, 121, 117, 121, 275, 125, 127,
+ /* 1730 */ 127, 128, 127, 128, 242, 4, 133, 285, 166, 275,
+ /* 1740 */ 119, 203, 263, 140, 141, 142, 143, 119, 203, 285,
+ /* 1750 */ 4, 213, 214, 203, 4, 217, 275, 207, 102, 154,
+ /* 1760 */ 203, 293, 217, 122, 285, 127, 285, 217, 203, 159,
+ /* 1770 */ 116, 226, 227, 111, 217, 117, 4, 139, 175, 286,
+ /* 1780 */ 235, 178, 217, 180, 181, 293, 82, 83, 84, 127,
+ /* 1790 */ 128, 87, 88, 89, 90, 91, 92, 93, 94, 111,
+ /* 1800 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 1810 */ 106, 107, 4, 116, 116, 127, 128, 117, 117, 73,
+ /* 1820 */ 275, 4, 117, 117, 16, 117, 50, 83, 84, 4,
+ /* 1830 */ 285, 87, 88, 89, 90, 91, 92, 93, 94, 274,
+ /* 1840 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ /* 1850 */ 106, 107, 203, 18, 4, 203, 203, 4, 127, 128,
+ /* 1860 */ 173, 116, 116, 117, 56, 6, 217, 121, 203, 217,
+ /* 1870 */ 217, 121, 4, 127, 128, 226, 227, 127, 128, 226,
+ /* 1880 */ 227, 203, 217, 203, 235, 77, 140, 118, 235, 4,
+ /* 1890 */ 140, 83, 8, 121, 116, 217, 4, 217, 50, 127,
+ /* 1900 */ 128, 155, 156, 157, 116, 203, 4, 117, 100, 101,
+ /* 1910 */ 179, 116, 263, 116, 4, 50, 108, 203, 168, 217,
+ /* 1920 */ 116, 4, 242, 203, 116, 117, 16, 102, 203, 121,
+ /* 1930 */ 137, 217, 207, 125, 285, 127, 128, 217, 285, 83,
+ /* 1940 */ 203, 133, 217, 203, 127, 128, 226, 227, 140, 141,
+ /* 1950 */ 142, 143, 127, 128, 217, 235, 151, 217, 125, 118,
+ /* 1960 */ 145, 189, 13, 226, 227, 140, 56, 164, 203, 122,
+ /* 1970 */ 4, 121, 235, 293, 121, 4, 274, 127, 128, 90,
+ /* 1980 */ 127, 128, 217, 175, 150, 203, 178, 77, 180, 181,
+ /* 1990 */ 140, 123, 175, 83, 90, 127, 128, 90, 4, 217,
+ /* 2000 */ 175, 203, 90, 176, 24, 285, 121, 18, 226, 227,
+ /* 2010 */ 100, 101, 127, 128, 274, 217, 4, 235, 108, 127,
+ /* 2020 */ 128, 168, 285, 121, 226, 227, 116, 117, 16, 127,
+ /* 2030 */ 128, 121, 203, 235, 203, 125, 150, 127, 128, 4,
+ /* 2040 */ 155, 177, 140, 133, 127, 128, 217, 203, 217, 203,
+ /* 2050 */ 140, 141, 142, 143, 4, 226, 227, 226, 227, 4,
+ /* 2060 */ 168, 217, 4, 217, 235, 157, 235, 285, 56, 109,
+ /* 2070 */ 226, 227, 226, 227, 109, 62, 4, 25, 203, 235,
+ /* 2080 */ 163, 235, 203, 285, 51, 175, 207, 121, 178, 77,
+ /* 2090 */ 180, 181, 217, 127, 128, 83, 217, 203, 127, 128,
+ /* 2100 */ 122, 226, 227, 203, 51, 185, 140, 207, 145, 203,
+ /* 2110 */ 235, 217, 100, 101, 285, 121, 285, 217, 4, 116,
+ /* 2120 */ 108, 127, 128, 217, 115, 4, 165, 203, 116, 285,
+ /* 2130 */ 16, 285, 125, 121, 140, 203, 116, 125, 117, 127,
+ /* 2140 */ 128, 217, 203, 115, 203, 133, 175, 117, 49, 217,
+ /* 2150 */ 226, 227, 140, 141, 142, 143, 217, 4, 217, 235,
+ /* 2160 */ 285, 4, 127, 128, 4, 226, 227, 226, 227, 113,
+ /* 2170 */ 56, 48, 216, 286, 235, 140, 235, 127, 128, 4,
+ /* 2180 */ 274, 309, 127, 128, 4, 127, 128, 175, 116, 203,
+ /* 2190 */ 178, 77, 180, 181, 182, 140, 203, 83, 269, 127,
+ /* 2200 */ 128, 232, 4, 217, 203, 4, 232, 149, 311, 285,
+ /* 2210 */ 217, 110, 226, 227, 100, 101, 311, 202, 217, 203,
+ /* 2220 */ 4, 235, 108, 207, 285, 202, 285, 226, 227, 203,
+ /* 2230 */ 116, 117, 16, 217, 202, 121, 235, 65, 188, 125,
+ /* 2240 */ 202, 127, 128, 217, 4, 204, 203, 133, 127, 128,
+ /* 2250 */ 207, 203, 226, 227, 140, 141, 142, 143, 4, 138,
+ /* 2260 */ 217, 235, 4, 203, 4, 217, 4, 204, 206, 78,
+ /* 2270 */ 209, 285, 56, 120, 226, 227, 203, 217, 122, 257,
+ /* 2280 */ 127, 128, 203, 235, 127, 128, 285, 127, 128, 175,
+ /* 2290 */ 217, 4, 178, 77, 180, 181, 217, 140, 119, 83,
+ /* 2300 */ 140, 272, 127, 128, 156, 226, 227, 127, 128, 258,
+ /* 2310 */ 251, 285, 4, 203, 235, 140, 100, 101, 173, 170,
+ /* 2320 */ 140, 120, 4, 259, 108, 127, 128, 217, 127, 128,
+ /* 2330 */ 171, 203, 116, 285, 16, 261, 172, 121, 203, 203,
+ /* 2340 */ 107, 125, 231, 127, 128, 217, 203, 116, 4, 133,
+ /* 2350 */ 4, 294, 217, 217, 226, 227, 140, 141, 142, 143,
+ /* 2360 */ 217, 203, 4, 235, 285, 203, 107, 127, 128, 226,
+ /* 2370 */ 227, 118, 289, 260, 56, 217, 182, 169, 235, 217,
+ /* 2380 */ 35, 127, 128, 313, 186, 127, 128, 127, 128, 127,
+ /* 2390 */ 128, 175, 203, 203, 178, 77, 180, 181, 203, 261,
+ /* 2400 */ 140, 83, 57, 276, 27, 46, 217, 217, 63, 155,
+ /* 2410 */ 276, 321, 217, 285, 127, 128, 226, 227, 100, 101,
+ /* 2420 */ 4, 226, 227, 4, 203, 235, 108, 140, 285, 189,
+ /* 2430 */ 235, 119, 4, 203, 116, 127, 128, 321, 217, 121,
+ /* 2440 */ 272, 253, 157, 125, 326, 127, 128, 217, 193, 187,
+ /* 2450 */ 4, 133, 228, 228, 109, 203, 226, 227, 140, 141,
+ /* 2460 */ 142, 143, 117, 39, 145, 235, 120, 122, 203, 217,
+ /* 2470 */ 238, 127, 128, 127, 128, 285, 168, 203, 203, 228,
+ /* 2480 */ 285, 203, 217, 144, 140, 127, 128, 230, 238, 228,
+ /* 2490 */ 145, 217, 217, 175, 203, 217, 178, 203, 180, 181,
+ /* 2500 */ 231, 226, 227, 158, 203, 160, 161, 228, 217, 203,
+ /* 2510 */ 235, 217, 228, 231, 169, 285, 171, 172, 217, 174,
+ /* 2520 */ 226, 227, 119, 217, 228, 203, 203, 228, 203, 235,
+ /* 2530 */ 206, 231, 226, 227, 176, 272, 120, 192, 203, 217,
+ /* 2540 */ 217, 235, 217, 127, 128, 203, 127, 128, 119, 226,
+ /* 2550 */ 227, 119, 217, 203, 206, 127, 128, 203, 235, 217,
+ /* 2560 */ 285, 226, 227, 33, 203, 272, 203, 217, 226, 227,
+ /* 2570 */ 235, 217, 126, 127, 128, 182, 300, 235, 217, 285,
+ /* 2580 */ 217, 301, 119, 257, 174, 278, 245, 226, 227, 81,
+ /* 2590 */ 119, 285, 278, 257, 175, 119, 235, 281, 203, 116,
+ /* 2600 */ 203, 284, 203, 175, 145, 203, 278, 278, 285, 257,
+ /* 2610 */ 245, 206, 217, 119, 217, 272, 217, 203, 206, 217,
+ /* 2620 */ 285, 226, 227, 226, 227, 226, 227, 285, 226, 227,
+ /* 2630 */ 235, 217, 235, 257, 235, 119, 272, 235, 203, 247,
+ /* 2640 */ 226, 227, 78, 203, 119, 247, 285, 119, 247, 235,
+ /* 2650 */ 119, 247, 217, 119, 176, 295, 272, 217, 119, 304,
+ /* 2660 */ 20, 226, 227, 272, 119, 203, 226, 227, 272, 203,
+ /* 2670 */ 235, 203, 304, 119, 119, 235, 306, 17, 306, 217,
+ /* 2680 */ 285, 254, 285, 217, 285, 217, 256, 285, 226, 227,
+ /* 2690 */ 229, 297, 226, 227, 226, 227, 290, 235, 260, 285,
+ /* 2700 */ 203, 235, 260, 235, 286, 203, 297, 203, 271, 273,
+ /* 2710 */ 229, 236, 240, 256, 217, 230, 273, 273, 201, 217,
+ /* 2720 */ 285, 217, 257, 226, 227, 285, 219, 254, 226, 227,
+ /* 2730 */ 226, 227, 235, 219, 219, 287, 203, 235, 219, 235,
+ /* 2740 */ 299, 203, 252, 298, 246, 324, 237, 285, 237, 270,
+ /* 2750 */ 217, 285, 226, 285, 241, 217, 203, 237, 226, 226,
+ /* 2760 */ 227, 310, 203, 73, 226, 227, 4, 327, 235, 327,
+ /* 2770 */ 217, 327, 327, 235, 327, 327, 217, 327, 327, 226,
+ /* 2780 */ 227, 203, 285, 203, 327, 226, 227, 285, 235, 285,
+ /* 2790 */ 327, 327, 327, 327, 235, 217, 327, 217, 327, 327,
+ /* 2800 */ 327, 327, 327, 327, 226, 227, 226, 227, 327, 327,
+ /* 2810 */ 327, 327, 327, 235, 327, 235, 327, 327, 285, 327,
+ /* 2820 */ 327, 327, 327, 285, 327, 327, 327, 327, 327, 327,
+ /* 2830 */ 327, 327, 327, 327, 327, 327, 327, 327, 285, 327,
+ /* 2840 */ 327, 327, 327, 327, 285, 327, 327, 327, 327, 327,
+ /* 2850 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 327,
+ /* 2860 */ 327, 327, 327, 285, 327, 285,
};
-#define YY_SHIFT_USE_DFLT (-101)
-#define YY_SHIFT_COUNT (513)
-#define YY_SHIFT_MIN (-100)
-#define YY_SHIFT_MAX (2642)
+#define YY_SHIFT_USE_DFLT (-131)
+#define YY_SHIFT_COUNT (534)
+#define YY_SHIFT_MIN (-130)
+#define YY_SHIFT_MAX (2762)
static const short yy_shift_ofst[] = {
- /* 0 */ 1352, 828, 1151, 1708, 1045, 1777, 1671, 2219, 2219, 2219,
- /* 10 */ 1753, 244, 2113, 2343, 2343, 2343, 2343, 2343, 2343, 2449,
- /* 20 */ 2343, 742, -4, 120, 2007, 1901, 2343, 2343, 2343, 2343,
- /* 30 */ 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
- /* 40 */ 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
- /* 50 */ 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
- /* 60 */ 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 779,
- /* 70 */ 1062, 1062, -1, 518, 518, 1744, 66, 15, 1016, 1744,
- /* 80 */ 2226, 2226, 2226, 2189, 2226, 748, 748, 2203, 400, 365,
- /* 90 */ 151, 69, 1763, 1130, 1852, 1845, 1293, 682, 1187, 682,
- /* 100 */ 1183, 1006, 436, 967, 2278, 2237, 2237, 2237, 2237, 285,
- /* 110 */ 2237, 2226, 2203, 2203, 400, 1685, 1685, 1454, 530, 530,
- /* 120 */ 956, 845, 191, 223, 306, 1626, 1158, 945, 439, 642,
- /* 130 */ 314, 1236, 795, 1236, 88, 797, 343, 466, 85, 2184,
- /* 140 */ 2174, 2169, 2154, 2000, 1662, 2205, 2104, 2180, 1447, 2149,
- /* 150 */ 2080, 1986, 1967, 1417, 2025, 1955, 1931, 1194, 1857, 1831,
- /* 160 */ 368, 1825, 1740, 1701, 1701, 1701, 1289, 811, 1070, 437,
- /* 170 */ 437, 799, 684, 674, 551, 516, 84, 1655, 1633, 1508,
- /* 180 */ 1162, 2203, 1166, 1166, 1207, 1069, 497, 2571, 2571, 2642,
- /* 190 */ 2571, 2571, -101, -101, 447, 739, 690, 653, -72, 610,
- /* 200 */ 610, 610, 610, 610, 610, 776, 415, 927, 569, 1582,
- /* 210 */ 1554, 1523, 1495, 1465, 1435, 1405, 1375, 1345, 1303, 1276,
- /* 220 */ 1250, 1007, 1842, 1612, 2284, 2514, 2514, -37, 626, 626,
- /* 230 */ 626, 626, -59, 202, 115, 348, 348, -17, 566, 486,
- /* 240 */ 208, 208, 208, 170, 1093, 358, 116, 97, 752, 363,
- /* 250 */ 1110, 1079, 877, 196, 603, 974, 154, 487, 735, 735,
- /* 260 */ 76, 1706, 595, 581, 735, 836, 598, 598, 855, 581,
- /* 270 */ 345, 345, 375, 253, 134, 2527, 2441, 2439, 2430, 2523,
- /* 280 */ 2523, 2425, 2368, 2422, 2455, 2420, 2455, 2418, 2455, 2415,
- /* 290 */ 2455, 2411, 2089, 2048, 2399, 2089, 2424, 2048, 2371, 2398,
- /* 300 */ 2393, 2048, 2390, 2424, 2048, 2381, 2319, 2444, 2348, 2089,
- /* 310 */ 2324, 2133, 2089, 2313, 2133, 2222, 2222, 2222, 2222, 2328,
- /* 320 */ 2133, 2222, 2264, 2222, 2328, 2222, 2222, 2152, 2177, 2183,
- /* 330 */ 2269, 2269, 2242, 2242, 2061, 2114, 2088, 2151, 2133, 2162,
- /* 340 */ 2130, 2061, 2053, 2056, 2048, 2054, 2083, 2117, 2060, 2089,
- /* 350 */ 2074, 2074, 2028, 2028, 2028, 2028, -101, -101, -101, -101,
- /* 360 */ -101, -101, -101, -101, -101, -101, 1090, -65, 238, 60,
- /* 370 */ 194, 697, 79, -38, 1690, 1644, 1066, 1614, 81, 1604,
- /* 380 */ 1575, 1294, 1170, 1147, 183, 558, -29, 1050, 1002, 129,
- /* 390 */ 878, 848, 148, 138, 2045, 2032, 1979, 1957, 1961, 1956,
- /* 400 */ 1948, 1953, 1902, 1949, 1946, 1909, 1878, 1992, 1912, 1982,
- /* 410 */ 1970, 1987, 1904, 1903, 1854, 1836, 1855, 1969, 1968, 1794,
- /* 420 */ 1874, 1870, 1869, 1838, 1774, 1759, 1891, 1770, 1795, 1783,
- /* 430 */ 1827, 1745, 1755, 1764, 1805, 1756, 1752, 1736, 1729, 1789,
- /* 440 */ 1828, 1718, 1668, 1822, 1642, 1725, 1741, 1618, 1584, 1624,
- /* 450 */ 1608, 1581, 1551, 1533, 1427, 1474, 1475, 1464, 1445, 1427,
- /* 460 */ 1443, 1412, 1402, 1336, 1374, 1366, 1297, 1324, 1430, 1400,
- /* 470 */ 1195, 1297, 1355, 1346, 1248, 1216, 1165, 1163, 1177, 1109,
- /* 480 */ 1095, 1074, 977, 1021, 926, 830, 816, 807, 873, 787,
- /* 490 */ 707, 786, 522, 686, 649, 616, 522, 523, 448, 407,
- /* 500 */ 344, 362, 308, 278, 272, 235, 184, 119, 105, -81,
- /* 510 */ 38, -43, -89, -100,
+ /* 0 */ 1591, 808, 1446, 138, 1318, 1603, 1364, 2114, 2114, 2114,
+ /* 10 */ 1260, 216, 2012, 2216, 2318, 2216, 2216, 2216, 2216, 2216,
+ /* 20 */ 2216, 949, -4, 106, 1910, 1808, 2216, 2216, 2216, 2216,
+ /* 30 */ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2318, 2216,
+ /* 40 */ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ /* 50 */ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ /* 60 */ 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216,
+ /* 70 */ 2216, 2216, 1746, 1463, 1463, 587, 1400, 1400, 2446, 89,
+ /* 80 */ 259, 592, 752, 2446, 2419, 2419, 2419, 2416, 2419, 494,
+ /* 90 */ 494, 2258, 978, 338, 786, 142, 1994, 1772, 1853, 1885,
+ /* 100 */ 1966, 1295, 1902, 1295, 1850, 1473, 1605, 752, 955, 2358,
+ /* 110 */ 2428, 2428, 2428, 2428, 143, 2428, 2419, 2258, 2258, 978,
+ /* 120 */ 750, 750, 1476, 519, 519, -43, 811, 1382, 1750, 1825,
+ /* 130 */ 1534, 1348, 1261, 623, 1490, 285, 232, 1244, 232, 1425,
+ /* 140 */ 127, 594, 220, 512, 2346, 2344, 2262, 2240, 2308, 2254,
+ /* 150 */ 2287, 2201, 2260, 2198, 2180, 2175, 2160, 2055, 2050, 662,
+ /* 160 */ 2153, 2157, 2121, 2058, 2035, 2072, 1134, 1104, 858, 858,
+ /* 170 */ 858, 1892, 1917, 1971, 277, 277, 1731, 1817, 1530, 1197,
+ /* 180 */ 1868, 762, 1688, 1662, 1566, 1432, 2258, 2258, 764, 764,
+ /* 190 */ 1077, 498, 200, 2690, 2690, 2762, 2690, 2690, -131, -131,
+ /* 200 */ -131, 421, 601, 601, 601, 601, 601, 601, 601, 601,
+ /* 210 */ 601, 601, 571, 388, 704, 677, 1214, 1185, 1153, -73,
+ /* 220 */ 1122, 1091, 1060, 1028, 997, 963, 936, 909, 754, 1547,
+ /* 230 */ 1257, 1704, 1744, 1744, 482, -16, -16, -16, -16, -16,
+ /* 240 */ -16, 204, 346, -35, -130, 406, 406, 862, 420, 1248,
+ /* 250 */ 1248, 1248, 199, 193, 334, -8, 57, 784, 377, 1638,
+ /* 260 */ 1562, 1602, 768, 1381, -67, 292, 589, 770, 734, 734,
+ /* 270 */ -79, 1292, 695, 627, 734, 190, 375, 375, 77, 627,
+ /* 280 */ 313, 313, 23, 131, 977, 2660, 2660, 2555, 2554, 2545,
+ /* 290 */ 2640, 2640, 2539, 2478, 2534, 2564, 2531, 2564, 2528, 2564,
+ /* 300 */ 2525, 2564, 2516, 2191, 2145, 2494, 2191, 2508, 2410, 2145,
+ /* 310 */ 2410, 2459, 2483, 2476, 2410, 2145, 2471, 2508, 2410, 2145,
+ /* 320 */ 2463, 2393, 2530, 2432, 2191, 2429, 2231, 2191, 2403, 2231,
+ /* 330 */ 2319, 2319, 2319, 2319, 2424, 2231, 2319, 2339, 2319, 2424,
+ /* 340 */ 2319, 2319, 2255, 2285, 2312, 2377, 2377, 2359, 2359, 2164,
+ /* 350 */ 2208, 2194, 2253, 2259, 2231, 2233, 2233, 2164, 2159, 2149,
+ /* 360 */ 2145, 2148, 2179, 2156, 2191, 2172, 2172, 2101, 2101, 2101,
+ /* 370 */ 2101, -131, -131, -131, -131, -131, -131, -131, -131, -131,
+ /* 380 */ -131, 2345, 40, 407, 798, 79, 533, 64, 343, 1256,
+ /* 390 */ 1209, -74, 1116, -22, 1085, 1054, 844, 413, 340, -5,
+ /* 400 */ 720, 401, 245, 209, -28, 65, 201, 87, -80, 167,
+ /* 410 */ 2123, 2099, 2056, 2028, 2030, 2021, 2007, 2020, 1961, 2009,
+ /* 420 */ 2003, 1963, 1920, 2053, 1978, 2033, 2013, 2052, 1965, 1960,
+ /* 430 */ 1908, 1864, 1886, 1980, 1989, 1827, 1912, 1907, 1904, 1889,
+ /* 440 */ 1834, 1847, 1803, 1949, 1815, 1841, 1833, 1856, 1805, 1793,
+ /* 450 */ 1804, 1865, 1797, 1795, 1790, 1788, 1848, 1884, 1778, 1769,
+ /* 460 */ 1859, 1745, 1776, 1835, 1708, 1687, 1698, 1706, 1705, 1701,
+ /* 470 */ 1700, 1641, 1610, 1697, 1658, 1654, 1641, 1656, 1628, 1621,
+ /* 480 */ 1572, 1608, 1606, 1553, 1604, 1677, 1674, 1540, 1553, 1611,
+ /* 490 */ 1582, 1579, 1544, 1500, 1486, 1482, 1444, 1470, 1443, 1469,
+ /* 500 */ 1320, 1309, 1282, 1290, 1286, 1362, 1202, 1172, 1068, 1082,
+ /* 510 */ 986, 1129, 991, 954, 1024, 987, 991, 870, 842, 829,
+ /* 520 */ 777, 812, 732, 608, 517, 574, 437, 419, 379, 242,
+ /* 530 */ 358, 114, 76, 50, 11,
};
-#define YY_REDUCE_USE_DFLT (-228)
-#define YY_REDUCE_COUNT (365)
-#define YY_REDUCE_MIN (-227)
-#define YY_REDUCE_MAX (2757)
+#define YY_REDUCE_USE_DFLT (-105)
+#define YY_REDUCE_COUNT (380)
+#define YY_REDUCE_MIN (-104)
+#define YY_REDUCE_MAX (2580)
static const short yy_reduce_ofst[] = {
- /* 0 */ 389, -131, -8, 117, 1524, 366, 123, 958, 717, 118,
- /* 10 */ -66, 1806, 1767, 1823, 1773, 1762, 1600, 1030, 1593, 1576,
- /* 20 */ 1013, 875, 2757, 2754, 2720, 2695, 2693, 2691, 2676, 2661,
- /* 30 */ 2657, 2655, 2641, 2625, 2605, 2601, 2589, 2573, 2559, 2557,
- /* 40 */ 2554, 2520, 2494, 2482, 2480, 2468, 2461, 2454, 2442, 2435,
- /* 50 */ 2428, 2359, 2354, 2277, 2272, 2238, 2213, 2206, 2178, 2132,
- /* 60 */ 2046, 2041, 2026, 1980, 1975, 1940, 1935, 1929, 1835, 172,
- /* 70 */ 670, 386, -130, 866, 760, -101, 211, 1265, 1113, 216,
- /* 80 */ 1882, 1814, 1531, 1027, 699, 858, 688, -166, 361, 1737,
- /* 90 */ 765, 868, 2194, 2058, 1964, 1883, 1686, 1528, 1561, 55,
- /* 100 */ 1521, 1064, 933, 394, 751, 1779, 1695, 1640, 996, -227,
- /* 110 */ 122, 1539, 605, -119, 773, 606, -173, 321, 1638, 1563,
- /* 120 */ 893, 525, 2289, 2279, 2239, 1888, 1888, 2275, 2274, 2271,
- /* 130 */ 2263, 1211, 2246, 876, 1888, 1619, 1261, 2239, 2234, 2232,
- /* 140 */ 1888, 1888, 1888, 1888, 1888, 1888, 1888, 2214, 1888, 1888,
- /* 150 */ 1888, 1888, 2211, 1888, 1888, 1888, 2210, 2204, 2124, 2122,
- /* 160 */ 2110, 2103, 2082, 1587, 1082, 1059, 2001, 1973, 1943, 1171,
- /* 170 */ 1111, 1914, 1899, 1888, 1861, 1761, 1012, 1713, 1684, 1679,
- /* 180 */ 1672, 1530, 1098, 1075, 1084, 1152, 824, 931, 710, 1103,
- /* 190 */ 646, 189, 851, -74, 1817, 1817, 1817, 1817, 1817, 1817,
- /* 200 */ 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- /* 210 */ 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- /* 220 */ 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
- /* 230 */ 1817, 1817, 1817, 1817, 2416, 2427, 2423, 1817, 2335, 2335,
- /* 240 */ 2413, 2410, 2404, 2372, 2318, 2391, 2382, 2350, 2337, 2336,
- /* 250 */ 2412, 2409, 2407, 2406, 2358, 2401, 2340, 2346, 2326, 2325,
- /* 260 */ 2365, 2356, 2352, 2355, 2306, 2302, 2327, 2322, 2286, 2341,
- /* 270 */ 2273, 2270, 1817, 2312, 2310, 2260, 2150, 2285, 2283, 2247,
- /* 280 */ 2244, 2282, 2251, 2150, 2295, 2150, 2293, 2150, 2291, 2150,
- /* 290 */ 2287, 2259, 2321, 2276, 2257, 2320, 2281, 2268, 2236, 2235,
- /* 300 */ 2150, 2256, 2150, 2265, 2248, 2150, 2200, 2196, 2202, 2253,
- /* 310 */ 2150, 2228, 2250, 2150, 2221, 2216, 2209, 2207, 2197, 2182,
- /* 320 */ 2195, 2191, 2166, 2145, 2112, 2129, 2123, 2016, 2071, 2047,
- /* 330 */ 1997, 1977, 2013, 2009, 2019, 2011, 1981, 1972, 2018, 1989,
- /* 340 */ 1817, 1983, 1978, 1971, 1963, 1952, 1928, 1985, 1966, 1984,
- /* 350 */ 1954, 1933, 1962, 1942, 1939, 1934, 1813, 1811, 1812, 1880,
- /* 360 */ 1872, 1840, 1817, 1817, 1817, 1885,
+ /* 0 */ 154, 119, 1164, 619, 1252, 1189, 176, 1167, 329, -45,
+ /* 10 */ -104, 1649, -101, 1545, 1481, 1479, 1464, 1452, 1314, 1298,
+ /* 20 */ 183, 691, 2580, 2578, 2559, 2553, 2538, 2533, 2504, 2502,
+ /* 30 */ 2497, 2468, 2466, 2462, 2440, 2435, 2414, 2402, 2399, 2397,
+ /* 40 */ 2395, 2361, 2342, 2335, 2323, 2306, 2294, 2275, 2230, 2195,
+ /* 50 */ 2190, 2143, 2128, 2079, 2048, 2026, 2001, 1986, 1941, 1939,
+ /* 60 */ 1924, 1875, 1846, 1844, 1831, 1829, 1798, 1782, 1737, 1720,
+ /* 70 */ 1653, 660, 622, 18, -23, 513, 428, 54, 337, 615,
+ /* 80 */ 721, 1126, 525, 1538, 1680, 1492, 1468, 760, -102, 683,
+ /* 90 */ 335, 507, 348, 1111, 515, 1395, 2043, 2016, 1900, 1879,
+ /* 100 */ 1725, 1204, 1550, 920, 1375, 1125, 696, 1193, 439, 778,
+ /* 110 */ 1906, 1740, 1702, 1565, 405, 1283, 667, 62, -84, 736,
+ /* 120 */ 540, 240, 483, 1493, 1431, 1311, 373, 2363, 2354, 2322,
+ /* 130 */ 1894, 1894, 2350, 2325, 2136, 1932, 1227, 1714, 723, 1894,
+ /* 140 */ 1454, 1394, 2322, 2301, 2291, 1894, 1894, 1894, 1894, 1894,
+ /* 150 */ 1894, 1894, 2278, 1894, 1894, 1894, 1894, 2274, 1894, 1894,
+ /* 160 */ 1894, 2265, 2252, 2221, 2189, 2162, 2158, 2135, 1357, 1061,
+ /* 170 */ 998, 2110, 2073, 1665, 1346, 1296, 2060, 1993, 1894, 1765,
+ /* 180 */ 1678, 1376, 1652, 1557, 1480, 1278, 1251, 1225, 1266, 1217,
+ /* 190 */ 971, 1319, 469, 1307, 1302, 831, 1233, 1168, 158, 1201,
+ /* 200 */ 645, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ /* 210 */ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ /* 220 */ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ /* 230 */ 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887, 1887,
+ /* 240 */ 1887, 1887, 1887, 1887, 2513, 2532, 2526, 2451, 2451, 2520,
+ /* 250 */ 2511, 2509, 2479, 2421, 2498, 2490, 2448, 2441, 2445, 2519,
+ /* 260 */ 2515, 2514, 1887, 2507, 2473, 2517, 2465, 2457, 2444, 2443,
+ /* 270 */ 2485, 2472, 2475, 2481, 2436, 2437, 2442, 2438, 2406, 2461,
+ /* 280 */ 2409, 2394, 2418, 2430, 2427, 2372, 2370, 2263, 2396, 2391,
+ /* 290 */ 2368, 2355, 2384, 2360, 2263, 2404, 2263, 2401, 2263, 2398,
+ /* 300 */ 2263, 2392, 2364, 2412, 2376, 2343, 2405, 2365, 2329, 2352,
+ /* 310 */ 2328, 2317, 2316, 2263, 2314, 2336, 2263, 2341, 2307, 2326,
+ /* 320 */ 2263, 2280, 2276, 2293, 2348, 2263, 2300, 2324, 2263, 2282,
+ /* 330 */ 2299, 2296, 2284, 2279, 2250, 2269, 2261, 2257, 2251, 2232,
+ /* 340 */ 2225, 2224, 2118, 2188, 2168, 2116, 2090, 2134, 2127, 2138,
+ /* 350 */ 2113, 2083, 2070, 2057, 2111, 1887, 1887, 2074, 2064, 2051,
+ /* 360 */ 2022, 2059, 2029, 2061, 2062, 2063, 2041, 2038, 2032, 2023,
+ /* 370 */ 2015, 1905, 1897, 1872, 1974, 1969, 1929, 1887, 1887, 1887,
+ /* 380 */ 1956,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 849, 1158, 1158, 1277, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 10 */ 1277, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 20 */ 1158, 1277, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 30 */ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 40 */ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 50 */ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
- /* 60 */ 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1029,
- /* 70 */ 1316, 1316, 1316, 1293, 1293, 1316, 1022, 1316, 1316, 1316,
- /* 80 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 896, 1018,
- /* 90 */ 886, 1029, 1316, 1316, 1316, 1316, 1316, 1089, 1103, 1089,
- /* 100 */ 1081, 1072, 1316, 1316, 1194, 1097, 1097, 1097, 1097, 969,
- /* 110 */ 1097, 1316, 1316, 1316, 1316, 1129, 1128, 1316, 1057, 1057,
- /* 120 */ 1160, 1316, 1247, 1252, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 130 */ 1090, 1316, 1316, 1316, 1030, 1018, 1293, 1316, 1316, 1316,
- /* 140 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1104,
- /* 150 */ 1082, 1073, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 160 */ 1316, 1316, 1316, 1018, 1018, 1018, 1316, 1316, 1316, 1293,
- /* 170 */ 1293, 1316, 1316, 1316, 1316, 1316, 883, 1316, 1316, 1316,
- /* 180 */ 855, 1316, 1293, 1293, 849, 1277, 1051, 1277, 1277, 891,
- /* 190 */ 1277, 1277, 1270, 1008, 1067, 1160, 1160, 1160, 1160, 1035,
- /* 200 */ 1077, 1065, 1069, 1171, 1068, 1160, 1160, 1160, 1160, 1160,
- /* 210 */ 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
- /* 220 */ 1160, 1160, 1160, 1160, 1131, 1143, 1130, 1138, 1147, 1139,
- /* 230 */ 1142, 1133, 1132, 1134, 1316, 1316, 1316, 1135, 1316, 1316,
- /* 240 */ 1316, 1316, 1316, 1021, 1316, 1316, 991, 1316, 1316, 1221,
- /* 250 */ 1316, 1316, 898, 1316, 1006, 858, 1076, 1019, 1047, 1047,
- /* 260 */ 936, 960, 920, 1057, 1047, 1037, 1051, 1051, 1166, 1057,
- /* 270 */ 1316, 1316, 1136, 1019, 1006, 1261, 1038, 1038, 1038, 1246,
- /* 280 */ 1246, 1038, 1194, 1038, 982, 1038, 982, 1038, 982, 1038,
- /* 290 */ 982, 1038, 880, 1076, 1038, 880, 973, 1076, 1109, 1093,
- /* 300 */ 1038, 1076, 1038, 973, 1076, 1038, 1228, 1226, 1038, 880,
- /* 310 */ 1038, 1179, 880, 1038, 1179, 971, 971, 971, 971, 952,
- /* 320 */ 1179, 971, 936, 971, 952, 971, 971, 1312, 1316, 1038,
- /* 330 */ 1303, 1303, 1060, 1060, 1066, 1051, 1316, 1185, 1179, 1160,
- /* 340 */ 1137, 1066, 1064, 1061, 1076, 1316, 1038, 877, 955, 880,
- /* 350 */ 866, 866, 854, 854, 854, 854, 1274, 1274, 1270, 938,
- /* 360 */ 938, 1024, 1146, 1145, 1144, 907, 1159, 1316, 1316, 1316,
- /* 370 */ 1316, 1316, 1316, 1195, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 380 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 390 */ 1316, 1316, 1316, 1316, 1316, 850, 1316, 1316, 1316, 1316,
- /* 400 */ 1316, 1264, 1316, 1316, 1316, 1316, 1316, 1316, 1225, 1224,
- /* 410 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 420 */ 1316, 1316, 1316, 1316, 1316, 1316, 1213, 1316, 1316, 1316,
- /* 430 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 440 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 450 */ 1316, 1316, 1316, 1316, 994, 1000, 1316, 1316, 1316, 995,
- /* 460 */ 1316, 1316, 1122, 1316, 1316, 1316, 1169, 1316, 1316, 1316,
- /* 470 */ 1316, 1062, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
- /* 480 */ 1316, 1316, 1316, 1316, 1316, 1316, 1309, 1052, 1316, 1316,
- /* 490 */ 1159, 1316, 1279, 1316, 1316, 1316, 1278, 1316, 1316, 1316,
- /* 500 */ 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1123, 1122, 1161,
- /* 510 */ 889, 1316, 864, 1316, 846, 851, 1263, 1260, 1262, 1257,
- /* 520 */ 1258, 1256, 1259, 1255, 1253, 1254, 1251, 1249, 1248, 1250,
- /* 530 */ 1245, 1241, 1201, 1199, 1197, 1206, 1205, 1204, 1203, 1202,
- /* 540 */ 1198, 1196, 1200, 1192, 1191, 1100, 1079, 1070, 989, 1240,
- /* 550 */ 1238, 1239, 1190, 1188, 1189, 988, 987, 986, 981, 980,
- /* 560 */ 979, 978, 1267, 1276, 1275, 1273, 1272, 1271, 1265, 1266,
- /* 570 */ 1177, 1176, 1174, 1173, 1175, 882, 1217, 1220, 1219, 1218,
- /* 580 */ 1223, 1222, 1215, 1227, 1232, 1231, 1236, 1235, 1234, 1233,
- /* 590 */ 1230, 1212, 1108, 1107, 1105, 1102, 1112, 1111, 1110, 1101,
- /* 600 */ 1094, 1106, 1084, 1092, 1091, 1080, 1083, 974, 1075, 1071,
- /* 610 */ 1074, 990, 1216, 985, 984, 983, 881, 876, 1040, 875,
- /* 620 */ 874, 885, 958, 959, 967, 970, 965, 968, 964, 963,
- /* 630 */ 962, 966, 961, 957, 888, 887, 897, 951, 934, 923,
- /* 640 */ 890, 925, 922, 921, 926, 943, 942, 949, 948, 947,
- /* 650 */ 946, 945, 941, 944, 940, 939, 927, 919, 918, 937,
- /* 660 */ 917, 954, 953, 950, 916, 977, 976, 975, 972, 915,
- /* 670 */ 914, 913, 912, 911, 910, 1157, 1315, 1311, 1314, 1313,
- /* 680 */ 1310, 1156, 1162, 1150, 1148, 992, 1003, 1002, 1001, 998,
- /* 690 */ 999, 1013, 1011, 1010, 1009, 1046, 1045, 1044, 1043, 1042,
- /* 700 */ 1041, 1034, 1032, 1027, 1026, 1033, 1031, 1028, 1049, 1050,
- /* 710 */ 1048, 1025, 1017, 1015, 1016, 1014, 1099, 1096, 1098, 1095,
- /* 720 */ 1036, 1023, 1020, 1007, 1291, 1289, 1292, 1290, 1288, 1296,
- /* 730 */ 1298, 1297, 1302, 1300, 1299, 1295, 1308, 1307, 1306, 1305,
- /* 740 */ 1304, 1294, 1301, 1287, 1286, 1285, 1284, 1054, 1059, 1058,
- /* 750 */ 1053, 997, 1161, 1149, 1159, 1153, 1282, 1280, 1283, 1182,
- /* 760 */ 1184, 1187, 1186, 1183, 1056, 1055, 1181, 1180, 1281, 1152,
- /* 770 */ 1127, 903, 901, 902, 1209, 1208, 1211, 1210, 1207, 905,
- /* 780 */ 904, 900, 899, 1125, 1121, 1120, 1237, 1154, 1155, 1119,
- /* 790 */ 1124, 1117, 1116, 1115, 1141, 1140, 1126, 1118, 892, 996,
- /* 800 */ 993, 1151, 1114, 1039, 1113, 933, 932, 931, 930, 929,
- /* 810 */ 928, 1005, 1004, 909, 924, 908, 906, 884, 879, 878,
- /* 820 */ 873, 871, 868, 870, 867, 872, 869, 865, 863, 862,
- /* 830 */ 861, 860, 859, 895, 894, 893, 889, 857, 856, 853,
- /* 840 */ 852, 848, 847, 845,
+ /* 0 */ 875, 1195, 1195, 1315, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 10 */ 1315, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 20 */ 1195, 1315, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 30 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 40 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 50 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 60 */ 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+ /* 70 */ 1195, 1195, 1059, 1357, 1357, 1357, 1334, 1334, 1357, 1052,
+ /* 80 */ 1357, 1357, 903, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 90 */ 1357, 1357, 926, 1048, 916, 1059, 1357, 1357, 1357, 1357,
+ /* 100 */ 1357, 1121, 1135, 1121, 1113, 1102, 1357, 1357, 1357, 1231,
+ /* 110 */ 1129, 1129, 1129, 1129, 999, 1129, 1357, 1357, 1357, 1357,
+ /* 120 */ 1163, 1162, 1357, 1087, 1087, 1197, 1357, 1284, 1289, 1156,
+ /* 130 */ 1357, 1357, 1357, 1357, 1357, 1122, 1357, 1357, 1357, 1060,
+ /* 140 */ 1048, 1334, 1156, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 150 */ 1357, 1357, 1357, 1357, 1136, 1114, 1103, 1357, 1357, 1357,
+ /* 160 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1048, 1048,
+ /* 170 */ 1048, 1357, 1357, 1357, 1334, 1334, 1357, 1158, 1357, 1357,
+ /* 180 */ 1357, 913, 1357, 1357, 1357, 881, 1357, 1357, 1334, 1334,
+ /* 190 */ 875, 1315, 1081, 1315, 1315, 921, 1315, 1315, 1308, 1038,
+ /* 200 */ 1038, 1097, 1120, 1119, 1118, 1117, 1065, 1107, 1095, 1099,
+ /* 210 */ 1208, 1098, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+ /* 220 */ 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
+ /* 230 */ 1197, 1165, 1179, 1164, 1172, 1184, 1173, 1178, 1177, 1176,
+ /* 240 */ 1167, 1166, 1168, 1169, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 250 */ 1357, 1357, 1051, 1357, 1357, 1021, 1357, 1357, 1258, 1357,
+ /* 260 */ 1357, 928, 1170, 1357, 1036, 884, 1106, 1049, 1077, 1077,
+ /* 270 */ 966, 990, 950, 1087, 1077, 1067, 1081, 1081, 1203, 1087,
+ /* 280 */ 1357, 1357, 1197, 1049, 1036, 1299, 1299, 1068, 1068, 1068,
+ /* 290 */ 1283, 1283, 1068, 1231, 1068, 1012, 1068, 1012, 1068, 1012,
+ /* 300 */ 1068, 1012, 1068, 910, 1106, 1068, 910, 1003, 1109, 1106,
+ /* 310 */ 1109, 1141, 1125, 1068, 1109, 1106, 1068, 1003, 1109, 1106,
+ /* 320 */ 1068, 1265, 1263, 1068, 910, 1068, 1216, 910, 1068, 1216,
+ /* 330 */ 1001, 1001, 1001, 1001, 982, 1216, 1001, 966, 1001, 982,
+ /* 340 */ 1001, 1001, 1353, 1357, 1068, 1344, 1344, 1090, 1090, 1096,
+ /* 350 */ 1081, 1357, 1357, 1222, 1216, 1183, 1171, 1096, 1094, 1091,
+ /* 360 */ 1106, 1357, 1068, 985, 910, 892, 892, 880, 880, 880,
+ /* 370 */ 880, 1312, 1312, 1308, 968, 968, 1054, 1182, 1181, 1180,
+ /* 380 */ 937, 1196, 1357, 1357, 1357, 1357, 1357, 1357, 1232, 1357,
+ /* 390 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 400 */ 1357, 1357, 1357, 1357, 1357, 1318, 1357, 1357, 1357, 1357,
+ /* 410 */ 1357, 876, 1357, 1357, 1357, 1357, 1357, 1302, 1357, 1357,
+ /* 420 */ 1357, 1357, 1357, 1357, 1262, 1261, 1357, 1357, 1357, 1357,
+ /* 430 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 440 */ 1357, 1110, 1357, 1250, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 450 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 460 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 470 */ 1357, 1024, 1030, 1357, 1357, 1357, 1025, 1357, 1357, 1154,
+ /* 480 */ 1357, 1357, 1357, 1206, 1357, 1357, 1357, 1357, 1092, 1357,
+ /* 490 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357,
+ /* 500 */ 1357, 1357, 1357, 1350, 1082, 1357, 1357, 1357, 1198, 1357,
+ /* 510 */ 1196, 1357, 1317, 1357, 1357, 1357, 1316, 1357, 1357, 1357,
+ /* 520 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1155, 1154, 1198,
+ /* 530 */ 919, 899, 1357, 890, 1357, 872, 877, 1301, 1298, 1295,
+ /* 540 */ 1300, 1294, 1296, 1293, 1297, 1292, 1290, 1291, 1288, 1286,
+ /* 550 */ 1285, 1287, 1282, 1278, 1238, 1236, 1234, 1243, 1242, 1241,
+ /* 560 */ 1240, 1239, 1235, 1233, 1237, 1229, 1228, 1132, 1111, 1100,
+ /* 570 */ 1019, 1277, 1275, 1276, 1227, 1225, 1226, 1018, 1017, 1016,
+ /* 580 */ 1011, 1010, 1009, 1008, 1305, 1314, 1313, 1311, 1310, 1309,
+ /* 590 */ 1303, 1304, 1214, 1213, 1211, 1210, 1212, 912, 1254, 1257,
+ /* 600 */ 1256, 1255, 1260, 1259, 1252, 1264, 1269, 1268, 1273, 1272,
+ /* 610 */ 1271, 1270, 1267, 1249, 1140, 1139, 1137, 1134, 1144, 1143,
+ /* 620 */ 1142, 1133, 1126, 1138, 1116, 1124, 1123, 1112, 1115, 1004,
+ /* 630 */ 1105, 1101, 1104, 1020, 1253, 1015, 1014, 1013, 911, 902,
+ /* 640 */ 1070, 901, 900, 915, 988, 989, 997, 1000, 995, 998,
+ /* 650 */ 994, 993, 992, 996, 991, 987, 918, 917, 927, 981,
+ /* 660 */ 964, 953, 920, 955, 952, 951, 956, 973, 972, 979,
+ /* 670 */ 978, 977, 976, 975, 971, 974, 970, 969, 957, 949,
+ /* 680 */ 948, 967, 947, 984, 983, 980, 946, 1007, 1006, 1005,
+ /* 690 */ 1002, 945, 944, 943, 942, 941, 940, 1194, 1356, 1352,
+ /* 700 */ 1355, 1354, 1351, 1193, 1199, 1187, 1185, 1022, 1033, 1032,
+ /* 710 */ 1031, 1028, 1029, 1043, 1041, 1040, 1039, 1076, 1075, 1074,
+ /* 720 */ 1073, 1072, 1071, 1064, 1062, 1057, 1056, 1063, 1061, 1058,
+ /* 730 */ 1079, 1080, 1078, 1055, 1047, 1045, 1046, 1044, 1131, 1128,
+ /* 740 */ 1130, 1127, 1066, 1053, 1050, 1037, 1332, 1330, 1333, 1331,
+ /* 750 */ 1329, 1337, 1339, 1338, 1343, 1341, 1340, 1336, 1349, 1348,
+ /* 760 */ 1347, 1346, 1345, 1335, 1342, 1328, 1327, 1326, 1325, 1084,
+ /* 770 */ 1089, 1088, 1083, 1027, 1186, 1196, 1190, 1323, 1321, 1324,
+ /* 780 */ 1320, 1319, 1219, 1221, 1224, 1223, 1220, 1086, 1085, 1218,
+ /* 790 */ 1217, 1322, 1189, 1161, 933, 931, 932, 1246, 1245, 1248,
+ /* 800 */ 1247, 1244, 935, 934, 930, 929, 1159, 1153, 1152, 1274,
+ /* 810 */ 1191, 1192, 1151, 1157, 1149, 1148, 1147, 1175, 1174, 1160,
+ /* 820 */ 1150, 922, 1026, 1023, 1188, 1146, 1069, 1145, 963, 962,
+ /* 830 */ 961, 960, 959, 958, 1035, 1034, 939, 954, 938, 936,
+ /* 840 */ 914, 904, 909, 907, 908, 906, 905, 897, 894, 896,
+ /* 850 */ 893, 898, 895, 891, 889, 888, 887, 886, 885, 925,
+ /* 860 */ 924, 923, 919, 883, 882, 879, 878, 874, 873, 871,
};
/* The next table maps tokens into fallback tokens. If a construct
@@ -1122,6 +1097,7 @@ static const YYCODETYPE yyFallback[] = {
4, /* LAST => ID */
4, /* LIKE_KW => ID */
4, /* MATCH => ID */
+ 4, /* MATERIALIZED => ID */
4, /* NO => ID */
4, /* NULLS => ID */
4, /* OTHERS => ID */
@@ -1156,6 +1132,7 @@ static const YYCODETYPE yyFallback[] = {
4, /* RENAME => ID */
4, /* CTIME_KW => ID */
4, /* IF => ID */
+ 4, /* FILTER => ID */
};
#endif /* YYFALLBACK */
@@ -1316,26 +1293,27 @@ static const char *const yyTokenName[] = {
"FOLLOWING", "FOR", "GENERATED", "GROUPS",
"IGNORE", "IMMEDIATE", "INDEXED", "INITIALLY",
"INSTEAD", "LAST", "LIKE_KW", "MATCH",
- "NO", "NULLS", "OTHERS", "PLAN",
- "QUERY", "KEY", "OF", "OFFSET",
- "PARTITION", "PRAGMA", "PRECEDING", "RAISE",
- "RANGE", "RECURSIVE", "RELEASE", "REPLACE",
- "RESTRICT", "ROW", "ROWS", "ROLLBACK",
- "SAVEPOINT", "TEMP", "TIES", "TRIGGER",
- "UNBOUNDED", "VACUUM", "VIEW", "VIRTUAL",
- "WITH", "WITHOUT", "REINDEX", "RENAME",
- "CTIME_KW", "IF", "ANY", "OR",
- "AND", "NOT", "IS", "BETWEEN",
- "IN", "ISNULL", "NOTNULL", "NE",
- "EQ", "GT", "LE", "LT",
- "GE", "ESCAPE", "BITAND", "BITOR",
- "LSHIFT", "RSHIFT", "PLUS", "MINUS",
- "STAR", "SLASH", "REM", "CONCAT",
- "COLLATE", "BITNOT", "SEMI", "TRANSACTION",
- "ID_TRANS", "COMMIT", "TO", "CREATE",
- "TABLE", "LP", "RP", "AS",
- "DOT", "ID_TAB_NEW", "ID_DB", "CTX_ROWID_KW",
- "EXISTS", "COMMA", "ID_COL_NEW", "STRING",
+ "MATERIALIZED", "NO", "NULLS", "OTHERS",
+ "PLAN", "QUERY", "KEY", "OF",
+ "OFFSET", "PARTITION", "PRAGMA", "PRECEDING",
+ "RAISE", "RANGE", "RECURSIVE", "RELEASE",
+ "REPLACE", "RESTRICT", "ROW", "ROWS",
+ "ROLLBACK", "SAVEPOINT", "TEMP", "TIES",
+ "TRIGGER", "UNBOUNDED", "VACUUM", "VIEW",
+ "VIRTUAL", "WITH", "WITHOUT", "REINDEX",
+ "RENAME", "CTIME_KW", "IF", "FILTER",
+ "ANY", "OR", "AND", "NOT",
+ "IS", "BETWEEN", "IN", "ISNULL",
+ "NOTNULL", "NE", "EQ", "GT",
+ "LE", "LT", "GE", "ESCAPE",
+ "BITAND", "BITOR", "LSHIFT", "RSHIFT",
+ "PLUS", "MINUS", "STAR", "SLASH",
+ "REM", "CONCAT", "PTR", "COLLATE",
+ "BITNOT", "SEMI", "TRANSACTION", "ID_TRANS",
+ "COMMIT", "TO", "CREATE", "TABLE",
+ "LP", "RP", "AS", "DOT",
+ "ID_TAB_NEW", "ID_DB", "COMMA", "CTX_ROWID_KW",
+ "CTX_STRICT_KW", "EXISTS", "ID_COL_NEW", "STRING",
"JOIN_KW", "ID_COL_TYPE", "RIGHT_ASSOC", "CONSTRAINT",
"DEFAULT", "NULL", "PRIMARY", "UNIQUE",
"CHECK", "REFERENCES", "ID_CONSTR", "ID_COLLATE",
@@ -1347,44 +1325,45 @@ static const char *const yyTokenName[] = {
"EXCEPT", "INTERSECT", "DISTINCT", "ID_ALIAS",
"FROM", "USING", "JOIN", "ID_JOIN_OPTS",
"ID_IDX", "ORDER", "GROUP", "HAVING",
- "LIMIT", "WHERE", "ID_COL", "INTO",
- "NOTHING", "ID_FN", "ID_ERR_MSG", "VARIABLE",
- "CASE", "WHEN", "THEN", "ELSE",
- "INDEX", "ID_IDX_NEW", "ID_PRAGMA", "ID_TRIG_NEW",
- "ID_TRIG", "ALTER", "ADD", "WINDOW",
- "OVER", "FILTER", "error", "cmd",
+ "LIMIT", "WHERE", "RETURNING", "ID_COL",
+ "INTO", "NOTHING", "ID_FN", "ID_ERR_MSG",
+ "VARIABLE", "CASE", "WHEN", "THEN",
+ "ELSE", "INDEX", "ID_IDX_NEW", "ID_PRAGMA",
+ "ID_TRIG_NEW", "ID_TRIG", "ALTER", "ADD",
+ "WINDOW", "OVER", "error", "cmd",
"input", "cmdlist", "ecmd", "explain",
"cmdx", "transtype", "trans_opt", "nm",
"savepoint_opt", "temp", "ifnotexists", "fullname",
"columnlist", "conslist_opt", "table_options", "select",
- "column", "columnid", "type", "carglist",
- "id", "id_opt", "ids", "typetoken",
- "typename", "signed", "plus_num", "minus_num",
- "ccons", "term", "expr", "onconf",
- "sortorder", "autoinc", "idxlist_opt", "refargs",
- "defer_subclause", "gen_always", "tnm", "refarg",
- "refact", "init_deferred_pred_opt", "conslist", "tconscomma",
- "tcons", "idxlist", "defer_subclause_opt", "resolvetype",
- "orconf", "raisetype", "ifexists", "select_stmt",
- "with", "selectnowith", "oneselect", "multiselect_op",
- "values", "distinct", "selcollist", "from",
- "where_opt", "groupby_opt", "having_opt", "orderby_opt",
- "limit_opt", "window_clause", "nexprlist", "exprlist",
- "sclp", "as", "joinsrc", "singlesrc",
- "seltablist", "joinop", "joinconstr_opt", "dbnm",
- "indexed_opt", "idlist", "sortlist", "nulls",
- "delete_stmt", "update_stmt", "setlist", "idlist_opt",
- "insert_stmt", "insert_cmd", "upsert", "exprx",
- "not_opt", "likeop", "case_operand", "case_exprlist",
- "case_else", "filter_over", "uniqueflag", "idxlist_single",
- "collate", "vinto", "nmnum", "number",
- "trigger_time", "trigger_event", "foreach_clause", "when_clause",
- "trigger_cmd_list", "trigger_cmd", "database_kw_opt", "key_opt",
- "kwcolumn_opt", "create_vtab", "vtabarglist", "vtabarg",
- "vtabargtoken", "anylist", "wqlist", "wqcte",
- "windowdefn_list", "windowdefn", "window", "frame_opt",
- "range_or_rows", "frame_bound_s", "frame_exclude_opt", "frame_bound_e",
- "frame_bound", "frame_exclude", "filter_clause", "over_clause",
+ "table_option", "column", "columnid", "type",
+ "carglist", "id", "id_opt", "ids",
+ "typetoken", "typename", "signed", "plus_num",
+ "minus_num", "ccons", "term", "expr",
+ "onconf", "sortorder", "autoinc", "idxlist_opt",
+ "refargs", "defer_subclause", "gen_always", "tnm",
+ "refarg", "refact", "init_deferred_pred_opt", "conslist",
+ "tconscomma", "tcons", "idxlist", "defer_subclause_opt",
+ "resolvetype", "orconf", "raisetype", "ifexists",
+ "select_stmt", "with", "selectnowith", "oneselect",
+ "multiselect_op", "values", "distinct", "selcollist",
+ "from", "where_opt", "groupby_opt", "having_opt",
+ "orderby_opt", "limit_opt", "window_clause", "nexprlist",
+ "exprlist", "sclp", "as", "joinsrc",
+ "singlesrc", "seltablist", "joinop", "joinconstr_opt",
+ "dbnm", "indexed_opt", "idlist", "sortlist",
+ "nulls", "delete_stmt", "returning", "update_stmt",
+ "setlist", "idlist_opt", "insert_stmt", "insert_cmd",
+ "upsert", "exprx", "not_opt", "likeop",
+ "case_operand", "case_exprlist", "case_else", "filter_over",
+ "uniqueflag", "idxlist_single", "collate", "vinto",
+ "nmnum", "number", "trigger_time", "trigger_event",
+ "foreach_clause", "when_clause", "trigger_cmd_list", "trigger_cmd",
+ "database_kw_opt", "key_opt", "kwcolumn_opt", "create_vtab",
+ "vtabarglist", "vtabarg", "vtabargtoken", "anylist",
+ "wqlist", "wqas", "wqcte", "windowdefn_list",
+ "windowdefn", "window", "frame_opt", "range_or_rows",
+ "frame_bound_s", "frame_exclude_opt", "frame_bound_e", "frame_bound",
+ "frame_exclude", "filter_clause", "over_clause",
};
#endif /* NDEBUG */
@@ -1426,444 +1405,459 @@ static const char *const yyRuleName[] = {
/* 31 */ "cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW",
/* 32 */ "cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW",
/* 33 */ "table_options ::=",
- /* 34 */ "table_options ::= WITHOUT nm",
- /* 35 */ "table_options ::= WITHOUT CTX_ROWID_KW",
- /* 36 */ "ifnotexists ::=",
- /* 37 */ "ifnotexists ::= IF NOT EXISTS",
- /* 38 */ "temp ::= TEMP",
- /* 39 */ "temp ::=",
- /* 40 */ "columnlist ::= columnlist COMMA column",
- /* 41 */ "columnlist ::= column",
- /* 42 */ "column ::= columnid type carglist",
- /* 43 */ "columnid ::= nm",
- /* 44 */ "columnid ::= ID_COL_NEW",
- /* 45 */ "id ::= ID",
- /* 46 */ "id_opt ::= id",
- /* 47 */ "id_opt ::=",
- /* 48 */ "ids ::= ID|STRING",
- /* 49 */ "nm ::= id",
- /* 50 */ "nm ::= STRING",
- /* 51 */ "nm ::= JOIN_KW",
- /* 52 */ "type ::=",
- /* 53 */ "type ::= typetoken",
- /* 54 */ "typetoken ::= typename",
- /* 55 */ "typetoken ::= typename LP signed RP",
- /* 56 */ "typetoken ::= typename LP signed COMMA signed RP",
- /* 57 */ "typename ::= ids",
- /* 58 */ "typename ::= typename ids",
- /* 59 */ "typename ::= ID_COL_TYPE",
- /* 60 */ "signed ::= plus_num",
- /* 61 */ "signed ::= minus_num",
- /* 62 */ "carglist ::= carglist ccons",
- /* 63 */ "carglist ::=",
- /* 64 */ "ccons ::= CONSTRAINT nm",
- /* 65 */ "ccons ::= DEFAULT term",
- /* 66 */ "ccons ::= DEFAULT LP expr RP",
- /* 67 */ "ccons ::= DEFAULT PLUS term",
- /* 68 */ "ccons ::= DEFAULT MINUS term",
- /* 69 */ "ccons ::= DEFAULT id",
- /* 70 */ "ccons ::= DEFAULT CTIME_KW",
- /* 71 */ "ccons ::= NULL onconf",
- /* 72 */ "ccons ::= NOT NULL onconf",
- /* 73 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
- /* 74 */ "ccons ::= UNIQUE onconf",
- /* 75 */ "ccons ::= CHECK LP expr RP",
- /* 76 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
- /* 77 */ "ccons ::= defer_subclause",
- /* 78 */ "ccons ::= COLLATE ids",
- /* 79 */ "ccons ::= gen_always AS LP expr RP id_opt",
- /* 80 */ "ccons ::= CONSTRAINT ID_CONSTR",
- /* 81 */ "ccons ::= COLLATE ID_COLLATE",
- /* 82 */ "ccons ::= REFERENCES ID_TAB",
- /* 83 */ "ccons ::= CHECK LP RP",
- /* 84 */ "term ::= NULL",
- /* 85 */ "term ::= INTEGER",
- /* 86 */ "term ::= FLOAT",
- /* 87 */ "term ::= STRING|BLOB",
- /* 88 */ "tnm ::= term",
- /* 89 */ "tnm ::= nm",
- /* 90 */ "gen_always ::= GENERATED ALWAYS",
- /* 91 */ "gen_always ::=",
- /* 92 */ "autoinc ::=",
- /* 93 */ "autoinc ::= AUTOINCR",
- /* 94 */ "refargs ::=",
- /* 95 */ "refargs ::= refargs refarg",
- /* 96 */ "refarg ::= MATCH nm",
- /* 97 */ "refarg ::= ON INSERT refact",
- /* 98 */ "refarg ::= ON DELETE refact",
- /* 99 */ "refarg ::= ON UPDATE refact",
- /* 100 */ "refarg ::= MATCH ID_FK_MATCH",
- /* 101 */ "refact ::= SET NULL",
- /* 102 */ "refact ::= SET DEFAULT",
- /* 103 */ "refact ::= CASCADE",
- /* 104 */ "refact ::= RESTRICT",
- /* 105 */ "refact ::= NO ACTION",
- /* 106 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
- /* 107 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
- /* 108 */ "init_deferred_pred_opt ::=",
- /* 109 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
- /* 110 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
- /* 111 */ "conslist_opt ::=",
- /* 112 */ "conslist_opt ::= COMMA conslist",
- /* 113 */ "conslist ::= conslist tconscomma tcons",
- /* 114 */ "conslist ::= tcons",
- /* 115 */ "tconscomma ::= COMMA",
- /* 116 */ "tconscomma ::=",
- /* 117 */ "tcons ::= CONSTRAINT nm",
- /* 118 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
- /* 119 */ "tcons ::= UNIQUE LP idxlist RP onconf",
- /* 120 */ "tcons ::= CHECK LP expr RP onconf",
- /* 121 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
- /* 122 */ "tcons ::= CONSTRAINT ID_CONSTR",
- /* 123 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB",
- /* 124 */ "tcons ::= CHECK LP RP onconf",
- /* 125 */ "defer_subclause_opt ::=",
- /* 126 */ "defer_subclause_opt ::= defer_subclause",
- /* 127 */ "onconf ::=",
- /* 128 */ "onconf ::= ON CONFLICT resolvetype",
- /* 129 */ "orconf ::=",
- /* 130 */ "orconf ::= OR resolvetype",
- /* 131 */ "resolvetype ::= raisetype",
- /* 132 */ "resolvetype ::= IGNORE",
- /* 133 */ "resolvetype ::= REPLACE",
- /* 134 */ "cmd ::= DROP TABLE ifexists fullname",
- /* 135 */ "cmd ::= DROP TABLE ifexists nm DOT ID_TAB",
- /* 136 */ "cmd ::= DROP TABLE ifexists ID_DB|ID_TAB",
- /* 137 */ "ifexists ::= IF EXISTS",
- /* 138 */ "ifexists ::=",
- /* 139 */ "cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select",
- /* 140 */ "cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW",
- /* 141 */ "cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW",
- /* 142 */ "cmd ::= DROP VIEW ifexists fullname",
- /* 143 */ "cmd ::= DROP VIEW ifexists nm DOT ID_VIEW",
- /* 144 */ "cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW",
- /* 145 */ "cmd ::= select_stmt",
- /* 146 */ "select_stmt ::= select",
- /* 147 */ "select ::= with selectnowith",
- /* 148 */ "selectnowith ::= oneselect",
- /* 149 */ "selectnowith ::= selectnowith multiselect_op oneselect",
- /* 150 */ "selectnowith ::= values",
- /* 151 */ "selectnowith ::= selectnowith COMMA values",
- /* 152 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
- /* 153 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
- /* 154 */ "values ::= VALUES LP nexprlist RP",
- /* 155 */ "values ::= values COMMA LP exprlist RP",
- /* 156 */ "multiselect_op ::= UNION",
- /* 157 */ "multiselect_op ::= UNION ALL",
- /* 158 */ "multiselect_op ::= EXCEPT",
- /* 159 */ "multiselect_op ::= INTERSECT",
- /* 160 */ "distinct ::= DISTINCT",
- /* 161 */ "distinct ::= ALL",
- /* 162 */ "distinct ::=",
- /* 163 */ "sclp ::= selcollist COMMA",
- /* 164 */ "sclp ::=",
- /* 165 */ "selcollist ::= sclp expr as",
- /* 166 */ "selcollist ::= sclp STAR",
- /* 167 */ "selcollist ::= sclp tnm DOT STAR",
- /* 168 */ "selcollist ::= sclp",
- /* 169 */ "selcollist ::= sclp ID_TAB DOT STAR",
- /* 170 */ "as ::= AS nm",
- /* 171 */ "as ::= ids",
- /* 172 */ "as ::= AS ID_ALIAS",
- /* 173 */ "as ::= ID_ALIAS",
- /* 174 */ "as ::=",
- /* 175 */ "from ::=",
- /* 176 */ "from ::= FROM joinsrc",
- /* 177 */ "joinsrc ::= singlesrc seltablist",
- /* 178 */ "joinsrc ::=",
- /* 179 */ "seltablist ::= seltablist joinop singlesrc joinconstr_opt",
- /* 180 */ "seltablist ::=",
- /* 181 */ "singlesrc ::= nm dbnm as indexed_opt",
- /* 182 */ "singlesrc ::= LP select RP as",
- /* 183 */ "singlesrc ::= LP joinsrc RP as",
- /* 184 */ "singlesrc ::= nm dbnm LP exprlist RP as",
- /* 185 */ "singlesrc ::=",
- /* 186 */ "singlesrc ::= nm DOT",
- /* 187 */ "singlesrc ::= nm DOT ID_TAB",
- /* 188 */ "singlesrc ::= ID_DB|ID_TAB",
- /* 189 */ "singlesrc ::= nm DOT ID_VIEW",
- /* 190 */ "singlesrc ::= ID_DB|ID_VIEW",
- /* 191 */ "joinconstr_opt ::= ON expr",
- /* 192 */ "joinconstr_opt ::= USING LP idlist RP",
- /* 193 */ "joinconstr_opt ::=",
- /* 194 */ "dbnm ::=",
- /* 195 */ "dbnm ::= DOT nm",
- /* 196 */ "fullname ::= nm dbnm",
- /* 197 */ "joinop ::= COMMA",
- /* 198 */ "joinop ::= JOIN",
- /* 199 */ "joinop ::= JOIN_KW JOIN",
- /* 200 */ "joinop ::= JOIN_KW nm JOIN",
- /* 201 */ "joinop ::= JOIN_KW nm nm JOIN",
- /* 202 */ "joinop ::= ID_JOIN_OPTS",
- /* 203 */ "indexed_opt ::=",
- /* 204 */ "indexed_opt ::= INDEXED BY nm",
- /* 205 */ "indexed_opt ::= NOT INDEXED",
- /* 206 */ "indexed_opt ::= INDEXED BY ID_IDX",
- /* 207 */ "orderby_opt ::=",
- /* 208 */ "orderby_opt ::= ORDER BY sortlist",
- /* 209 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
- /* 210 */ "sortlist ::= expr sortorder nulls",
- /* 211 */ "sortorder ::= ASC",
- /* 212 */ "sortorder ::= DESC",
- /* 213 */ "sortorder ::=",
- /* 214 */ "nulls ::= NULLS FIRST",
- /* 215 */ "nulls ::= NULLS LAST",
- /* 216 */ "nulls ::=",
- /* 217 */ "groupby_opt ::=",
- /* 218 */ "groupby_opt ::= GROUP BY nexprlist",
- /* 219 */ "groupby_opt ::= GROUP BY",
- /* 220 */ "having_opt ::=",
- /* 221 */ "having_opt ::= HAVING expr",
- /* 222 */ "limit_opt ::=",
- /* 223 */ "limit_opt ::= LIMIT expr",
- /* 224 */ "limit_opt ::= LIMIT expr OFFSET expr",
- /* 225 */ "limit_opt ::= LIMIT expr COMMA expr",
- /* 226 */ "cmd ::= delete_stmt",
- /* 227 */ "delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt",
- /* 228 */ "delete_stmt ::= with DELETE FROM",
- /* 229 */ "delete_stmt ::= with DELETE FROM nm DOT",
- /* 230 */ "delete_stmt ::= with DELETE FROM nm DOT ID_TAB",
- /* 231 */ "delete_stmt ::= with DELETE FROM ID_DB|ID_TAB",
- /* 232 */ "where_opt ::=",
- /* 233 */ "where_opt ::= WHERE expr",
- /* 234 */ "where_opt ::= WHERE",
- /* 235 */ "cmd ::= update_stmt",
- /* 236 */ "update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt",
- /* 237 */ "update_stmt ::= with UPDATE orconf",
- /* 238 */ "update_stmt ::= with UPDATE orconf nm DOT",
- /* 239 */ "update_stmt ::= with UPDATE orconf nm DOT ID_TAB",
- /* 240 */ "update_stmt ::= with UPDATE orconf ID_DB|ID_TAB",
- /* 241 */ "setlist ::= setlist COMMA nm EQ expr",
- /* 242 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
- /* 243 */ "setlist ::= nm EQ expr",
- /* 244 */ "setlist ::= LP idlist RP EQ expr",
- /* 245 */ "setlist ::=",
- /* 246 */ "setlist ::= setlist COMMA",
- /* 247 */ "setlist ::= setlist COMMA ID_COL",
- /* 248 */ "setlist ::= ID_COL",
- /* 249 */ "idlist_opt ::=",
- /* 250 */ "idlist_opt ::= LP idlist RP",
- /* 251 */ "idlist ::= idlist COMMA nm",
- /* 252 */ "idlist ::= nm",
- /* 253 */ "idlist ::=",
- /* 254 */ "idlist ::= idlist COMMA ID_COL",
- /* 255 */ "idlist ::= ID_COL",
- /* 256 */ "cmd ::= insert_stmt",
- /* 257 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert",
- /* 258 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES",
- /* 259 */ "insert_stmt ::= with insert_cmd INTO",
- /* 260 */ "insert_stmt ::= with insert_cmd INTO nm DOT",
- /* 261 */ "insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB",
- /* 262 */ "insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB",
- /* 263 */ "insert_cmd ::= INSERT orconf",
- /* 264 */ "insert_cmd ::= REPLACE",
- /* 265 */ "upsert ::=",
- /* 266 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
- /* 267 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
- /* 268 */ "upsert ::= ON CONFLICT DO NOTHING",
- /* 269 */ "exprx ::= expr not_opt IN ID_DB",
- /* 270 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
- /* 271 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
- /* 272 */ "exprx ::= tnm DOT ID_TAB|ID_COL",
- /* 273 */ "exprx ::= tnm DOT nm DOT ID_COL",
- /* 274 */ "exprx ::= expr COLLATE ID_COLLATE",
- /* 275 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
- /* 276 */ "exprx ::= CTIME_KW",
- /* 277 */ "exprx ::= LP nexprlist RP",
- /* 278 */ "exprx ::= tnm",
- /* 279 */ "exprx ::= tnm DOT nm",
- /* 280 */ "exprx ::= tnm DOT nm DOT nm",
- /* 281 */ "exprx ::= VARIABLE",
- /* 282 */ "exprx ::= expr COLLATE ids",
- /* 283 */ "exprx ::= CAST LP expr AS typetoken RP",
- /* 284 */ "exprx ::= ID LP distinct exprlist RP",
- /* 285 */ "exprx ::= ID LP STAR RP",
- /* 286 */ "exprx ::= expr AND expr",
- /* 287 */ "exprx ::= expr OR expr",
- /* 288 */ "exprx ::= expr LT|GT|GE|LE expr",
- /* 289 */ "exprx ::= expr EQ|NE expr",
- /* 290 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
- /* 291 */ "exprx ::= expr PLUS|MINUS expr",
- /* 292 */ "exprx ::= expr STAR|SLASH|REM expr",
- /* 293 */ "exprx ::= expr CONCAT expr",
- /* 294 */ "exprx ::= expr not_opt likeop expr",
- /* 295 */ "exprx ::= expr not_opt likeop expr ESCAPE expr",
- /* 296 */ "exprx ::= expr ISNULL|NOTNULL",
- /* 297 */ "exprx ::= expr NOT NULL",
- /* 298 */ "exprx ::= expr IS not_opt expr",
- /* 299 */ "exprx ::= NOT expr",
- /* 300 */ "exprx ::= BITNOT expr",
- /* 301 */ "exprx ::= MINUS expr",
- /* 302 */ "exprx ::= PLUS expr",
- /* 303 */ "exprx ::= expr not_opt BETWEEN expr AND expr",
- /* 304 */ "exprx ::= expr not_opt IN LP exprlist RP",
- /* 305 */ "exprx ::= LP select RP",
- /* 306 */ "exprx ::= expr not_opt IN LP select RP",
- /* 307 */ "exprx ::= expr not_opt IN nm dbnm",
- /* 308 */ "exprx ::= EXISTS LP select RP",
- /* 309 */ "exprx ::= CASE case_operand case_exprlist case_else END",
- /* 310 */ "exprx ::= RAISE LP IGNORE RP",
- /* 311 */ "exprx ::= RAISE LP raisetype COMMA nm RP",
- /* 312 */ "exprx ::= ID LP distinct exprlist RP filter_over",
- /* 313 */ "exprx ::= ID LP STAR RP filter_over",
- /* 314 */ "expr ::=",
- /* 315 */ "expr ::= exprx",
- /* 316 */ "not_opt ::=",
- /* 317 */ "not_opt ::= NOT",
- /* 318 */ "likeop ::= LIKE_KW|MATCH",
- /* 319 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 320 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 321 */ "case_else ::= ELSE expr",
- /* 322 */ "case_else ::=",
- /* 323 */ "case_operand ::= exprx",
- /* 324 */ "case_operand ::=",
- /* 325 */ "exprlist ::= nexprlist",
- /* 326 */ "exprlist ::=",
- /* 327 */ "nexprlist ::= nexprlist COMMA expr",
- /* 328 */ "nexprlist ::= exprx",
- /* 329 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
- /* 330 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
- /* 331 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
- /* 332 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
- /* 333 */ "uniqueflag ::= UNIQUE",
- /* 334 */ "uniqueflag ::=",
- /* 335 */ "idxlist_opt ::=",
- /* 336 */ "idxlist_opt ::= LP idxlist RP",
- /* 337 */ "idxlist ::= idxlist COMMA idxlist_single",
- /* 338 */ "idxlist ::= idxlist_single",
- /* 339 */ "idxlist_single ::= nm collate sortorder",
- /* 340 */ "idxlist_single ::= ID_COL",
- /* 341 */ "collate ::=",
- /* 342 */ "collate ::= COLLATE ids",
- /* 343 */ "collate ::= COLLATE ID_COLLATE",
- /* 344 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 345 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX",
- /* 346 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX",
- /* 347 */ "cmd ::= VACUUM vinto",
- /* 348 */ "cmd ::= VACUUM nm vinto",
- /* 349 */ "vinto ::= INTO expr",
- /* 350 */ "vinto ::=",
- /* 351 */ "cmd ::= PRAGMA nm dbnm",
- /* 352 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 353 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 354 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 355 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
- /* 356 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
- /* 357 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
- /* 358 */ "nmnum ::= plus_num",
- /* 359 */ "nmnum ::= nm",
- /* 360 */ "nmnum ::= ON",
- /* 361 */ "nmnum ::= DELETE",
- /* 362 */ "nmnum ::= DEFAULT",
- /* 363 */ "plus_num ::= PLUS number",
- /* 364 */ "plus_num ::= number",
- /* 365 */ "minus_num ::= MINUS number",
- /* 366 */ "number ::= INTEGER",
- /* 367 */ "number ::= FLOAT",
- /* 368 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END",
- /* 369 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause",
- /* 370 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list",
- /* 371 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB",
- /* 372 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW",
- /* 373 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW",
- /* 374 */ "trigger_time ::= BEFORE",
- /* 375 */ "trigger_time ::= AFTER",
- /* 376 */ "trigger_time ::= INSTEAD OF",
- /* 377 */ "trigger_time ::=",
- /* 378 */ "trigger_event ::= DELETE",
- /* 379 */ "trigger_event ::= INSERT",
- /* 380 */ "trigger_event ::= UPDATE",
- /* 381 */ "trigger_event ::= UPDATE OF idlist",
- /* 382 */ "foreach_clause ::=",
- /* 383 */ "foreach_clause ::= FOR EACH ROW",
- /* 384 */ "when_clause ::=",
- /* 385 */ "when_clause ::= WHEN expr",
- /* 386 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 387 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 388 */ "trigger_cmd_list ::= SEMI",
- /* 389 */ "trigger_cmd ::= update_stmt",
- /* 390 */ "trigger_cmd ::= insert_stmt",
- /* 391 */ "trigger_cmd ::= delete_stmt",
- /* 392 */ "trigger_cmd ::= select_stmt",
- /* 393 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
- /* 394 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 395 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG",
- /* 396 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG",
- /* 397 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 398 */ "cmd ::= DETACH database_kw_opt expr",
- /* 399 */ "key_opt ::=",
- /* 400 */ "key_opt ::= KEY expr",
- /* 401 */ "database_kw_opt ::= DATABASE",
- /* 402 */ "database_kw_opt ::=",
- /* 403 */ "cmd ::= REINDEX",
- /* 404 */ "cmd ::= REINDEX nm dbnm",
- /* 405 */ "cmd ::= REINDEX ID_COLLATE",
- /* 406 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX",
- /* 407 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB",
- /* 408 */ "cmd ::= ANALYZE",
- /* 409 */ "cmd ::= ANALYZE nm dbnm",
- /* 410 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX",
- /* 411 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB",
- /* 412 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 413 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column",
- /* 414 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW",
- /* 415 */ "cmd ::= ALTER TABLE nm DOT ID_TAB",
- /* 416 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB",
- /* 417 */ "kwcolumn_opt ::=",
- /* 418 */ "kwcolumn_opt ::= COLUMNKW",
- /* 419 */ "cmd ::= create_vtab",
- /* 420 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 421 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP",
- /* 422 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW",
- /* 423 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW",
- /* 424 */ "vtabarglist ::= vtabarg",
- /* 425 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 426 */ "vtabarg ::=",
- /* 427 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 428 */ "vtabargtoken ::= ANY",
- /* 429 */ "vtabargtoken ::= LP anylist RP",
- /* 430 */ "anylist ::=",
- /* 431 */ "anylist ::= anylist LP anylist RP",
- /* 432 */ "anylist ::= anylist ANY",
- /* 433 */ "with ::=",
- /* 434 */ "with ::= WITH wqlist",
- /* 435 */ "with ::= WITH RECURSIVE wqlist",
- /* 436 */ "wqlist ::= wqcte",
- /* 437 */ "wqlist ::= wqlist COMMA wqcte",
- /* 438 */ "wqlist ::= ID_TAB_NEW",
- /* 439 */ "wqcte ::= nm idxlist_opt AS LP select RP",
- /* 440 */ "windowdefn_list ::= windowdefn",
- /* 441 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
- /* 442 */ "windowdefn ::= nm AS LP window RP",
- /* 443 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
- /* 444 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
- /* 445 */ "window ::= ORDER BY sortlist frame_opt",
- /* 446 */ "window ::= nm ORDER BY sortlist frame_opt",
- /* 447 */ "window ::= frame_opt",
- /* 448 */ "window ::= nm frame_opt",
- /* 449 */ "frame_opt ::=",
- /* 450 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
- /* 451 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
- /* 452 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
- /* 453 */ "frame_bound_s ::= frame_bound",
- /* 454 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
- /* 455 */ "frame_bound_e ::= frame_bound",
- /* 456 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
- /* 457 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
- /* 458 */ "frame_bound ::= CURRENT ROW",
- /* 459 */ "frame_exclude_opt ::=",
- /* 460 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
- /* 461 */ "frame_exclude ::= NO OTHERS",
- /* 462 */ "frame_exclude ::= CURRENT ROW",
- /* 463 */ "frame_exclude ::= GROUP",
- /* 464 */ "frame_exclude ::= TIES",
- /* 465 */ "window_clause ::= WINDOW windowdefn_list",
- /* 466 */ "filter_over ::= filter_clause over_clause",
- /* 467 */ "filter_over ::= over_clause",
- /* 468 */ "filter_over ::= filter_clause",
- /* 469 */ "over_clause ::= OVER LP window RP",
- /* 470 */ "over_clause ::= OVER nm",
- /* 471 */ "filter_clause ::= FILTER LP WHERE expr RP",
+ /* 34 */ "table_options ::= table_option",
+ /* 35 */ "table_options ::= table_options COMMA table_option",
+ /* 36 */ "table_option ::= WITHOUT nm",
+ /* 37 */ "table_option ::= nm",
+ /* 38 */ "table_option ::= WITHOUT CTX_ROWID_KW",
+ /* 39 */ "table_option ::= CTX_STRICT_KW",
+ /* 40 */ "ifnotexists ::=",
+ /* 41 */ "ifnotexists ::= IF NOT EXISTS",
+ /* 42 */ "temp ::= TEMP",
+ /* 43 */ "temp ::=",
+ /* 44 */ "columnlist ::= columnlist COMMA column",
+ /* 45 */ "columnlist ::= column",
+ /* 46 */ "column ::= columnid type carglist",
+ /* 47 */ "columnid ::= nm",
+ /* 48 */ "columnid ::= ID_COL_NEW",
+ /* 49 */ "id ::= ID",
+ /* 50 */ "id_opt ::= id",
+ /* 51 */ "id_opt ::=",
+ /* 52 */ "ids ::= ID|STRING",
+ /* 53 */ "nm ::= id",
+ /* 54 */ "nm ::= STRING",
+ /* 55 */ "nm ::= JOIN_KW",
+ /* 56 */ "type ::=",
+ /* 57 */ "type ::= typetoken",
+ /* 58 */ "typetoken ::= typename",
+ /* 59 */ "typetoken ::= typename LP signed RP",
+ /* 60 */ "typetoken ::= typename LP signed COMMA signed RP",
+ /* 61 */ "typename ::= ids",
+ /* 62 */ "typename ::= typename ids",
+ /* 63 */ "typename ::= ID_COL_TYPE",
+ /* 64 */ "signed ::= plus_num",
+ /* 65 */ "signed ::= minus_num",
+ /* 66 */ "carglist ::= carglist ccons",
+ /* 67 */ "carglist ::=",
+ /* 68 */ "ccons ::= CONSTRAINT nm",
+ /* 69 */ "ccons ::= DEFAULT term",
+ /* 70 */ "ccons ::= DEFAULT LP expr RP",
+ /* 71 */ "ccons ::= DEFAULT PLUS term",
+ /* 72 */ "ccons ::= DEFAULT MINUS term",
+ /* 73 */ "ccons ::= DEFAULT id",
+ /* 74 */ "ccons ::= DEFAULT CTIME_KW",
+ /* 75 */ "ccons ::= NULL onconf",
+ /* 76 */ "ccons ::= NOT NULL onconf",
+ /* 77 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
+ /* 78 */ "ccons ::= UNIQUE onconf",
+ /* 79 */ "ccons ::= CHECK LP expr RP",
+ /* 80 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
+ /* 81 */ "ccons ::= defer_subclause",
+ /* 82 */ "ccons ::= COLLATE ids",
+ /* 83 */ "ccons ::= gen_always AS LP expr RP id_opt",
+ /* 84 */ "ccons ::= CONSTRAINT ID_CONSTR",
+ /* 85 */ "ccons ::= COLLATE ID_COLLATE",
+ /* 86 */ "ccons ::= REFERENCES ID_TAB",
+ /* 87 */ "ccons ::= CHECK LP RP",
+ /* 88 */ "term ::= NULL",
+ /* 89 */ "term ::= INTEGER",
+ /* 90 */ "term ::= FLOAT",
+ /* 91 */ "term ::= STRING|BLOB",
+ /* 92 */ "tnm ::= term",
+ /* 93 */ "tnm ::= nm",
+ /* 94 */ "gen_always ::= GENERATED ALWAYS",
+ /* 95 */ "gen_always ::=",
+ /* 96 */ "autoinc ::=",
+ /* 97 */ "autoinc ::= AUTOINCR",
+ /* 98 */ "refargs ::=",
+ /* 99 */ "refargs ::= refargs refarg",
+ /* 100 */ "refarg ::= MATCH nm",
+ /* 101 */ "refarg ::= ON INSERT refact",
+ /* 102 */ "refarg ::= ON DELETE refact",
+ /* 103 */ "refarg ::= ON UPDATE refact",
+ /* 104 */ "refarg ::= MATCH ID_FK_MATCH",
+ /* 105 */ "refact ::= SET NULL",
+ /* 106 */ "refact ::= SET DEFAULT",
+ /* 107 */ "refact ::= CASCADE",
+ /* 108 */ "refact ::= RESTRICT",
+ /* 109 */ "refact ::= NO ACTION",
+ /* 110 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
+ /* 111 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
+ /* 112 */ "init_deferred_pred_opt ::=",
+ /* 113 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
+ /* 114 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
+ /* 115 */ "conslist_opt ::=",
+ /* 116 */ "conslist_opt ::= COMMA conslist",
+ /* 117 */ "conslist ::= conslist tconscomma tcons",
+ /* 118 */ "conslist ::= tcons",
+ /* 119 */ "tconscomma ::= COMMA",
+ /* 120 */ "tconscomma ::=",
+ /* 121 */ "tcons ::= CONSTRAINT nm",
+ /* 122 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
+ /* 123 */ "tcons ::= UNIQUE LP idxlist RP onconf",
+ /* 124 */ "tcons ::= CHECK LP expr RP onconf",
+ /* 125 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
+ /* 126 */ "tcons ::= CONSTRAINT ID_CONSTR",
+ /* 127 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB",
+ /* 128 */ "tcons ::= CHECK LP RP onconf",
+ /* 129 */ "defer_subclause_opt ::=",
+ /* 130 */ "defer_subclause_opt ::= defer_subclause",
+ /* 131 */ "onconf ::=",
+ /* 132 */ "onconf ::= ON CONFLICT resolvetype",
+ /* 133 */ "orconf ::=",
+ /* 134 */ "orconf ::= OR resolvetype",
+ /* 135 */ "resolvetype ::= raisetype",
+ /* 136 */ "resolvetype ::= IGNORE",
+ /* 137 */ "resolvetype ::= REPLACE",
+ /* 138 */ "cmd ::= DROP TABLE ifexists fullname",
+ /* 139 */ "cmd ::= DROP TABLE ifexists nm DOT ID_TAB",
+ /* 140 */ "cmd ::= DROP TABLE ifexists ID_DB|ID_TAB",
+ /* 141 */ "ifexists ::= IF EXISTS",
+ /* 142 */ "ifexists ::=",
+ /* 143 */ "cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select",
+ /* 144 */ "cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW",
+ /* 145 */ "cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW",
+ /* 146 */ "cmd ::= DROP VIEW ifexists fullname",
+ /* 147 */ "cmd ::= DROP VIEW ifexists nm DOT ID_VIEW",
+ /* 148 */ "cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW",
+ /* 149 */ "cmd ::= select_stmt",
+ /* 150 */ "select_stmt ::= select",
+ /* 151 */ "select ::= with selectnowith",
+ /* 152 */ "selectnowith ::= oneselect",
+ /* 153 */ "selectnowith ::= selectnowith multiselect_op oneselect",
+ /* 154 */ "selectnowith ::= values",
+ /* 155 */ "selectnowith ::= selectnowith COMMA values",
+ /* 156 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
+ /* 157 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
+ /* 158 */ "values ::= VALUES LP nexprlist RP",
+ /* 159 */ "values ::= values COMMA LP exprlist RP",
+ /* 160 */ "multiselect_op ::= UNION",
+ /* 161 */ "multiselect_op ::= UNION ALL",
+ /* 162 */ "multiselect_op ::= EXCEPT",
+ /* 163 */ "multiselect_op ::= INTERSECT",
+ /* 164 */ "distinct ::= DISTINCT",
+ /* 165 */ "distinct ::= ALL",
+ /* 166 */ "distinct ::=",
+ /* 167 */ "sclp ::= selcollist COMMA",
+ /* 168 */ "sclp ::=",
+ /* 169 */ "selcollist ::= sclp expr as",
+ /* 170 */ "selcollist ::= sclp STAR",
+ /* 171 */ "selcollist ::= sclp tnm DOT STAR",
+ /* 172 */ "selcollist ::= sclp",
+ /* 173 */ "selcollist ::= sclp ID_TAB DOT STAR",
+ /* 174 */ "as ::= AS nm",
+ /* 175 */ "as ::= ids",
+ /* 176 */ "as ::= AS ID_ALIAS",
+ /* 177 */ "as ::= ID_ALIAS",
+ /* 178 */ "as ::=",
+ /* 179 */ "from ::=",
+ /* 180 */ "from ::= FROM joinsrc",
+ /* 181 */ "joinsrc ::= singlesrc seltablist",
+ /* 182 */ "joinsrc ::=",
+ /* 183 */ "seltablist ::= seltablist joinop singlesrc joinconstr_opt",
+ /* 184 */ "seltablist ::=",
+ /* 185 */ "singlesrc ::= nm dbnm as indexed_opt",
+ /* 186 */ "singlesrc ::= LP select RP as",
+ /* 187 */ "singlesrc ::= LP joinsrc RP as",
+ /* 188 */ "singlesrc ::= nm dbnm LP exprlist RP as",
+ /* 189 */ "singlesrc ::=",
+ /* 190 */ "singlesrc ::= nm DOT",
+ /* 191 */ "singlesrc ::= nm DOT ID_TAB",
+ /* 192 */ "singlesrc ::= ID_DB|ID_TAB",
+ /* 193 */ "singlesrc ::= nm DOT ID_VIEW",
+ /* 194 */ "singlesrc ::= ID_DB|ID_VIEW",
+ /* 195 */ "joinconstr_opt ::= ON expr",
+ /* 196 */ "joinconstr_opt ::= USING LP idlist RP",
+ /* 197 */ "joinconstr_opt ::=",
+ /* 198 */ "dbnm ::=",
+ /* 199 */ "dbnm ::= DOT nm",
+ /* 200 */ "fullname ::= nm dbnm",
+ /* 201 */ "joinop ::= COMMA",
+ /* 202 */ "joinop ::= JOIN",
+ /* 203 */ "joinop ::= JOIN_KW JOIN",
+ /* 204 */ "joinop ::= JOIN_KW nm JOIN",
+ /* 205 */ "joinop ::= JOIN_KW nm nm JOIN",
+ /* 206 */ "joinop ::= ID_JOIN_OPTS",
+ /* 207 */ "indexed_opt ::=",
+ /* 208 */ "indexed_opt ::= INDEXED BY nm",
+ /* 209 */ "indexed_opt ::= NOT INDEXED",
+ /* 210 */ "indexed_opt ::= INDEXED BY ID_IDX",
+ /* 211 */ "orderby_opt ::=",
+ /* 212 */ "orderby_opt ::= ORDER BY sortlist",
+ /* 213 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
+ /* 214 */ "sortlist ::= expr sortorder nulls",
+ /* 215 */ "sortorder ::= ASC",
+ /* 216 */ "sortorder ::= DESC",
+ /* 217 */ "sortorder ::=",
+ /* 218 */ "nulls ::= NULLS FIRST",
+ /* 219 */ "nulls ::= NULLS LAST",
+ /* 220 */ "nulls ::=",
+ /* 221 */ "groupby_opt ::=",
+ /* 222 */ "groupby_opt ::= GROUP BY nexprlist",
+ /* 223 */ "groupby_opt ::= GROUP BY",
+ /* 224 */ "having_opt ::=",
+ /* 225 */ "having_opt ::= HAVING expr",
+ /* 226 */ "limit_opt ::=",
+ /* 227 */ "limit_opt ::= LIMIT expr",
+ /* 228 */ "limit_opt ::= LIMIT expr OFFSET expr",
+ /* 229 */ "limit_opt ::= LIMIT expr COMMA expr",
+ /* 230 */ "cmd ::= delete_stmt",
+ /* 231 */ "delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt returning",
+ /* 232 */ "delete_stmt ::= with DELETE FROM",
+ /* 233 */ "delete_stmt ::= with DELETE FROM nm DOT",
+ /* 234 */ "delete_stmt ::= with DELETE FROM nm DOT ID_TAB",
+ /* 235 */ "delete_stmt ::= with DELETE FROM ID_DB|ID_TAB",
+ /* 236 */ "where_opt ::=",
+ /* 237 */ "where_opt ::= WHERE expr",
+ /* 238 */ "where_opt ::= WHERE",
+ /* 239 */ "returning ::=",
+ /* 240 */ "returning ::= RETURNING selcollist",
+ /* 241 */ "cmd ::= update_stmt",
+ /* 242 */ "update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt returning",
+ /* 243 */ "update_stmt ::= with UPDATE orconf",
+ /* 244 */ "update_stmt ::= with UPDATE orconf nm DOT",
+ /* 245 */ "update_stmt ::= with UPDATE orconf nm DOT ID_TAB",
+ /* 246 */ "update_stmt ::= with UPDATE orconf ID_DB|ID_TAB",
+ /* 247 */ "setlist ::= setlist COMMA nm EQ expr",
+ /* 248 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
+ /* 249 */ "setlist ::= nm EQ expr",
+ /* 250 */ "setlist ::= LP idlist RP EQ expr",
+ /* 251 */ "setlist ::=",
+ /* 252 */ "setlist ::= setlist COMMA",
+ /* 253 */ "setlist ::= setlist COMMA ID_COL",
+ /* 254 */ "setlist ::= ID_COL",
+ /* 255 */ "idlist_opt ::=",
+ /* 256 */ "idlist_opt ::= LP idlist RP",
+ /* 257 */ "idlist ::= idlist COMMA nm",
+ /* 258 */ "idlist ::= nm",
+ /* 259 */ "idlist ::=",
+ /* 260 */ "idlist ::= idlist COMMA ID_COL",
+ /* 261 */ "idlist ::= ID_COL",
+ /* 262 */ "cmd ::= insert_stmt",
+ /* 263 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert returning",
+ /* 264 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES returning",
+ /* 265 */ "insert_stmt ::= with insert_cmd INTO",
+ /* 266 */ "insert_stmt ::= with insert_cmd INTO nm DOT",
+ /* 267 */ "insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB",
+ /* 268 */ "insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB",
+ /* 269 */ "insert_cmd ::= INSERT orconf",
+ /* 270 */ "insert_cmd ::= REPLACE",
+ /* 271 */ "upsert ::=",
+ /* 272 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
+ /* 273 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
+ /* 274 */ "upsert ::= ON CONFLICT DO NOTHING",
+ /* 275 */ "exprx ::= expr not_opt IN ID_DB",
+ /* 276 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
+ /* 277 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
+ /* 278 */ "exprx ::= tnm DOT ID_TAB|ID_COL",
+ /* 279 */ "exprx ::= tnm DOT nm DOT ID_COL",
+ /* 280 */ "exprx ::= expr COLLATE ID_COLLATE",
+ /* 281 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
+ /* 282 */ "exprx ::= CTIME_KW",
+ /* 283 */ "exprx ::= LP nexprlist RP",
+ /* 284 */ "exprx ::= tnm",
+ /* 285 */ "exprx ::= tnm DOT nm",
+ /* 286 */ "exprx ::= tnm DOT",
+ /* 287 */ "exprx ::= tnm DOT nm DOT nm",
+ /* 288 */ "exprx ::= tnm DOT nm DOT",
+ /* 289 */ "exprx ::= VARIABLE",
+ /* 290 */ "exprx ::= expr COLLATE ids",
+ /* 291 */ "exprx ::= CAST LP expr AS typetoken RP",
+ /* 292 */ "exprx ::= ID LP distinct exprlist RP",
+ /* 293 */ "exprx ::= ID LP STAR RP",
+ /* 294 */ "exprx ::= expr AND expr",
+ /* 295 */ "exprx ::= expr OR expr",
+ /* 296 */ "exprx ::= expr LT|GT|GE|LE expr",
+ /* 297 */ "exprx ::= expr EQ|NE expr",
+ /* 298 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
+ /* 299 */ "exprx ::= expr PLUS|MINUS expr",
+ /* 300 */ "exprx ::= expr STAR|SLASH|REM expr",
+ /* 301 */ "exprx ::= expr CONCAT expr",
+ /* 302 */ "exprx ::= expr not_opt likeop expr",
+ /* 303 */ "exprx ::= expr not_opt likeop expr ESCAPE expr",
+ /* 304 */ "exprx ::= expr ISNULL|NOTNULL",
+ /* 305 */ "exprx ::= expr NOT NULL",
+ /* 306 */ "exprx ::= expr IS not_opt expr",
+ /* 307 */ "exprx ::= expr IS NOT DISTINCT FROM expr",
+ /* 308 */ "exprx ::= expr IS DISTINCT FROM expr",
+ /* 309 */ "exprx ::= NOT expr",
+ /* 310 */ "exprx ::= BITNOT expr",
+ /* 311 */ "exprx ::= MINUS expr",
+ /* 312 */ "exprx ::= PLUS expr",
+ /* 313 */ "exprx ::= expr PTR expr",
+ /* 314 */ "exprx ::= expr not_opt BETWEEN expr AND expr",
+ /* 315 */ "exprx ::= expr not_opt IN LP exprlist RP",
+ /* 316 */ "exprx ::= LP select RP",
+ /* 317 */ "exprx ::= expr not_opt IN LP select RP",
+ /* 318 */ "exprx ::= expr not_opt IN nm dbnm",
+ /* 319 */ "exprx ::= EXISTS LP select RP",
+ /* 320 */ "exprx ::= CASE case_operand case_exprlist case_else END",
+ /* 321 */ "exprx ::= RAISE LP IGNORE RP",
+ /* 322 */ "exprx ::= RAISE LP raisetype COMMA nm RP",
+ /* 323 */ "exprx ::= ID LP distinct exprlist RP filter_over",
+ /* 324 */ "exprx ::= ID LP STAR RP filter_over",
+ /* 325 */ "expr ::=",
+ /* 326 */ "expr ::= exprx",
+ /* 327 */ "not_opt ::=",
+ /* 328 */ "not_opt ::= NOT",
+ /* 329 */ "likeop ::= LIKE_KW|MATCH",
+ /* 330 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 331 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 332 */ "case_else ::= ELSE expr",
+ /* 333 */ "case_else ::=",
+ /* 334 */ "case_operand ::= exprx",
+ /* 335 */ "case_operand ::=",
+ /* 336 */ "exprlist ::= nexprlist",
+ /* 337 */ "exprlist ::=",
+ /* 338 */ "nexprlist ::= nexprlist COMMA expr",
+ /* 339 */ "nexprlist ::= exprx",
+ /* 340 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
+ /* 341 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
+ /* 342 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
+ /* 343 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
+ /* 344 */ "uniqueflag ::= UNIQUE",
+ /* 345 */ "uniqueflag ::=",
+ /* 346 */ "idxlist_opt ::=",
+ /* 347 */ "idxlist_opt ::= LP idxlist RP",
+ /* 348 */ "idxlist ::= idxlist COMMA idxlist_single",
+ /* 349 */ "idxlist ::= idxlist_single",
+ /* 350 */ "idxlist_single ::= nm collate sortorder",
+ /* 351 */ "idxlist_single ::= ID_COL",
+ /* 352 */ "collate ::=",
+ /* 353 */ "collate ::= COLLATE ids",
+ /* 354 */ "collate ::= COLLATE ID_COLLATE",
+ /* 355 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 356 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX",
+ /* 357 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX",
+ /* 358 */ "cmd ::= VACUUM vinto",
+ /* 359 */ "cmd ::= VACUUM nm vinto",
+ /* 360 */ "vinto ::= INTO expr",
+ /* 361 */ "vinto ::=",
+ /* 362 */ "cmd ::= PRAGMA nm dbnm",
+ /* 363 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 364 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 365 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 366 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
+ /* 367 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
+ /* 368 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
+ /* 369 */ "nmnum ::= plus_num",
+ /* 370 */ "nmnum ::= nm",
+ /* 371 */ "nmnum ::= ON",
+ /* 372 */ "nmnum ::= DELETE",
+ /* 373 */ "nmnum ::= DEFAULT",
+ /* 374 */ "plus_num ::= PLUS number",
+ /* 375 */ "plus_num ::= number",
+ /* 376 */ "minus_num ::= MINUS number",
+ /* 377 */ "number ::= INTEGER",
+ /* 378 */ "number ::= FLOAT",
+ /* 379 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END",
+ /* 380 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause",
+ /* 381 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list",
+ /* 382 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB",
+ /* 383 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW",
+ /* 384 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW",
+ /* 385 */ "trigger_time ::= BEFORE",
+ /* 386 */ "trigger_time ::= AFTER",
+ /* 387 */ "trigger_time ::= INSTEAD OF",
+ /* 388 */ "trigger_time ::=",
+ /* 389 */ "trigger_event ::= DELETE",
+ /* 390 */ "trigger_event ::= INSERT",
+ /* 391 */ "trigger_event ::= UPDATE",
+ /* 392 */ "trigger_event ::= UPDATE OF idlist",
+ /* 393 */ "foreach_clause ::=",
+ /* 394 */ "foreach_clause ::= FOR EACH ROW",
+ /* 395 */ "when_clause ::=",
+ /* 396 */ "when_clause ::= WHEN expr",
+ /* 397 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 398 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 399 */ "trigger_cmd_list ::= SEMI",
+ /* 400 */ "trigger_cmd ::= update_stmt",
+ /* 401 */ "trigger_cmd ::= insert_stmt",
+ /* 402 */ "trigger_cmd ::= delete_stmt",
+ /* 403 */ "trigger_cmd ::= select_stmt",
+ /* 404 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
+ /* 405 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 406 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG",
+ /* 407 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG",
+ /* 408 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 409 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 410 */ "key_opt ::=",
+ /* 411 */ "key_opt ::= KEY expr",
+ /* 412 */ "database_kw_opt ::= DATABASE",
+ /* 413 */ "database_kw_opt ::=",
+ /* 414 */ "cmd ::= REINDEX",
+ /* 415 */ "cmd ::= REINDEX nm dbnm",
+ /* 416 */ "cmd ::= REINDEX ID_COLLATE",
+ /* 417 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX",
+ /* 418 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB",
+ /* 419 */ "cmd ::= ANALYZE",
+ /* 420 */ "cmd ::= ANALYZE nm dbnm",
+ /* 421 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX",
+ /* 422 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB",
+ /* 423 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 424 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column",
+ /* 425 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
+ /* 426 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW",
+ /* 427 */ "cmd ::= ALTER TABLE nm DOT ID_TAB",
+ /* 428 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB",
+ /* 429 */ "kwcolumn_opt ::=",
+ /* 430 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 431 */ "cmd ::= create_vtab",
+ /* 432 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 433 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP",
+ /* 434 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW",
+ /* 435 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW",
+ /* 436 */ "vtabarglist ::= vtabarg",
+ /* 437 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 438 */ "vtabarg ::=",
+ /* 439 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 440 */ "vtabargtoken ::= ANY",
+ /* 441 */ "vtabargtoken ::= LP anylist RP",
+ /* 442 */ "anylist ::=",
+ /* 443 */ "anylist ::= anylist LP anylist RP",
+ /* 444 */ "anylist ::= anylist ANY",
+ /* 445 */ "with ::=",
+ /* 446 */ "with ::= WITH wqlist",
+ /* 447 */ "with ::= WITH RECURSIVE wqlist",
+ /* 448 */ "wqas ::= AS",
+ /* 449 */ "wqas ::= AS MATERIALIZED",
+ /* 450 */ "wqas ::= AS NOT MATERIALIZED",
+ /* 451 */ "wqlist ::= wqcte",
+ /* 452 */ "wqlist ::= wqlist COMMA wqcte",
+ /* 453 */ "wqlist ::= ID_TAB_NEW",
+ /* 454 */ "wqcte ::= nm idxlist_opt wqas LP select RP",
+ /* 455 */ "windowdefn_list ::= windowdefn",
+ /* 456 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
+ /* 457 */ "windowdefn ::= nm AS LP window RP",
+ /* 458 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 459 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 460 */ "window ::= ORDER BY sortlist frame_opt",
+ /* 461 */ "window ::= nm ORDER BY sortlist frame_opt",
+ /* 462 */ "window ::= frame_opt",
+ /* 463 */ "window ::= nm frame_opt",
+ /* 464 */ "frame_opt ::=",
+ /* 465 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
+ /* 466 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
+ /* 467 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
+ /* 468 */ "frame_bound_s ::= frame_bound",
+ /* 469 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
+ /* 470 */ "frame_bound_e ::= frame_bound",
+ /* 471 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
+ /* 472 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
+ /* 473 */ "frame_bound ::= CURRENT ROW",
+ /* 474 */ "frame_exclude_opt ::=",
+ /* 475 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
+ /* 476 */ "frame_exclude ::= NO OTHERS",
+ /* 477 */ "frame_exclude ::= CURRENT ROW",
+ /* 478 */ "frame_exclude ::= GROUP",
+ /* 479 */ "frame_exclude ::= TIES",
+ /* 480 */ "window_clause ::= WINDOW windowdefn_list",
+ /* 481 */ "filter_over ::= filter_clause over_clause",
+ /* 482 */ "filter_over ::= over_clause",
+ /* 483 */ "filter_over ::= filter_clause",
+ /* 484 */ "over_clause ::= OVER LP window RP",
+ /* 485 */ "over_clause ::= OVER nm",
+ /* 486 */ "filter_clause ::= FILTER LP WHERE expr RP",
};
#endif /* NDEBUG */
@@ -1944,384 +1938,399 @@ static void yy_destructor(
** which appear on the RHS of the rule, but which are not used
** inside the C code.
*/
- case 191: /* cmd */
- case 194: /* ecmd */
- case 196: /* cmdx */
- case 243: /* select_stmt */
- case 272: /* delete_stmt */
- case 273: /* update_stmt */
- case 276: /* insert_stmt */
- case 297: /* trigger_cmd */
- case 301: /* create_vtab */
-{
-parser_safe_delete((yypminor->yy363));
+ case 195: /* cmd */
+ case 198: /* ecmd */
+ case 200: /* cmdx */
+ case 248: /* select_stmt */
+ case 277: /* delete_stmt */
+ case 279: /* update_stmt */
+ case 282: /* insert_stmt */
+ case 303: /* trigger_cmd */
+ case 307: /* create_vtab */
+{
+parser_safe_delete((yypminor->yy41));
}
break;
- case 195: /* explain */
+ case 199: /* explain */
{
-parser_safe_delete((yypminor->yy91));
+parser_safe_delete((yypminor->yy499));
}
break;
- case 197: /* transtype */
- case 198: /* trans_opt */
+ case 201: /* transtype */
+ case 202: /* trans_opt */
{
-parser_safe_delete((yypminor->yy84));
+parser_safe_delete((yypminor->yy512));
}
break;
- case 199: /* nm */
- case 206: /* table_options */
- case 209: /* columnid */
- case 212: /* id */
- case 213: /* id_opt */
- case 214: /* ids */
- case 216: /* typename */
- case 267: /* dbnm */
- case 288: /* collate */
- case 303: /* vtabarg */
- case 304: /* vtabargtoken */
- case 305: /* anylist */
+ case 203: /* nm */
+ case 214: /* columnid */
+ case 217: /* id */
+ case 218: /* id_opt */
+ case 219: /* ids */
+ case 221: /* typename */
+ case 272: /* dbnm */
+ case 294: /* collate */
+ case 309: /* vtabarg */
+ case 310: /* vtabargtoken */
+ case 311: /* anylist */
{
parser_safe_delete((yypminor->yy319));
}
break;
- case 200: /* savepoint_opt */
- case 202: /* ifnotexists */
- case 225: /* autoinc */
- case 229: /* gen_always */
- case 235: /* tconscomma */
- case 242: /* ifexists */
- case 280: /* not_opt */
- case 286: /* uniqueflag */
- case 298: /* database_kw_opt */
- case 300: /* kwcolumn_opt */
-{
-parser_safe_delete((yypminor->yy611));
+ case 204: /* savepoint_opt */
+ case 206: /* ifnotexists */
+ case 230: /* autoinc */
+ case 234: /* gen_always */
+ case 240: /* tconscomma */
+ case 247: /* ifexists */
+ case 286: /* not_opt */
+ case 292: /* uniqueflag */
+ case 304: /* database_kw_opt */
+ case 306: /* kwcolumn_opt */
+{
+parser_safe_delete((yypminor->yy225));
}
break;
- case 201: /* temp */
- case 249: /* distinct */
+ case 205: /* temp */
+ case 254: /* distinct */
{
-parser_safe_delete((yypminor->yy386));
+parser_safe_delete((yypminor->yy130));
}
break;
- case 203: /* fullname */
+ case 207: /* fullname */
{
-parser_safe_delete((yypminor->yy440));
+parser_safe_delete((yypminor->yy396));
}
break;
- case 204: /* columnlist */
+ case 208: /* columnlist */
{
-parser_safe_delete((yypminor->yy42));
+parser_safe_delete((yypminor->yy390));
}
break;
- case 205: /* conslist_opt */
- case 234: /* conslist */
+ case 209: /* conslist_opt */
+ case 239: /* conslist */
{
-parser_safe_delete((yypminor->yy493));
+parser_safe_delete((yypminor->yy115));
}
break;
- case 207: /* select */
- case 245: /* selectnowith */
+ case 210: /* table_options */
{
-parser_safe_delete((yypminor->yy313));
+parser_safe_delete((yypminor->yy455));
}
break;
- case 208: /* column */
+ case 211: /* select */
+ case 250: /* selectnowith */
{
-parser_safe_delete((yypminor->yy147));
+parser_safe_delete((yypminor->yy297));
}
break;
- case 210: /* type */
- case 215: /* typetoken */
+ case 212: /* table_option */
{
-parser_safe_delete((yypminor->yy57));
+parser_safe_delete((yypminor->yy629));
}
break;
- case 211: /* carglist */
+ case 213: /* column */
{
-parser_safe_delete((yypminor->yy51));
+parser_safe_delete((yypminor->yy3));
}
break;
- case 217: /* signed */
- case 218: /* plus_num */
- case 219: /* minus_num */
- case 221: /* term */
- case 290: /* nmnum */
- case 291: /* number */
-{
-parser_safe_delete((yypminor->yy229));
+ case 215: /* type */
+ case 220: /* typetoken */
+{
+parser_safe_delete((yypminor->yy267));
}
break;
- case 220: /* ccons */
+ case 216: /* carglist */
{
-parser_safe_delete((yypminor->yy464));
+parser_safe_delete((yypminor->yy323));
}
break;
- case 222: /* expr */
- case 252: /* where_opt */
- case 254: /* having_opt */
- case 279: /* exprx */
- case 282: /* case_operand */
- case 284: /* case_else */
- case 289: /* vinto */
- case 295: /* when_clause */
- case 299: /* key_opt */
+ case 222: /* signed */
+ case 223: /* plus_num */
+ case 224: /* minus_num */
+ case 226: /* term */
+ case 296: /* nmnum */
+ case 297: /* number */
+{
+parser_safe_delete((yypminor->yy393));
+}
+ break;
+ case 225: /* ccons */
{
-parser_safe_delete((yypminor->yy512));
+parser_safe_delete((yypminor->yy448));
}
break;
- case 223: /* onconf */
- case 239: /* resolvetype */
- case 240: /* orconf */
+ case 227: /* expr */
+ case 257: /* where_opt */
+ case 259: /* having_opt */
+ case 285: /* exprx */
+ case 288: /* case_operand */
+ case 290: /* case_else */
+ case 295: /* vinto */
+ case 301: /* when_clause */
+ case 305: /* key_opt */
+{
+parser_safe_delete((yypminor->yy186));
+}
+ break;
+ case 228: /* onconf */
+ case 244: /* resolvetype */
+ case 245: /* orconf */
{
-parser_safe_delete((yypminor->yy418));
+parser_safe_delete((yypminor->yy136));
}
break;
- case 224: /* sortorder */
+ case 229: /* sortorder */
{
-parser_safe_delete((yypminor->yy549));
+parser_safe_delete((yypminor->yy35));
}
break;
- case 226: /* idxlist_opt */
- case 237: /* idxlist */
+ case 231: /* idxlist_opt */
+ case 242: /* idxlist */
{
-parser_safe_delete((yypminor->yy223));
+parser_safe_delete((yypminor->yy627));
}
break;
- case 227: /* refargs */
+ case 232: /* refargs */
{
-parser_safe_delete((yypminor->yy584));
+parser_safe_delete((yypminor->yy156));
}
break;
- case 228: /* defer_subclause */
- case 238: /* defer_subclause_opt */
+ case 233: /* defer_subclause */
+ case 243: /* defer_subclause_opt */
{
-parser_safe_delete((yypminor->yy9));
+parser_safe_delete((yypminor->yy53));
}
break;
- case 230: /* tnm */
+ case 235: /* tnm */
{
-parser_safe_delete((yypminor->yy590));
+parser_safe_delete((yypminor->yy380));
}
break;
- case 231: /* refarg */
+ case 236: /* refarg */
{
-parser_safe_delete((yypminor->yy507));
+parser_safe_delete((yypminor->yy205));
}
break;
- case 232: /* refact */
+ case 237: /* refact */
{
-parser_safe_delete((yypminor->yy104));
+parser_safe_delete((yypminor->yy106));
}
break;
- case 233: /* init_deferred_pred_opt */
+ case 238: /* init_deferred_pred_opt */
{
-parser_safe_delete((yypminor->yy312));
+parser_safe_delete((yypminor->yy612));
}
break;
- case 236: /* tcons */
+ case 241: /* tcons */
{
-parser_safe_delete((yypminor->yy246));
+parser_safe_delete((yypminor->yy400));
}
break;
- case 244: /* with */
+ case 249: /* with */
{
-parser_safe_delete((yypminor->yy1));
+parser_safe_delete((yypminor->yy161));
}
break;
- case 246: /* oneselect */
+ case 251: /* oneselect */
{
-parser_safe_delete((yypminor->yy470));
+parser_safe_delete((yypminor->yy378));
}
break;
- case 247: /* multiselect_op */
+ case 252: /* multiselect_op */
{
-parser_safe_delete((yypminor->yy382));
+parser_safe_delete((yypminor->yy142));
}
break;
- case 248: /* values */
+ case 253: /* values */
{
-parser_safe_delete((yypminor->yy486));
+parser_safe_delete((yypminor->yy522));
}
break;
- case 250: /* selcollist */
- case 260: /* sclp */
+ case 255: /* selcollist */
+ case 265: /* sclp */
+ case 278: /* returning */
{
-parser_safe_delete((yypminor->yy53));
+parser_safe_delete((yypminor->yy27));
}
break;
- case 251: /* from */
- case 262: /* joinsrc */
+ case 256: /* from */
+ case 267: /* joinsrc */
{
-parser_safe_delete((yypminor->yy31));
+parser_safe_delete((yypminor->yy553));
}
break;
- case 253: /* groupby_opt */
- case 258: /* nexprlist */
- case 259: /* exprlist */
- case 283: /* case_exprlist */
+ case 258: /* groupby_opt */
+ case 263: /* nexprlist */
+ case 264: /* exprlist */
+ case 289: /* case_exprlist */
{
-parser_safe_delete((yypminor->yy71));
+parser_safe_delete((yypminor->yy615));
}
break;
- case 255: /* orderby_opt */
- case 270: /* sortlist */
+ case 260: /* orderby_opt */
+ case 275: /* sortlist */
{
-parser_safe_delete((yypminor->yy403));
+parser_safe_delete((yypminor->yy226));
}
break;
- case 256: /* limit_opt */
+ case 261: /* limit_opt */
{
-parser_safe_delete((yypminor->yy4));
+parser_safe_delete((yypminor->yy360));
}
break;
- case 257: /* window_clause */
- case 308: /* windowdefn_list */
+ case 262: /* window_clause */
+ case 315: /* windowdefn_list */
{
-parser_safe_delete((yypminor->yy299));
+parser_safe_delete((yypminor->yy525));
}
break;
- case 261: /* as */
+ case 266: /* as */
{
-parser_safe_delete((yypminor->yy200));
+parser_safe_delete((yypminor->yy628));
}
break;
- case 263: /* singlesrc */
+ case 268: /* singlesrc */
{
-parser_safe_delete((yypminor->yy441));
+parser_safe_delete((yypminor->yy595));
}
break;
- case 264: /* seltablist */
+ case 269: /* seltablist */
{
-parser_safe_delete((yypminor->yy451));
+parser_safe_delete((yypminor->yy107));
}
break;
- case 265: /* joinop */
+ case 270: /* joinop */
{
-parser_safe_delete((yypminor->yy221));
+parser_safe_delete((yypminor->yy449));
}
break;
- case 266: /* joinconstr_opt */
+ case 271: /* joinconstr_opt */
{
-parser_safe_delete((yypminor->yy295));
+parser_safe_delete((yypminor->yy215));
}
break;
- case 268: /* indexed_opt */
+ case 273: /* indexed_opt */
{
-parser_safe_delete((yypminor->yy592));
+parser_safe_delete((yypminor->yy300));
}
break;
- case 269: /* idlist */
- case 275: /* idlist_opt */
- case 302: /* vtabarglist */
+ case 274: /* idlist */
+ case 281: /* idlist_opt */
+ case 308: /* vtabarglist */
{
-parser_safe_delete((yypminor->yy575));
+parser_safe_delete((yypminor->yy173));
}
break;
- case 271: /* nulls */
+ case 276: /* nulls */
{
-parser_safe_delete((yypminor->yy579));
+parser_safe_delete((yypminor->yy315));
}
break;
- case 274: /* setlist */
+ case 280: /* setlist */
{
-parser_safe_delete((yypminor->yy201));
+parser_safe_delete((yypminor->yy621));
}
break;
- case 277: /* insert_cmd */
+ case 283: /* insert_cmd */
{
-parser_safe_delete((yypminor->yy504));
+parser_safe_delete((yypminor->yy308));
}
break;
- case 278: /* upsert */
+ case 284: /* upsert */
{
-parser_safe_delete((yypminor->yy400));
+parser_safe_delete((yypminor->yy332));
}
break;
- case 281: /* likeop */
+ case 287: /* likeop */
{
-parser_safe_delete((yypminor->yy40));
+parser_safe_delete((yypminor->yy274));
}
break;
- case 285: /* filter_over */
+ case 291: /* filter_over */
{
-parser_safe_delete((yypminor->yy247));
+parser_safe_delete((yypminor->yy181));
}
break;
- case 287: /* idxlist_single */
+ case 293: /* idxlist_single */
{
-parser_safe_delete((yypminor->yy268));
+parser_safe_delete((yypminor->yy110));
}
break;
- case 292: /* trigger_time */
+ case 298: /* trigger_time */
{
-parser_safe_delete((yypminor->yy532));
+parser_safe_delete((yypminor->yy120));
}
break;
- case 293: /* trigger_event */
+ case 299: /* trigger_event */
{
-parser_safe_delete((yypminor->yy151));
+parser_safe_delete((yypminor->yy259));
}
break;
- case 294: /* foreach_clause */
+ case 300: /* foreach_clause */
{
-parser_safe_delete((yypminor->yy83));
+parser_safe_delete((yypminor->yy456));
}
break;
- case 296: /* trigger_cmd_list */
+ case 302: /* trigger_cmd_list */
{
-parser_safe_delete((yypminor->yy110));
+parser_safe_delete((yypminor->yy240));
}
break;
- case 306: /* wqlist */
+ case 312: /* wqlist */
{
-parser_safe_delete((yypminor->yy593));
+parser_safe_delete((yypminor->yy164));
}
break;
- case 307: /* wqcte */
+ case 313: /* wqas */
{
-parser_safe_delete((yypminor->yy446));
+parser_safe_delete((yypminor->yy21));
}
break;
- case 309: /* windowdefn */
+ case 314: /* wqcte */
{
-parser_safe_delete((yypminor->yy266));
+parser_safe_delete((yypminor->yy146));
}
break;
- case 310: /* window */
+ case 316: /* windowdefn */
{
-parser_safe_delete((yypminor->yy334));
+parser_safe_delete((yypminor->yy562));
}
break;
- case 311: /* frame_opt */
+ case 317: /* window */
{
-parser_safe_delete((yypminor->yy41));
+parser_safe_delete((yypminor->yy162));
}
break;
- case 312: /* range_or_rows */
+ case 318: /* frame_opt */
{
-parser_safe_delete((yypminor->yy419));
+parser_safe_delete((yypminor->yy149));
}
break;
- case 313: /* frame_bound_s */
- case 315: /* frame_bound_e */
+ case 319: /* range_or_rows */
{
-parser_safe_delete((yypminor->yy442));
+parser_safe_delete((yypminor->yy143));
}
break;
- case 316: /* frame_bound */
+ case 320: /* frame_bound_s */
+ case 322: /* frame_bound_e */
{
-parser_safe_delete((yypminor->yy442));parser_safe_delete((yypminor->yy442));parser_safe_delete((yypminor->yy442));
+parser_safe_delete((yypminor->yy285));
}
break;
- case 318: /* filter_clause */
+ case 323: /* frame_bound */
{
-parser_safe_delete((yypminor->yy397));
+parser_safe_delete((yypminor->yy285));parser_safe_delete((yypminor->yy285));parser_safe_delete((yypminor->yy285));
}
break;
- case 319: /* over_clause */
+ case 325: /* filter_clause */
{
-parser_safe_delete((yypminor->yy248));
+parser_safe_delete((yypminor->yy39));
+}
+ break;
+ case 326: /* over_clause */
+{
+parser_safe_delete((yypminor->yy11));
}
break;
default: break; /* If no destructor action specified: do nothing */
@@ -2572,478 +2581,493 @@ static const struct {
YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
unsigned char nrhs; /* Number of right-hand side symbols in the rule */
} yyRuleInfo[] = {
- { 192, 1 },
- { 193, 2 },
- { 193, 1 },
- { 194, 1 },
- { 194, 3 },
- { 195, 0 },
- { 195, 1 },
- { 195, 3 },
{ 196, 1 },
- { 191, 3 },
- { 198, 0 },
- { 198, 1 },
- { 198, 2 },
- { 198, 2 },
- { 197, 0 },
- { 197, 1 },
+ { 197, 2 },
{ 197, 1 },
- { 197, 1 },
- { 191, 2 },
- { 191, 2 },
- { 191, 2 },
+ { 198, 1 },
+ { 198, 3 },
+ { 199, 0 },
+ { 199, 1 },
+ { 199, 3 },
{ 200, 1 },
- { 200, 0 },
- { 191, 2 },
- { 191, 3 },
- { 191, 5 },
- { 191, 2 },
- { 191, 3 },
- { 191, 5 },
- { 191, 10 },
- { 191, 7 },
- { 191, 7 },
- { 191, 5 },
- { 206, 0 },
- { 206, 2 },
- { 206, 2 },
+ { 195, 3 },
{ 202, 0 },
- { 202, 3 },
- { 201, 1 },
+ { 202, 1 },
+ { 202, 2 },
+ { 202, 2 },
{ 201, 0 },
- { 204, 3 },
+ { 201, 1 },
+ { 201, 1 },
+ { 201, 1 },
+ { 195, 2 },
+ { 195, 2 },
+ { 195, 2 },
{ 204, 1 },
- { 208, 3 },
- { 209, 1 },
- { 209, 1 },
- { 212, 1 },
- { 213, 1 },
- { 213, 0 },
- { 214, 1 },
- { 199, 1 },
- { 199, 1 },
- { 199, 1 },
+ { 204, 0 },
+ { 195, 2 },
+ { 195, 3 },
+ { 195, 5 },
+ { 195, 2 },
+ { 195, 3 },
+ { 195, 5 },
+ { 195, 10 },
+ { 195, 7 },
+ { 195, 7 },
+ { 195, 5 },
{ 210, 0 },
{ 210, 1 },
- { 215, 1 },
- { 215, 4 },
- { 215, 6 },
- { 216, 1 },
- { 216, 2 },
- { 216, 1 },
- { 217, 1 },
+ { 210, 3 },
+ { 212, 2 },
+ { 212, 1 },
+ { 212, 2 },
+ { 212, 1 },
+ { 206, 0 },
+ { 206, 3 },
+ { 205, 1 },
+ { 205, 0 },
+ { 208, 3 },
+ { 208, 1 },
+ { 213, 3 },
+ { 214, 1 },
+ { 214, 1 },
{ 217, 1 },
- { 211, 2 },
- { 211, 0 },
- { 220, 2 },
- { 220, 2 },
- { 220, 4 },
- { 220, 3 },
- { 220, 3 },
- { 220, 2 },
- { 220, 2 },
- { 220, 2 },
- { 220, 3 },
- { 220, 5 },
- { 220, 2 },
- { 220, 4 },
- { 220, 4 },
+ { 218, 1 },
+ { 218, 0 },
+ { 219, 1 },
+ { 203, 1 },
+ { 203, 1 },
+ { 203, 1 },
+ { 215, 0 },
+ { 215, 1 },
{ 220, 1 },
- { 220, 2 },
+ { 220, 4 },
{ 220, 6 },
- { 220, 2 },
- { 220, 2 },
- { 220, 2 },
- { 220, 3 },
- { 221, 1 },
- { 221, 1 },
{ 221, 1 },
+ { 221, 2 },
{ 221, 1 },
- { 230, 1 },
- { 230, 1 },
- { 229, 2 },
- { 229, 0 },
- { 225, 0 },
+ { 222, 1 },
+ { 222, 1 },
+ { 216, 2 },
+ { 216, 0 },
+ { 225, 2 },
+ { 225, 2 },
+ { 225, 4 },
+ { 225, 3 },
+ { 225, 3 },
+ { 225, 2 },
+ { 225, 2 },
+ { 225, 2 },
+ { 225, 3 },
+ { 225, 5 },
+ { 225, 2 },
+ { 225, 4 },
+ { 225, 4 },
{ 225, 1 },
- { 227, 0 },
- { 227, 2 },
- { 231, 2 },
- { 231, 3 },
- { 231, 3 },
- { 231, 3 },
- { 231, 2 },
- { 232, 2 },
- { 232, 2 },
- { 232, 1 },
- { 232, 1 },
- { 232, 2 },
- { 228, 3 },
- { 228, 2 },
- { 233, 0 },
- { 233, 2 },
- { 233, 2 },
- { 205, 0 },
- { 205, 2 },
- { 234, 3 },
- { 234, 1 },
+ { 225, 2 },
+ { 225, 6 },
+ { 225, 2 },
+ { 225, 2 },
+ { 225, 2 },
+ { 225, 3 },
+ { 226, 1 },
+ { 226, 1 },
+ { 226, 1 },
+ { 226, 1 },
{ 235, 1 },
- { 235, 0 },
+ { 235, 1 },
+ { 234, 2 },
+ { 234, 0 },
+ { 230, 0 },
+ { 230, 1 },
+ { 232, 0 },
+ { 232, 2 },
{ 236, 2 },
- { 236, 7 },
- { 236, 5 },
- { 236, 5 },
- { 236, 10 },
+ { 236, 3 },
+ { 236, 3 },
+ { 236, 3 },
{ 236, 2 },
- { 236, 7 },
- { 236, 4 },
+ { 237, 2 },
+ { 237, 2 },
+ { 237, 1 },
+ { 237, 1 },
+ { 237, 2 },
+ { 233, 3 },
+ { 233, 2 },
{ 238, 0 },
- { 238, 1 },
- { 223, 0 },
- { 223, 3 },
- { 240, 0 },
- { 240, 2 },
- { 239, 1 },
+ { 238, 2 },
+ { 238, 2 },
+ { 209, 0 },
+ { 209, 2 },
+ { 239, 3 },
{ 239, 1 },
- { 239, 1 },
- { 191, 4 },
- { 191, 6 },
- { 191, 4 },
- { 242, 2 },
- { 242, 0 },
- { 191, 8 },
- { 191, 7 },
- { 191, 5 },
- { 191, 4 },
- { 191, 6 },
- { 191, 4 },
- { 191, 1 },
+ { 240, 1 },
+ { 240, 0 },
+ { 241, 2 },
+ { 241, 7 },
+ { 241, 5 },
+ { 241, 5 },
+ { 241, 10 },
+ { 241, 2 },
+ { 241, 7 },
+ { 241, 4 },
+ { 243, 0 },
{ 243, 1 },
- { 207, 2 },
- { 245, 1 },
- { 245, 3 },
- { 245, 1 },
- { 245, 3 },
- { 246, 9 },
- { 246, 10 },
- { 248, 4 },
- { 248, 5 },
- { 247, 1 },
+ { 228, 0 },
+ { 228, 3 },
+ { 245, 0 },
+ { 245, 2 },
+ { 244, 1 },
+ { 244, 1 },
+ { 244, 1 },
+ { 195, 4 },
+ { 195, 6 },
+ { 195, 4 },
{ 247, 2 },
- { 247, 1 },
- { 247, 1 },
- { 249, 1 },
- { 249, 1 },
- { 249, 0 },
- { 260, 2 },
- { 260, 0 },
+ { 247, 0 },
+ { 195, 8 },
+ { 195, 7 },
+ { 195, 5 },
+ { 195, 4 },
+ { 195, 6 },
+ { 195, 4 },
+ { 195, 1 },
+ { 248, 1 },
+ { 211, 2 },
+ { 250, 1 },
{ 250, 3 },
- { 250, 2 },
- { 250, 4 },
{ 250, 1 },
- { 250, 4 },
- { 261, 2 },
- { 261, 1 },
- { 261, 2 },
- { 261, 1 },
- { 261, 0 },
- { 251, 0 },
- { 251, 2 },
- { 262, 2 },
- { 262, 0 },
- { 264, 4 },
- { 264, 0 },
- { 263, 4 },
- { 263, 4 },
- { 263, 4 },
- { 263, 6 },
- { 263, 0 },
- { 263, 2 },
- { 263, 3 },
- { 263, 1 },
- { 263, 3 },
- { 263, 1 },
+ { 250, 3 },
+ { 251, 9 },
+ { 251, 10 },
+ { 253, 4 },
+ { 253, 5 },
+ { 252, 1 },
+ { 252, 2 },
+ { 252, 1 },
+ { 252, 1 },
+ { 254, 1 },
+ { 254, 1 },
+ { 254, 0 },
+ { 265, 2 },
+ { 265, 0 },
+ { 255, 3 },
+ { 255, 2 },
+ { 255, 4 },
+ { 255, 1 },
+ { 255, 4 },
{ 266, 2 },
- { 266, 4 },
+ { 266, 1 },
+ { 266, 2 },
+ { 266, 1 },
{ 266, 0 },
- { 267, 0 },
+ { 256, 0 },
+ { 256, 2 },
{ 267, 2 },
- { 203, 2 },
- { 265, 1 },
- { 265, 1 },
- { 265, 2 },
- { 265, 3 },
- { 265, 4 },
- { 265, 1 },
+ { 267, 0 },
+ { 269, 4 },
+ { 269, 0 },
+ { 268, 4 },
+ { 268, 4 },
+ { 268, 4 },
+ { 268, 6 },
{ 268, 0 },
- { 268, 3 },
{ 268, 2 },
{ 268, 3 },
- { 255, 0 },
- { 255, 3 },
- { 270, 5 },
- { 270, 3 },
- { 224, 1 },
- { 224, 1 },
- { 224, 0 },
- { 271, 2 },
+ { 268, 1 },
+ { 268, 3 },
+ { 268, 1 },
{ 271, 2 },
+ { 271, 4 },
{ 271, 0 },
- { 253, 0 },
- { 253, 3 },
- { 253, 2 },
- { 254, 0 },
- { 254, 2 },
- { 256, 0 },
- { 256, 2 },
- { 256, 4 },
- { 256, 4 },
- { 191, 1 },
- { 272, 6 },
- { 272, 3 },
- { 272, 5 },
- { 272, 6 },
- { 272, 4 },
- { 252, 0 },
- { 252, 2 },
- { 252, 1 },
- { 191, 1 },
- { 273, 9 },
+ { 272, 0 },
+ { 272, 2 },
+ { 207, 2 },
+ { 270, 1 },
+ { 270, 1 },
+ { 270, 2 },
+ { 270, 3 },
+ { 270, 4 },
+ { 270, 1 },
+ { 273, 0 },
{ 273, 3 },
- { 273, 5 },
- { 273, 6 },
- { 273, 4 },
- { 274, 5 },
- { 274, 7 },
- { 274, 3 },
- { 274, 5 },
- { 274, 0 },
- { 274, 2 },
- { 274, 3 },
- { 274, 1 },
- { 275, 0 },
+ { 273, 2 },
+ { 273, 3 },
+ { 260, 0 },
+ { 260, 3 },
+ { 275, 5 },
{ 275, 3 },
- { 269, 3 },
- { 269, 1 },
- { 269, 0 },
- { 269, 3 },
- { 269, 1 },
- { 191, 1 },
- { 276, 7 },
- { 276, 7 },
- { 276, 3 },
- { 276, 5 },
- { 276, 4 },
- { 276, 6 },
- { 277, 2 },
- { 277, 1 },
+ { 229, 1 },
+ { 229, 1 },
+ { 229, 0 },
+ { 276, 2 },
+ { 276, 2 },
+ { 276, 0 },
+ { 258, 0 },
+ { 258, 3 },
+ { 258, 2 },
+ { 259, 0 },
+ { 259, 2 },
+ { 261, 0 },
+ { 261, 2 },
+ { 261, 4 },
+ { 261, 4 },
+ { 195, 1 },
+ { 277, 7 },
+ { 277, 3 },
+ { 277, 5 },
+ { 277, 6 },
+ { 277, 4 },
+ { 257, 0 },
+ { 257, 2 },
+ { 257, 1 },
{ 278, 0 },
- { 278, 11 },
- { 278, 8 },
- { 278, 4 },
- { 279, 4 },
- { 279, 6 },
- { 279, 1 },
- { 279, 3 },
- { 279, 5 },
- { 279, 3 },
- { 279, 6 },
- { 279, 1 },
- { 279, 3 },
- { 279, 1 },
+ { 278, 2 },
+ { 195, 1 },
+ { 279, 10 },
{ 279, 3 },
{ 279, 5 },
- { 279, 1 },
- { 279, 3 },
{ 279, 6 },
- { 279, 5 },
- { 279, 4 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
- { 279, 3 },
{ 279, 4 },
- { 279, 6 },
- { 279, 2 },
- { 279, 3 },
- { 279, 4 },
- { 279, 2 },
- { 279, 2 },
- { 279, 2 },
- { 279, 2 },
- { 279, 6 },
- { 279, 6 },
- { 279, 3 },
- { 279, 6 },
- { 279, 5 },
- { 279, 4 },
- { 279, 5 },
- { 279, 4 },
- { 279, 6 },
- { 279, 6 },
- { 279, 5 },
- { 222, 0 },
- { 222, 1 },
+ { 280, 5 },
+ { 280, 7 },
+ { 280, 3 },
+ { 280, 5 },
{ 280, 0 },
+ { 280, 2 },
+ { 280, 3 },
{ 280, 1 },
- { 281, 1 },
- { 283, 5 },
- { 283, 4 },
- { 284, 2 },
+ { 281, 0 },
+ { 281, 3 },
+ { 274, 3 },
+ { 274, 1 },
+ { 274, 0 },
+ { 274, 3 },
+ { 274, 1 },
+ { 195, 1 },
+ { 282, 8 },
+ { 282, 8 },
+ { 282, 3 },
+ { 282, 5 },
+ { 282, 4 },
+ { 282, 6 },
+ { 283, 2 },
+ { 283, 1 },
{ 284, 0 },
- { 282, 1 },
- { 282, 0 },
- { 259, 1 },
- { 259, 0 },
- { 258, 3 },
- { 258, 1 },
- { 191, 12 },
- { 191, 8 },
- { 191, 7 },
- { 191, 5 },
- { 286, 1 },
+ { 284, 11 },
+ { 284, 8 },
+ { 284, 4 },
+ { 285, 4 },
+ { 285, 6 },
+ { 285, 1 },
+ { 285, 3 },
+ { 285, 5 },
+ { 285, 3 },
+ { 285, 6 },
+ { 285, 1 },
+ { 285, 3 },
+ { 285, 1 },
+ { 285, 3 },
+ { 285, 2 },
+ { 285, 5 },
+ { 285, 4 },
+ { 285, 1 },
+ { 285, 3 },
+ { 285, 6 },
+ { 285, 5 },
+ { 285, 4 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 3 },
+ { 285, 4 },
+ { 285, 6 },
+ { 285, 2 },
+ { 285, 3 },
+ { 285, 4 },
+ { 285, 6 },
+ { 285, 5 },
+ { 285, 2 },
+ { 285, 2 },
+ { 285, 2 },
+ { 285, 2 },
+ { 285, 3 },
+ { 285, 6 },
+ { 285, 6 },
+ { 285, 3 },
+ { 285, 6 },
+ { 285, 5 },
+ { 285, 4 },
+ { 285, 5 },
+ { 285, 4 },
+ { 285, 6 },
+ { 285, 6 },
+ { 285, 5 },
+ { 227, 0 },
+ { 227, 1 },
{ 286, 0 },
- { 226, 0 },
- { 226, 3 },
- { 237, 3 },
- { 237, 1 },
- { 287, 3 },
+ { 286, 1 },
{ 287, 1 },
+ { 289, 5 },
+ { 289, 4 },
+ { 290, 2 },
+ { 290, 0 },
+ { 288, 1 },
{ 288, 0 },
- { 288, 2 },
- { 288, 2 },
- { 191, 4 },
- { 191, 6 },
- { 191, 4 },
- { 191, 2 },
- { 191, 3 },
- { 289, 2 },
- { 289, 0 },
- { 191, 3 },
- { 191, 5 },
- { 191, 6 },
- { 191, 5 },
- { 191, 6 },
- { 191, 4 },
- { 191, 2 },
- { 290, 1 },
- { 290, 1 },
- { 290, 1 },
- { 290, 1 },
- { 290, 1 },
- { 218, 2 },
- { 218, 1 },
- { 219, 2 },
- { 291, 1 },
- { 291, 1 },
- { 191, 15 },
- { 191, 12 },
- { 191, 14 },
- { 191, 10 },
- { 191, 7 },
- { 191, 5 },
- { 292, 1 },
+ { 264, 1 },
+ { 264, 0 },
+ { 263, 3 },
+ { 263, 1 },
+ { 195, 12 },
+ { 195, 8 },
+ { 195, 7 },
+ { 195, 5 },
{ 292, 1 },
- { 292, 2 },
{ 292, 0 },
- { 293, 1 },
- { 293, 1 },
- { 293, 1 },
+ { 231, 0 },
+ { 231, 3 },
+ { 242, 3 },
+ { 242, 1 },
{ 293, 3 },
+ { 293, 1 },
{ 294, 0 },
- { 294, 3 },
- { 295, 0 },
+ { 294, 2 },
+ { 294, 2 },
+ { 195, 4 },
+ { 195, 6 },
+ { 195, 4 },
+ { 195, 2 },
+ { 195, 3 },
{ 295, 2 },
- { 296, 3 },
- { 296, 2 },
+ { 295, 0 },
+ { 195, 3 },
+ { 195, 5 },
+ { 195, 6 },
+ { 195, 5 },
+ { 195, 6 },
+ { 195, 4 },
+ { 195, 2 },
{ 296, 1 },
+ { 296, 1 },
+ { 296, 1 },
+ { 296, 1 },
+ { 296, 1 },
+ { 223, 2 },
+ { 223, 1 },
+ { 224, 2 },
{ 297, 1 },
{ 297, 1 },
- { 297, 1 },
- { 297, 1 },
- { 241, 1 },
- { 191, 4 },
- { 191, 6 },
- { 191, 4 },
- { 191, 6 },
- { 191, 3 },
- { 299, 0 },
- { 299, 2 },
+ { 195, 15 },
+ { 195, 12 },
+ { 195, 14 },
+ { 195, 10 },
+ { 195, 7 },
+ { 195, 5 },
{ 298, 1 },
+ { 298, 1 },
+ { 298, 2 },
{ 298, 0 },
- { 191, 1 },
- { 191, 3 },
- { 191, 2 },
- { 191, 4 },
- { 191, 2 },
- { 191, 1 },
- { 191, 3 },
- { 191, 4 },
- { 191, 2 },
- { 191, 6 },
- { 191, 6 },
- { 191, 6 },
- { 191, 5 },
- { 191, 3 },
+ { 299, 1 },
+ { 299, 1 },
+ { 299, 1 },
+ { 299, 3 },
{ 300, 0 },
- { 300, 1 },
- { 191, 1 },
- { 301, 8 },
- { 301, 11 },
- { 301, 7 },
- { 301, 5 },
- { 302, 1 },
+ { 300, 3 },
+ { 301, 0 },
+ { 301, 2 },
{ 302, 3 },
- { 303, 0 },
- { 303, 2 },
- { 304, 1 },
- { 304, 3 },
+ { 302, 2 },
+ { 302, 1 },
+ { 303, 1 },
+ { 303, 1 },
+ { 303, 1 },
+ { 303, 1 },
+ { 246, 1 },
+ { 195, 4 },
+ { 195, 6 },
+ { 195, 4 },
+ { 195, 6 },
+ { 195, 3 },
{ 305, 0 },
- { 305, 4 },
{ 305, 2 },
- { 244, 0 },
- { 244, 2 },
- { 244, 3 },
- { 306, 1 },
- { 306, 3 },
+ { 304, 1 },
+ { 304, 0 },
+ { 195, 1 },
+ { 195, 3 },
+ { 195, 2 },
+ { 195, 4 },
+ { 195, 2 },
+ { 195, 1 },
+ { 195, 3 },
+ { 195, 4 },
+ { 195, 2 },
+ { 195, 6 },
+ { 195, 6 },
+ { 195, 6 },
+ { 195, 6 },
+ { 195, 5 },
+ { 195, 3 },
+ { 306, 0 },
{ 306, 1 },
- { 307, 6 },
+ { 195, 1 },
+ { 307, 8 },
+ { 307, 11 },
+ { 307, 7 },
+ { 307, 5 },
{ 308, 1 },
{ 308, 3 },
- { 309, 5 },
- { 310, 5 },
- { 310, 6 },
- { 310, 4 },
- { 310, 5 },
+ { 309, 0 },
+ { 309, 2 },
{ 310, 1 },
- { 310, 2 },
+ { 310, 3 },
{ 311, 0 },
- { 311, 3 },
- { 311, 6 },
- { 312, 1 },
+ { 311, 4 },
+ { 311, 2 },
+ { 249, 0 },
+ { 249, 2 },
+ { 249, 3 },
{ 313, 1 },
{ 313, 2 },
+ { 313, 3 },
+ { 312, 1 },
+ { 312, 3 },
+ { 312, 1 },
+ { 314, 6 },
{ 315, 1 },
- { 315, 2 },
- { 316, 2 },
- { 316, 2 },
- { 314, 0 },
- { 314, 2 },
- { 317, 2 },
- { 317, 2 },
- { 317, 1 },
+ { 315, 3 },
+ { 316, 5 },
+ { 317, 5 },
+ { 317, 6 },
+ { 317, 4 },
+ { 317, 5 },
{ 317, 1 },
- { 257, 2 },
- { 285, 2 },
- { 285, 1 },
- { 285, 1 },
- { 319, 4 },
- { 319, 2 },
- { 318, 5 },
+ { 317, 2 },
+ { 318, 0 },
+ { 318, 3 },
+ { 318, 6 },
+ { 319, 1 },
+ { 320, 1 },
+ { 320, 2 },
+ { 322, 1 },
+ { 322, 2 },
+ { 323, 2 },
+ { 323, 2 },
+ { 321, 0 },
+ { 321, 2 },
+ { 324, 2 },
+ { 324, 2 },
+ { 324, 1 },
+ { 324, 1 },
+ { 262, 2 },
+ { 291, 2 },
+ { 291, 1 },
+ { 291, 1 },
+ { 326, 4 },
+ { 326, 2 },
+ { 325, 5 },
};
static void yy_accept(yyParser*); /* Forward Declaration */
@@ -3103,279 +3127,299 @@ static void yy_reduce(
** break;
*/
case 1: /* cmdlist ::= cmdlist ecmd */
-{parserContext->addQuery(yymsp[0].minor.yy363); DONT_INHERIT_TOKENS("cmdlist");}
+{parserContext->addQuery(yymsp[0].minor.yy41); DONT_INHERIT_TOKENS("cmdlist");}
break;
case 2: /* cmdlist ::= ecmd */
-{parserContext->addQuery(yymsp[0].minor.yy363);}
+{parserContext->addQuery(yymsp[0].minor.yy41);}
break;
case 3: /* ecmd ::= SEMI */
-{yygotominor.yy363 = new SqliteEmptyQuery();}
+{yygotominor.yy41 = new SqliteEmptyQuery();}
break;
case 4: /* ecmd ::= explain cmdx SEMI */
{
- yygotominor.yy363 = yymsp[-1].minor.yy363;
- yygotominor.yy363->explain = yymsp[-2].minor.yy91->explain;
- yygotominor.yy363->queryPlan = yymsp[-2].minor.yy91->queryPlan;
- delete yymsp[-2].minor.yy91;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = yymsp[-1].minor.yy41;
+ yygotominor.yy41->explain = yymsp[-2].minor.yy499->explain;
+ yygotominor.yy41->queryPlan = yymsp[-2].minor.yy499->queryPlan;
+ delete yymsp[-2].minor.yy499;
+ objectForTokens = yygotominor.yy41;
}
break;
case 5: /* explain ::= */
-{yygotominor.yy91 = new ParserStubExplain(false, false);}
+{yygotominor.yy499 = new ParserStubExplain(false, false);}
break;
case 6: /* explain ::= EXPLAIN */
-{yygotominor.yy91 = new ParserStubExplain(true, false);}
+{yygotominor.yy499 = new ParserStubExplain(true, false);}
break;
case 7: /* explain ::= EXPLAIN QUERY PLAN */
-{yygotominor.yy91 = new ParserStubExplain(true, true);}
+{yygotominor.yy499 = new ParserStubExplain(true, true);}
break;
case 8: /* cmdx ::= cmd */
- case 389: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==389);
- case 390: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==390);
- case 391: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==391);
- case 392: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==392);
- case 419: /* cmd ::= create_vtab */ yytestcase(yyruleno==419);
-{yygotominor.yy363 = yymsp[0].minor.yy363;}
+ case 400: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==400);
+ case 401: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==401);
+ case 402: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==402);
+ case 403: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==403);
+ case 431: /* cmd ::= create_vtab */ yytestcase(yyruleno==431);
+{yygotominor.yy41 = yymsp[0].minor.yy41;}
break;
case 9: /* cmd ::= BEGIN transtype trans_opt */
{
- yygotominor.yy363 = new SqliteBeginTrans(
- yymsp[-1].minor.yy84->type,
- yymsp[0].minor.yy84->transactionKw,
- yymsp[0].minor.yy84->name
+ yygotominor.yy41 = new SqliteBeginTrans(
+ yymsp[-1].minor.yy512->type,
+ yymsp[0].minor.yy512->transactionKw,
+ yymsp[0].minor.yy512->name
);
- delete yymsp[0].minor.yy84;
- delete yymsp[-1].minor.yy84;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy512;
+ delete yymsp[-1].minor.yy512;
+ objectForTokens = yygotominor.yy41;
}
break;
case 10: /* trans_opt ::= */
case 14: /* transtype ::= */ yytestcase(yyruleno==14);
-{yygotominor.yy84 = new ParserStubTransDetails();}
+{yygotominor.yy512 = new ParserStubTransDetails();}
break;
case 11: /* trans_opt ::= TRANSACTION */
{
- yygotominor.yy84 = new ParserStubTransDetails();
- yygotominor.yy84->transactionKw = true;
+ yygotominor.yy512 = new ParserStubTransDetails();
+ yygotominor.yy512->transactionKw = true;
}
break;
case 12: /* trans_opt ::= TRANSACTION nm */
case 13: /* trans_opt ::= TRANSACTION ID_TRANS */ yytestcase(yyruleno==13);
{
- yygotominor.yy84 = new ParserStubTransDetails();
- yygotominor.yy84->transactionKw = true;
- yygotominor.yy84->name = *(yymsp[0].minor.yy319);
+ yygotominor.yy512 = new ParserStubTransDetails();
+ yygotominor.yy512->transactionKw = true;
+ yygotominor.yy512->name = *(yymsp[0].minor.yy319);
delete yymsp[0].minor.yy319;
}
break;
case 15: /* transtype ::= DEFERRED */
{
- yygotominor.yy84 = new ParserStubTransDetails();
- yygotominor.yy84->type = SqliteBeginTrans::Type::DEFERRED;
+ yygotominor.yy512 = new ParserStubTransDetails();
+ yygotominor.yy512->type = SqliteBeginTrans::Type::DEFERRED;
}
break;
case 16: /* transtype ::= IMMEDIATE */
{
- yygotominor.yy84 = new ParserStubTransDetails();
- yygotominor.yy84->type = SqliteBeginTrans::Type::IMMEDIATE;
+ yygotominor.yy512 = new ParserStubTransDetails();
+ yygotominor.yy512->type = SqliteBeginTrans::Type::IMMEDIATE;
}
break;
case 17: /* transtype ::= EXCLUSIVE */
{
- yygotominor.yy84 = new ParserStubTransDetails();
- yygotominor.yy84->type = SqliteBeginTrans::Type::EXCLUSIVE;
+ yygotominor.yy512 = new ParserStubTransDetails();
+ yygotominor.yy512->type = SqliteBeginTrans::Type::EXCLUSIVE;
}
break;
case 18: /* cmd ::= COMMIT trans_opt */
{
- yygotominor.yy363 = new SqliteCommitTrans(
- yymsp[0].minor.yy84->transactionKw,
- yymsp[0].minor.yy84->name,
+ yygotominor.yy41 = new SqliteCommitTrans(
+ yymsp[0].minor.yy512->transactionKw,
+ yymsp[0].minor.yy512->name,
false
);
- delete yymsp[0].minor.yy84;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy512;
+ objectForTokens = yygotominor.yy41;
}
break;
case 19: /* cmd ::= END trans_opt */
{
- yygotominor.yy363 = new SqliteCommitTrans(
- yymsp[0].minor.yy84->transactionKw,
- yymsp[0].minor.yy84->name,
+ yygotominor.yy41 = new SqliteCommitTrans(
+ yymsp[0].minor.yy512->transactionKw,
+ yymsp[0].minor.yy512->name,
true
);
- delete yymsp[0].minor.yy84;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy512;
+ objectForTokens = yygotominor.yy41;
}
break;
case 20: /* cmd ::= ROLLBACK trans_opt */
{
- yygotominor.yy363 = new SqliteRollback(
- yymsp[0].minor.yy84->transactionKw,
- yymsp[0].minor.yy84->name
+ yygotominor.yy41 = new SqliteRollback(
+ yymsp[0].minor.yy512->transactionKw,
+ yymsp[0].minor.yy512->name
);
- delete yymsp[0].minor.yy84;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy512;
+ objectForTokens = yygotominor.yy41;
}
break;
case 21: /* savepoint_opt ::= SAVEPOINT */
- case 37: /* ifnotexists ::= IF NOT EXISTS */ yytestcase(yyruleno==37);
- case 90: /* gen_always ::= GENERATED ALWAYS */ yytestcase(yyruleno==90);
- case 93: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==93);
- case 115: /* tconscomma ::= COMMA */ yytestcase(yyruleno==115);
- case 137: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==137);
- case 317: /* not_opt ::= NOT */ yytestcase(yyruleno==317);
- case 333: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==333);
- case 401: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==401);
- case 417: /* kwcolumn_opt ::= */ yytestcase(yyruleno==417);
-{yygotominor.yy611 = new bool(true);}
+ case 41: /* ifnotexists ::= IF NOT EXISTS */ yytestcase(yyruleno==41);
+ case 94: /* gen_always ::= GENERATED ALWAYS */ yytestcase(yyruleno==94);
+ case 97: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==97);
+ case 119: /* tconscomma ::= COMMA */ yytestcase(yyruleno==119);
+ case 141: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==141);
+ case 328: /* not_opt ::= NOT */ yytestcase(yyruleno==328);
+ case 344: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==344);
+ case 412: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==412);
+ case 429: /* kwcolumn_opt ::= */ yytestcase(yyruleno==429);
+{yygotominor.yy225 = new bool(true);}
break;
case 22: /* savepoint_opt ::= */
- case 36: /* ifnotexists ::= */ yytestcase(yyruleno==36);
- case 91: /* gen_always ::= */ yytestcase(yyruleno==91);
- case 92: /* autoinc ::= */ yytestcase(yyruleno==92);
- case 116: /* tconscomma ::= */ yytestcase(yyruleno==116);
- case 138: /* ifexists ::= */ yytestcase(yyruleno==138);
- case 316: /* not_opt ::= */ yytestcase(yyruleno==316);
- case 334: /* uniqueflag ::= */ yytestcase(yyruleno==334);
- case 402: /* database_kw_opt ::= */ yytestcase(yyruleno==402);
- case 418: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==418);
-{yygotominor.yy611 = new bool(false);}
+ case 40: /* ifnotexists ::= */ yytestcase(yyruleno==40);
+ case 95: /* gen_always ::= */ yytestcase(yyruleno==95);
+ case 96: /* autoinc ::= */ yytestcase(yyruleno==96);
+ case 120: /* tconscomma ::= */ yytestcase(yyruleno==120);
+ case 142: /* ifexists ::= */ yytestcase(yyruleno==142);
+ case 327: /* not_opt ::= */ yytestcase(yyruleno==327);
+ case 345: /* uniqueflag ::= */ yytestcase(yyruleno==345);
+ case 413: /* database_kw_opt ::= */ yytestcase(yyruleno==413);
+ case 430: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==430);
+{yygotominor.yy225 = new bool(false);}
break;
case 23: /* cmd ::= SAVEPOINT nm */
{
- yygotominor.yy363 = new SqliteSavepoint(*(yymsp[0].minor.yy319));
+ yygotominor.yy41 = new SqliteSavepoint(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
case 24: /* cmd ::= RELEASE savepoint_opt nm */
{
- yygotominor.yy363 = new SqliteRelease(*(yymsp[-1].minor.yy611), *(yymsp[0].minor.yy319));
+ yygotominor.yy41 = new SqliteRelease(*(yymsp[-1].minor.yy225), *(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
case 25: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
case 26: /* cmd ::= SAVEPOINT ID_TRANS */ yytestcase(yyruleno==26);
{
- yygotominor.yy363 = new SqliteRollback(
- yymsp[-3].minor.yy84->transactionKw,
- *(yymsp[-1].minor.yy611),
+ yygotominor.yy41 = new SqliteRollback(
+ yymsp[-3].minor.yy512->transactionKw,
+ *(yymsp[-1].minor.yy225),
*(yymsp[0].minor.yy319)
);
- delete yymsp[-1].minor.yy611;
- delete yymsp[-3].minor.yy84;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[-3].minor.yy512;
+ objectForTokens = yygotominor.yy41;
}
break;
case 27: /* cmd ::= RELEASE savepoint_opt ID_TRANS */
case 28: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt ID_TRANS */ yytestcase(yyruleno==28);
-{ yy_destructor(yypParser,200,&yymsp[-1].minor);
+{ yy_destructor(yypParser,204,&yymsp[-1].minor);
}
break;
case 29: /* cmd ::= CREATE temp TABLE ifnotexists fullname LP columnlist conslist_opt RP table_options */
{
- yygotominor.yy363 = new SqliteCreateTable(
- *(yymsp[-6].minor.yy611),
- *(yymsp[-8].minor.yy386),
- yymsp[-5].minor.yy440->name1,
- yymsp[-5].minor.yy440->name2,
- *(yymsp[-3].minor.yy42),
- *(yymsp[-2].minor.yy493),
- *(yymsp[0].minor.yy319)
+ yygotominor.yy41 = new SqliteCreateTable(
+ *(yymsp[-6].minor.yy225),
+ *(yymsp[-8].minor.yy130),
+ yymsp[-5].minor.yy396->name1,
+ yymsp[-5].minor.yy396->name2,
+ *(yymsp[-3].minor.yy390),
+ *(yymsp[-2].minor.yy115),
+ *(yymsp[0].minor.yy455)
);
- delete yymsp[-6].minor.yy611;
- delete yymsp[-8].minor.yy386;
- delete yymsp[-3].minor.yy42;
- delete yymsp[-2].minor.yy493;
- delete yymsp[-5].minor.yy440;
- delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-6].minor.yy225;
+ delete yymsp[-8].minor.yy130;
+ delete yymsp[-3].minor.yy390;
+ delete yymsp[-2].minor.yy115;
+ delete yymsp[-5].minor.yy396;
+ delete yymsp[0].minor.yy455;
+ objectForTokens = yygotominor.yy41;
}
break;
case 30: /* cmd ::= CREATE temp TABLE ifnotexists fullname AS select */
{
- yygotominor.yy363 = new SqliteCreateTable(
- *(yymsp[-3].minor.yy611),
- *(yymsp[-5].minor.yy386),
- yymsp[-2].minor.yy440->name1,
- yymsp[-2].minor.yy440->name2,
- yymsp[0].minor.yy313
+ yygotominor.yy41 = new SqliteCreateTable(
+ *(yymsp[-3].minor.yy225),
+ *(yymsp[-5].minor.yy130),
+ yymsp[-2].minor.yy396->name1,
+ yymsp[-2].minor.yy396->name2,
+ yymsp[0].minor.yy297
);
- delete yymsp[-3].minor.yy611;
- delete yymsp[-5].minor.yy386;
- delete yymsp[-2].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-3].minor.yy225;
+ delete yymsp[-5].minor.yy130;
+ delete yymsp[-2].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
case 31: /* cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW */
- case 140: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==140);
- case 372: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==372);
-{ yy_destructor(yypParser,201,&yymsp[-5].minor);
- yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 144: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==144);
+ case 383: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==383);
+{ yy_destructor(yypParser,205,&yymsp[-5].minor);
+ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
case 32: /* cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW */
- case 141: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==141);
- case 373: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==373);
-{ yy_destructor(yypParser,201,&yymsp[-3].minor);
+ case 145: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==145);
+ case 384: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==384);
+{ yy_destructor(yypParser,205,&yymsp[-3].minor);
}
break;
case 33: /* table_options ::= */
- case 194: /* dbnm ::= */ yytestcase(yyruleno==194);
- case 341: /* collate ::= */ yytestcase(yyruleno==341);
- case 426: /* vtabarg ::= */ yytestcase(yyruleno==426);
- case 430: /* anylist ::= */ yytestcase(yyruleno==430);
-{yygotominor.yy319 = new QString();}
+{yygotominor.yy455 = new ParserCreateTableOptionList();}
break;
- case 34: /* table_options ::= WITHOUT nm */
- case 35: /* table_options ::= WITHOUT CTX_ROWID_KW */ yytestcase(yyruleno==35);
+ case 34: /* table_options ::= table_option */
+{
+ yygotominor.yy455 = new ParserCreateTableOptionList();
+ yygotominor.yy455->append(yymsp[0].minor.yy629);
+ }
+ break;
+ case 35: /* table_options ::= table_options COMMA table_option */
+{
+ yymsp[-2].minor.yy455->append(yymsp[0].minor.yy629);
+ yygotominor.yy455 = yymsp[-2].minor.yy455;
+ DONT_INHERIT_TOKENS("table_options");
+ }
+ break;
+ case 36: /* table_option ::= WITHOUT nm */
{
if (yymsp[0].minor.yy319->toLower() != "rowid")
parserContext->errorAtToken(QString("Invalid table option: %1").arg(*(yymsp[0].minor.yy319)));
- yygotominor.yy319 = yymsp[0].minor.yy319;
+ yygotominor.yy629 = new ParserStubCreateTableOption(ParserStubCreateTableOption::WITHOUT_ROWID);
+ delete yymsp[0].minor.yy319;
}
break;
- case 38: /* temp ::= TEMP */
-{yygotominor.yy386 = new int( (yymsp[0].minor.yy0->value.length() > 4) ? 2 : 1 );}
+ case 37: /* table_option ::= nm */
+ case 38: /* table_option ::= WITHOUT CTX_ROWID_KW */ yytestcase(yyruleno==38);
+ case 39: /* table_option ::= CTX_STRICT_KW */ yytestcase(yyruleno==39);
+{
+ if (yymsp[0].minor.yy319->toLower() != "strict")
+ parserContext->errorAtToken(QString("Invalid table option: %1").arg(*(yymsp[0].minor.yy319)));
+
+ yygotominor.yy629 = new ParserStubCreateTableOption(ParserStubCreateTableOption::STRICT);
+ delete yymsp[0].minor.yy319;
+ }
+ break;
+ case 42: /* temp ::= TEMP */
+{yygotominor.yy130 = new int( (yymsp[0].minor.yy0->value.length() > 4) ? 2 : 1 );}
break;
- case 39: /* temp ::= */
- case 162: /* distinct ::= */ yytestcase(yyruleno==162);
-{yygotominor.yy386 = new int(0);}
+ case 43: /* temp ::= */
+ case 166: /* distinct ::= */ yytestcase(yyruleno==166);
+{yygotominor.yy130 = new int(0);}
break;
- case 40: /* columnlist ::= columnlist COMMA column */
+ case 44: /* columnlist ::= columnlist COMMA column */
{
- yymsp[-2].minor.yy42->append(yymsp[0].minor.yy147);
- yygotominor.yy42 = yymsp[-2].minor.yy42;
+ yymsp[-2].minor.yy390->append(yymsp[0].minor.yy3);
+ yygotominor.yy390 = yymsp[-2].minor.yy390;
DONT_INHERIT_TOKENS("columnlist");
}
break;
- case 41: /* columnlist ::= column */
+ case 45: /* columnlist ::= column */
{
- yygotominor.yy42 = new ParserCreateTableColumnList();
- yygotominor.yy42->append(yymsp[0].minor.yy147);
+ yygotominor.yy390 = new ParserCreateTableColumnList();
+ yygotominor.yy390->append(yymsp[0].minor.yy3);
}
break;
- case 42: /* column ::= columnid type carglist */
+ case 46: /* column ::= columnid type carglist */
{
- yygotominor.yy147 = new SqliteCreateTable::Column(*(yymsp[-2].minor.yy319), yymsp[-1].minor.yy57, *(yymsp[0].minor.yy51));
+ yygotominor.yy3 = new SqliteCreateTable::Column(*(yymsp[-2].minor.yy319), yymsp[-1].minor.yy267, *(yymsp[0].minor.yy323));
delete yymsp[-2].minor.yy319;
- delete yymsp[0].minor.yy51;
- objectForTokens = yygotominor.yy147;
+ delete yymsp[0].minor.yy323;
+ objectForTokens = yygotominor.yy3;
}
break;
- case 43: /* columnid ::= nm */
- case 44: /* columnid ::= ID_COL_NEW */ yytestcase(yyruleno==44);
- case 49: /* nm ::= id */ yytestcase(yyruleno==49);
- case 57: /* typename ::= ids */ yytestcase(yyruleno==57);
- case 195: /* dbnm ::= DOT nm */ yytestcase(yyruleno==195);
- case 342: /* collate ::= COLLATE ids */ yytestcase(yyruleno==342);
- case 343: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==343);
+ case 47: /* columnid ::= nm */
+ case 48: /* columnid ::= ID_COL_NEW */ yytestcase(yyruleno==48);
+ case 53: /* nm ::= id */ yytestcase(yyruleno==53);
+ case 61: /* typename ::= ids */ yytestcase(yyruleno==61);
+ case 199: /* dbnm ::= DOT nm */ yytestcase(yyruleno==199);
+ case 353: /* collate ::= COLLATE ids */ yytestcase(yyruleno==353);
+ case 354: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==354);
{yygotominor.yy319 = yymsp[0].minor.yy319;}
break;
- case 45: /* id ::= ID */
+ case 49: /* id ::= ID */
{
yygotominor.yy319 = new QString(
stripObjName(
@@ -3384,2006 +3428,2096 @@ static void yy_reduce(
);
}
break;
- case 46: /* id_opt ::= id */
+ case 50: /* id_opt ::= id */
{
yygotominor.yy319 = yymsp[0].minor.yy319;
}
break;
- case 47: /* id_opt ::= */
+ case 51: /* id_opt ::= */
{
yygotominor.yy319 = new QString();
}
break;
- case 48: /* ids ::= ID|STRING */
- case 51: /* nm ::= JOIN_KW */ yytestcase(yyruleno==51);
+ case 52: /* ids ::= ID|STRING */
+ case 55: /* nm ::= JOIN_KW */ yytestcase(yyruleno==55);
{yygotominor.yy319 = new QString(yymsp[0].minor.yy0->value);}
break;
- case 50: /* nm ::= STRING */
+ case 54: /* nm ::= STRING */
{yygotominor.yy319 = new QString(stripString(yymsp[0].minor.yy0->value));}
break;
- case 52: /* type ::= */
-{yygotominor.yy57 = nullptr;}
+ case 56: /* type ::= */
+{yygotominor.yy267 = nullptr;}
break;
- case 53: /* type ::= typetoken */
-{yygotominor.yy57 = yymsp[0].minor.yy57;}
+ case 57: /* type ::= typetoken */
+{yygotominor.yy267 = yymsp[0].minor.yy267;}
break;
- case 54: /* typetoken ::= typename */
+ case 58: /* typetoken ::= typename */
{
- yygotominor.yy57 = new SqliteColumnType(*(yymsp[0].minor.yy319));
+ yygotominor.yy267 = new SqliteColumnType(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy57;
+ objectForTokens = yygotominor.yy267;
}
break;
- case 55: /* typetoken ::= typename LP signed RP */
+ case 59: /* typetoken ::= typename LP signed RP */
{
- yygotominor.yy57 = new SqliteColumnType(*(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy229));
+ yygotominor.yy267 = new SqliteColumnType(*(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy393));
delete yymsp[-3].minor.yy319;
- delete yymsp[-1].minor.yy229;
- objectForTokens = yygotominor.yy57;
+ delete yymsp[-1].minor.yy393;
+ objectForTokens = yygotominor.yy267;
}
break;
- case 56: /* typetoken ::= typename LP signed COMMA signed RP */
+ case 60: /* typetoken ::= typename LP signed COMMA signed RP */
{
- yygotominor.yy57 = new SqliteColumnType(*(yymsp[-5].minor.yy319), *(yymsp[-3].minor.yy229), *(yymsp[-1].minor.yy229));
+ yygotominor.yy267 = new SqliteColumnType(*(yymsp[-5].minor.yy319), *(yymsp[-3].minor.yy393), *(yymsp[-1].minor.yy393));
delete yymsp[-5].minor.yy319;
- delete yymsp[-3].minor.yy229;
- delete yymsp[-1].minor.yy229;
- objectForTokens = yygotominor.yy57;
+ delete yymsp[-3].minor.yy393;
+ delete yymsp[-1].minor.yy393;
+ objectForTokens = yygotominor.yy267;
}
break;
- case 58: /* typename ::= typename ids */
- case 59: /* typename ::= ID_COL_TYPE */ yytestcase(yyruleno==59);
+ case 62: /* typename ::= typename ids */
+ case 63: /* typename ::= ID_COL_TYPE */ yytestcase(yyruleno==63);
{
yymsp[-1].minor.yy319->append(" " + *(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
yygotominor.yy319 = yymsp[-1].minor.yy319;
}
break;
- case 60: /* signed ::= plus_num */
- case 61: /* signed ::= minus_num */ yytestcase(yyruleno==61);
- case 358: /* nmnum ::= plus_num */ yytestcase(yyruleno==358);
- case 363: /* plus_num ::= PLUS number */ yytestcase(yyruleno==363);
- case 364: /* plus_num ::= number */ yytestcase(yyruleno==364);
-{yygotominor.yy229 = yymsp[0].minor.yy229;}
+ case 64: /* signed ::= plus_num */
+ case 65: /* signed ::= minus_num */ yytestcase(yyruleno==65);
+ case 369: /* nmnum ::= plus_num */ yytestcase(yyruleno==369);
+ case 374: /* plus_num ::= PLUS number */ yytestcase(yyruleno==374);
+ case 375: /* plus_num ::= number */ yytestcase(yyruleno==375);
+{yygotominor.yy393 = yymsp[0].minor.yy393;}
break;
- case 62: /* carglist ::= carglist ccons */
+ case 66: /* carglist ::= carglist ccons */
{
- yymsp[-1].minor.yy51->append(yymsp[0].minor.yy464);
- yygotominor.yy51 = yymsp[-1].minor.yy51;
+ yymsp[-1].minor.yy323->append(yymsp[0].minor.yy448);
+ yygotominor.yy323 = yymsp[-1].minor.yy323;
DONT_INHERIT_TOKENS("carglist");
}
break;
- case 63: /* carglist ::= */
-{yygotominor.yy51 = new ParserCreateTableColumnConstraintList();}
+ case 67: /* carglist ::= */
+{yygotominor.yy323 = new ParserCreateTableColumnConstraintList();}
break;
- case 64: /* ccons ::= CONSTRAINT nm */
+ case 68: /* ccons ::= CONSTRAINT nm */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefNameOnly(*(yymsp[0].minor.yy319));
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefNameOnly(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy464;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 65: /* ccons ::= DEFAULT term */
+ case 69: /* ccons ::= DEFAULT term */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229));
- delete yymsp[0].minor.yy229;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefTerm(*(yymsp[0].minor.yy393));
+ delete yymsp[0].minor.yy393;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 66: /* ccons ::= DEFAULT LP expr RP */
+ case 70: /* ccons ::= DEFAULT LP expr RP */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefExpr(yymsp[-1].minor.yy512);
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefExpr(yymsp[-1].minor.yy186);
+ objectForTokens = yygotominor.yy448;
}
break;
- case 67: /* ccons ::= DEFAULT PLUS term */
+ case 71: /* ccons ::= DEFAULT PLUS term */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229), false);
- delete yymsp[0].minor.yy229;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefTerm(*(yymsp[0].minor.yy393), false);
+ delete yymsp[0].minor.yy393;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 68: /* ccons ::= DEFAULT MINUS term */
+ case 72: /* ccons ::= DEFAULT MINUS term */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229), true);
- delete yymsp[0].minor.yy229;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefTerm(*(yymsp[0].minor.yy393), true);
+ delete yymsp[0].minor.yy393;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 69: /* ccons ::= DEFAULT id */
+ case 73: /* ccons ::= DEFAULT id */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefId(*(yymsp[0].minor.yy319));
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefId(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy464;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 70: /* ccons ::= DEFAULT CTIME_KW */
+ case 74: /* ccons ::= DEFAULT CTIME_KW */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefCTime(yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefCTime(yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy448;
}
break;
- case 71: /* ccons ::= NULL onconf */
+ case 75: /* ccons ::= NULL onconf */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initNull(*(yymsp[0].minor.yy418));
- delete yymsp[0].minor.yy418;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initNull(*(yymsp[0].minor.yy136));
+ delete yymsp[0].minor.yy136;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 72: /* ccons ::= NOT NULL onconf */
+ case 76: /* ccons ::= NOT NULL onconf */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initNotNull(*(yymsp[0].minor.yy418));
- delete yymsp[0].minor.yy418;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initNotNull(*(yymsp[0].minor.yy136));
+ delete yymsp[0].minor.yy136;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 73: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
+ case 77: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initPk(*(yymsp[-2].minor.yy549), *(yymsp[-1].minor.yy418), *(yymsp[0].minor.yy611));
- delete yymsp[-2].minor.yy549;
- delete yymsp[0].minor.yy611;
- delete yymsp[-1].minor.yy418;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initPk(*(yymsp[-2].minor.yy35), *(yymsp[-1].minor.yy136), *(yymsp[0].minor.yy225));
+ delete yymsp[-2].minor.yy35;
+ delete yymsp[0].minor.yy225;
+ delete yymsp[-1].minor.yy136;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 74: /* ccons ::= UNIQUE onconf */
+ case 78: /* ccons ::= UNIQUE onconf */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initUnique(*(yymsp[0].minor.yy418));
- delete yymsp[0].minor.yy418;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initUnique(*(yymsp[0].minor.yy136));
+ delete yymsp[0].minor.yy136;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 75: /* ccons ::= CHECK LP expr RP */
+ case 79: /* ccons ::= CHECK LP expr RP */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initCheck(yymsp[-1].minor.yy512);
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initCheck(yymsp[-1].minor.yy186);
+ objectForTokens = yygotominor.yy448;
}
break;
- case 76: /* ccons ::= REFERENCES nm idxlist_opt refargs */
+ case 80: /* ccons ::= REFERENCES nm idxlist_opt refargs */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initFk(*(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy223), *(yymsp[0].minor.yy584));
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initFk(*(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy627), *(yymsp[0].minor.yy156));
delete yymsp[-2].minor.yy319;
- delete yymsp[0].minor.yy584;
- delete yymsp[-1].minor.yy223;
- objectForTokens = yygotominor.yy464;
+ delete yymsp[0].minor.yy156;
+ delete yymsp[-1].minor.yy627;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 77: /* ccons ::= defer_subclause */
+ case 81: /* ccons ::= defer_subclause */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initDefer(yymsp[0].minor.yy9->initially, yymsp[0].minor.yy9->deferrable);
- delete yymsp[0].minor.yy9;
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initDefer(yymsp[0].minor.yy53->initially, yymsp[0].minor.yy53->deferrable);
+ delete yymsp[0].minor.yy53;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 78: /* ccons ::= COLLATE ids */
+ case 82: /* ccons ::= COLLATE ids */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initColl(*(yymsp[0].minor.yy319));
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initColl(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy464;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 79: /* ccons ::= gen_always AS LP expr RP id_opt */
- case 80: /* ccons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==80);
- case 81: /* ccons ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==81);
- case 82: /* ccons ::= REFERENCES ID_TAB */ yytestcase(yyruleno==82);
+ case 83: /* ccons ::= gen_always AS LP expr RP id_opt */
+ case 84: /* ccons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==84);
+ case 85: /* ccons ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==85);
+ case 86: /* ccons ::= REFERENCES ID_TAB */ yytestcase(yyruleno==86);
{
if (!yymsp[0].minor.yy319->isNull() && yymsp[0].minor.yy319->toLower() != "stored" && yymsp[0].minor.yy319->toLower() != "virtual")
parserContext->errorAtToken(QString("Invalid generated column type: %1").arg(*(yymsp[0].minor.yy319)));
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initGeneratedAs(yymsp[-2].minor.yy512, *(yymsp[-5].minor.yy611), *(yymsp[0].minor.yy319));
- delete yymsp[-5].minor.yy611;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initGeneratedAs(yymsp[-2].minor.yy186, *(yymsp[-5].minor.yy225), *(yymsp[0].minor.yy319));
+ delete yymsp[-5].minor.yy225;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy464;
+ objectForTokens = yygotominor.yy448;
}
break;
- case 83: /* ccons ::= CHECK LP RP */
+ case 87: /* ccons ::= CHECK LP RP */
{
- yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
- yygotominor.yy464->initCheck();
- objectForTokens = yygotominor.yy464;
+ yygotominor.yy448 = new SqliteCreateTable::Column::Constraint();
+ yygotominor.yy448->initCheck();
+ objectForTokens = yygotominor.yy448;
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 84: /* term ::= NULL */
-{yygotominor.yy229 = new QVariant();}
+ case 88: /* term ::= NULL */
+{yygotominor.yy393 = new QVariant();}
break;
- case 85: /* term ::= INTEGER */
- case 366: /* number ::= INTEGER */ yytestcase(yyruleno==366);
-{yygotominor.yy229 = parserContext->handleNumberToken(yymsp[0].minor.yy0->value);}
+ case 89: /* term ::= INTEGER */
+ case 377: /* number ::= INTEGER */ yytestcase(yyruleno==377);
+{yygotominor.yy393 = parserContext->handleNumberToken(yymsp[0].minor.yy0->value);}
break;
- case 86: /* term ::= FLOAT */
- case 367: /* number ::= FLOAT */ yytestcase(yyruleno==367);
-{yygotominor.yy229 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());}
+ case 90: /* term ::= FLOAT */
+ case 378: /* number ::= FLOAT */ yytestcase(yyruleno==378);
+{yygotominor.yy393 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());}
break;
- case 87: /* term ::= STRING|BLOB */
-{yygotominor.yy229 = new QVariant(stripString(yymsp[0].minor.yy0->value));}
+ case 91: /* term ::= STRING|BLOB */
+{
+ if (yymsp[0].minor.yy0->value.length() >= 3 && yymsp[0].minor.yy0->value.startsWith("x'", Qt::CaseInsensitive))
+ yygotominor.yy393 = new QVariant(blobFromLiteral(yymsp[0].minor.yy0->value));
+ else
+ yygotominor.yy393 = new QVariant(stripString(yymsp[0].minor.yy0->value));
+ }
break;
- case 88: /* tnm ::= term */
+ case 92: /* tnm ::= term */
{
- yygotominor.yy590 = new ParserTermOrLiteral(*(yymsp[0].minor.yy229));
- delete yymsp[0].minor.yy229;
+ yygotominor.yy380 = new ParserTermOrLiteral(*(yymsp[0].minor.yy393));
+ delete yymsp[0].minor.yy393;
}
break;
- case 89: /* tnm ::= nm */
+ case 93: /* tnm ::= nm */
{
- yygotominor.yy590 = new ParserTermOrLiteral(*(yymsp[0].minor.yy319));
+ yygotominor.yy380 = new ParserTermOrLiteral(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
}
break;
- case 94: /* refargs ::= */
-{yygotominor.yy584 = new ParserFkConditionList();}
+ case 98: /* refargs ::= */
+{yygotominor.yy156 = new ParserFkConditionList();}
break;
- case 95: /* refargs ::= refargs refarg */
+ case 99: /* refargs ::= refargs refarg */
{
- yymsp[-1].minor.yy584->append(yymsp[0].minor.yy507);
- yygotominor.yy584 = yymsp[-1].minor.yy584;
+ yymsp[-1].minor.yy156->append(yymsp[0].minor.yy205);
+ yygotominor.yy156 = yymsp[-1].minor.yy156;
DONT_INHERIT_TOKENS("refargs");
}
break;
- case 96: /* refarg ::= MATCH nm */
+ case 100: /* refarg ::= MATCH nm */
{
- yygotominor.yy507 = new SqliteForeignKey::Condition(*(yymsp[0].minor.yy319));
+ yygotominor.yy205 = new SqliteForeignKey::Condition(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
}
break;
- case 97: /* refarg ::= ON INSERT refact */
-{yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::INSERT, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
+ case 101: /* refarg ::= ON INSERT refact */
+{yygotominor.yy205 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::INSERT, *(yymsp[0].minor.yy106)); delete yymsp[0].minor.yy106;}
break;
- case 98: /* refarg ::= ON DELETE refact */
-{yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::DELETE, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
+ case 102: /* refarg ::= ON DELETE refact */
+{yygotominor.yy205 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::DELETE, *(yymsp[0].minor.yy106)); delete yymsp[0].minor.yy106;}
break;
- case 99: /* refarg ::= ON UPDATE refact */
- case 100: /* refarg ::= MATCH ID_FK_MATCH */ yytestcase(yyruleno==100);
-{yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::UPDATE, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
+ case 103: /* refarg ::= ON UPDATE refact */
+ case 104: /* refarg ::= MATCH ID_FK_MATCH */ yytestcase(yyruleno==104);
+{yygotominor.yy205 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::UPDATE, *(yymsp[0].minor.yy106)); delete yymsp[0].minor.yy106;}
break;
- case 101: /* refact ::= SET NULL */
-{yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_NULL);}
+ case 105: /* refact ::= SET NULL */
+{yygotominor.yy106 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_NULL);}
break;
- case 102: /* refact ::= SET DEFAULT */
-{yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_DEFAULT);}
+ case 106: /* refact ::= SET DEFAULT */
+{yygotominor.yy106 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_DEFAULT);}
break;
- case 103: /* refact ::= CASCADE */
-{yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::CASCADE);}
+ case 107: /* refact ::= CASCADE */
+{yygotominor.yy106 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::CASCADE);}
break;
- case 104: /* refact ::= RESTRICT */
-{yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::RESTRICT);}
+ case 108: /* refact ::= RESTRICT */
+{yygotominor.yy106 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::RESTRICT);}
break;
- case 105: /* refact ::= NO ACTION */
-{yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::NO_ACTION);}
+ case 109: /* refact ::= NO ACTION */
+{yygotominor.yy106 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::NO_ACTION);}
break;
- case 106: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+ case 110: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
{
- yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::NOT_DEFERRABLE, *(yymsp[0].minor.yy312));
- delete yymsp[0].minor.yy312;
+ yygotominor.yy53 = new ParserDeferSubClause(SqliteDeferrable::NOT_DEFERRABLE, *(yymsp[0].minor.yy612));
+ delete yymsp[0].minor.yy612;
}
break;
- case 107: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
+ case 111: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
{
- yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::DEFERRABLE, *(yymsp[0].minor.yy312));
- delete yymsp[0].minor.yy312;
+ yygotominor.yy53 = new ParserDeferSubClause(SqliteDeferrable::DEFERRABLE, *(yymsp[0].minor.yy612));
+ delete yymsp[0].minor.yy612;
}
break;
- case 108: /* init_deferred_pred_opt ::= */
-{yygotominor.yy312 = new SqliteInitially(SqliteInitially::null);}
+ case 112: /* init_deferred_pred_opt ::= */
+{yygotominor.yy612 = new SqliteInitially(SqliteInitially::null);}
break;
- case 109: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
-{yygotominor.yy312 = new SqliteInitially(SqliteInitially::DEFERRED);}
+ case 113: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
+{yygotominor.yy612 = new SqliteInitially(SqliteInitially::DEFERRED);}
break;
- case 110: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yygotominor.yy312 = new SqliteInitially(SqliteInitially::IMMEDIATE);}
+ case 114: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
+{yygotominor.yy612 = new SqliteInitially(SqliteInitially::IMMEDIATE);}
break;
- case 111: /* conslist_opt ::= */
-{yygotominor.yy493 = new ParserCreateTableConstraintList();}
+ case 115: /* conslist_opt ::= */
+{yygotominor.yy115 = new ParserCreateTableConstraintList();}
break;
- case 112: /* conslist_opt ::= COMMA conslist */
-{yygotominor.yy493 = yymsp[0].minor.yy493;}
+ case 116: /* conslist_opt ::= COMMA conslist */
+{yygotominor.yy115 = yymsp[0].minor.yy115;}
break;
- case 113: /* conslist ::= conslist tconscomma tcons */
+ case 117: /* conslist ::= conslist tconscomma tcons */
{
- yymsp[0].minor.yy246->afterComma = *(yymsp[-1].minor.yy611);
- yymsp[-2].minor.yy493->append(yymsp[0].minor.yy246);
- yygotominor.yy493 = yymsp[-2].minor.yy493;
- delete yymsp[-1].minor.yy611;
+ yymsp[0].minor.yy400->afterComma = *(yymsp[-1].minor.yy225);
+ yymsp[-2].minor.yy115->append(yymsp[0].minor.yy400);
+ yygotominor.yy115 = yymsp[-2].minor.yy115;
+ delete yymsp[-1].minor.yy225;
DONT_INHERIT_TOKENS("conslist");
}
break;
- case 114: /* conslist ::= tcons */
+ case 118: /* conslist ::= tcons */
{
- yygotominor.yy493 = new ParserCreateTableConstraintList();
- yygotominor.yy493->append(yymsp[0].minor.yy246);
+ yygotominor.yy115 = new ParserCreateTableConstraintList();
+ yygotominor.yy115->append(yymsp[0].minor.yy400);
}
break;
- case 117: /* tcons ::= CONSTRAINT nm */
+ case 121: /* tcons ::= CONSTRAINT nm */
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initNameOnly(*(yymsp[0].minor.yy319));
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initNameOnly(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy246;
+ objectForTokens = yygotominor.yy400;
}
break;
- case 118: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
+ case 122: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initPk(*(yymsp[-3].minor.yy223), *(yymsp[-2].minor.yy611), *(yymsp[0].minor.yy418));
- delete yymsp[-2].minor.yy611;
- delete yymsp[0].minor.yy418;
- delete yymsp[-3].minor.yy223;
- objectForTokens = yygotominor.yy246;
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initPk(*(yymsp[-3].minor.yy627), *(yymsp[-2].minor.yy225), *(yymsp[0].minor.yy136));
+ delete yymsp[-2].minor.yy225;
+ delete yymsp[0].minor.yy136;
+ delete yymsp[-3].minor.yy627;
+ objectForTokens = yygotominor.yy400;
}
break;
- case 119: /* tcons ::= UNIQUE LP idxlist RP onconf */
+ case 123: /* tcons ::= UNIQUE LP idxlist RP onconf */
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initUnique(*(yymsp[-2].minor.yy223), *(yymsp[0].minor.yy418));
- delete yymsp[0].minor.yy418;
- delete yymsp[-2].minor.yy223;
- objectForTokens = yygotominor.yy246;
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initUnique(*(yymsp[-2].minor.yy627), *(yymsp[0].minor.yy136));
+ delete yymsp[0].minor.yy136;
+ delete yymsp[-2].minor.yy627;
+ objectForTokens = yygotominor.yy400;
}
break;
- case 120: /* tcons ::= CHECK LP expr RP onconf */
+ case 124: /* tcons ::= CHECK LP expr RP onconf */
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initCheck(yymsp[-2].minor.yy512, *(yymsp[0].minor.yy418));
- objectForTokens = yygotominor.yy246;
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initCheck(yymsp[-2].minor.yy186, *(yymsp[0].minor.yy136));
+ objectForTokens = yygotominor.yy400;
}
break;
- case 121: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
- case 122: /* tcons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==122);
- case 123: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB */ yytestcase(yyruleno==123);
+ case 125: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
+ case 126: /* tcons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==126);
+ case 127: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB */ yytestcase(yyruleno==127);
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initFk(
- *(yymsp[-6].minor.yy223),
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initFk(
+ *(yymsp[-6].minor.yy627),
*(yymsp[-3].minor.yy319),
- *(yymsp[-2].minor.yy223),
- *(yymsp[-1].minor.yy584),
- yymsp[0].minor.yy9->initially,
- yymsp[0].minor.yy9->deferrable
+ *(yymsp[-2].minor.yy627),
+ *(yymsp[-1].minor.yy156),
+ yymsp[0].minor.yy53->initially,
+ yymsp[0].minor.yy53->deferrable
);
delete yymsp[-3].minor.yy319;
- delete yymsp[-1].minor.yy584;
- delete yymsp[0].minor.yy9;
- delete yymsp[-2].minor.yy223;
- delete yymsp[-6].minor.yy223;
- objectForTokens = yygotominor.yy246;
+ delete yymsp[-1].minor.yy156;
+ delete yymsp[0].minor.yy53;
+ delete yymsp[-2].minor.yy627;
+ delete yymsp[-6].minor.yy627;
+ objectForTokens = yygotominor.yy400;
}
break;
- case 124: /* tcons ::= CHECK LP RP onconf */
+ case 128: /* tcons ::= CHECK LP RP onconf */
{
- yygotominor.yy246 = new SqliteCreateTable::Constraint();
- yygotominor.yy246->initCheck();
- objectForTokens = yygotominor.yy246;
+ yygotominor.yy400 = new SqliteCreateTable::Constraint();
+ yygotominor.yy400->initCheck();
+ objectForTokens = yygotominor.yy400;
parserContext->minorErrorAfterLastToken("Syntax error");
- yy_destructor(yypParser,223,&yymsp[0].minor);
+ yy_destructor(yypParser,228,&yymsp[0].minor);
}
break;
- case 125: /* defer_subclause_opt ::= */
-{yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::null, SqliteInitially::null);}
- break;
- case 126: /* defer_subclause_opt ::= defer_subclause */
-{yygotominor.yy9 = yymsp[0].minor.yy9;}
- break;
- case 127: /* onconf ::= */
- case 129: /* orconf ::= */ yytestcase(yyruleno==129);
-{yygotominor.yy418 = new SqliteConflictAlgo(SqliteConflictAlgo::null);}
- break;
- case 128: /* onconf ::= ON CONFLICT resolvetype */
- case 130: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==130);
-{yygotominor.yy418 = yymsp[0].minor.yy418;}
- break;
- case 131: /* resolvetype ::= raisetype */
- case 132: /* resolvetype ::= IGNORE */ yytestcase(yyruleno==132);
- case 133: /* resolvetype ::= REPLACE */ yytestcase(yyruleno==133);
-{yygotominor.yy418 = new SqliteConflictAlgo(sqliteConflictAlgo(yymsp[0].minor.yy0->value));}
- break;
- case 134: /* cmd ::= DROP TABLE ifexists fullname */
-{
- yygotominor.yy363 = new SqliteDropTable(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
- delete yymsp[-1].minor.yy611;
- delete yymsp[0].minor.yy440;
- objectForTokens = yygotominor.yy363;
- }
- break;
- case 135: /* cmd ::= DROP TABLE ifexists nm DOT ID_TAB */
- case 136: /* cmd ::= DROP TABLE ifexists ID_DB|ID_TAB */ yytestcase(yyruleno==136);
- case 143: /* cmd ::= DROP VIEW ifexists nm DOT ID_VIEW */ yytestcase(yyruleno==143);
- case 144: /* cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW */ yytestcase(yyruleno==144);
- case 187: /* singlesrc ::= nm DOT ID_TAB */ yytestcase(yyruleno==187);
- case 188: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==188);
- case 189: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==189);
- case 190: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==190);
- case 331: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==331);
- case 332: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==332);
- case 345: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==345);
- case 346: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==346);
- case 356: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==356);
- case 357: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==357);
- case 395: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==395);
- case 396: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==396);
- case 406: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==406);
- case 407: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==407);
- case 410: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==410);
- case 411: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==411);
- case 415: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==415);
- case 416: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==416);
- case 422: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==422);
- case 423: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==423);
-{ yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 129: /* defer_subclause_opt ::= */
+{yygotominor.yy53 = new ParserDeferSubClause(SqliteDeferrable::null, SqliteInitially::null);}
+ break;
+ case 130: /* defer_subclause_opt ::= defer_subclause */
+{yygotominor.yy53 = yymsp[0].minor.yy53;}
+ break;
+ case 131: /* onconf ::= */
+ case 133: /* orconf ::= */ yytestcase(yyruleno==133);
+{yygotominor.yy136 = new SqliteConflictAlgo(SqliteConflictAlgo::null);}
+ break;
+ case 132: /* onconf ::= ON CONFLICT resolvetype */
+ case 134: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==134);
+{yygotominor.yy136 = yymsp[0].minor.yy136;}
+ break;
+ case 135: /* resolvetype ::= raisetype */
+ case 136: /* resolvetype ::= IGNORE */ yytestcase(yyruleno==136);
+ case 137: /* resolvetype ::= REPLACE */ yytestcase(yyruleno==137);
+{yygotominor.yy136 = new SqliteConflictAlgo(sqliteConflictAlgo(yymsp[0].minor.yy0->value));}
+ break;
+ case 138: /* cmd ::= DROP TABLE ifexists fullname */
+{
+ yygotominor.yy41 = new SqliteDropTable(*(yymsp[-1].minor.yy225), yymsp[0].minor.yy396->name1, yymsp[0].minor.yy396->name2);
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[0].minor.yy396;
+ objectForTokens = yygotominor.yy41;
+ }
+ break;
+ case 139: /* cmd ::= DROP TABLE ifexists nm DOT ID_TAB */
+ case 140: /* cmd ::= DROP TABLE ifexists ID_DB|ID_TAB */ yytestcase(yyruleno==140);
+ case 147: /* cmd ::= DROP VIEW ifexists nm DOT ID_VIEW */ yytestcase(yyruleno==147);
+ case 148: /* cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW */ yytestcase(yyruleno==148);
+ case 191: /* singlesrc ::= nm DOT ID_TAB */ yytestcase(yyruleno==191);
+ case 192: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==192);
+ case 193: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==193);
+ case 194: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==194);
+ case 342: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==342);
+ case 343: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==343);
+ case 356: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==356);
+ case 357: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==357);
+ case 367: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==367);
+ case 368: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==368);
+ case 406: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==406);
+ case 407: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==407);
+ case 417: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==417);
+ case 418: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==418);
+ case 421: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==421);
+ case 422: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==422);
+ case 427: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==427);
+ case 428: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==428);
+ case 434: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==434);
+ case 435: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==435);
+{ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
- case 139: /* cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select */
+ case 143: /* cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select */
{
- yygotominor.yy363 = new SqliteCreateView(*(yymsp[-6].minor.yy386), *(yymsp[-4].minor.yy611), yymsp[-3].minor.yy440->name1, yymsp[-3].minor.yy440->name2, yymsp[0].minor.yy313, *(yymsp[-2].minor.yy223));
- delete yymsp[-6].minor.yy386;
- delete yymsp[-4].minor.yy611;
- delete yymsp[-3].minor.yy440;
- delete yymsp[-2].minor.yy223;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteCreateView(*(yymsp[-6].minor.yy130), *(yymsp[-4].minor.yy225), yymsp[-3].minor.yy396->name1, yymsp[-3].minor.yy396->name2, yymsp[0].minor.yy297, *(yymsp[-2].minor.yy627));
+ delete yymsp[-6].minor.yy130;
+ delete yymsp[-4].minor.yy225;
+ delete yymsp[-3].minor.yy396;
+ delete yymsp[-2].minor.yy627;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 142: /* cmd ::= DROP VIEW ifexists fullname */
+ case 146: /* cmd ::= DROP VIEW ifexists fullname */
{
- yygotominor.yy363 = new SqliteDropView(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
- delete yymsp[-1].minor.yy611;
- delete yymsp[0].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteDropView(*(yymsp[-1].minor.yy225), yymsp[0].minor.yy396->name1, yymsp[0].minor.yy396->name2);
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[0].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 145: /* cmd ::= select_stmt */
- case 226: /* cmd ::= delete_stmt */ yytestcase(yyruleno==226);
- case 235: /* cmd ::= update_stmt */ yytestcase(yyruleno==235);
- case 256: /* cmd ::= insert_stmt */ yytestcase(yyruleno==256);
+ case 149: /* cmd ::= select_stmt */
+ case 230: /* cmd ::= delete_stmt */ yytestcase(yyruleno==230);
+ case 241: /* cmd ::= update_stmt */ yytestcase(yyruleno==241);
+ case 262: /* cmd ::= insert_stmt */ yytestcase(yyruleno==262);
{
- yygotominor.yy363 = yymsp[0].minor.yy363;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = yymsp[0].minor.yy41;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 146: /* select_stmt ::= select */
+ case 150: /* select_stmt ::= select */
{
- yygotominor.yy363 = yymsp[0].minor.yy313;
+ yygotominor.yy41 = yymsp[0].minor.yy297;
// since it's used in trigger:
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 147: /* select ::= with selectnowith */
+ case 151: /* select ::= with selectnowith */
{
- yygotominor.yy313 = yymsp[0].minor.yy313;
- yymsp[0].minor.yy313->setWith(yymsp[-1].minor.yy1);
- objectForTokens = yygotominor.yy313;
+ yygotominor.yy297 = yymsp[0].minor.yy297;
+ yymsp[0].minor.yy297->setWith(yymsp[-1].minor.yy161);
+ objectForTokens = yygotominor.yy297;
}
break;
- case 148: /* selectnowith ::= oneselect */
+ case 152: /* selectnowith ::= oneselect */
{
- yygotominor.yy313 = SqliteSelect::append(yymsp[0].minor.yy470);
- objectForTokens = yygotominor.yy313;
+ yygotominor.yy297 = SqliteSelect::append(yymsp[0].minor.yy378);
+ objectForTokens = yygotominor.yy297;
}
break;
- case 149: /* selectnowith ::= selectnowith multiselect_op oneselect */
+ case 153: /* selectnowith ::= selectnowith multiselect_op oneselect */
{
- yygotominor.yy313 = SqliteSelect::append(yymsp[-2].minor.yy313, *(yymsp[-1].minor.yy382), yymsp[0].minor.yy470);
- delete yymsp[-1].minor.yy382;
- objectForTokens = yygotominor.yy313;
+ yygotominor.yy297 = SqliteSelect::append(yymsp[-2].minor.yy297, *(yymsp[-1].minor.yy142), yymsp[0].minor.yy378);
+ delete yymsp[-1].minor.yy142;
+ objectForTokens = yygotominor.yy297;
}
break;
- case 150: /* selectnowith ::= values */
+ case 154: /* selectnowith ::= values */
{
- yygotominor.yy313 = SqliteSelect::append(*(yymsp[0].minor.yy486));
- delete yymsp[0].minor.yy486;
- objectForTokens = yygotominor.yy313;
+ yygotominor.yy297 = SqliteSelect::append(*(yymsp[0].minor.yy522));
+ delete yymsp[0].minor.yy522;
+ objectForTokens = yygotominor.yy297;
}
break;
- case 151: /* selectnowith ::= selectnowith COMMA values */
+ case 155: /* selectnowith ::= selectnowith COMMA values */
{
- yygotominor.yy313 = SqliteSelect::append(yymsp[-2].minor.yy313, SqliteSelect::CompoundOperator::UNION_ALL, *(yymsp[0].minor.yy486));
- delete yymsp[0].minor.yy486;
- objectForTokens = yygotominor.yy313;
+ yygotominor.yy297 = SqliteSelect::append(yymsp[-2].minor.yy297, SqliteSelect::CompoundOperator::UNION_ALL, *(yymsp[0].minor.yy522));
+ delete yymsp[0].minor.yy522;
+ objectForTokens = yygotominor.yy297;
}
break;
- case 152: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+ case 156: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
{
- yygotominor.yy470 = new SqliteSelect::Core(
- *(yymsp[-7].minor.yy386),
- *(yymsp[-6].minor.yy53),
- yymsp[-5].minor.yy31,
- yymsp[-4].minor.yy512,
- *(yymsp[-3].minor.yy71),
- yymsp[-2].minor.yy512,
- *(yymsp[-1].minor.yy403),
- yymsp[0].minor.yy4
+ yygotominor.yy378 = new SqliteSelect::Core(
+ *(yymsp[-7].minor.yy130),
+ *(yymsp[-6].minor.yy27),
+ yymsp[-5].minor.yy553,
+ yymsp[-4].minor.yy186,
+ *(yymsp[-3].minor.yy615),
+ yymsp[-2].minor.yy186,
+ *(yymsp[-1].minor.yy226),
+ yymsp[0].minor.yy360
);
- delete yymsp[-6].minor.yy53;
- delete yymsp[-7].minor.yy386;
- delete yymsp[-3].minor.yy71;
- delete yymsp[-1].minor.yy403;
- objectForTokens = yygotominor.yy470;
- }
- break;
- case 153: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
-{
- yygotominor.yy470 = new SqliteSelect::Core(
- *(yymsp[-8].minor.yy386),
- *(yymsp[-7].minor.yy53),
- yymsp[-6].minor.yy31,
- yymsp[-5].minor.yy512,
- *(yymsp[-4].minor.yy71),
- yymsp[-3].minor.yy512,
- *(yymsp[-2].minor.yy299),
- *(yymsp[-1].minor.yy403),
- yymsp[0].minor.yy4
+ delete yymsp[-6].minor.yy27;
+ delete yymsp[-7].minor.yy130;
+ delete yymsp[-3].minor.yy615;
+ delete yymsp[-1].minor.yy226;
+ objectForTokens = yygotominor.yy378;
+ }
+ break;
+ case 157: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
+{
+ yygotominor.yy378 = new SqliteSelect::Core(
+ *(yymsp[-8].minor.yy130),
+ *(yymsp[-7].minor.yy27),
+ yymsp[-6].minor.yy553,
+ yymsp[-5].minor.yy186,
+ *(yymsp[-4].minor.yy615),
+ yymsp[-3].minor.yy186,
+ *(yymsp[-2].minor.yy525),
+ *(yymsp[-1].minor.yy226),
+ yymsp[0].minor.yy360
);
- delete yymsp[-7].minor.yy53;
- delete yymsp[-8].minor.yy386;
- delete yymsp[-4].minor.yy71;
- delete yymsp[-1].minor.yy403;
- delete yymsp[-2].minor.yy299;
- objectForTokens = yygotominor.yy470;
+ delete yymsp[-7].minor.yy27;
+ delete yymsp[-8].minor.yy130;
+ delete yymsp[-4].minor.yy615;
+ delete yymsp[-1].minor.yy226;
+ delete yymsp[-2].minor.yy525;
+ objectForTokens = yygotominor.yy378;
}
break;
- case 154: /* values ::= VALUES LP nexprlist RP */
+ case 158: /* values ::= VALUES LP nexprlist RP */
{
- yygotominor.yy486 = new ParserExprNestedList();
- yygotominor.yy486->append(*(yymsp[-1].minor.yy71));
- delete yymsp[-1].minor.yy71;
+ yygotominor.yy522 = new ParserExprNestedList();
+ yygotominor.yy522->append(*(yymsp[-1].minor.yy615));
+ delete yymsp[-1].minor.yy615;
}
break;
- case 155: /* values ::= values COMMA LP exprlist RP */
+ case 159: /* values ::= values COMMA LP exprlist RP */
{
- yymsp[-4].minor.yy486->append(*(yymsp[-1].minor.yy71));
- yygotominor.yy486 = yymsp[-4].minor.yy486;
- delete yymsp[-1].minor.yy71;
+ yymsp[-4].minor.yy522->append(*(yymsp[-1].minor.yy615));
+ yygotominor.yy522 = yymsp[-4].minor.yy522;
+ delete yymsp[-1].minor.yy615;
DONT_INHERIT_TOKENS("values");
}
break;
- case 156: /* multiselect_op ::= UNION */
-{yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION);}
+ case 160: /* multiselect_op ::= UNION */
+{yygotominor.yy142 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION);}
break;
- case 157: /* multiselect_op ::= UNION ALL */
-{yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION_ALL);}
+ case 161: /* multiselect_op ::= UNION ALL */
+{yygotominor.yy142 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION_ALL);}
break;
- case 158: /* multiselect_op ::= EXCEPT */
-{yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::EXCEPT);}
+ case 162: /* multiselect_op ::= EXCEPT */
+{yygotominor.yy142 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::EXCEPT);}
break;
- case 159: /* multiselect_op ::= INTERSECT */
-{yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::INTERSECT);}
+ case 163: /* multiselect_op ::= INTERSECT */
+{yygotominor.yy142 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::INTERSECT);}
break;
- case 160: /* distinct ::= DISTINCT */
-{yygotominor.yy386 = new int(1);}
+ case 164: /* distinct ::= DISTINCT */
+{yygotominor.yy130 = new int(1);}
break;
- case 161: /* distinct ::= ALL */
-{yygotominor.yy386 = new int(2);}
+ case 165: /* distinct ::= ALL */
+{yygotominor.yy130 = new int(2);}
break;
- case 163: /* sclp ::= selcollist COMMA */
-{yygotominor.yy53 = yymsp[-1].minor.yy53;}
+ case 167: /* sclp ::= selcollist COMMA */
+{yygotominor.yy27 = yymsp[-1].minor.yy27;}
break;
- case 164: /* sclp ::= */
-{yygotominor.yy53 = new ParserResultColumnList();}
+ case 168: /* sclp ::= */
+ case 239: /* returning ::= */ yytestcase(yyruleno==239);
+{yygotominor.yy27 = new ParserResultColumnList();}
break;
- case 165: /* selcollist ::= sclp expr as */
+ case 169: /* selcollist ::= sclp expr as */
{
SqliteSelect::Core::ResultColumn* obj =
new SqliteSelect::Core::ResultColumn(
- yymsp[-1].minor.yy512,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
+ yymsp[-1].minor.yy186,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->asKw : false,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->name : QString()
);
- yymsp[-2].minor.yy53->append(obj);
- yygotominor.yy53 = yymsp[-2].minor.yy53;
- delete yymsp[0].minor.yy200;
+ yymsp[-2].minor.yy27->append(obj);
+ yygotominor.yy27 = yymsp[-2].minor.yy27;
+ delete yymsp[0].minor.yy628;
objectForTokens = obj;
DONT_INHERIT_TOKENS("sclp");
}
break;
- case 166: /* selcollist ::= sclp STAR */
+ case 170: /* selcollist ::= sclp STAR */
{
SqliteSelect::Core::ResultColumn* obj =
new SqliteSelect::Core::ResultColumn(true);
- yymsp[-1].minor.yy53->append(obj);
- yygotominor.yy53 = yymsp[-1].minor.yy53;
+ yymsp[-1].minor.yy27->append(obj);
+ yygotominor.yy27 = yymsp[-1].minor.yy27;
objectForTokens = obj;
DONT_INHERIT_TOKENS("sclp");
}
break;
- case 167: /* selcollist ::= sclp tnm DOT STAR */
+ case 171: /* selcollist ::= sclp tnm DOT STAR */
{
SqliteSelect::Core::ResultColumn* obj =
new SqliteSelect::Core::ResultColumn(
true,
- yymsp[-2].minor.yy590->toName()
+ yymsp[-2].minor.yy380->toName()
);
- if (!yymsp[-2].minor.yy590->isName())
+ if (!yymsp[-2].minor.yy380->isName())
parserContext->errorAtToken("Syntax error <expected name, not literal value>", -3);
- yymsp[-3].minor.yy53->append(obj);
- yygotominor.yy53 = yymsp[-3].minor.yy53;
- delete yymsp[-2].minor.yy590;
+ yymsp[-3].minor.yy27->append(obj);
+ yygotominor.yy27 = yymsp[-3].minor.yy27;
+ delete yymsp[-2].minor.yy380;
objectForTokens = obj;
DONT_INHERIT_TOKENS("sclp");
}
break;
- case 168: /* selcollist ::= sclp */
- case 169: /* selcollist ::= sclp ID_TAB DOT STAR */ yytestcase(yyruleno==169);
+ case 172: /* selcollist ::= sclp */
+ case 173: /* selcollist ::= sclp ID_TAB DOT STAR */ yytestcase(yyruleno==173);
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy53 = yymsp[0].minor.yy53;
+ yygotominor.yy27 = yymsp[0].minor.yy27;
}
break;
- case 170: /* as ::= AS nm */
+ case 174: /* as ::= AS nm */
{
- yygotominor.yy200 = new ParserStubAlias(*(yymsp[0].minor.yy319), true);
+ yygotominor.yy628 = new ParserStubAlias(*(yymsp[0].minor.yy319), true);
delete yymsp[0].minor.yy319;
}
break;
- case 171: /* as ::= ids */
- case 172: /* as ::= AS ID_ALIAS */ yytestcase(yyruleno==172);
- case 173: /* as ::= ID_ALIAS */ yytestcase(yyruleno==173);
+ case 175: /* as ::= ids */
+ case 176: /* as ::= AS ID_ALIAS */ yytestcase(yyruleno==176);
+ case 177: /* as ::= ID_ALIAS */ yytestcase(yyruleno==177);
{
- yygotominor.yy200 = new ParserStubAlias(*(yymsp[0].minor.yy319), false);
+ yygotominor.yy628 = new ParserStubAlias(*(yymsp[0].minor.yy319), false);
delete yymsp[0].minor.yy319;
}
break;
- case 174: /* as ::= */
-{yygotominor.yy200 = nullptr;}
+ case 178: /* as ::= */
+{yygotominor.yy628 = nullptr;}
break;
- case 175: /* from ::= */
-{yygotominor.yy31 = nullptr;}
+ case 179: /* from ::= */
+{yygotominor.yy553 = nullptr;}
break;
- case 176: /* from ::= FROM joinsrc */
-{yygotominor.yy31 = yymsp[0].minor.yy31;}
+ case 180: /* from ::= FROM joinsrc */
+{yygotominor.yy553 = yymsp[0].minor.yy553;}
break;
- case 177: /* joinsrc ::= singlesrc seltablist */
+ case 181: /* joinsrc ::= singlesrc seltablist */
{
- yygotominor.yy31 = new SqliteSelect::Core::JoinSource(
- yymsp[-1].minor.yy441,
- *(yymsp[0].minor.yy451)
+ yygotominor.yy553 = new SqliteSelect::Core::JoinSource(
+ yymsp[-1].minor.yy595,
+ *(yymsp[0].minor.yy107)
);
- delete yymsp[0].minor.yy451;
- objectForTokens = yygotominor.yy31;
+ delete yymsp[0].minor.yy107;
+ objectForTokens = yygotominor.yy553;
}
break;
- case 178: /* joinsrc ::= */
+ case 182: /* joinsrc ::= */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy31 = new SqliteSelect::Core::JoinSource();
- objectForTokens = yygotominor.yy31;
+ yygotominor.yy553 = new SqliteSelect::Core::JoinSource();
+ objectForTokens = yygotominor.yy553;
}
break;
- case 179: /* seltablist ::= seltablist joinop singlesrc joinconstr_opt */
+ case 183: /* seltablist ::= seltablist joinop singlesrc joinconstr_opt */
{
SqliteSelect::Core::JoinSourceOther* src =
- new SqliteSelect::Core::JoinSourceOther(yymsp[-2].minor.yy221, yymsp[-1].minor.yy441, yymsp[0].minor.yy295);
+ new SqliteSelect::Core::JoinSourceOther(yymsp[-2].minor.yy449, yymsp[-1].minor.yy595, yymsp[0].minor.yy215);
- yymsp[-3].minor.yy451->append(src);
- yygotominor.yy451 = yymsp[-3].minor.yy451;
+ yymsp[-3].minor.yy107->append(src);
+ yygotominor.yy107 = yymsp[-3].minor.yy107;
objectForTokens = src;
DONT_INHERIT_TOKENS("seltablist");
}
break;
- case 180: /* seltablist ::= */
+ case 184: /* seltablist ::= */
{
- yygotominor.yy451 = new ParserOtherSourceList();
+ yygotominor.yy107 = new ParserOtherSourceList();
}
break;
- case 181: /* singlesrc ::= nm dbnm as indexed_opt */
+ case 185: /* singlesrc ::= nm dbnm as indexed_opt */
{
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource(
*(yymsp[-3].minor.yy319),
*(yymsp[-2].minor.yy319),
- yymsp[-1].minor.yy200 ? yymsp[-1].minor.yy200->asKw : false,
- yymsp[-1].minor.yy200 ? yymsp[-1].minor.yy200->name : QString(),
- yymsp[0].minor.yy592 ? yymsp[0].minor.yy592->notIndexedKw : false,
- yymsp[0].minor.yy592 ? yymsp[0].minor.yy592->indexedBy : QString()
+ yymsp[-1].minor.yy628 ? yymsp[-1].minor.yy628->asKw : false,
+ yymsp[-1].minor.yy628 ? yymsp[-1].minor.yy628->name : QString(),
+ yymsp[0].minor.yy300 ? yymsp[0].minor.yy300->notIndexedKw : false,
+ yymsp[0].minor.yy300 ? yymsp[0].minor.yy300->indexedBy : QString()
);
delete yymsp[-3].minor.yy319;
delete yymsp[-2].minor.yy319;
- delete yymsp[-1].minor.yy200;
- if (yymsp[0].minor.yy592)
- delete yymsp[0].minor.yy592;
- objectForTokens = yygotominor.yy441;
+ delete yymsp[-1].minor.yy628;
+ if (yymsp[0].minor.yy300)
+ delete yymsp[0].minor.yy300;
+ objectForTokens = yygotominor.yy595;
}
break;
- case 182: /* singlesrc ::= LP select RP as */
+ case 186: /* singlesrc ::= LP select RP as */
{
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
- yymsp[-2].minor.yy313,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource(
+ yymsp[-2].minor.yy297,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->asKw : false,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->name : QString()
);
- delete yymsp[0].minor.yy200;
- objectForTokens = yygotominor.yy441;
+ delete yymsp[0].minor.yy628;
+ objectForTokens = yygotominor.yy595;
}
break;
- case 183: /* singlesrc ::= LP joinsrc RP as */
+ case 187: /* singlesrc ::= LP joinsrc RP as */
{
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
- yymsp[-2].minor.yy31,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource(
+ yymsp[-2].minor.yy553,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->asKw : false,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->name : QString()
);
- delete yymsp[0].minor.yy200;
- objectForTokens = yygotominor.yy441;
+ delete yymsp[0].minor.yy628;
+ objectForTokens = yygotominor.yy595;
}
break;
- case 184: /* singlesrc ::= nm dbnm LP exprlist RP as */
+ case 188: /* singlesrc ::= nm dbnm LP exprlist RP as */
{
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource(
*(yymsp[-5].minor.yy319),
*(yymsp[-4].minor.yy319),
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
- yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString(),
- *(yymsp[-2].minor.yy71)
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->asKw : false,
+ yymsp[0].minor.yy628 ? yymsp[0].minor.yy628->name : QString(),
+ *(yymsp[-2].minor.yy615)
);
delete yymsp[-5].minor.yy319;
delete yymsp[-4].minor.yy319;
- delete yymsp[0].minor.yy200;
- if (yymsp[-2].minor.yy71)
- delete yymsp[-2].minor.yy71;
+ delete yymsp[0].minor.yy628;
+ if (yymsp[-2].minor.yy615)
+ delete yymsp[-2].minor.yy615;
- objectForTokens = yygotominor.yy441;
+ objectForTokens = yygotominor.yy595;
}
break;
- case 185: /* singlesrc ::= */
+ case 189: /* singlesrc ::= */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource();
- objectForTokens = yygotominor.yy441;
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource();
+ objectForTokens = yygotominor.yy595;
}
break;
- case 186: /* singlesrc ::= nm DOT */
+ case 190: /* singlesrc ::= nm DOT */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy441 = new SqliteSelect::Core::SingleSource();
- yygotominor.yy441->database = *(yymsp[-1].minor.yy319);
+ yygotominor.yy595 = new SqliteSelect::Core::SingleSource();
+ yygotominor.yy595->database = *(yymsp[-1].minor.yy319);
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy441;
+ objectForTokens = yygotominor.yy595;
}
break;
- case 191: /* joinconstr_opt ::= ON expr */
+ case 195: /* joinconstr_opt ::= ON expr */
{
- yygotominor.yy295 = new SqliteSelect::Core::JoinConstraint(yymsp[0].minor.yy512);
- objectForTokens = yygotominor.yy295;
+ yygotominor.yy215 = new SqliteSelect::Core::JoinConstraint(yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy215;
}
break;
- case 192: /* joinconstr_opt ::= USING LP idlist RP */
+ case 196: /* joinconstr_opt ::= USING LP idlist RP */
{
- yygotominor.yy295 = new SqliteSelect::Core::JoinConstraint(*(yymsp[-1].minor.yy575));
- delete yymsp[-1].minor.yy575;
- objectForTokens = yygotominor.yy295;
+ yygotominor.yy215 = new SqliteSelect::Core::JoinConstraint(*(yymsp[-1].minor.yy173));
+ delete yymsp[-1].minor.yy173;
+ objectForTokens = yygotominor.yy215;
}
break;
- case 193: /* joinconstr_opt ::= */
-{yygotominor.yy295 = nullptr;}
+ case 197: /* joinconstr_opt ::= */
+{yygotominor.yy215 = nullptr;}
+ break;
+ case 198: /* dbnm ::= */
+ case 352: /* collate ::= */ yytestcase(yyruleno==352);
+ case 438: /* vtabarg ::= */ yytestcase(yyruleno==438);
+ case 442: /* anylist ::= */ yytestcase(yyruleno==442);
+{yygotominor.yy319 = new QString();}
break;
- case 196: /* fullname ::= nm dbnm */
+ case 200: /* fullname ::= nm dbnm */
{
- yygotominor.yy440 = new ParserFullName();
- yygotominor.yy440->name1 = *(yymsp[-1].minor.yy319);
- yygotominor.yy440->name2 = *(yymsp[0].minor.yy319);
+ yygotominor.yy396 = new ParserFullName();
+ yygotominor.yy396->name1 = *(yymsp[-1].minor.yy319);
+ yygotominor.yy396->name2 = *(yymsp[0].minor.yy319);
delete yymsp[-1].minor.yy319;
delete yymsp[0].minor.yy319;
}
break;
- case 197: /* joinop ::= COMMA */
+ case 201: /* joinop ::= COMMA */
{
- yygotominor.yy221 = new SqliteSelect::Core::JoinOp(true);
- objectForTokens = yygotominor.yy221;
+ yygotominor.yy449 = new SqliteSelect::Core::JoinOp(true);
+ objectForTokens = yygotominor.yy449;
}
break;
- case 198: /* joinop ::= JOIN */
+ case 202: /* joinop ::= JOIN */
{
- yygotominor.yy221 = new SqliteSelect::Core::JoinOp(false);
- objectForTokens = yygotominor.yy221;
+ yygotominor.yy449 = new SqliteSelect::Core::JoinOp(false);
+ objectForTokens = yygotominor.yy449;
}
break;
- case 199: /* joinop ::= JOIN_KW JOIN */
+ case 203: /* joinop ::= JOIN_KW JOIN */
{
- yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-1].minor.yy0->value);
- objectForTokens = yygotominor.yy221;
+ yygotominor.yy449 = new SqliteSelect::Core::JoinOp(yymsp[-1].minor.yy0->value);
+ objectForTokens = yygotominor.yy449;
}
break;
- case 200: /* joinop ::= JOIN_KW nm JOIN */
+ case 204: /* joinop ::= JOIN_KW nm JOIN */
{
- yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-2].minor.yy0->value, *(yymsp[-1].minor.yy319));
+ yygotominor.yy449 = new SqliteSelect::Core::JoinOp(yymsp[-2].minor.yy0->value, *(yymsp[-1].minor.yy319));
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy221;
+ objectForTokens = yygotominor.yy449;
}
break;
- case 201: /* joinop ::= JOIN_KW nm nm JOIN */
- case 202: /* joinop ::= ID_JOIN_OPTS */ yytestcase(yyruleno==202);
+ case 205: /* joinop ::= JOIN_KW nm nm JOIN */
+ case 206: /* joinop ::= ID_JOIN_OPTS */ yytestcase(yyruleno==206);
{
- yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-3].minor.yy0->value, *(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy319));
+ yygotominor.yy449 = new SqliteSelect::Core::JoinOp(yymsp[-3].minor.yy0->value, *(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy319));
delete yymsp[-2].minor.yy319;
- objectForTokens = yygotominor.yy221;
+ objectForTokens = yygotominor.yy449;
}
break;
- case 203: /* indexed_opt ::= */
-{yygotominor.yy592 = nullptr;}
+ case 207: /* indexed_opt ::= */
+{yygotominor.yy300 = nullptr;}
break;
- case 204: /* indexed_opt ::= INDEXED BY nm */
+ case 208: /* indexed_opt ::= INDEXED BY nm */
{
- yygotominor.yy592 = new ParserIndexedBy(*(yymsp[0].minor.yy319));
+ yygotominor.yy300 = new ParserIndexedBy(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
}
break;
- case 205: /* indexed_opt ::= NOT INDEXED */
- case 206: /* indexed_opt ::= INDEXED BY ID_IDX */ yytestcase(yyruleno==206);
-{yygotominor.yy592 = new ParserIndexedBy(true);}
+ case 209: /* indexed_opt ::= NOT INDEXED */
+ case 210: /* indexed_opt ::= INDEXED BY ID_IDX */ yytestcase(yyruleno==210);
+{yygotominor.yy300 = new ParserIndexedBy(true);}
break;
- case 207: /* orderby_opt ::= */
-{yygotominor.yy403 = new ParserOrderByList();}
+ case 211: /* orderby_opt ::= */
+{yygotominor.yy226 = new ParserOrderByList();}
break;
- case 208: /* orderby_opt ::= ORDER BY sortlist */
-{yygotominor.yy403 = yymsp[0].minor.yy403;}
+ case 212: /* orderby_opt ::= ORDER BY sortlist */
+{yygotominor.yy226 = yymsp[0].minor.yy226;}
break;
- case 209: /* sortlist ::= sortlist COMMA expr sortorder nulls */
+ case 213: /* sortlist ::= sortlist COMMA expr sortorder nulls */
{
- SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy512, *(yymsp[-1].minor.yy549), *(yymsp[0].minor.yy579));
- yymsp[-4].minor.yy403->append(obj);
- yygotominor.yy403 = yymsp[-4].minor.yy403;
- delete yymsp[-1].minor.yy549;
- delete yymsp[0].minor.yy579;
+ SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy186, *(yymsp[-1].minor.yy35), *(yymsp[0].minor.yy315));
+ yymsp[-4].minor.yy226->append(obj);
+ yygotominor.yy226 = yymsp[-4].minor.yy226;
+ delete yymsp[-1].minor.yy35;
+ delete yymsp[0].minor.yy315;
objectForTokens = obj;
DONT_INHERIT_TOKENS("sortlist");
}
break;
- case 210: /* sortlist ::= expr sortorder nulls */
+ case 214: /* sortlist ::= expr sortorder nulls */
{
- SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy512, *(yymsp[-1].minor.yy549), *(yymsp[0].minor.yy579));
- yygotominor.yy403 = new ParserOrderByList();
- yygotominor.yy403->append(obj);
- delete yymsp[-1].minor.yy549;
- delete yymsp[0].minor.yy579;
+ SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy186, *(yymsp[-1].minor.yy35), *(yymsp[0].minor.yy315));
+ yygotominor.yy226 = new ParserOrderByList();
+ yygotominor.yy226->append(obj);
+ delete yymsp[-1].minor.yy35;
+ delete yymsp[0].minor.yy315;
objectForTokens = obj;
}
break;
- case 211: /* sortorder ::= ASC */
-{yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::ASC);}
+ case 215: /* sortorder ::= ASC */
+{yygotominor.yy35 = new SqliteSortOrder(SqliteSortOrder::ASC);}
break;
- case 212: /* sortorder ::= DESC */
-{yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::DESC);}
+ case 216: /* sortorder ::= DESC */
+{yygotominor.yy35 = new SqliteSortOrder(SqliteSortOrder::DESC);}
break;
- case 213: /* sortorder ::= */
-{yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::null);}
+ case 217: /* sortorder ::= */
+{yygotominor.yy35 = new SqliteSortOrder(SqliteSortOrder::null);}
break;
- case 214: /* nulls ::= NULLS FIRST */
-{yygotominor.yy579 = new SqliteNulls(SqliteNulls::FIRST);}
+ case 218: /* nulls ::= NULLS FIRST */
+{yygotominor.yy315 = new SqliteNulls(SqliteNulls::FIRST);}
break;
- case 215: /* nulls ::= NULLS LAST */
-{yygotominor.yy579 = new SqliteNulls(SqliteNulls::LAST);}
+ case 219: /* nulls ::= NULLS LAST */
+{yygotominor.yy315 = new SqliteNulls(SqliteNulls::LAST);}
break;
- case 216: /* nulls ::= */
-{yygotominor.yy579 = new SqliteNulls(SqliteNulls::null);}
+ case 220: /* nulls ::= */
+{yygotominor.yy315 = new SqliteNulls(SqliteNulls::null);}
break;
- case 217: /* groupby_opt ::= */
- case 326: /* exprlist ::= */ yytestcase(yyruleno==326);
-{yygotominor.yy71 = new ParserExprList();}
+ case 221: /* groupby_opt ::= */
+ case 337: /* exprlist ::= */ yytestcase(yyruleno==337);
+{yygotominor.yy615 = new ParserExprList();}
break;
- case 218: /* groupby_opt ::= GROUP BY nexprlist */
- case 325: /* exprlist ::= nexprlist */ yytestcase(yyruleno==325);
-{yygotominor.yy71 = yymsp[0].minor.yy71;}
+ case 222: /* groupby_opt ::= GROUP BY nexprlist */
+ case 336: /* exprlist ::= nexprlist */ yytestcase(yyruleno==336);
+{yygotominor.yy615 = yymsp[0].minor.yy615;}
break;
- case 219: /* groupby_opt ::= GROUP BY */
+ case 223: /* groupby_opt ::= GROUP BY */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy71 = new ParserExprList();
+ yygotominor.yy615 = new ParserExprList();
}
break;
- case 220: /* having_opt ::= */
- case 232: /* where_opt ::= */ yytestcase(yyruleno==232);
- case 322: /* case_else ::= */ yytestcase(yyruleno==322);
- case 324: /* case_operand ::= */ yytestcase(yyruleno==324);
- case 350: /* vinto ::= */ yytestcase(yyruleno==350);
- case 384: /* when_clause ::= */ yytestcase(yyruleno==384);
- case 399: /* key_opt ::= */ yytestcase(yyruleno==399);
-{yygotominor.yy512 = nullptr;}
+ case 224: /* having_opt ::= */
+ case 236: /* where_opt ::= */ yytestcase(yyruleno==236);
+ case 333: /* case_else ::= */ yytestcase(yyruleno==333);
+ case 335: /* case_operand ::= */ yytestcase(yyruleno==335);
+ case 361: /* vinto ::= */ yytestcase(yyruleno==361);
+ case 395: /* when_clause ::= */ yytestcase(yyruleno==395);
+ case 410: /* key_opt ::= */ yytestcase(yyruleno==410);
+{yygotominor.yy186 = nullptr;}
break;
- case 221: /* having_opt ::= HAVING expr */
- case 233: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==233);
- case 315: /* expr ::= exprx */ yytestcase(yyruleno==315);
- case 321: /* case_else ::= ELSE expr */ yytestcase(yyruleno==321);
- case 323: /* case_operand ::= exprx */ yytestcase(yyruleno==323);
- case 349: /* vinto ::= INTO expr */ yytestcase(yyruleno==349);
- case 385: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==385);
- case 400: /* key_opt ::= KEY expr */ yytestcase(yyruleno==400);
-{yygotominor.yy512 = yymsp[0].minor.yy512;}
+ case 225: /* having_opt ::= HAVING expr */
+ case 237: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==237);
+ case 326: /* expr ::= exprx */ yytestcase(yyruleno==326);
+ case 332: /* case_else ::= ELSE expr */ yytestcase(yyruleno==332);
+ case 334: /* case_operand ::= exprx */ yytestcase(yyruleno==334);
+ case 360: /* vinto ::= INTO expr */ yytestcase(yyruleno==360);
+ case 396: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==396);
+ case 411: /* key_opt ::= KEY expr */ yytestcase(yyruleno==411);
+{yygotominor.yy186 = yymsp[0].minor.yy186;}
break;
- case 222: /* limit_opt ::= */
-{yygotominor.yy4 = nullptr;}
+ case 226: /* limit_opt ::= */
+{yygotominor.yy360 = nullptr;}
break;
- case 223: /* limit_opt ::= LIMIT expr */
+ case 227: /* limit_opt ::= LIMIT expr */
{
- yygotominor.yy4 = new SqliteLimit(yymsp[0].minor.yy512);
- objectForTokens = yygotominor.yy4;
+ yygotominor.yy360 = new SqliteLimit(yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy360;
}
break;
- case 224: /* limit_opt ::= LIMIT expr OFFSET expr */
+ case 228: /* limit_opt ::= LIMIT expr OFFSET expr */
{
- yygotominor.yy4 = new SqliteLimit(yymsp[-2].minor.yy512, yymsp[0].minor.yy512, true);
- objectForTokens = yygotominor.yy4;
+ yygotominor.yy360 = new SqliteLimit(yymsp[-2].minor.yy186, yymsp[0].minor.yy186, true);
+ objectForTokens = yygotominor.yy360;
}
break;
- case 225: /* limit_opt ::= LIMIT expr COMMA expr */
+ case 229: /* limit_opt ::= LIMIT expr COMMA expr */
{
- yygotominor.yy4 = new SqliteLimit(yymsp[-2].minor.yy512, yymsp[0].minor.yy512, false);
- objectForTokens = yygotominor.yy4;
+ yygotominor.yy360 = new SqliteLimit(yymsp[-2].minor.yy186, yymsp[0].minor.yy186, false);
+ objectForTokens = yygotominor.yy360;
}
break;
- case 227: /* delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt */
+ case 231: /* delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt returning */
{
- if (yymsp[-1].minor.yy592)
+ if (yymsp[-2].minor.yy300)
{
- if (!yymsp[-1].minor.yy592->indexedBy.isNull())
+ if (!yymsp[-2].minor.yy300->indexedBy.isNull())
{
- yygotominor.yy363 = new SqliteDelete(
- yymsp[-2].minor.yy440->name1,
- yymsp[-2].minor.yy440->name2,
- yymsp[-1].minor.yy592->indexedBy,
- yymsp[0].minor.yy512,
- yymsp[-5].minor.yy1
+ yygotominor.yy41 = new SqliteDelete(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
+ yymsp[-2].minor.yy300->indexedBy,
+ yymsp[-1].minor.yy186,
+ yymsp[-6].minor.yy161,
+ *(yymsp[0].minor.yy27)
);
}
else
{
- yygotominor.yy363 = new SqliteDelete(
- yymsp[-2].minor.yy440->name1,
- yymsp[-2].minor.yy440->name2,
- yymsp[-1].minor.yy592->notIndexedKw,
- yymsp[0].minor.yy512,
- yymsp[-5].minor.yy1
+ yygotominor.yy41 = new SqliteDelete(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
+ yymsp[-2].minor.yy300->notIndexedKw,
+ yymsp[-1].minor.yy186,
+ yymsp[-6].minor.yy161,
+ *(yymsp[0].minor.yy27)
);
}
- delete yymsp[-1].minor.yy592;
+ delete yymsp[-2].minor.yy300;
}
else
{
- yygotominor.yy363 = new SqliteDelete(
- yymsp[-2].minor.yy440->name1,
- yymsp[-2].minor.yy440->name2,
+ yygotominor.yy41 = new SqliteDelete(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
false,
- yymsp[0].minor.yy512,
- yymsp[-5].minor.yy1
+ yymsp[-1].minor.yy186,
+ yymsp[-6].minor.yy161,
+ *(yymsp[0].minor.yy27)
);
}
- delete yymsp[-2].minor.yy440;
+ delete yymsp[-3].minor.yy396;
+ delete yymsp[0].minor.yy27;
// since it's used in trigger:
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 228: /* delete_stmt ::= with DELETE FROM */
+ case 232: /* delete_stmt ::= with DELETE FROM */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteDelete* q = new SqliteDelete();
- q->with = yymsp[-2].minor.yy1;
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
+ q->with = yymsp[-2].minor.yy161;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 229: /* delete_stmt ::= with DELETE FROM nm DOT */
+ case 233: /* delete_stmt ::= with DELETE FROM nm DOT */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteDelete* q = new SqliteDelete();
- q->with = yymsp[-4].minor.yy1;
+ q->with = yymsp[-4].minor.yy161;
q->database = *(yymsp[-1].minor.yy319);
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
delete yymsp[-1].minor.yy319;
}
break;
- case 230: /* delete_stmt ::= with DELETE FROM nm DOT ID_TAB */
- case 239: /* update_stmt ::= with UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==239);
-{ yy_destructor(yypParser,244,&yymsp[-5].minor);
- yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 234: /* delete_stmt ::= with DELETE FROM nm DOT ID_TAB */
+ case 245: /* update_stmt ::= with UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==245);
+{ yy_destructor(yypParser,249,&yymsp[-5].minor);
+ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
- case 231: /* delete_stmt ::= with DELETE FROM ID_DB|ID_TAB */
- case 240: /* update_stmt ::= with UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==240);
-{ yy_destructor(yypParser,244,&yymsp[-3].minor);
+ case 235: /* delete_stmt ::= with DELETE FROM ID_DB|ID_TAB */
+ case 246: /* update_stmt ::= with UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==246);
+{ yy_destructor(yypParser,249,&yymsp[-3].minor);
}
break;
- case 234: /* where_opt ::= WHERE */
+ case 238: /* where_opt ::= WHERE */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy512 = new SqliteExpr();
+ yygotominor.yy186 = new SqliteExpr();
}
break;
- case 236: /* update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt */
+ case 240: /* returning ::= RETURNING selcollist */
+{yygotominor.yy27 = yymsp[0].minor.yy27;}
+ break;
+ case 242: /* update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt returning */
{
- yygotominor.yy363 = new SqliteUpdate(
- *(yymsp[-6].minor.yy418),
- yymsp[-5].minor.yy440->name1,
- yymsp[-5].minor.yy440->name2,
- yymsp[-4].minor.yy592 ? yymsp[-4].minor.yy592->notIndexedKw : false,
- yymsp[-4].minor.yy592 ? yymsp[-4].minor.yy592->indexedBy : QString(),
- *(yymsp[-2].minor.yy201),
- yymsp[-1].minor.yy31,
- yymsp[0].minor.yy512,
- yymsp[-8].minor.yy1
+ yygotominor.yy41 = new SqliteUpdate(
+ *(yymsp[-7].minor.yy136),
+ yymsp[-6].minor.yy396->name1,
+ yymsp[-6].minor.yy396->name2,
+ yymsp[-5].minor.yy300 ? yymsp[-5].minor.yy300->notIndexedKw : false,
+ yymsp[-5].minor.yy300 ? yymsp[-5].minor.yy300->indexedBy : QString(),
+ *(yymsp[-3].minor.yy621),
+ yymsp[-2].minor.yy553,
+ yymsp[-1].minor.yy186,
+ yymsp[-9].minor.yy161,
+ *(yymsp[0].minor.yy27)
);
- delete yymsp[-6].minor.yy418;
- delete yymsp[-5].minor.yy440;
- delete yymsp[-2].minor.yy201;
- if (yymsp[-4].minor.yy592)
- delete yymsp[-4].minor.yy592;
+ delete yymsp[-7].minor.yy136;
+ delete yymsp[-6].minor.yy396;
+ delete yymsp[-3].minor.yy621;
+ delete yymsp[0].minor.yy27;
+ if (yymsp[-5].minor.yy300)
+ delete yymsp[-5].minor.yy300;
// since it's used in trigger:
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 237: /* update_stmt ::= with UPDATE orconf */
+ case 243: /* update_stmt ::= with UPDATE orconf */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteUpdate* q = new SqliteUpdate();
- q->with = yymsp[-2].minor.yy1;
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
- delete yymsp[0].minor.yy418;
+ q->with = yymsp[-2].minor.yy161;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
+ delete yymsp[0].minor.yy136;
}
break;
- case 238: /* update_stmt ::= with UPDATE orconf nm DOT */
+ case 244: /* update_stmt ::= with UPDATE orconf nm DOT */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteUpdate* q = new SqliteUpdate();
- q->with = yymsp[-4].minor.yy1;
+ q->with = yymsp[-4].minor.yy161;
q->database = *(yymsp[-1].minor.yy319);
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
- delete yymsp[-2].minor.yy418;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
+ delete yymsp[-2].minor.yy136;
delete yymsp[-1].minor.yy319;
}
break;
- case 241: /* setlist ::= setlist COMMA nm EQ expr */
+ case 247: /* setlist ::= setlist COMMA nm EQ expr */
{
- yymsp[-4].minor.yy201->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy512));
- yygotominor.yy201 = yymsp[-4].minor.yy201;
+ yymsp[-4].minor.yy621->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy186));
+ yygotominor.yy621 = yymsp[-4].minor.yy621;
delete yymsp[-2].minor.yy319;
}
break;
- case 242: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
+ case 248: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
{
- yymsp[-6].minor.yy201->append(ParserSetValue(*(yymsp[-3].minor.yy575), yymsp[0].minor.yy512));
- yygotominor.yy201 = yymsp[-6].minor.yy201;
- delete yymsp[-3].minor.yy575;
+ yymsp[-6].minor.yy621->append(ParserSetValue(*(yymsp[-3].minor.yy173), yymsp[0].minor.yy186));
+ yygotominor.yy621 = yymsp[-6].minor.yy621;
+ delete yymsp[-3].minor.yy173;
}
break;
- case 243: /* setlist ::= nm EQ expr */
+ case 249: /* setlist ::= nm EQ expr */
{
- yygotominor.yy201 = new ParserSetValueList();
- yygotominor.yy201->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy512));
+ yygotominor.yy621 = new ParserSetValueList();
+ yygotominor.yy621->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy186));
delete yymsp[-2].minor.yy319;
}
break;
- case 244: /* setlist ::= LP idlist RP EQ expr */
+ case 250: /* setlist ::= LP idlist RP EQ expr */
{
- yygotominor.yy201 = new ParserSetValueList();
- yygotominor.yy201->append(ParserSetValue(*(yymsp[-3].minor.yy575), yymsp[0].minor.yy512));
- delete yymsp[-3].minor.yy575;
+ yygotominor.yy621 = new ParserSetValueList();
+ yygotominor.yy621->append(ParserSetValue(*(yymsp[-3].minor.yy173), yymsp[0].minor.yy186));
+ delete yymsp[-3].minor.yy173;
}
break;
- case 245: /* setlist ::= */
+ case 251: /* setlist ::= */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy201 = new ParserSetValueList();
+ yygotominor.yy621 = new ParserSetValueList();
}
break;
- case 246: /* setlist ::= setlist COMMA */
+ case 252: /* setlist ::= setlist COMMA */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy201 = yymsp[-1].minor.yy201;
+ yygotominor.yy621 = yymsp[-1].minor.yy621;
}
break;
- case 247: /* setlist ::= setlist COMMA ID_COL */
- case 248: /* setlist ::= ID_COL */ yytestcase(yyruleno==248);
-{ yy_destructor(yypParser,274,&yymsp[-2].minor);
+ case 253: /* setlist ::= setlist COMMA ID_COL */
+ case 254: /* setlist ::= ID_COL */ yytestcase(yyruleno==254);
+{ yy_destructor(yypParser,280,&yymsp[-2].minor);
}
break;
- case 249: /* idlist_opt ::= */
-{yygotominor.yy575 = new QStringList();}
+ case 255: /* idlist_opt ::= */
+{yygotominor.yy173 = new QStringList();}
break;
- case 250: /* idlist_opt ::= LP idlist RP */
-{yygotominor.yy575 = yymsp[-1].minor.yy575;}
+ case 256: /* idlist_opt ::= LP idlist RP */
+{yygotominor.yy173 = yymsp[-1].minor.yy173;}
break;
- case 251: /* idlist ::= idlist COMMA nm */
+ case 257: /* idlist ::= idlist COMMA nm */
{
- yygotominor.yy575 = yymsp[-2].minor.yy575;
- *(yygotominor.yy575) << *(yymsp[0].minor.yy319);
+ yygotominor.yy173 = yymsp[-2].minor.yy173;
+ *(yygotominor.yy173) << *(yymsp[0].minor.yy319);
delete yymsp[0].minor.yy319;
}
break;
- case 252: /* idlist ::= nm */
+ case 258: /* idlist ::= nm */
{
- yygotominor.yy575 = new QStringList();
- *(yygotominor.yy575) << *(yymsp[0].minor.yy319);
+ yygotominor.yy173 = new QStringList();
+ *(yygotominor.yy173) << *(yymsp[0].minor.yy319);
delete yymsp[0].minor.yy319;
}
break;
- case 253: /* idlist ::= */
+ case 259: /* idlist ::= */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
- yygotominor.yy575 = new QStringList();
+ yygotominor.yy173 = new QStringList();
}
break;
- case 254: /* idlist ::= idlist COMMA ID_COL */
- case 255: /* idlist ::= ID_COL */ yytestcase(yyruleno==255);
-{ yy_destructor(yypParser,269,&yymsp[-2].minor);
+ case 260: /* idlist ::= idlist COMMA ID_COL */
+ case 261: /* idlist ::= ID_COL */ yytestcase(yyruleno==261);
+{ yy_destructor(yypParser,274,&yymsp[-2].minor);
}
break;
- case 257: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert */
-{
- yygotominor.yy363 = new SqliteInsert(
- yymsp[-5].minor.yy504->replace,
- yymsp[-5].minor.yy504->orConflict,
- yymsp[-3].minor.yy440->name1,
- yymsp[-3].minor.yy440->name2,
- *(yymsp[-2].minor.yy575),
- yymsp[-1].minor.yy313,
- yymsp[-6].minor.yy1,
- yymsp[0].minor.yy400
+ case 263: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert returning */
+{
+ yygotominor.yy41 = new SqliteInsert(
+ yymsp[-6].minor.yy308->replace,
+ yymsp[-6].minor.yy308->orConflict,
+ yymsp[-4].minor.yy396->name1,
+ yymsp[-4].minor.yy396->name2,
+ *(yymsp[-3].minor.yy173),
+ yymsp[-2].minor.yy297,
+ yymsp[-7].minor.yy161,
+ yymsp[-1].minor.yy332,
+ *(yymsp[0].minor.yy27)
);
- delete yymsp[-3].minor.yy440;
- delete yymsp[-5].minor.yy504;
- delete yymsp[-2].minor.yy575;
+ delete yymsp[-4].minor.yy396;
+ delete yymsp[-6].minor.yy308;
+ delete yymsp[-3].minor.yy173;
+ delete yymsp[0].minor.yy27;
// since it's used in trigger:
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 258: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */
+ case 264: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES returning */
{
- yygotominor.yy363 = new SqliteInsert(
- yymsp[-5].minor.yy504->replace,
- yymsp[-5].minor.yy504->orConflict,
- yymsp[-3].minor.yy440->name1,
- yymsp[-3].minor.yy440->name2,
- *(yymsp[-2].minor.yy575),
- yymsp[-6].minor.yy1
+ yygotominor.yy41 = new SqliteInsert(
+ yymsp[-6].minor.yy308->replace,
+ yymsp[-6].minor.yy308->orConflict,
+ yymsp[-4].minor.yy396->name1,
+ yymsp[-4].minor.yy396->name2,
+ *(yymsp[-3].minor.yy173),
+ yymsp[-7].minor.yy161,
+ *(yymsp[0].minor.yy27)
);
- delete yymsp[-3].minor.yy440;
- delete yymsp[-5].minor.yy504;
- delete yymsp[-2].minor.yy575;
+ delete yymsp[-4].minor.yy396;
+ delete yymsp[-6].minor.yy308;
+ delete yymsp[-3].minor.yy173;
+ delete yymsp[0].minor.yy27;
// since it's used in trigger:
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 259: /* insert_stmt ::= with insert_cmd INTO */
+ case 265: /* insert_stmt ::= with insert_cmd INTO */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteInsert* q = new SqliteInsert();
- q->replaceKw = yymsp[-1].minor.yy504->replace;
- q->onConflict = yymsp[-1].minor.yy504->orConflict;
- q->with = yymsp[-2].minor.yy1;
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
- delete yymsp[-1].minor.yy504;
+ q->replaceKw = yymsp[-1].minor.yy308->replace;
+ q->onConflict = yymsp[-1].minor.yy308->orConflict;
+ q->with = yymsp[-2].minor.yy161;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
+ delete yymsp[-1].minor.yy308;
}
break;
- case 260: /* insert_stmt ::= with insert_cmd INTO nm DOT */
+ case 266: /* insert_stmt ::= with insert_cmd INTO nm DOT */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
SqliteInsert* q = new SqliteInsert();
- q->replaceKw = yymsp[-3].minor.yy504->replace;
- q->onConflict = yymsp[-3].minor.yy504->orConflict;
- q->with = yymsp[-4].minor.yy1;
+ q->replaceKw = yymsp[-3].minor.yy308->replace;
+ q->onConflict = yymsp[-3].minor.yy308->orConflict;
+ q->with = yymsp[-4].minor.yy161;
q->database = *(yymsp[-1].minor.yy319);
- yygotominor.yy363 = q;
- objectForTokens = yygotominor.yy363;
- delete yymsp[-3].minor.yy504;
+ yygotominor.yy41 = q;
+ objectForTokens = yygotominor.yy41;
+ delete yymsp[-3].minor.yy308;
delete yymsp[-1].minor.yy319;
}
break;
- case 261: /* insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB */
-{ yy_destructor(yypParser,244,&yymsp[-3].minor);
- yy_destructor(yypParser,277,&yymsp[-2].minor);
+ case 267: /* insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB */
+{ yy_destructor(yypParser,249,&yymsp[-3].minor);
+ yy_destructor(yypParser,283,&yymsp[-2].minor);
}
break;
- case 262: /* insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB */
-{ yy_destructor(yypParser,244,&yymsp[-5].minor);
- yy_destructor(yypParser,277,&yymsp[-4].minor);
- yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 268: /* insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB */
+{ yy_destructor(yypParser,249,&yymsp[-5].minor);
+ yy_destructor(yypParser,283,&yymsp[-4].minor);
+ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
- case 263: /* insert_cmd ::= INSERT orconf */
+ case 269: /* insert_cmd ::= INSERT orconf */
{
- yygotominor.yy504 = new ParserStubInsertOrReplace(false, *(yymsp[0].minor.yy418));
- delete yymsp[0].minor.yy418;
+ yygotominor.yy308 = new ParserStubInsertOrReplace(false, *(yymsp[0].minor.yy136));
+ delete yymsp[0].minor.yy136;
}
break;
- case 264: /* insert_cmd ::= REPLACE */
-{yygotominor.yy504 = new ParserStubInsertOrReplace(true);}
+ case 270: /* insert_cmd ::= REPLACE */
+{yygotominor.yy308 = new ParserStubInsertOrReplace(true);}
break;
- case 265: /* upsert ::= */
+ case 271: /* upsert ::= */
{
- yygotominor.yy400 = nullptr;
+ yygotominor.yy332 = nullptr;
}
break;
- case 266: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
+ case 272: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
{
- yygotominor.yy400 = new SqliteUpsert(*(yymsp[-7].minor.yy403), yymsp[-5].minor.yy512, *(yymsp[-1].minor.yy201), yymsp[0].minor.yy512);
- delete yymsp[-7].minor.yy403;
- delete yymsp[-1].minor.yy201;
- objectForTokens = yygotominor.yy400;
+ yygotominor.yy332 = new SqliteUpsert(*(yymsp[-7].minor.yy226), yymsp[-5].minor.yy186, *(yymsp[-1].minor.yy621), yymsp[0].minor.yy186);
+ delete yymsp[-7].minor.yy226;
+ delete yymsp[-1].minor.yy621;
+ objectForTokens = yygotominor.yy332;
}
break;
- case 267: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
+ case 273: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
{
- yygotominor.yy400 = new SqliteUpsert(*(yymsp[-4].minor.yy403), yymsp[-2].minor.yy512);
- delete yymsp[-4].minor.yy403;
- objectForTokens = yygotominor.yy400;
+ yygotominor.yy332 = new SqliteUpsert(*(yymsp[-4].minor.yy226), yymsp[-2].minor.yy186);
+ delete yymsp[-4].minor.yy226;
+ objectForTokens = yygotominor.yy332;
}
break;
- case 268: /* upsert ::= ON CONFLICT DO NOTHING */
+ case 274: /* upsert ::= ON CONFLICT DO NOTHING */
{
- yygotominor.yy400 = new SqliteUpsert();
- objectForTokens = yygotominor.yy400;
+ yygotominor.yy332 = new SqliteUpsert();
+ objectForTokens = yygotominor.yy332;
}
break;
- case 269: /* exprx ::= expr not_opt IN ID_DB */
-{ yy_destructor(yypParser,222,&yymsp[-3].minor);
+ case 275: /* exprx ::= expr not_opt IN ID_DB */
+{ yy_destructor(yypParser,227,&yymsp[-3].minor);
}
break;
- case 270: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
- case 271: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==271);
-{ yy_destructor(yypParser,222,&yymsp[-5].minor);
- yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 276: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
+ case 277: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==277);
+{ yy_destructor(yypParser,227,&yymsp[-5].minor);
+ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
- case 272: /* exprx ::= tnm DOT ID_TAB|ID_COL */
-{ yy_destructor(yypParser,230,&yymsp[-2].minor);
+ case 278: /* exprx ::= tnm DOT ID_TAB|ID_COL */
+{ yy_destructor(yypParser,235,&yymsp[-2].minor);
}
break;
- case 273: /* exprx ::= tnm DOT nm DOT ID_COL */
-{ yy_destructor(yypParser,230,&yymsp[-4].minor);
- yy_destructor(yypParser,199,&yymsp[-2].minor);
+ case 279: /* exprx ::= tnm DOT nm DOT ID_COL */
+{ yy_destructor(yypParser,235,&yymsp[-4].minor);
+ yy_destructor(yypParser,203,&yymsp[-2].minor);
}
break;
- case 274: /* exprx ::= expr COLLATE ID_COLLATE */
- case 275: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==275);
-{ yy_destructor(yypParser,222,&yymsp[-2].minor);
+ case 280: /* exprx ::= expr COLLATE ID_COLLATE */
+ case 281: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==281);
+{ yy_destructor(yypParser,227,&yymsp[-2].minor);
}
break;
- case 276: /* exprx ::= CTIME_KW */
+ case 282: /* exprx ::= CTIME_KW */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initCTime(yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initCTime(yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 277: /* exprx ::= LP nexprlist RP */
+ case 283: /* exprx ::= LP nexprlist RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initRowValue(*(yymsp[-1].minor.yy71));
- delete yymsp[-1].minor.yy71;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initRowValue(*(yymsp[-1].minor.yy615));
+ delete yymsp[-1].minor.yy615;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 278: /* exprx ::= tnm */
+ case 284: /* exprx ::= tnm */
{
- yygotominor.yy512 = new SqliteExpr();
- if (yymsp[0].minor.yy590->isLiteral())
- yygotominor.yy512->initLiteral(yymsp[0].minor.yy590->toLiteral());
+ yygotominor.yy186 = new SqliteExpr();
+ if (yymsp[0].minor.yy380->isLiteral())
+ yygotominor.yy186->initLiteral(yymsp[0].minor.yy380->toLiteral());
else
- yygotominor.yy512->initId(yymsp[0].minor.yy590->toName());
+ yygotominor.yy186->initId(yymsp[0].minor.yy380->toName());
//parserContext->errorBeforeLastToken("Syntax error <expected literal value>");
- delete yymsp[0].minor.yy590;
- objectForTokens = yygotominor.yy512;
+ delete yymsp[0].minor.yy380;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 279: /* exprx ::= tnm DOT nm */
+ case 285: /* exprx ::= tnm DOT nm */
{
- yygotominor.yy512 = new SqliteExpr();
- if (yymsp[-2].minor.yy590->isName())
- yygotominor.yy512->initId(yymsp[-2].minor.yy590->toName(), *(yymsp[0].minor.yy319));
+ yygotominor.yy186 = new SqliteExpr();
+ if (yymsp[-2].minor.yy380->isName())
+ yygotominor.yy186->initId(yymsp[-2].minor.yy380->toName(), *(yymsp[0].minor.yy319));
else
parserContext->errorAtToken("Syntax error <expected name>", -3);
- delete yymsp[-2].minor.yy590;
+ delete yymsp[-2].minor.yy380;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 280: /* exprx ::= tnm DOT nm DOT nm */
+ case 286: /* exprx ::= tnm DOT */
{
- yygotominor.yy512 = new SqliteExpr();
- if (yymsp[-4].minor.yy590->isName())
- yygotominor.yy512->initId(yymsp[-4].minor.yy590->toName(), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy319));
+ yygotominor.yy186 = new SqliteExpr();
+ objectForTokens = yygotominor.yy186;
+ if (yymsp[-1].minor.yy380->isName())
+ {
+ yygotominor.yy186->initId(yymsp[-1].minor.yy380->toName(), QString());
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
+ }
+ else
+ parserContext->errorAtToken("Syntax error <expected name>", -3);
+
+ delete yymsp[-1].minor.yy380;
+ }
+ break;
+ case 287: /* exprx ::= tnm DOT nm DOT nm */
+{
+ yygotominor.yy186 = new SqliteExpr();
+ if (yymsp[-4].minor.yy380->isName())
+ yygotominor.yy186->initId(yymsp[-4].minor.yy380->toName(), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy319));
else
parserContext->errorAtToken("Syntax error <expected name>", -5);
- delete yymsp[-4].minor.yy590;
+ delete yymsp[-4].minor.yy380;
delete yymsp[-2].minor.yy319;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
+ }
+ break;
+ case 288: /* exprx ::= tnm DOT nm DOT */
+{
+ yygotominor.yy186 = new SqliteExpr();
+ objectForTokens = yygotominor.yy186;
+ if (yymsp[-3].minor.yy380->isName())
+ {
+ yygotominor.yy186->initId(yymsp[-3].minor.yy380->toName(), *(yymsp[-1].minor.yy319), QString());
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
+ }
+ else
+ parserContext->errorAtToken("Syntax error <expected name>", -5);
+
+ delete yymsp[-3].minor.yy380;
+ delete yymsp[-1].minor.yy319;
}
break;
- case 281: /* exprx ::= VARIABLE */
+ case 289: /* exprx ::= VARIABLE */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initBindParam(yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initBindParam(yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 282: /* exprx ::= expr COLLATE ids */
+ case 290: /* exprx ::= expr COLLATE ids */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initCollate(yymsp[-2].minor.yy512, *(yymsp[0].minor.yy319));
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initCollate(yymsp[-2].minor.yy186, *(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
+ }
+ break;
+ case 291: /* exprx ::= CAST LP expr AS typetoken RP */
+{
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initCast(yymsp[-3].minor.yy186, yymsp[-1].minor.yy267);
+ objectForTokens = yygotominor.yy186;
+ }
+ break;
+ case 292: /* exprx ::= ID LP distinct exprlist RP */
+{
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initFunction(stripObjName(yymsp[-4].minor.yy0->value), *(yymsp[-2].minor.yy130), *(yymsp[-1].minor.yy615));
+ delete yymsp[-2].minor.yy130;
+ delete yymsp[-1].minor.yy615;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 283: /* exprx ::= CAST LP expr AS typetoken RP */
+ case 293: /* exprx ::= ID LP STAR RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initCast(yymsp[-3].minor.yy512, yymsp[-1].minor.yy57);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initFunction(stripObjName(yymsp[-3].minor.yy0->value), true);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 284: /* exprx ::= ID LP distinct exprlist RP */
+ case 294: /* exprx ::= expr AND expr */
+ case 295: /* exprx ::= expr OR expr */ yytestcase(yyruleno==295);
+ case 296: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==296);
+ case 297: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==297);
+ case 298: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==298);
+ case 299: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==299);
+ case 300: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==300);
+ case 301: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==301);
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initFunction(yymsp[-4].minor.yy0->value, *(yymsp[-2].minor.yy386), *(yymsp[-1].minor.yy71));
- delete yymsp[-2].minor.yy386;
- delete yymsp[-1].minor.yy71;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initBinOp(yymsp[-2].minor.yy186, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 285: /* exprx ::= ID LP STAR RP */
+ case 302: /* exprx ::= expr not_opt likeop expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initFunction(yymsp[-3].minor.yy0->value, true);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initLike(yymsp[-3].minor.yy186, *(yymsp[-2].minor.yy225), *(yymsp[-1].minor.yy274), yymsp[0].minor.yy186);
+ delete yymsp[-2].minor.yy225;
+ delete yymsp[-1].minor.yy274;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 286: /* exprx ::= expr AND expr */
- case 287: /* exprx ::= expr OR expr */ yytestcase(yyruleno==287);
- case 288: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==288);
- case 289: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==289);
- case 290: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==290);
- case 291: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==291);
- case 292: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==292);
- case 293: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==293);
+ case 303: /* exprx ::= expr not_opt likeop expr ESCAPE expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initBinOp(yymsp[-2].minor.yy512, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy512);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initLike(yymsp[-5].minor.yy186, *(yymsp[-4].minor.yy225), *(yymsp[-3].minor.yy274), yymsp[-2].minor.yy186, yymsp[0].minor.yy186);
+ delete yymsp[-4].minor.yy225;
+ delete yymsp[-3].minor.yy274;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 294: /* exprx ::= expr not_opt likeop expr */
+ case 304: /* exprx ::= expr ISNULL|NOTNULL */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initLike(yymsp[-3].minor.yy512, *(yymsp[-2].minor.yy611), *(yymsp[-1].minor.yy40), yymsp[0].minor.yy512);
- delete yymsp[-2].minor.yy611;
- delete yymsp[-1].minor.yy40;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initNull(yymsp[-1].minor.yy186, yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 295: /* exprx ::= expr not_opt likeop expr ESCAPE expr */
+ case 305: /* exprx ::= expr NOT NULL */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initLike(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), *(yymsp[-3].minor.yy40), yymsp[-2].minor.yy512, yymsp[0].minor.yy512);
- delete yymsp[-4].minor.yy611;
- delete yymsp[-3].minor.yy40;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initNull(yymsp[-2].minor.yy186, "NOT NULL");
+ objectForTokens = yygotominor.yy186;
}
break;
- case 296: /* exprx ::= expr ISNULL|NOTNULL */
+ case 306: /* exprx ::= expr IS not_opt expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initNull(yymsp[-1].minor.yy512, yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initIs(yymsp[-3].minor.yy186, *(yymsp[-1].minor.yy225), yymsp[0].minor.yy186);
+ delete yymsp[-1].minor.yy225;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 297: /* exprx ::= expr NOT NULL */
+ case 307: /* exprx ::= expr IS NOT DISTINCT FROM expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initNull(yymsp[-2].minor.yy512, "NOT NULL");
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initDistinct(yymsp[-5].minor.yy186, true, yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 298: /* exprx ::= expr IS not_opt expr */
+ case 308: /* exprx ::= expr IS DISTINCT FROM expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initIs(yymsp[-3].minor.yy512, *(yymsp[-1].minor.yy611), yymsp[0].minor.yy512);
- delete yymsp[-1].minor.yy611;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initDistinct(yymsp[-4].minor.yy186, false, yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 299: /* exprx ::= NOT expr */
+ case 309: /* exprx ::= NOT expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initUnaryOp(yymsp[0].minor.yy186, yymsp[-1].minor.yy0->value);
}
break;
- case 300: /* exprx ::= BITNOT expr */
- case 302: /* exprx ::= PLUS expr */ yytestcase(yyruleno==302);
+ case 310: /* exprx ::= BITNOT expr */
+ case 312: /* exprx ::= PLUS expr */ yytestcase(yyruleno==312);
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initUnaryOp(yymsp[0].minor.yy186, yymsp[-1].minor.yy0->value);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 301: /* exprx ::= MINUS expr */
+ case 311: /* exprx ::= MINUS expr */
{
- yygotominor.yy512 = new SqliteExpr();
- if (yymsp[0].minor.yy512->mode == SqliteExpr::Mode::LITERAL_VALUE &&
+ yygotominor.yy186 = new SqliteExpr();
+ if (yymsp[0].minor.yy186->mode == SqliteExpr::Mode::LITERAL_VALUE &&
parserContext->isCandidateForMaxNegativeNumber() &&
- yymsp[0].minor.yy512->literalValue == static_cast<qint64>(0L))
+ yymsp[0].minor.yy186->literalValue == static_cast<qint64>(0L))
{
- yygotominor.yy512->initLiteral(std::numeric_limits<qint64>::min());
- delete yymsp[0].minor.yy512;
+ yygotominor.yy186->initLiteral(std::numeric_limits<qint64>::min());
+ delete yymsp[0].minor.yy186;
}
else
{
- yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
+ yygotominor.yy186->initUnaryOp(yymsp[0].minor.yy186, yymsp[-1].minor.yy0->value);
}
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 303: /* exprx ::= expr not_opt BETWEEN expr AND expr */
+ case 313: /* exprx ::= expr PTR expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initBetween(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), yymsp[-2].minor.yy512, yymsp[0].minor.yy512);
- delete yymsp[-4].minor.yy611;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initPtrOp(yymsp[-2].minor.yy186, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 304: /* exprx ::= expr not_opt IN LP exprlist RP */
+ case 314: /* exprx ::= expr not_opt BETWEEN expr AND expr */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initIn(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), *(yymsp[-1].minor.yy71));
- delete yymsp[-4].minor.yy611;
- delete yymsp[-1].minor.yy71;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initBetween(yymsp[-5].minor.yy186, *(yymsp[-4].minor.yy225), yymsp[-2].minor.yy186, yymsp[0].minor.yy186);
+ delete yymsp[-4].minor.yy225;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 305: /* exprx ::= LP select RP */
+ case 315: /* exprx ::= expr not_opt IN LP exprlist RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initSubSelect(yymsp[-1].minor.yy313);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initIn(yymsp[-5].minor.yy186, *(yymsp[-4].minor.yy225), *(yymsp[-1].minor.yy615));
+ delete yymsp[-4].minor.yy225;
+ delete yymsp[-1].minor.yy615;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 306: /* exprx ::= expr not_opt IN LP select RP */
+ case 316: /* exprx ::= LP select RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initIn(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), yymsp[-1].minor.yy313);
- delete yymsp[-4].minor.yy611;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initSubSelect(yymsp[-1].minor.yy297);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 307: /* exprx ::= expr not_opt IN nm dbnm */
+ case 317: /* exprx ::= expr not_opt IN LP select RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initIn(yymsp[-4].minor.yy512, *(yymsp[-3].minor.yy611), *(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
- delete yymsp[-3].minor.yy611;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initIn(yymsp[-5].minor.yy186, *(yymsp[-4].minor.yy225), yymsp[-1].minor.yy297);
+ delete yymsp[-4].minor.yy225;
+ objectForTokens = yygotominor.yy186;
+ }
+ break;
+ case 318: /* exprx ::= expr not_opt IN nm dbnm */
+{
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initIn(yymsp[-4].minor.yy186, *(yymsp[-3].minor.yy225), *(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
+ delete yymsp[-3].minor.yy225;
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 308: /* exprx ::= EXISTS LP select RP */
+ case 319: /* exprx ::= EXISTS LP select RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initExists(yymsp[-1].minor.yy313);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initExists(yymsp[-1].minor.yy297);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 309: /* exprx ::= CASE case_operand case_exprlist case_else END */
+ case 320: /* exprx ::= CASE case_operand case_exprlist case_else END */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initCase(yymsp[-3].minor.yy512, *(yymsp[-2].minor.yy71), yymsp[-1].minor.yy512);
- delete yymsp[-2].minor.yy71;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initCase(yymsp[-3].minor.yy186, *(yymsp[-2].minor.yy615), yymsp[-1].minor.yy186);
+ delete yymsp[-2].minor.yy615;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 310: /* exprx ::= RAISE LP IGNORE RP */
+ case 321: /* exprx ::= RAISE LP IGNORE RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initRaise(yymsp[-1].minor.yy0->value);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initRaise(yymsp[-1].minor.yy0->value);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 311: /* exprx ::= RAISE LP raisetype COMMA nm RP */
+ case 322: /* exprx ::= RAISE LP raisetype COMMA nm RP */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initRaise(yymsp[-3].minor.yy0->value, *(yymsp[-1].minor.yy319));
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initRaise(yymsp[-3].minor.yy0->value, *(yymsp[-1].minor.yy319));
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy512;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 312: /* exprx ::= ID LP distinct exprlist RP filter_over */
+ case 323: /* exprx ::= ID LP distinct exprlist RP filter_over */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initWindowFunction(yymsp[-5].minor.yy0->value, *(yymsp[-3].minor.yy386), *(yymsp[-2].minor.yy71), yymsp[0].minor.yy247);
- delete yymsp[-3].minor.yy386;
- delete yymsp[-2].minor.yy71;
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initWindowFunction(stripObjName(yymsp[-5].minor.yy0->value), *(yymsp[-3].minor.yy130), *(yymsp[-2].minor.yy615), yymsp[0].minor.yy181);
+ delete yymsp[-3].minor.yy130;
+ delete yymsp[-2].minor.yy615;
+ objectForTokens = yygotominor.yy186;
}
break;
- case 313: /* exprx ::= ID LP STAR RP filter_over */
+ case 324: /* exprx ::= ID LP STAR RP filter_over */
{
- yygotominor.yy512 = new SqliteExpr();
- yygotominor.yy512->initWindowFunction(yymsp[-4].minor.yy0->value, yymsp[0].minor.yy247);
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ yygotominor.yy186->initWindowFunction(stripObjName(yymsp[-4].minor.yy0->value), yymsp[0].minor.yy181);
+ objectForTokens = yygotominor.yy186;
}
break;
- case 314: /* expr ::= */
+ case 325: /* expr ::= */
{
- yygotominor.yy512 = new SqliteExpr();
- objectForTokens = yygotominor.yy512;
+ yygotominor.yy186 = new SqliteExpr();
+ objectForTokens = yygotominor.yy186;
parserContext->minorErrorAfterLastToken("Syntax error <expr>");
}
break;
- case 318: /* likeop ::= LIKE_KW|MATCH */
-{yygotominor.yy40 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));}
+ case 329: /* likeop ::= LIKE_KW|MATCH */
+{yygotominor.yy274 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));}
break;
- case 319: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ case 330: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
- yymsp[-4].minor.yy71->append(yymsp[-2].minor.yy512);
- yymsp[-4].minor.yy71->append(yymsp[0].minor.yy512);
- yygotominor.yy71 = yymsp[-4].minor.yy71;
+ yymsp[-4].minor.yy615->append(yymsp[-2].minor.yy186);
+ yymsp[-4].minor.yy615->append(yymsp[0].minor.yy186);
+ yygotominor.yy615 = yymsp[-4].minor.yy615;
}
break;
- case 320: /* case_exprlist ::= WHEN expr THEN expr */
+ case 331: /* case_exprlist ::= WHEN expr THEN expr */
{
- yygotominor.yy71 = new ParserExprList();
- yygotominor.yy71->append(yymsp[-2].minor.yy512);
- yygotominor.yy71->append(yymsp[0].minor.yy512);
+ yygotominor.yy615 = new ParserExprList();
+ yygotominor.yy615->append(yymsp[-2].minor.yy186);
+ yygotominor.yy615->append(yymsp[0].minor.yy186);
}
break;
- case 327: /* nexprlist ::= nexprlist COMMA expr */
+ case 338: /* nexprlist ::= nexprlist COMMA expr */
{
- yymsp[-2].minor.yy71->append(yymsp[0].minor.yy512);
- yygotominor.yy71 = yymsp[-2].minor.yy71;
+ yymsp[-2].minor.yy615->append(yymsp[0].minor.yy186);
+ yygotominor.yy615 = yymsp[-2].minor.yy615;
DONT_INHERIT_TOKENS("nexprlist");
}
break;
- case 328: /* nexprlist ::= exprx */
+ case 339: /* nexprlist ::= exprx */
{
- yygotominor.yy71 = new ParserExprList();
- yygotominor.yy71->append(yymsp[0].minor.yy512);
+ yygotominor.yy615 = new ParserExprList();
+ yygotominor.yy615->append(yymsp[0].minor.yy186);
}
break;
- case 329: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ case 340: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
{
- yygotominor.yy363 = new SqliteCreateIndex(
- *(yymsp[-10].minor.yy611),
- *(yymsp[-8].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateIndex(
+ *(yymsp[-10].minor.yy225),
+ *(yymsp[-8].minor.yy225),
*(yymsp[-7].minor.yy319),
*(yymsp[-6].minor.yy319),
*(yymsp[-4].minor.yy319),
- *(yymsp[-2].minor.yy403),
- yymsp[0].minor.yy512
+ *(yymsp[-2].minor.yy226),
+ yymsp[0].minor.yy186
);
- delete yymsp[-8].minor.yy611;
- delete yymsp[-10].minor.yy611;
+ delete yymsp[-8].minor.yy225;
+ delete yymsp[-10].minor.yy225;
delete yymsp[-7].minor.yy319;
delete yymsp[-6].minor.yy319;
delete yymsp[-4].minor.yy319;
- delete yymsp[-2].minor.yy403;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-2].minor.yy226;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 330: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */
-{ yy_destructor(yypParser,199,&yymsp[-3].minor);
+ case 341: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */
+{ yy_destructor(yypParser,203,&yymsp[-3].minor);
}
break;
- case 335: /* idxlist_opt ::= */
-{yygotominor.yy223 = new ParserIndexedColumnList();}
+ case 346: /* idxlist_opt ::= */
+{yygotominor.yy627 = new ParserIndexedColumnList();}
break;
- case 336: /* idxlist_opt ::= LP idxlist RP */
-{yygotominor.yy223 = yymsp[-1].minor.yy223;}
+ case 347: /* idxlist_opt ::= LP idxlist RP */
+{yygotominor.yy627 = yymsp[-1].minor.yy627;}
break;
- case 337: /* idxlist ::= idxlist COMMA idxlist_single */
+ case 348: /* idxlist ::= idxlist COMMA idxlist_single */
{
- yymsp[-2].minor.yy223->append(yymsp[0].minor.yy268);
- yygotominor.yy223 = yymsp[-2].minor.yy223;
+ yymsp[-2].minor.yy627->append(yymsp[0].minor.yy110);
+ yygotominor.yy627 = yymsp[-2].minor.yy627;
DONT_INHERIT_TOKENS("idxlist");
}
break;
- case 338: /* idxlist ::= idxlist_single */
+ case 349: /* idxlist ::= idxlist_single */
{
- yygotominor.yy223 = new ParserIndexedColumnList();
- yygotominor.yy223->append(yymsp[0].minor.yy268);
+ yygotominor.yy627 = new ParserIndexedColumnList();
+ yygotominor.yy627->append(yymsp[0].minor.yy110);
}
break;
- case 339: /* idxlist_single ::= nm collate sortorder */
- case 340: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==340);
+ case 350: /* idxlist_single ::= nm collate sortorder */
+ case 351: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==351);
{
SqliteIndexedColumn* obj =
new SqliteIndexedColumn(
*(yymsp[-2].minor.yy319),
*(yymsp[-1].minor.yy319),
- *(yymsp[0].minor.yy549)
+ *(yymsp[0].minor.yy35)
);
- yygotominor.yy268 = obj;
- delete yymsp[0].minor.yy549;
+ yygotominor.yy110 = obj;
+ delete yymsp[0].minor.yy35;
delete yymsp[-2].minor.yy319;
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy268;
+ objectForTokens = yygotominor.yy110;
}
break;
- case 344: /* cmd ::= DROP INDEX ifexists fullname */
+ case 355: /* cmd ::= DROP INDEX ifexists fullname */
{
- yygotominor.yy363 = new SqliteDropIndex(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
- delete yymsp[-1].minor.yy611;
- delete yymsp[0].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteDropIndex(*(yymsp[-1].minor.yy225), yymsp[0].minor.yy396->name1, yymsp[0].minor.yy396->name2);
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[0].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 347: /* cmd ::= VACUUM vinto */
+ case 358: /* cmd ::= VACUUM vinto */
{
- yygotominor.yy363 = new SqliteVacuum(yymsp[0].minor.yy512);
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteVacuum(yymsp[0].minor.yy186);
+ objectForTokens = yygotominor.yy41;
}
break;
- case 348: /* cmd ::= VACUUM nm vinto */
+ case 359: /* cmd ::= VACUUM nm vinto */
{
- yygotominor.yy363 = new SqliteVacuum(*(yymsp[-1].minor.yy319), yymsp[0].minor.yy512);
+ yygotominor.yy41 = new SqliteVacuum(*(yymsp[-1].minor.yy319), yymsp[0].minor.yy186);
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 351: /* cmd ::= PRAGMA nm dbnm */
+ case 362: /* cmd ::= PRAGMA nm dbnm */
{
- yygotominor.yy363 = new SqlitePragma(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
+ yygotominor.yy41 = new SqlitePragma(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
delete yymsp[-1].minor.yy319;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 352: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
- case 354: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==354);
+ case 363: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
+ case 365: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==365);
{
- yygotominor.yy363 = new SqlitePragma(*(yymsp[-3].minor.yy319), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy229), true);
+ yygotominor.yy41 = new SqlitePragma(*(yymsp[-3].minor.yy319), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy393), true);
delete yymsp[-3].minor.yy319;
delete yymsp[-2].minor.yy319;
- delete yymsp[0].minor.yy229;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy393;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 353: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
- case 355: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==355);
+ case 364: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ case 366: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==366);
{
- yygotominor.yy363 = new SqlitePragma(*(yymsp[-4].minor.yy319), *(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy229), false);
+ yygotominor.yy41 = new SqlitePragma(*(yymsp[-4].minor.yy319), *(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy393), false);
delete yymsp[-4].minor.yy319;
delete yymsp[-3].minor.yy319;
- delete yymsp[-1].minor.yy229;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-1].minor.yy393;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 359: /* nmnum ::= nm */
+ case 370: /* nmnum ::= nm */
{
- yygotominor.yy229 = new QVariant(*(yymsp[0].minor.yy319));
+ yygotominor.yy393 = new QVariant(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
}
break;
- case 360: /* nmnum ::= ON */
- case 361: /* nmnum ::= DELETE */ yytestcase(yyruleno==361);
- case 362: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==362);
-{yygotominor.yy229 = new QVariant(yymsp[0].minor.yy0->value);}
+ case 371: /* nmnum ::= ON */
+ case 372: /* nmnum ::= DELETE */ yytestcase(yyruleno==372);
+ case 373: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==373);
+{yygotominor.yy393 = new QVariant(yymsp[0].minor.yy0->value);}
break;
- case 365: /* minus_num ::= MINUS number */
+ case 376: /* minus_num ::= MINUS number */
{
- if (yymsp[0].minor.yy229->type() == QVariant::Double)
- *(yymsp[0].minor.yy229) = -(yymsp[0].minor.yy229->toDouble());
- else if (yymsp[0].minor.yy229->type() == QVariant::LongLong)
+ if (yymsp[0].minor.yy393->type() == QVariant::Double)
+ *(yymsp[0].minor.yy393) = -(yymsp[0].minor.yy393->toDouble());
+ else if (yymsp[0].minor.yy393->type() == QVariant::LongLong)
{
if (parserContext->isCandidateForMaxNegativeNumber())
- *(yymsp[0].minor.yy229) = std::numeric_limits<qint64>::min();
+ *(yymsp[0].minor.yy393) = std::numeric_limits<qint64>::min();
else
- *(yymsp[0].minor.yy229) = -(yymsp[0].minor.yy229->toLongLong());
+ *(yymsp[0].minor.yy393) = -(yymsp[0].minor.yy393->toLongLong());
}
else
Q_ASSERT_X(true, "producing minus number", "QVariant is neither of Double or LongLong.");
- yygotominor.yy229 = yymsp[0].minor.yy229;
+ yygotominor.yy393 = yymsp[0].minor.yy393;
}
break;
- case 368: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */
+ case 379: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */
{
- yygotominor.yy363 = new SqliteCreateTrigger(
- *(yymsp[-13].minor.yy386),
- *(yymsp[-11].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateTrigger(
+ *(yymsp[-13].minor.yy130),
+ *(yymsp[-11].minor.yy225),
*(yymsp[-10].minor.yy319),
*(yymsp[-9].minor.yy319),
*(yymsp[-5].minor.yy319),
- *(yymsp[-8].minor.yy532),
- yymsp[-7].minor.yy151,
- *(yymsp[-4].minor.yy83),
- yymsp[-3].minor.yy512,
- *(yymsp[-1].minor.yy110),
+ *(yymsp[-8].minor.yy120),
+ yymsp[-7].minor.yy259,
+ *(yymsp[-4].minor.yy456),
+ yymsp[-3].minor.yy186,
+ *(yymsp[-1].minor.yy240),
3
);
- delete yymsp[-11].minor.yy611;
- delete yymsp[-13].minor.yy386;
- delete yymsp[-8].minor.yy532;
- delete yymsp[-4].minor.yy83;
+ delete yymsp[-11].minor.yy225;
+ delete yymsp[-13].minor.yy130;
+ delete yymsp[-8].minor.yy120;
+ delete yymsp[-4].minor.yy456;
delete yymsp[-10].minor.yy319;
delete yymsp[-5].minor.yy319;
delete yymsp[-9].minor.yy319;
- delete yymsp[-1].minor.yy110;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-1].minor.yy240;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 369: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */
+ case 380: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */
{
QList<SqliteQuery *> CL;
- yygotominor.yy363 = new SqliteCreateTrigger(
- *(yymsp[-10].minor.yy386),
- *(yymsp[-8].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateTrigger(
+ *(yymsp[-10].minor.yy130),
+ *(yymsp[-8].minor.yy225),
*(yymsp[-7].minor.yy319),
*(yymsp[-6].minor.yy319),
*(yymsp[-2].minor.yy319),
- *(yymsp[-5].minor.yy532),
- yymsp[-4].minor.yy151,
- *(yymsp[-1].minor.yy83),
- yymsp[0].minor.yy512,
+ *(yymsp[-5].minor.yy120),
+ yymsp[-4].minor.yy259,
+ *(yymsp[-1].minor.yy456),
+ yymsp[0].minor.yy186,
CL,
3
);
- delete yymsp[-8].minor.yy611;
- delete yymsp[-10].minor.yy386;
- delete yymsp[-5].minor.yy532;
- delete yymsp[-1].minor.yy83;
+ delete yymsp[-8].minor.yy225;
+ delete yymsp[-10].minor.yy130;
+ delete yymsp[-5].minor.yy120;
+ delete yymsp[-1].minor.yy456;
delete yymsp[-7].minor.yy319;
delete yymsp[-2].minor.yy319;
delete yymsp[-6].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 370: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */
+ case 381: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */
{
- yygotominor.yy363 = new SqliteCreateTrigger(
- *(yymsp[-12].minor.yy386),
- *(yymsp[-10].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateTrigger(
+ *(yymsp[-12].minor.yy130),
+ *(yymsp[-10].minor.yy225),
*(yymsp[-9].minor.yy319),
*(yymsp[-8].minor.yy319),
*(yymsp[-4].minor.yy319),
- *(yymsp[-7].minor.yy532),
- yymsp[-6].minor.yy151,
- *(yymsp[-3].minor.yy83),
- yymsp[-2].minor.yy512,
- *(yymsp[0].minor.yy110),
+ *(yymsp[-7].minor.yy120),
+ yymsp[-6].minor.yy259,
+ *(yymsp[-3].minor.yy456),
+ yymsp[-2].minor.yy186,
+ *(yymsp[0].minor.yy240),
3
);
- delete yymsp[-10].minor.yy611;
- delete yymsp[-12].minor.yy386;
- delete yymsp[-7].minor.yy532;
- delete yymsp[-3].minor.yy83;
+ delete yymsp[-10].minor.yy225;
+ delete yymsp[-12].minor.yy130;
+ delete yymsp[-7].minor.yy120;
+ delete yymsp[-3].minor.yy456;
delete yymsp[-9].minor.yy319;
delete yymsp[-4].minor.yy319;
delete yymsp[-8].minor.yy319;
- delete yymsp[0].minor.yy110;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[0].minor.yy240;
+ objectForTokens = yygotominor.yy41;
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 371: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */
-{ yy_destructor(yypParser,201,&yymsp[-8].minor);
- yy_destructor(yypParser,199,&yymsp[-5].minor);
- yy_destructor(yypParser,292,&yymsp[-3].minor);
- yy_destructor(yypParser,293,&yymsp[-2].minor);
+ case 382: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */
+{ yy_destructor(yypParser,205,&yymsp[-8].minor);
+ yy_destructor(yypParser,203,&yymsp[-5].minor);
+ yy_destructor(yypParser,298,&yymsp[-3].minor);
+ yy_destructor(yypParser,299,&yymsp[-2].minor);
}
break;
- case 374: /* trigger_time ::= BEFORE */
-{yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);}
+ case 385: /* trigger_time ::= BEFORE */
+{yygotominor.yy120 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);}
break;
- case 375: /* trigger_time ::= AFTER */
-{yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);}
+ case 386: /* trigger_time ::= AFTER */
+{yygotominor.yy120 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);}
break;
- case 376: /* trigger_time ::= INSTEAD OF */
-{yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);}
+ case 387: /* trigger_time ::= INSTEAD OF */
+{yygotominor.yy120 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);}
break;
- case 377: /* trigger_time ::= */
-{yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);}
+ case 388: /* trigger_time ::= */
+{yygotominor.yy120 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);}
break;
- case 378: /* trigger_event ::= DELETE */
+ case 389: /* trigger_event ::= DELETE */
{
- yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE);
- objectForTokens = yygotominor.yy151;
+ yygotominor.yy259 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE);
+ objectForTokens = yygotominor.yy259;
}
break;
- case 379: /* trigger_event ::= INSERT */
+ case 390: /* trigger_event ::= INSERT */
{
- yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT);
- objectForTokens = yygotominor.yy151;
+ yygotominor.yy259 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT);
+ objectForTokens = yygotominor.yy259;
}
break;
- case 380: /* trigger_event ::= UPDATE */
+ case 391: /* trigger_event ::= UPDATE */
{
- yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE);
- objectForTokens = yygotominor.yy151;
+ yygotominor.yy259 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE);
+ objectForTokens = yygotominor.yy259;
}
break;
- case 381: /* trigger_event ::= UPDATE OF idlist */
+ case 392: /* trigger_event ::= UPDATE OF idlist */
{
- yygotominor.yy151 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy575));
- delete yymsp[0].minor.yy575;
- objectForTokens = yygotominor.yy151;
+ yygotominor.yy259 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy173));
+ delete yymsp[0].minor.yy173;
+ objectForTokens = yygotominor.yy259;
}
break;
- case 382: /* foreach_clause ::= */
-{yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);}
+ case 393: /* foreach_clause ::= */
+{yygotominor.yy456 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);}
break;
- case 383: /* foreach_clause ::= FOR EACH ROW */
-{yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);}
+ case 394: /* foreach_clause ::= FOR EACH ROW */
+{yygotominor.yy456 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);}
break;
- case 386: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 397: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
- yymsp[-2].minor.yy110->append(yymsp[-1].minor.yy363);
- yygotominor.yy110 = yymsp[-2].minor.yy110;
+ yymsp[-2].minor.yy240->append(yymsp[-1].minor.yy41);
+ yygotominor.yy240 = yymsp[-2].minor.yy240;
DONT_INHERIT_TOKENS("trigger_cmd_list");
}
break;
- case 387: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 398: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
- yygotominor.yy110 = new ParserQueryList();
- yygotominor.yy110->append(yymsp[-1].minor.yy363);
+ yygotominor.yy240 = new ParserQueryList();
+ yygotominor.yy240->append(yymsp[-1].minor.yy41);
}
break;
- case 388: /* trigger_cmd_list ::= SEMI */
+ case 399: /* trigger_cmd_list ::= SEMI */
{
- yygotominor.yy110 = new ParserQueryList();
+ yygotominor.yy240 = new ParserQueryList();
parserContext->minorErrorAfterLastToken("Syntax error");
}
break;
- case 393: /* raisetype ::= ROLLBACK|ABORT|FAIL */
+ case 404: /* raisetype ::= ROLLBACK|ABORT|FAIL */
{yygotominor.yy0 = yymsp[0].minor.yy0;}
break;
- case 394: /* cmd ::= DROP TRIGGER ifexists fullname */
+ case 405: /* cmd ::= DROP TRIGGER ifexists fullname */
{
- yygotominor.yy363 = new SqliteDropTrigger(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
- delete yymsp[-1].minor.yy611;
- delete yymsp[0].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteDropTrigger(*(yymsp[-1].minor.yy225), yymsp[0].minor.yy396->name1, yymsp[0].minor.yy396->name2);
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[0].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 397: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ case 408: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
{
- yygotominor.yy363 = new SqliteAttach(*(yymsp[-4].minor.yy611), yymsp[-3].minor.yy512, yymsp[-1].minor.yy512, yymsp[0].minor.yy512);
- delete yymsp[-4].minor.yy611;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteAttach(*(yymsp[-4].minor.yy225), yymsp[-3].minor.yy186, yymsp[-1].minor.yy186, yymsp[0].minor.yy186);
+ delete yymsp[-4].minor.yy225;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 398: /* cmd ::= DETACH database_kw_opt expr */
+ case 409: /* cmd ::= DETACH database_kw_opt expr */
{
- yygotominor.yy363 = new SqliteDetach(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy512);
- delete yymsp[-1].minor.yy611;
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteDetach(*(yymsp[-1].minor.yy225), yymsp[0].minor.yy186);
+ delete yymsp[-1].minor.yy225;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 403: /* cmd ::= REINDEX */
-{yygotominor.yy363 = new SqliteReindex();}
+ case 414: /* cmd ::= REINDEX */
+{yygotominor.yy41 = new SqliteReindex();}
break;
- case 404: /* cmd ::= REINDEX nm dbnm */
- case 405: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==405);
+ case 415: /* cmd ::= REINDEX nm dbnm */
+ case 416: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==416);
{
- yygotominor.yy363 = new SqliteReindex(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
+ yygotominor.yy41 = new SqliteReindex(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
delete yymsp[-1].minor.yy319;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 408: /* cmd ::= ANALYZE */
+ case 419: /* cmd ::= ANALYZE */
{
- yygotominor.yy363 = new SqliteAnalyze();
- objectForTokens = yygotominor.yy363;
+ yygotominor.yy41 = new SqliteAnalyze();
+ objectForTokens = yygotominor.yy41;
}
break;
- case 409: /* cmd ::= ANALYZE nm dbnm */
+ case 420: /* cmd ::= ANALYZE nm dbnm */
{
- yygotominor.yy363 = new SqliteAnalyze(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
+ yygotominor.yy41 = new SqliteAnalyze(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
delete yymsp[-1].minor.yy319;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 412: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+ case 423: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
{
- yygotominor.yy363 = new SqliteAlterTable(
- yymsp[-3].minor.yy440->name1,
- yymsp[-3].minor.yy440->name2,
+ yygotominor.yy41 = new SqliteAlterTable(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
*(yymsp[0].minor.yy319)
);
delete yymsp[0].minor.yy319;
- delete yymsp[-3].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-3].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 413: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */
+ case 424: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */
{
- yygotominor.yy363 = new SqliteAlterTable(
- yymsp[-3].minor.yy440->name1,
- yymsp[-3].minor.yy440->name2,
- *(yymsp[-1].minor.yy611),
- yymsp[0].minor.yy147
+ yygotominor.yy41 = new SqliteAlterTable(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
+ *(yymsp[-1].minor.yy225),
+ yymsp[0].minor.yy3
);
- delete yymsp[-1].minor.yy611;
- delete yymsp[-3].minor.yy440;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[-3].minor.yy396;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 414: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */
-{ yy_destructor(yypParser,203,&yymsp[-3].minor);
+ case 425: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
+{
+ yygotominor.yy41 = new SqliteAlterTable(
+ yymsp[-3].minor.yy396->name1,
+ yymsp[-3].minor.yy396->name2,
+ *(yymsp[-1].minor.yy225),
+ *(yymsp[0].minor.yy319)
+ );
+ delete yymsp[-1].minor.yy225;
+ delete yymsp[-3].minor.yy396;
+ delete yymsp[0].minor.yy319;
+ }
+ break;
+ case 426: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */
+{ yy_destructor(yypParser,207,&yymsp[-3].minor);
}
break;
- case 420: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ case 432: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */
{
- yygotominor.yy363 = new SqliteCreateVirtualTable(
- *(yymsp[-4].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateVirtualTable(
+ *(yymsp[-4].minor.yy225),
*(yymsp[-3].minor.yy319),
*(yymsp[-2].minor.yy319),
*(yymsp[0].minor.yy319)
);
- delete yymsp[-4].minor.yy611;
+ delete yymsp[-4].minor.yy225;
delete yymsp[-3].minor.yy319;
delete yymsp[-2].minor.yy319;
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy363;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 421: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */
+ case 433: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */
{
- yygotominor.yy363 = new SqliteCreateVirtualTable(
- *(yymsp[-7].minor.yy611),
+ yygotominor.yy41 = new SqliteCreateVirtualTable(
+ *(yymsp[-7].minor.yy225),
*(yymsp[-6].minor.yy319),
*(yymsp[-5].minor.yy319),
*(yymsp[-3].minor.yy319),
- *(yymsp[-1].minor.yy575)
+ *(yymsp[-1].minor.yy173)
);
delete yymsp[-6].minor.yy319;
delete yymsp[-5].minor.yy319;
delete yymsp[-3].minor.yy319;
- delete yymsp[-7].minor.yy611;
- delete yymsp[-1].minor.yy575;
- objectForTokens = yygotominor.yy363;
+ delete yymsp[-7].minor.yy225;
+ delete yymsp[-1].minor.yy173;
+ objectForTokens = yygotominor.yy41;
}
break;
- case 424: /* vtabarglist ::= vtabarg */
+ case 436: /* vtabarglist ::= vtabarg */
{
- yygotominor.yy575 = new QStringList();
- yygotominor.yy575->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
+ yygotominor.yy173 = new QStringList();
+ yygotominor.yy173->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
delete yymsp[0].minor.yy319;
}
break;
- case 425: /* vtabarglist ::= vtabarglist COMMA vtabarg */
+ case 437: /* vtabarglist ::= vtabarglist COMMA vtabarg */
{
- yymsp[-2].minor.yy575->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
- yygotominor.yy575 = yymsp[-2].minor.yy575;
+ yymsp[-2].minor.yy173->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
+ yygotominor.yy173 = yymsp[-2].minor.yy173;
delete yymsp[0].minor.yy319;
DONT_INHERIT_TOKENS("vtabarglist");
}
break;
- case 427: /* vtabarg ::= vtabarg vtabargtoken */
+ case 439: /* vtabarg ::= vtabarg vtabargtoken */
{
yymsp[-1].minor.yy319->append(" "+ *(yymsp[0].minor.yy319));
yygotominor.yy319 = yymsp[-1].minor.yy319;
delete yymsp[0].minor.yy319;
}
break;
- case 428: /* vtabargtoken ::= ANY */
+ case 440: /* vtabargtoken ::= ANY */
{
yygotominor.yy319 = new QString(yymsp[0].minor.yy0->value);
}
break;
- case 429: /* vtabargtoken ::= LP anylist RP */
+ case 441: /* vtabargtoken ::= LP anylist RP */
{
yygotominor.yy319 = new QString("(");
yygotominor.yy319->append(*(yymsp[-1].minor.yy319));
@@ -5391,7 +5525,7 @@ static void yy_reduce(
delete yymsp[-1].minor.yy319;
}
break;
- case 431: /* anylist ::= anylist LP anylist RP */
+ case 443: /* anylist ::= anylist LP anylist RP */
{
yygotominor.yy319 = yymsp[-3].minor.yy319;
yygotominor.yy319->append("(");
@@ -5401,258 +5535,268 @@ static void yy_reduce(
DONT_INHERIT_TOKENS("anylist");
}
break;
- case 432: /* anylist ::= anylist ANY */
+ case 444: /* anylist ::= anylist ANY */
{
yygotominor.yy319 = yymsp[-1].minor.yy319;
yygotominor.yy319->append(yymsp[0].minor.yy0->value);
DONT_INHERIT_TOKENS("anylist");
}
break;
- case 433: /* with ::= */
-{yygotominor.yy1 = nullptr;}
+ case 445: /* with ::= */
+{yygotominor.yy161 = nullptr;}
break;
- case 434: /* with ::= WITH wqlist */
+ case 446: /* with ::= WITH wqlist */
{
- yygotominor.yy1 = new SqliteWith();
- yygotominor.yy1->cteList = *(yymsp[0].minor.yy593);
- delete yymsp[0].minor.yy593;
- objectForTokens = yygotominor.yy1;
+ yygotominor.yy161 = new SqliteWith();
+ yygotominor.yy161->cteList = *(yymsp[0].minor.yy164);
+ delete yymsp[0].minor.yy164;
+ objectForTokens = yygotominor.yy161;
}
break;
- case 435: /* with ::= WITH RECURSIVE wqlist */
+ case 447: /* with ::= WITH RECURSIVE wqlist */
{
- yygotominor.yy1 = new SqliteWith();
- yygotominor.yy1->cteList = *(yymsp[0].minor.yy593);
- yygotominor.yy1->recursive = true;
- delete yymsp[0].minor.yy593;
- objectForTokens = yygotominor.yy1;
+ yygotominor.yy161 = new SqliteWith();
+ yygotominor.yy161->cteList = *(yymsp[0].minor.yy164);
+ yygotominor.yy161->recursive = true;
+ delete yymsp[0].minor.yy164;
+ objectForTokens = yygotominor.yy161;
}
break;
- case 436: /* wqlist ::= wqcte */
+ case 448: /* wqas ::= AS */
+{yygotominor.yy21 = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::ANY);}
+ break;
+ case 449: /* wqas ::= AS MATERIALIZED */
+{yygotominor.yy21 = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::MATERIALIZED);}
+ break;
+ case 450: /* wqas ::= AS NOT MATERIALIZED */
+{yygotominor.yy21 = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::NOT_MATERIALIZED);}
+ break;
+ case 451: /* wqlist ::= wqcte */
{
- yygotominor.yy593 = new ParserCteList();
- yygotominor.yy593->append(yymsp[0].minor.yy446);
+ yygotominor.yy164 = new ParserCteList();
+ yygotominor.yy164->append(yymsp[0].minor.yy146);
}
break;
- case 437: /* wqlist ::= wqlist COMMA wqcte */
+ case 452: /* wqlist ::= wqlist COMMA wqcte */
{
- yygotominor.yy593 = yymsp[-2].minor.yy593;
- yygotominor.yy593->append(yymsp[0].minor.yy446);
+ yygotominor.yy164 = yymsp[-2].minor.yy164;
+ yygotominor.yy164->append(yymsp[0].minor.yy146);
DONT_INHERIT_TOKENS("wqlist");
}
break;
- case 438: /* wqlist ::= ID_TAB_NEW */
+ case 453: /* wqlist ::= ID_TAB_NEW */
{
parserContext->minorErrorBeforeNextToken("Syntax error");
}
break;
- case 439: /* wqcte ::= nm idxlist_opt AS LP select RP */
+ case 454: /* wqcte ::= nm idxlist_opt wqas LP select RP */
{
- yygotominor.yy446 = new SqliteWith::CommonTableExpression(*(yymsp[-5].minor.yy319), *(yymsp[-4].minor.yy223), yymsp[-1].minor.yy313);
+ yygotominor.yy146 = new SqliteWith::CommonTableExpression(*(yymsp[-5].minor.yy319), *(yymsp[-4].minor.yy627), yymsp[-1].minor.yy297, *(yymsp[-3].minor.yy21));
delete yymsp[-5].minor.yy319;
- delete yymsp[-4].minor.yy223;
- objectForTokens = yygotominor.yy446;
+ delete yymsp[-4].minor.yy627;
+ delete yymsp[-3].minor.yy21;
+ objectForTokens = yygotominor.yy146;
}
break;
- case 440: /* windowdefn_list ::= windowdefn */
+ case 455: /* windowdefn_list ::= windowdefn */
{
- yygotominor.yy299 = new ParserWindowDefList();
- yygotominor.yy299->append(yymsp[0].minor.yy266);
+ yygotominor.yy525 = new ParserWindowDefList();
+ yygotominor.yy525->append(yymsp[0].minor.yy562);
}
break;
- case 441: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ case 456: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
{
- yymsp[-2].minor.yy299->append(yymsp[0].minor.yy266);
- yygotominor.yy299 = yymsp[-2].minor.yy299;
+ yymsp[-2].minor.yy525->append(yymsp[0].minor.yy562);
+ yygotominor.yy525 = yymsp[-2].minor.yy525;
DONT_INHERIT_TOKENS("windowdefn_list");
}
break;
- case 442: /* windowdefn ::= nm AS LP window RP */
+ case 457: /* windowdefn ::= nm AS LP window RP */
{
- yygotominor.yy266 = new SqliteWindowDefinition(*(yymsp[-4].minor.yy319), yymsp[-1].minor.yy334);
+ yygotominor.yy562 = new SqliteWindowDefinition(*(yymsp[-4].minor.yy319), yymsp[-1].minor.yy162);
delete yymsp[-4].minor.yy319;
- objectForTokens = yygotominor.yy266;
+ objectForTokens = yygotominor.yy562;
}
break;
- case 443: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ case 458: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->initPartitionBy(QString(), *(yymsp[-2].minor.yy71), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
- delete yymsp[-2].minor.yy71;
- delete yymsp[-1].minor.yy403;
- objectForTokens = yygotominor.yy334;
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->initPartitionBy(QString(), *(yymsp[-2].minor.yy615), *(yymsp[-1].minor.yy226), yymsp[0].minor.yy149);
+ delete yymsp[-2].minor.yy615;
+ delete yymsp[-1].minor.yy226;
+ objectForTokens = yygotominor.yy162;
}
break;
- case 444: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ case 459: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->initPartitionBy(*(yymsp[-5].minor.yy319), *(yymsp[-2].minor.yy71), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
- delete yymsp[-2].minor.yy71;
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->initPartitionBy(*(yymsp[-5].minor.yy319), *(yymsp[-2].minor.yy615), *(yymsp[-1].minor.yy226), yymsp[0].minor.yy149);
+ delete yymsp[-2].minor.yy615;
delete yymsp[-5].minor.yy319;
- delete yymsp[-1].minor.yy403;
- objectForTokens = yygotominor.yy334;
+ delete yymsp[-1].minor.yy226;
+ objectForTokens = yygotominor.yy162;
}
break;
- case 445: /* window ::= ORDER BY sortlist frame_opt */
+ case 460: /* window ::= ORDER BY sortlist frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->initOrderBy(QString(), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
- delete yymsp[-1].minor.yy403;
- objectForTokens = yygotominor.yy334;
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->initOrderBy(QString(), *(yymsp[-1].minor.yy226), yymsp[0].minor.yy149);
+ delete yymsp[-1].minor.yy226;
+ objectForTokens = yygotominor.yy162;
}
break;
- case 446: /* window ::= nm ORDER BY sortlist frame_opt */
+ case 461: /* window ::= nm ORDER BY sortlist frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->initOrderBy(*(yymsp[-4].minor.yy319), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
- delete yymsp[-1].minor.yy403;
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->initOrderBy(*(yymsp[-4].minor.yy319), *(yymsp[-1].minor.yy226), yymsp[0].minor.yy149);
+ delete yymsp[-1].minor.yy226;
delete yymsp[-4].minor.yy319;
- objectForTokens = yygotominor.yy334;
+ objectForTokens = yygotominor.yy162;
}
break;
- case 447: /* window ::= frame_opt */
+ case 462: /* window ::= frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->init(QString(), yymsp[0].minor.yy41);
- objectForTokens = yygotominor.yy334;
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->init(QString(), yymsp[0].minor.yy149);
+ objectForTokens = yygotominor.yy162;
}
break;
- case 448: /* window ::= nm frame_opt */
+ case 463: /* window ::= nm frame_opt */
{
- yygotominor.yy334 = new SqliteWindowDefinition::Window();
- yygotominor.yy334->init(QString(), yymsp[0].minor.yy41);
+ yygotominor.yy162 = new SqliteWindowDefinition::Window();
+ yygotominor.yy162->init(QString(), yymsp[0].minor.yy149);
delete yymsp[-1].minor.yy319;
- objectForTokens = yygotominor.yy334;
+ objectForTokens = yygotominor.yy162;
}
break;
- case 449: /* frame_opt ::= */
-{yygotominor.yy41 = nullptr;}
+ case 464: /* frame_opt ::= */
+{yygotominor.yy149 = nullptr;}
break;
- case 450: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ case 465: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
{
- yygotominor.yy41 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-2].minor.yy419), yymsp[-1].minor.yy442, nullptr, *(yymsp[0].minor.yy63));
- delete yymsp[-2].minor.yy419;
- delete yymsp[0].minor.yy63;
- objectForTokens = yygotominor.yy41;
+ yygotominor.yy149 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-2].minor.yy143), yymsp[-1].minor.yy285, nullptr, *(yymsp[0].minor.yy237));
+ delete yymsp[-2].minor.yy143;
+ delete yymsp[0].minor.yy237;
+ objectForTokens = yygotominor.yy149;
}
break;
- case 451: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ case 466: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
{
- yygotominor.yy41 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-5].minor.yy419), yymsp[-3].minor.yy442, yymsp[-1].minor.yy442, *(yymsp[0].minor.yy63));
- delete yymsp[-5].minor.yy419;
- delete yymsp[0].minor.yy63;
- objectForTokens = yygotominor.yy41;
+ yygotominor.yy149 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-5].minor.yy143), yymsp[-3].minor.yy285, yymsp[-1].minor.yy285, *(yymsp[0].minor.yy237));
+ delete yymsp[-5].minor.yy143;
+ delete yymsp[0].minor.yy237;
+ objectForTokens = yygotominor.yy149;
}
break;
- case 452: /* range_or_rows ::= RANGE|ROWS|GROUPS */
+ case 467: /* range_or_rows ::= RANGE|ROWS|GROUPS */
{
- yygotominor.yy419 = new SqliteWindowDefinition::Window::Frame::RangeOrRows(
+ yygotominor.yy143 = new SqliteWindowDefinition::Window::Frame::RangeOrRows(
SqliteWindowDefinition::Window::Frame::toRangeOrRows(yymsp[0].minor.yy0->value)
);
}
break;
- case 453: /* frame_bound_s ::= frame_bound */
- case 455: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==455);
+ case 468: /* frame_bound_s ::= frame_bound */
+ case 470: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==470);
{
- yygotominor.yy442 = yymsp[0].minor.yy442;
- objectForTokens = yygotominor.yy442;
+ yygotominor.yy285 = yymsp[0].minor.yy285;
+ objectForTokens = yygotominor.yy285;
}
break;
- case 454: /* frame_bound_s ::= UNBOUNDED PRECEDING */
- case 456: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==456);
- case 458: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==458);
+ case 469: /* frame_bound_s ::= UNBOUNDED PRECEDING */
+ case 471: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==471);
+ case 473: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==473);
{
- yygotominor.yy442 = new SqliteWindowDefinition::Window::Frame::Bound(nullptr, yymsp[-1].minor.yy0->value + " " + yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy442;
+ yygotominor.yy285 = new SqliteWindowDefinition::Window::Frame::Bound(nullptr, yymsp[-1].minor.yy0->value + " " + yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy285;
}
break;
- case 457: /* frame_bound ::= expr PRECEDING|FOLLOWING */
+ case 472: /* frame_bound ::= expr PRECEDING|FOLLOWING */
{
- yygotominor.yy442 = new SqliteWindowDefinition::Window::Frame::Bound(yymsp[-1].minor.yy512, yymsp[0].minor.yy0->value);
- objectForTokens = yygotominor.yy442;
+ yygotominor.yy285 = new SqliteWindowDefinition::Window::Frame::Bound(yymsp[-1].minor.yy186, yymsp[0].minor.yy0->value);
+ objectForTokens = yygotominor.yy285;
}
break;
- case 459: /* frame_exclude_opt ::= */
+ case 474: /* frame_exclude_opt ::= */
{
- yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
+ yygotominor.yy237 = new SqliteWindowDefinition::Window::Frame::Exclude(
SqliteWindowDefinition::Window::Frame::Exclude::null
);
}
break;
- case 460: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
+ case 475: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
{
- yygotominor.yy63 = yymsp[0].minor.yy63;
+ yygotominor.yy237 = yymsp[0].minor.yy237;
}
break;
- case 461: /* frame_exclude ::= NO OTHERS */
+ case 476: /* frame_exclude ::= NO OTHERS */
{
- yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
+ yygotominor.yy237 = new SqliteWindowDefinition::Window::Frame::Exclude(
SqliteWindowDefinition::Window::Frame::Exclude::NO_OTHERS
);
}
break;
- case 462: /* frame_exclude ::= CURRENT ROW */
+ case 477: /* frame_exclude ::= CURRENT ROW */
{
- yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
+ yygotominor.yy237 = new SqliteWindowDefinition::Window::Frame::Exclude(
SqliteWindowDefinition::Window::Frame::Exclude::CURRENT_ROW
);
}
break;
- case 463: /* frame_exclude ::= GROUP */
+ case 478: /* frame_exclude ::= GROUP */
{
- yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
+ yygotominor.yy237 = new SqliteWindowDefinition::Window::Frame::Exclude(
SqliteWindowDefinition::Window::Frame::Exclude::GROUP
);
}
break;
- case 464: /* frame_exclude ::= TIES */
+ case 479: /* frame_exclude ::= TIES */
{
- yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
+ yygotominor.yy237 = new SqliteWindowDefinition::Window::Frame::Exclude(
SqliteWindowDefinition::Window::Frame::Exclude::TIES
);
}
break;
- case 465: /* window_clause ::= WINDOW windowdefn_list */
+ case 480: /* window_clause ::= WINDOW windowdefn_list */
{
- yygotominor.yy299 = yymsp[0].minor.yy299;
+ yygotominor.yy525 = yymsp[0].minor.yy525;
}
break;
- case 466: /* filter_over ::= filter_clause over_clause */
+ case 481: /* filter_over ::= filter_clause over_clause */
{
- yygotominor.yy247 = new SqliteFilterOver(yymsp[-1].minor.yy397, yymsp[0].minor.yy248);
- objectForTokens = yygotominor.yy247;
+ yygotominor.yy181 = new SqliteFilterOver(yymsp[-1].minor.yy39, yymsp[0].minor.yy11);
+ objectForTokens = yygotominor.yy181;
}
break;
- case 467: /* filter_over ::= over_clause */
+ case 482: /* filter_over ::= over_clause */
{
- yygotominor.yy247 = new SqliteFilterOver(nullptr, yymsp[0].minor.yy248);
- objectForTokens = yygotominor.yy247;
+ yygotominor.yy181 = new SqliteFilterOver(nullptr, yymsp[0].minor.yy11);
+ objectForTokens = yygotominor.yy181;
}
break;
- case 468: /* filter_over ::= filter_clause */
+ case 483: /* filter_over ::= filter_clause */
{
- yygotominor.yy247 = new SqliteFilterOver(yymsp[0].minor.yy397, nullptr);
- objectForTokens = yygotominor.yy247;
+ yygotominor.yy181 = new SqliteFilterOver(yymsp[0].minor.yy39, nullptr);
+ objectForTokens = yygotominor.yy181;
}
break;
- case 469: /* over_clause ::= OVER LP window RP */
+ case 484: /* over_clause ::= OVER LP window RP */
{
- yygotominor.yy248 = new SqliteFilterOver::Over(yymsp[-1].minor.yy334);
- objectForTokens = yygotominor.yy248;
+ yygotominor.yy11 = new SqliteFilterOver::Over(yymsp[-1].minor.yy162);
+ objectForTokens = yygotominor.yy11;
}
break;
- case 470: /* over_clause ::= OVER nm */
+ case 485: /* over_clause ::= OVER nm */
{
- yygotominor.yy248 = new SqliteFilterOver::Over(*(yymsp[0].minor.yy319));
+ yygotominor.yy11 = new SqliteFilterOver::Over(*(yymsp[0].minor.yy319));
delete yymsp[0].minor.yy319;
- objectForTokens = yygotominor.yy248;
+ objectForTokens = yygotominor.yy11;
}
break;
- case 471: /* filter_clause ::= FILTER LP WHERE expr RP */
+ case 486: /* filter_clause ::= FILTER LP WHERE expr RP */
{
- yygotominor.yy397 = new SqliteFilterOver::Filter(yymsp[-1].minor.yy512);
- objectForTokens = yygotominor.yy397;
- }
+ yygotominor.yy39 = new SqliteFilterOver::Filter(yymsp[-1].minor.yy186);
+ objectForTokens = yygotominor.yy39;
+ }
break;
default:
/* (0) input ::= cmdlist */ yytestcase(yyruleno==0);
@@ -5746,7 +5890,7 @@ static void yy_reduce(
#endif
{
yy_shift(yypParser,yyact,yygoto,&yygotominor);
- if (parserContext->setupTokens)
+ if (parserContext->setupTokens && yypParser->yyidx >= 0)
{
QList<Token*>* tokensPtr = yypParser->yystack[yypParser->yyidx].tokens;
*tokensPtr = allTokensWithAllInherited + *tokensPtr;
@@ -5988,4 +6132,8 @@ void sqlite3_parse(
}
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
return;
-} \ No newline at end of file
+}
+
+int sqlite3ParserFallback(int iToken) {
+ return yyFallback[iToken];
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
index 200b09c..6dedaad 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.h
@@ -41,149 +41,153 @@
#define TK3_LAST 41
#define TK3_LIKE_KW 42
#define TK3_MATCH 43
-#define TK3_NO 44
-#define TK3_NULLS 45
-#define TK3_OTHERS 46
-#define TK3_PLAN 47
-#define TK3_QUERY 48
-#define TK3_KEY 49
-#define TK3_OF 50
-#define TK3_OFFSET 51
-#define TK3_PARTITION 52
-#define TK3_PRAGMA 53
-#define TK3_PRECEDING 54
-#define TK3_RAISE 55
-#define TK3_RANGE 56
-#define TK3_RECURSIVE 57
-#define TK3_RELEASE 58
-#define TK3_REPLACE 59
-#define TK3_RESTRICT 60
-#define TK3_ROW 61
-#define TK3_ROWS 62
-#define TK3_ROLLBACK 63
-#define TK3_SAVEPOINT 64
-#define TK3_TEMP 65
-#define TK3_TIES 66
-#define TK3_TRIGGER 67
-#define TK3_UNBOUNDED 68
-#define TK3_VACUUM 69
-#define TK3_VIEW 70
-#define TK3_VIRTUAL 71
-#define TK3_WITH 72
-#define TK3_WITHOUT 73
-#define TK3_REINDEX 74
-#define TK3_RENAME 75
-#define TK3_CTIME_KW 76
-#define TK3_IF 77
-#define TK3_ANY 78
-#define TK3_OR 79
-#define TK3_AND 80
-#define TK3_NOT 81
-#define TK3_IS 82
-#define TK3_BETWEEN 83
-#define TK3_IN 84
-#define TK3_ISNULL 85
-#define TK3_NOTNULL 86
-#define TK3_NE 87
-#define TK3_EQ 88
-#define TK3_GT 89
-#define TK3_LE 90
-#define TK3_LT 91
-#define TK3_GE 92
-#define TK3_ESCAPE 93
-#define TK3_BITAND 94
-#define TK3_BITOR 95
-#define TK3_LSHIFT 96
-#define TK3_RSHIFT 97
-#define TK3_PLUS 98
-#define TK3_MINUS 99
-#define TK3_STAR 100
-#define TK3_SLASH 101
-#define TK3_REM 102
-#define TK3_CONCAT 103
-#define TK3_COLLATE 104
-#define TK3_BITNOT 105
-#define TK3_SEMI 106
-#define TK3_TRANSACTION 107
-#define TK3_ID_TRANS 108
-#define TK3_COMMIT 109
-#define TK3_TO 110
-#define TK3_CREATE 111
-#define TK3_TABLE 112
-#define TK3_LP 113
-#define TK3_RP 114
-#define TK3_AS 115
-#define TK3_DOT 116
-#define TK3_ID_TAB_NEW 117
-#define TK3_ID_DB 118
-#define TK3_CTX_ROWID_KW 119
-#define TK3_EXISTS 120
-#define TK3_COMMA 121
-#define TK3_ID_COL_NEW 122
-#define TK3_STRING 123
-#define TK3_JOIN_KW 124
-#define TK3_ID_COL_TYPE 125
-#define TK3_RIGHT_ASSOC 126
-#define TK3_CONSTRAINT 127
-#define TK3_DEFAULT 128
-#define TK3_NULL 129
-#define TK3_PRIMARY 130
-#define TK3_UNIQUE 131
-#define TK3_CHECK 132
-#define TK3_REFERENCES 133
-#define TK3_ID_CONSTR 134
-#define TK3_ID_COLLATE 135
-#define TK3_ID_TAB 136
-#define TK3_INTEGER 137
-#define TK3_FLOAT 138
-#define TK3_BLOB 139
-#define TK3_AUTOINCR 140
-#define TK3_ON 141
-#define TK3_INSERT 142
-#define TK3_DELETE 143
-#define TK3_UPDATE 144
-#define TK3_ID_FK_MATCH 145
-#define TK3_SET 146
-#define TK3_DEFERRABLE 147
-#define TK3_FOREIGN 148
-#define TK3_DROP 149
-#define TK3_ID_VIEW_NEW 150
-#define TK3_ID_VIEW 151
-#define TK3_SELECT 152
-#define TK3_VALUES 153
-#define TK3_UNION 154
-#define TK3_ALL 155
-#define TK3_EXCEPT 156
-#define TK3_INTERSECT 157
-#define TK3_DISTINCT 158
-#define TK3_ID_ALIAS 159
-#define TK3_FROM 160
-#define TK3_USING 161
-#define TK3_JOIN 162
-#define TK3_ID_JOIN_OPTS 163
-#define TK3_ID_IDX 164
-#define TK3_ORDER 165
-#define TK3_GROUP 166
-#define TK3_HAVING 167
-#define TK3_LIMIT 168
-#define TK3_WHERE 169
-#define TK3_ID_COL 170
-#define TK3_INTO 171
-#define TK3_NOTHING 172
-#define TK3_ID_FN 173
-#define TK3_ID_ERR_MSG 174
-#define TK3_VARIABLE 175
-#define TK3_CASE 176
-#define TK3_WHEN 177
-#define TK3_THEN 178
-#define TK3_ELSE 179
-#define TK3_INDEX 180
-#define TK3_ID_IDX_NEW 181
-#define TK3_ID_PRAGMA 182
-#define TK3_ID_TRIG_NEW 183
-#define TK3_ID_TRIG 184
-#define TK3_ALTER 185
-#define TK3_ADD 186
-#define TK3_WINDOW 187
-#define TK3_OVER 188
-#define TK3_FILTER 189
+#define TK3_MATERIALIZED 44
+#define TK3_NO 45
+#define TK3_NULLS 46
+#define TK3_OTHERS 47
+#define TK3_PLAN 48
+#define TK3_QUERY 49
+#define TK3_KEY 50
+#define TK3_OF 51
+#define TK3_OFFSET 52
+#define TK3_PARTITION 53
+#define TK3_PRAGMA 54
+#define TK3_PRECEDING 55
+#define TK3_RAISE 56
+#define TK3_RANGE 57
+#define TK3_RECURSIVE 58
+#define TK3_RELEASE 59
+#define TK3_REPLACE 60
+#define TK3_RESTRICT 61
+#define TK3_ROW 62
+#define TK3_ROWS 63
+#define TK3_ROLLBACK 64
+#define TK3_SAVEPOINT 65
+#define TK3_TEMP 66
+#define TK3_TIES 67
+#define TK3_TRIGGER 68
+#define TK3_UNBOUNDED 69
+#define TK3_VACUUM 70
+#define TK3_VIEW 71
+#define TK3_VIRTUAL 72
+#define TK3_WITH 73
+#define TK3_WITHOUT 74
+#define TK3_REINDEX 75
+#define TK3_RENAME 76
+#define TK3_CTIME_KW 77
+#define TK3_IF 78
+#define TK3_FILTER 79
+#define TK3_ANY 80
+#define TK3_OR 81
+#define TK3_AND 82
+#define TK3_NOT 83
+#define TK3_IS 84
+#define TK3_BETWEEN 85
+#define TK3_IN 86
+#define TK3_ISNULL 87
+#define TK3_NOTNULL 88
+#define TK3_NE 89
+#define TK3_EQ 90
+#define TK3_GT 91
+#define TK3_LE 92
+#define TK3_LT 93
+#define TK3_GE 94
+#define TK3_ESCAPE 95
+#define TK3_BITAND 96
+#define TK3_BITOR 97
+#define TK3_LSHIFT 98
+#define TK3_RSHIFT 99
+#define TK3_PLUS 100
+#define TK3_MINUS 101
+#define TK3_STAR 102
+#define TK3_SLASH 103
+#define TK3_REM 104
+#define TK3_CONCAT 105
+#define TK3_PTR 106
+#define TK3_COLLATE 107
+#define TK3_BITNOT 108
+#define TK3_SEMI 109
+#define TK3_TRANSACTION 110
+#define TK3_ID_TRANS 111
+#define TK3_COMMIT 112
+#define TK3_TO 113
+#define TK3_CREATE 114
+#define TK3_TABLE 115
+#define TK3_LP 116
+#define TK3_RP 117
+#define TK3_AS 118
+#define TK3_DOT 119
+#define TK3_ID_TAB_NEW 120
+#define TK3_ID_DB 121
+#define TK3_COMMA 122
+#define TK3_CTX_ROWID_KW 123
+#define TK3_CTX_STRICT_KW 124
+#define TK3_EXISTS 125
+#define TK3_ID_COL_NEW 126
+#define TK3_STRING 127
+#define TK3_JOIN_KW 128
+#define TK3_ID_COL_TYPE 129
+#define TK3_RIGHT_ASSOC 130
+#define TK3_CONSTRAINT 131
+#define TK3_DEFAULT 132
+#define TK3_NULL 133
+#define TK3_PRIMARY 134
+#define TK3_UNIQUE 135
+#define TK3_CHECK 136
+#define TK3_REFERENCES 137
+#define TK3_ID_CONSTR 138
+#define TK3_ID_COLLATE 139
+#define TK3_ID_TAB 140
+#define TK3_INTEGER 141
+#define TK3_FLOAT 142
+#define TK3_BLOB 143
+#define TK3_AUTOINCR 144
+#define TK3_ON 145
+#define TK3_INSERT 146
+#define TK3_DELETE 147
+#define TK3_UPDATE 148
+#define TK3_ID_FK_MATCH 149
+#define TK3_SET 150
+#define TK3_DEFERRABLE 151
+#define TK3_FOREIGN 152
+#define TK3_DROP 153
+#define TK3_ID_VIEW_NEW 154
+#define TK3_ID_VIEW 155
+#define TK3_SELECT 156
+#define TK3_VALUES 157
+#define TK3_UNION 158
+#define TK3_ALL 159
+#define TK3_EXCEPT 160
+#define TK3_INTERSECT 161
+#define TK3_DISTINCT 162
+#define TK3_ID_ALIAS 163
+#define TK3_FROM 164
+#define TK3_USING 165
+#define TK3_JOIN 166
+#define TK3_ID_JOIN_OPTS 167
+#define TK3_ID_IDX 168
+#define TK3_ORDER 169
+#define TK3_GROUP 170
+#define TK3_HAVING 171
+#define TK3_LIMIT 172
+#define TK3_WHERE 173
+#define TK3_RETURNING 174
+#define TK3_ID_COL 175
+#define TK3_INTO 176
+#define TK3_NOTHING 177
+#define TK3_ID_FN 178
+#define TK3_ID_ERR_MSG 179
+#define TK3_VARIABLE 180
+#define TK3_CASE 181
+#define TK3_WHEN 182
+#define TK3_THEN 183
+#define TK3_ELSE 184
+#define TK3_INDEX 185
+#define TK3_ID_IDX_NEW 186
+#define TK3_ID_PRAGMA 187
+#define TK3_ID_TRIG_NEW 188
+#define TK3_ID_TRIG 189
+#define TK3_ALTER 190
+#define TK3_ADD 191
+#define TK3_WINDOW 192
+#define TK3_OVER 193
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
index 1510c49..4b1dda4 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
@@ -27,7 +27,6 @@
#include "parser/ast/sqliteattach.h"
#include "parser/ast/sqlitebegintrans.h"
#include "parser/ast/sqlitecommittrans.h"
-#include "parser/ast/sqlitecopy.h"
#include "parser/ast/sqlitecreateindex.h"
#include "parser/ast/sqlitecreatetable.h"
#include "parser/ast/sqlitecreatetrigger.h"
@@ -67,6 +66,13 @@
#define assert(X) Q_ASSERT(X)
#define UNUSED_PARAMETER(X) (void)(X)
#define DONT_INHERIT_TOKENS(X) noTokenInheritanceFields << X
+
+}
+
+%code {
+int sqlite3ParserFallback(int iToken) {
+ return yyFallback[iToken];
+}
}
// These are extra tokens used by the lexer but never seen by the
@@ -84,10 +90,10 @@
%fallback ID
ABORT ACTION AFTER ALWAYS ANALYZE ASC ATTACH BEFORE BEGIN BY CASCADE CAST COLUMNKW
CONFLICT CURRENT DATABASE DEFERRED DESC DETACH DO EACH END EXCLUDE EXCLUSIVE EXPLAIN FAIL FIRST FOLLOWING FOR
- GENERATED GROUPS IGNORE IMMEDIATE INDEXED INITIALLY INSTEAD LAST LIKE_KW MATCH NO NULLS OTHERS PLAN
+ GENERATED GROUPS IGNORE IMMEDIATE INDEXED INITIALLY INSTEAD LAST LIKE_KW MATCH MATERIALIZED NO NULLS OTHERS PLAN
QUERY KEY OF OFFSET PARTITION PRAGMA PRECEDING RAISE RANGE RECURSIVE RELEASE REPLACE RESTRICT ROW ROWS ROLLBACK
SAVEPOINT TEMP TIES TRIGGER UNBOUNDED VACUUM VIEW VIRTUAL WITH WITHOUT
- REINDEX RENAME CTIME_KW IF
+ REINDEX RENAME CTIME_KW IF FILTER
.
%wildcard ANY.
@@ -110,7 +116,7 @@
%left BITAND BITOR LSHIFT RSHIFT.
%left PLUS MINUS.
%left STAR SLASH REM.
-%left CONCAT.
+%left CONCAT PTR.
%left COLLATE.
%right BITNOT.
@@ -252,7 +258,7 @@ cmd(X) ::= CREATE temp(T) TABLE
ifnotexists(E) fullname(N)
LP columnlist(CL)
conslist_opt(CS) RP
- table_options(F). {
+ table_options(O). {
X = new SqliteCreateTable(
*(E),
*(T),
@@ -260,14 +266,14 @@ cmd(X) ::= CREATE temp(T) TABLE
N->name2,
*(CL),
*(CS),
- *(F)
+ *(O)
);
delete E;
delete T;
delete CL;
delete CS;
delete N;
- delete F;
+ delete O;
objectForTokens = X;
}
cmd(X) ::= CREATE temp(T) TABLE
@@ -290,16 +296,38 @@ cmd ::= CREATE temp TABLE ifnotexists
cmd ::= CREATE temp TABLE ifnotexists
ID_DB|ID_TAB_NEW. {}
-%type table_options {QString*}
+%type table_options {ParserCreateTableOptionList*}
%destructor table_options {parser_safe_delete($$);}
-table_options(X) ::= . {X = new QString();}
-table_options(X) ::= WITHOUT nm(N). {
+table_options(X) ::= . {X = new ParserCreateTableOptionList();}
+table_options(X) ::= table_option(O). {
+ X = new ParserCreateTableOptionList();
+ X->append(O);
+ }
+table_options(X) ::= table_options(L) COMMA
+ table_option(O). {
+ L->append(O);
+ X = L;
+ DONT_INHERIT_TOKENS("table_options");
+ }
+
+%type table_option {ParserStubCreateTableOption*}
+%destructor table_option {parser_safe_delete($$);}
+table_option(X) ::= WITHOUT nm(N). {
if (N->toLower() != "rowid")
parserContext->errorAtToken(QString("Invalid table option: %1").arg(*(N)));
- X = N;
+ X = new ParserStubCreateTableOption(ParserStubCreateTableOption::WITHOUT_ROWID);
+ delete N;
+ }
+table_option(X) ::= nm(N). {
+ if (N->toLower() != "strict")
+ parserContext->errorAtToken(QString("Invalid table option: %1").arg(*(N)));
+
+ X = new ParserStubCreateTableOption(ParserStubCreateTableOption::STRICT);
+ delete N;
}
-table_options ::= WITHOUT CTX_ROWID_KW. {}
+table_option ::= WITHOUT CTX_ROWID_KW. {}
+table_option ::= CTX_STRICT_KW. {}
%type ifnotexists {bool*}
%destructor ifnotexists {parser_safe_delete($$);}
@@ -568,7 +596,12 @@ ccons(X) ::= CHECK LP RP. {
term(X) ::= NULL. {X = new QVariant();}
term(X) ::= INTEGER(N). {X = parserContext->handleNumberToken(N->value);}
term(X) ::= FLOAT(N). {X = new QVariant(QVariant(N->value).toDouble());}
-term(X) ::= STRING|BLOB(S). {X = new QVariant(stripString(S->value));}
+term(X) ::= STRING|BLOB(S). {
+ if (S->value.length() >= 3 && S->value.startsWith("x'", Qt::CaseInsensitive))
+ X = new QVariant(blobFromLiteral(S->value));
+ else
+ X = new QVariant(stripString(S->value));
+ }
// Term Literal or Name. String falls under Term, but can be falled back to Name if necessary in the context.
// On the other hand - if name is ID, it cannot be falled back to Term, as ID is never a Literal value.
@@ -1277,7 +1310,8 @@ cmd(X) ::= delete_stmt(S). {
delete_stmt(X) ::= with(WI) DELETE FROM
fullname(N)
indexed_opt(I)
- where_opt(W). {
+ where_opt(W)
+ returning(R). {
if (I)
{
if (!I->indexedBy.isNull())
@@ -1287,7 +1321,8 @@ delete_stmt(X) ::= with(WI) DELETE FROM
N->name2,
I->indexedBy,
W,
- WI
+ WI,
+ *(R)
);
}
else
@@ -1297,7 +1332,8 @@ delete_stmt(X) ::= with(WI) DELETE FROM
N->name2,
I->notIndexedKw,
W,
- WI
+ WI,
+ *(R)
);
}
delete I;
@@ -1309,10 +1345,12 @@ delete_stmt(X) ::= with(WI) DELETE FROM
N->name2,
false,
W,
- WI
+ WI,
+ *(R)
);
}
delete N;
+ delete R;
// since it's used in trigger:
objectForTokens = X;
}
@@ -1349,6 +1387,11 @@ where_opt(X) ::= WHERE. {
X = new SqliteExpr();
}
+%type returning {ParserResultColumnList*}
+%destructor returning {parser_safe_delete($$);}
+returning(X) ::= . {X = new ParserResultColumnList();}
+returning(X) ::= RETURNING selcollist(L). {X = L;}
+
////////////////////////// The UPDATE command ////////////////////////////////
cmd(X) ::= update_stmt(S). {
@@ -1361,7 +1404,7 @@ cmd(X) ::= update_stmt(S). {
update_stmt(X) ::= with(WI) UPDATE orconf(C)
fullname(N) indexed_opt(I) SET
setlist(L) from(F)
- where_opt(W). {
+ where_opt(W) returning(R). {
X = new SqliteUpdate(
*(C),
N->name1,
@@ -1371,11 +1414,13 @@ update_stmt(X) ::= with(WI) UPDATE orconf(C)
*(L),
F,
W,
- WI
+ WI,
+ *(R)
);
delete C;
delete N;
delete L;
+ delete R;
if (I)
delete I;
// since it's used in trigger:
@@ -1481,7 +1526,7 @@ cmd(X) ::= insert_stmt(S). {
insert_stmt(X) ::= with(W) insert_cmd(C)
INTO fullname(N)
idlist_opt(I) select(S)
- upsert(U). {
+ upsert(U) returning(R). {
X = new SqliteInsert(
C->replace,
C->orConflict,
@@ -1490,29 +1535,33 @@ insert_stmt(X) ::= with(W) insert_cmd(C)
*(I),
S,
W,
- U
+ U,
+ *(R)
);
delete N;
delete C;
delete I;
+ delete R;
// since it's used in trigger:
objectForTokens = X;
}
insert_stmt(X) ::= with(W) insert_cmd(C)
INTO fullname(N)
idlist_opt(I) DEFAULT
- VALUES. {
+ VALUES returning(R). {
X = new SqliteInsert(
C->replace,
C->orConflict,
N->name1,
N->name2,
*(I),
- W
+ W,
+ *(R)
);
delete N;
delete C;
delete I;
+ delete R;
// since it's used in trigger:
objectForTokens = X;
}
@@ -1564,8 +1613,7 @@ upsert(X) ::= . {
upsert(X) ::= ON CONFLICT LP sortlist(C) RP
where_opt(CW)
DO UPDATE SET setlist(S)
- where_opt(SW).
- {
+ where_opt(SW). {
X = new SqliteUpsert(*(C), CW, *(S), SW);
delete C;
delete S;
@@ -1591,8 +1639,8 @@ exprx ::= expr not_opt IN ID_DB. [IN] {}
exprx ::= expr not_opt IN nm DOT
ID_TAB. [IN] {}
exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN. {}
-exprx ::= tnm DOT ID_TAB|ID_COL. {}
-exprx ::= tnm DOT nm DOT ID_COL. {}
+exprx ::= tnm DOT ID_TAB|ID_COL. {}
+exprx ::= tnm DOT nm DOT ID_COL. {}
exprx ::= expr COLLATE ID_COLLATE. {}
exprx ::= RAISE LP raisetype COMMA
ID_ERR_MSG RP. {}
@@ -1631,6 +1679,19 @@ exprx(X) ::= tnm(N1) DOT nm(N2). {
delete N2;
objectForTokens = X;
}
+exprx(X) ::= tnm(N1) DOT. {
+ X = new SqliteExpr();
+ objectForTokens = X;
+ if (N1->isName())
+ {
+ X->initId(N1->toName(), QString());
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
+ }
+ else
+ parserContext->errorAtToken("Syntax error <expected name>", -3);
+
+ delete N1;
+ }
exprx(X) ::= tnm(N1) DOT nm(N2) DOT nm(N3). {
X = new SqliteExpr();
if (N1->isName())
@@ -1643,6 +1704,20 @@ exprx(X) ::= tnm(N1) DOT nm(N2) DOT nm(N3). {
delete N3;
objectForTokens = X;
}
+exprx(X) ::= tnm(N1) DOT nm(N2) DOT. {
+ X = new SqliteExpr();
+ objectForTokens = X;
+ if (N1->isName())
+ {
+ X->initId(N1->toName(), *(N2), QString());
+ parserContext->minorErrorAfterLastToken("Syntax error <expr>");
+ }
+ else
+ parserContext->errorAtToken("Syntax error <expected name>", -5);
+
+ delete N1;
+ delete N2;
+ }
exprx(X) ::= VARIABLE(V). {
X = new SqliteExpr();
X->initBindParam(V->value);
@@ -1663,14 +1738,14 @@ exprx(X) ::= CAST LP expr(E) AS typetoken(T)
exprx(X) ::= ID(I) LP distinct(D)
exprlist(L) RP. {
X = new SqliteExpr();
- X->initFunction(I->value, *(D), *(L));
+ X->initFunction(stripObjName(I->value), *(D), *(L));
delete D;
delete L;
objectForTokens = X;
}
exprx(X) ::= ID(I) LP STAR RP. {
X = new SqliteExpr();
- X->initFunction(I->value, true);
+ X->initFunction(stripObjName(I->value), true);
objectForTokens = X;
}
exprx(X) ::= expr(E1) AND(O) expr(E2). {
@@ -1752,6 +1827,18 @@ exprx(X) ::= expr(E1) IS not_opt(N)
delete N;
objectForTokens = X;
}
+exprx(X) ::= expr(E1) IS NOT DISTINCT FROM
+ expr(E2). {
+ X = new SqliteExpr();
+ X->initDistinct(E1, true, E2);
+ objectForTokens = X;
+ }
+exprx(X) ::= expr(E1) IS DISTINCT FROM
+ expr(E2). {
+ X = new SqliteExpr();
+ X->initDistinct(E1, false, E2);
+ objectForTokens = X;
+ }
exprx(X) ::= NOT(O) expr(E). {
X = new SqliteExpr();
X->initUnaryOp(E, O->value);
@@ -1781,6 +1868,11 @@ exprx(X) ::= PLUS(O) expr(E). [BITNOT] {
X->initUnaryOp(E, O->value);
objectForTokens = X;
}
+exprx(X) ::= expr(E1) PTR(O) expr(E2). {
+ X = new SqliteExpr();
+ X->initPtrOp(E1, O->value, E2);
+ objectForTokens = X;
+ }
exprx(X) ::= expr(E1) not_opt(N) BETWEEN
expr(E2) AND
expr(E3). [BETWEEN] {
@@ -1846,7 +1938,7 @@ exprx(X) ::= RAISE LP raisetype(R) COMMA
exprx(X) ::= ID(I) LP distinct(D)
exprlist(E) RP filter_over(F). {
X = new SqliteExpr();
- X->initWindowFunction(I->value, *(D), *(E), F);
+ X->initWindowFunction(stripObjName(I->value), *(D), *(E), F);
delete D;
delete E;
objectForTokens = X;
@@ -1854,7 +1946,7 @@ exprx(X) ::= ID(I) LP distinct(D)
exprx(X) ::= ID(I) LP STAR RP
filter_over(F). {
X = new SqliteExpr();
- X->initWindowFunction(I->value, F);
+ X->initWindowFunction(stripObjName(I->value), F);
objectForTokens = X;
}
@@ -2378,6 +2470,18 @@ cmd(X) ::= ALTER TABLE fullname(FN) ADD
delete FN;
objectForTokens = X;
}
+cmd(X) ::= ALTER TABLE fullname(FN) DROP
+ kwcolumn_opt(K) nm(N). {
+ X = new SqliteAlterTable(
+ FN->name1,
+ FN->name2,
+ *(K),
+ *(N)
+ );
+ delete K;
+ delete FN;
+ delete N;
+ }
cmd ::= ALTER TABLE fullname RENAME TO
ID_TAB_NEW. {}
@@ -2508,6 +2612,12 @@ with(X) ::= WITH RECURSIVE wqlist(W). {
objectForTokens = X;
}
+%type wqas {SqliteWith::CommonTableExpression::AsMode*}
+%destructor wqas {parser_safe_delete($$);}
+wqas(X) ::= AS. {X = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::ANY);}
+wqas(X) ::= AS MATERIALIZED. {X = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::MATERIALIZED);}
+wqas(X) ::= AS NOT MATERIALIZED. {X = new SqliteWith::CommonTableExpression::AsMode(SqliteWith::CommonTableExpression::NOT_MATERIALIZED);}
+
%type wqlist {ParserCteList*}
%destructor wqlist {parser_safe_delete($$);}
@@ -2527,11 +2637,12 @@ wqlist ::= ID_TAB_NEW. {
%type wqcte {SqliteWith::CommonTableExpression*}
%destructor wqcte {parser_safe_delete($$);}
-wqcte(X) ::= nm(N) idxlist_opt(IL) AS
+wqcte(X) ::= nm(N) idxlist_opt(IL) wqas(A)
LP select(S) RP. {
- X = new SqliteWith::CommonTableExpression(*(N), *(IL), S);
+ X = new SqliteWith::CommonTableExpression(*(N), *(IL), S, *(A));
delete N;
delete IL;
+ delete A;
objectForTokens = X;
}
@@ -2764,4 +2875,4 @@ filter_clause(X) ::= FILTER LP WHERE
expr(E) RP. {
X = new SqliteFilterOver::Filter(E);
objectForTokens = X;
- }
+ }
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
index faf8c8e..abe2578 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
@@ -1,6 +1,7 @@
#include "statementtokenbuilder.h"
#include "parser/ast/sqlitestatement.h"
#include "common/utils_sql.h"
+#include "common/global.h"
#include <QVariant>
StatementTokenBuilder& StatementTokenBuilder::withKeyword(const QString& value)
@@ -23,7 +24,7 @@ StatementTokenBuilder&StatementTokenBuilder::withStringPossiblyOther(const QStri
if (value.contains("\""))
return withOther(wrapObjIfNeeded(value));
else
- return withOther(wrapObjName(value, NameWrapper::DOUBLE_QUOTE));
+ return withOther(wrapObjName(value, NameWrapper::DOUBLE_QUOTE), false);
}
StatementTokenBuilder& StatementTokenBuilder::withOtherList(const QList<QString>& value, const QString& separator)
@@ -91,7 +92,7 @@ StatementTokenBuilder& StatementTokenBuilder::withBlob(const QString& value)
StatementTokenBuilder& StatementTokenBuilder::withString(const QString& value)
{
- return with(Token::STRING, wrapStringIfNeeded(value));
+ return with(Token::STRING, wrapString(value));
}
StatementTokenBuilder& StatementTokenBuilder::withConflict(SqliteConflictAlgo onConflict)
@@ -145,6 +146,13 @@ StatementTokenBuilder& StatementTokenBuilder::withLiteralValue(const QVariant& v
return *this;
}
+ if (value.userType() == QVariant::ByteArray)
+ {
+ static_qstring(blobLiteral, "X'%1'");
+ withBlob(blobLiteral.arg(QString::fromLatin1(value.toByteArray().toHex())));
+ return *this;
+ }
+
bool ok;
if (value.userType() == QVariant::Double)
{
@@ -163,14 +171,7 @@ StatementTokenBuilder& StatementTokenBuilder::withLiteralValue(const QVariant& v
return *this;
}
- QString str = value.toString();
- if (str.startsWith("x'", Qt::CaseInsensitive) && str.endsWith("'"))
- {
- withBlob(str);
- return *this;
- }
-
- withString(str);
+ withString(value.toString());
return *this;
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
index 41980b4..84f2023 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
@@ -58,6 +58,8 @@ const QString Token::typeToString(Token::Type type)
{
case Token::CTX_ROWID_KW:
return "CTX_ROWID_KW";
+ case Token::CTX_STRICT_KW:
+ return "CTX_STRICT_KW";
case Token::CTX_NEW_KW:
return "CTX_NEW_KW";
case Token::CTX_OLD_KW:
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.h b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
index 1088d9e..d977963 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
@@ -101,7 +101,8 @@ struct API_EXPORT Token
CTX_ROWID_KW = 0x0034, /**< ROWID keywords is valid at this token position (see isRowIdKeyword()). */
CTX_NEW_KW = 0x0035, /**< The <tt>NEW</tt> keyword is valid at this token position. */
CTX_OLD_KW = 0x0036, /**< The <tt>OLD</tt> keyword is valid at this token position. */
- CTX_ERROR_MESSAGE = 0x0037 /**< Error message string is valid at this token position. */
+ CTX_ERROR_MESSAGE = 0x0037, /**< Error message string is valid at this token position. */
+ CTX_STRICT_KW = 0x0038, /**< STRICT keyword is valid at this token position. */
};
/**