summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2016-06-13 18:42:42 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2016-06-13 18:42:42 -0400
commit5d9314f134ddd3dc4c853e398ac90ba247fb2e4f (patch)
tree5c457fc188036988d7abd29a3eb09931e406510f /SQLiteStudio3/coreSQLiteStudio/parser
parent8e640722c62692818ab840d50b3758f89a41a54e (diff)
Imported Upstream version 3.1.0upstream/3.1.0
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp55
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h13
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp22
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp10
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp29
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h9
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h16
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteextendedindexedcolumn.h19
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.cpp27
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.h8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp82
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.h12
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitetablerelatedddl.h1
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp3
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp33
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lexer.h9
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp969
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y7
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp2
22 files changed, 834 insertions, 512 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
index 16cec8f..fdbadf8 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp
@@ -14,11 +14,10 @@ SqliteCreateIndex::SqliteCreateIndex(const SqliteCreateIndex& other) :
SqliteQuery(other), uniqueKw(other.uniqueKw), ifNotExistsKw(other.ifNotExistsKw), database(other.database), index(other.index),
table(other.table)
{
- DEEP_COPY_COLLECTION(SqliteIndexedColumn, indexedColumns);
+ DEEP_COPY_COLLECTION(SqliteOrderBy, indexedColumns);
}
-SqliteCreateIndex::SqliteCreateIndex(bool unique, bool ifNotExists, const QString &name1, const QString &name2, const QString &name3,
- const QList<SqliteIndexedColumn *> &columns, SqliteConflictAlgo onConflict)
+SqliteCreateIndex::SqliteCreateIndex(bool unique, bool ifNotExists, const QString& name1, const QString& name2, const QString& name3, const QList<SqliteIndexedColumn*>& columns, SqliteConflictAlgo onConflict)
: SqliteCreateIndex()
{
// Constructor for SQLite 2
@@ -36,14 +35,11 @@ SqliteCreateIndex::SqliteCreateIndex(bool unique, bool ifNotExists, const QStrin
table = name2;
this->onConflict = onConflict;
- this->indexedColumns = columns;
-
- foreach (SqliteIndexedColumn* idxCol, columns)
- idxCol->setParent(this);
+ this->indexedColumns = toOrderColumns(columns);
}
SqliteCreateIndex::SqliteCreateIndex(bool unique, bool ifNotExists, const QString& name1, const QString& name2, const QString& name3,
- const QList<SqliteIndexedColumn*>& columns, SqliteExpr* where)
+ const QList<SqliteOrderBy*>& columns, SqliteExpr* where)
: SqliteCreateIndex()
{
// Constructor for SQLite 3
@@ -61,7 +57,7 @@ SqliteCreateIndex::SqliteCreateIndex(bool unique, bool ifNotExists, const QStrin
table = name3;
this->indexedColumns = columns;
- foreach (SqliteIndexedColumn* idxCol, columns)
+ foreach (SqliteOrderBy* idxCol, columns)
idxCol->setParent(this);
this->where = where;
@@ -189,3 +185,44 @@ TokenList SqliteCreateIndex::rebuildTokensFromContents()
return builder.build();
}
+
+QList<SqliteOrderBy*> SqliteCreateIndex::toOrderColumns(const QList<SqliteIndexedColumn*>& columns)
+{
+ QList<SqliteOrderBy*> result;
+ SqliteOrderBy* orderBy = nullptr;
+ SqliteExpr* expr = nullptr;
+ for (SqliteIndexedColumn* idxCol : columns)
+ {
+ orderBy = new SqliteOrderBy();
+ orderBy->setParent(this);
+ orderBy->expr = new SqliteExpr();
+ orderBy->expr->setParent(orderBy);
+
+ if (!idxCol->collate.isNull())
+ {
+ expr = new SqliteExpr();
+ expr->initId(idxCol->name);
+ expr->setParent(orderBy->expr);
+
+ orderBy->expr->initCollate(expr, idxCol->collate);
+ }
+ else
+ {
+ orderBy->expr->initId(idxCol->name);
+ }
+
+ result << orderBy;
+ delete idxCol;
+ }
+ return result;
+}
+
+QString SqliteCreateIndex::getTargetDatabase() const
+{
+ return database;
+}
+
+void SqliteCreateIndex::setTargetDatabase(const QString& database)
+{
+ this->database = database;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
index 9251b18..033a663 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.h
@@ -5,12 +5,14 @@
#include "sqlitetablerelatedddl.h"
#include "sqliteconflictalgo.h"
#include "sqliteexpr.h"
+#include "sqliteddlwithdbcontext.h"
+#include "sqliteorderby.h"
#include <QString>
#include <QList>
class SqliteIndexedColumn;
-class API_EXPORT SqliteCreateIndex : public SqliteQuery, public SqliteTableRelatedDdl
+class API_EXPORT SqliteCreateIndex : public SqliteQuery, public SqliteTableRelatedDdl, public SqliteDdlWithDbContext
{
public:
SqliteCreateIndex();
@@ -19,16 +21,18 @@ class API_EXPORT SqliteCreateIndex : public SqliteQuery, public SqliteTableRelat
const QString& name3, const QList<SqliteIndexedColumn*>& columns,
SqliteConflictAlgo onConflict = SqliteConflictAlgo::null);
SqliteCreateIndex(bool unique, bool ifNotExists, const QString& name1, const QString& name2,
- const QString& name3, const QList<SqliteIndexedColumn*>& columns,
+ const QString& name3, const QList<SqliteOrderBy*>& columns,
SqliteExpr* where);
~SqliteCreateIndex();
SqliteStatement* clone();
QString getTargetTable() const;
+ QString getTargetDatabase() const;
+ void setTargetDatabase(const QString& database);
bool uniqueKw = false;
bool ifNotExistsKw = false;
- QList<SqliteIndexedColumn*> indexedColumns;
+ QList<SqliteOrderBy*> indexedColumns;
// The database refers to index name in Sqlite3, but in Sqlite2 it refers to the table.
QString database = QString::null;
QString index = QString::null;
@@ -43,6 +47,9 @@ class API_EXPORT SqliteCreateIndex : public SqliteQuery, public SqliteTableRelat
TokenList getDatabaseTokensInStatement();
QList<FullObject> getFullObjectsInStatement();
TokenList rebuildTokensFromContents();
+
+ private:
+ QList<SqliteOrderBy*> toOrderColumns(const QList<SqliteIndexedColumn*>& columns);
};
typedef QSharedPointer<SqliteCreateIndex> SqliteCreateIndexPtr;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
index d21578e..2ac6c04 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp
@@ -669,13 +669,23 @@ bool SqliteCreateTable::Column::hasConstraint(SqliteCreateTable::Column::Constra
SqliteCreateTable::Column::Constraint* SqliteCreateTable::Column::getConstraint(SqliteCreateTable::Column::Constraint::Type type) const
{
- foreach (Constraint* constr, constraints)
+ for (Constraint* constr : constraints)
if (constr->type == type)
return constr;
return nullptr;
}
+QList<SqliteCreateTable::Column::Constraint*> SqliteCreateTable::Column::getConstraints(SqliteCreateTable::Column::Constraint::Type type) const
+{
+ QList<Constraint*> list;
+ for (Constraint* constr : constraints)
+ if (constr->type == type)
+ list << constr;
+
+ return list;
+}
+
QList<SqliteCreateTable::Column::Constraint*> SqliteCreateTable::Column::getForeignKeysByTable(const QString& foreignTable) const
{
QList<Constraint*> results;
@@ -768,3 +778,13 @@ TokenList SqliteCreateTable::Column::Constraint::rebuildTokensFromContents()
return builder.build();
}
+
+QString SqliteCreateTable::getTargetDatabase() const
+{
+ return database;
+}
+
+void SqliteCreateTable::setTargetDatabase(const QString& database)
+{
+ this->database = database;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
index 877d0fa..74f4fce 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.h
@@ -10,10 +10,11 @@
#include "sqlitecolumntype.h"
#include "sqlitesortorder.h"
#include "sqlitedeferrable.h"
+#include "sqliteddlwithdbcontext.h"
#include <QVariant>
#include <QList>
-class API_EXPORT SqliteCreateTable : public SqliteQuery
+class API_EXPORT SqliteCreateTable : public SqliteQuery, public SqliteDdlWithDbContext
{
public:
class API_EXPORT Column : public SqliteStatement
@@ -93,6 +94,7 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery
bool hasConstraint(Constraint::Type type) const;
Constraint* getConstraint(Constraint::Type type) const;
+ QList<Constraint*> getConstraints(Constraint::Type type) const;
QList<Constraint*> getForeignKeysByTable(const QString& foreignTable) const;
QString name = QString::null;
@@ -181,6 +183,8 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery
QList<Column::Constraint*> getColumnForeignKeysByTable(const QString& foreignTable) const;
QStringList getColumnNames() const;
QHash<QString,QString> getModifiedColumnsMap(bool lowercaseKeys = false, Qt::CaseSensitivity cs = Qt::CaseInsensitive) const;
+ QString getTargetDatabase() const;
+ void setTargetDatabase(const QString& database);
bool ifNotExistsKw = false;
bool tempKw = false;
@@ -202,7 +206,6 @@ class API_EXPORT SqliteCreateTable : public SqliteQuery
private:
void init(bool ifNotExistsKw, int temp, const QString& name1, const QString& name2);
-
};
typedef QSharedPointer<SqliteCreateTable> SqliteCreateTablePtr;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
index 8f67aea..e15ddd6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp
@@ -379,3 +379,13 @@ TokenList SqliteCreateTrigger::rebuildTokensFromContents()
return builder.build();
}
+
+QString SqliteCreateTrigger::getTargetDatabase() const
+{
+ return database;
+}
+
+void SqliteCreateTrigger::setTargetDatabase(const QString& database)
+{
+ this->database = database;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
index 2fb8ae4..2ccf876 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.h
@@ -1,6 +1,7 @@
#ifndef SQLITECREATETRIGGER_H
#define SQLITECREATETRIGGER_H
+#include "sqliteddlwithdbcontext.h"
#include "sqlitequery.h"
#include "sqlitetablerelatedddl.h"
@@ -9,7 +10,7 @@
class SqliteExpr;
-class API_EXPORT SqliteCreateTrigger : public SqliteQuery, public SqliteTableRelatedDdl
+class API_EXPORT SqliteCreateTrigger : public SqliteQuery, public SqliteTableRelatedDdl, public SqliteDdlWithDbContext
{
public:
enum class Time
@@ -63,6 +64,8 @@ class API_EXPORT SqliteCreateTrigger : public SqliteQuery, public SqliteTableRel
SqliteStatement* clone();
QString getTargetTable() const;
+ QString getTargetDatabase() const;
+ void setTargetDatabase(const QString& database);
bool tempKw = false;
bool temporaryKw = false;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
index d1a8961..fe638db 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp
@@ -3,6 +3,7 @@
#include "sqlitequerytype.h"
#include "parser/statementtokenbuilder.h"
#include "common/global.h"
+#include "sqliteindexedcolumn.h"
SqliteCreateView::SqliteCreateView()
{
@@ -14,7 +15,7 @@ SqliteCreateView::SqliteCreateView(const SqliteCreateView& other) :
database(other.database), view(other.view)
{
DEEP_COPY_FIELD(SqliteSelect, select);
-
+ DEEP_COPY_COLLECTION(SqliteIndexedColumn, columns);
}
SqliteCreateView::SqliteCreateView(int temp, bool ifNotExists, const QString &name1, const QString &name2, SqliteSelect *select) :
@@ -41,6 +42,15 @@ SqliteCreateView::SqliteCreateView(int temp, bool ifNotExists, const QString &na
select->setParent(this);
}
+SqliteCreateView::SqliteCreateView(int temp, bool ifNotExists, const QString& name1, const QString& name2, SqliteSelect* select, const QList<SqliteIndexedColumn*>& columns)
+ : SqliteCreateView(temp, ifNotExists, name1, name2, select)
+{
+ this->columns = columns;
+
+ for (SqliteIndexedColumn* col : columns)
+ col->setParent(this);
+}
+
SqliteCreateView::~SqliteCreateView()
{
}
@@ -112,9 +122,24 @@ TokenList SqliteCreateView::rebuildTokensFromContents()
if (dialect == Dialect::Sqlite3 && !database.isNull())
builder.withOther(database, dialect).withOperator(".");
- builder.withOther(view, dialect).withSpace().withKeyword("AS").withStatement(select);
+ builder.withOther(view, dialect).withSpace();
+
+ if (columns.size() > 0)
+ builder.withParLeft().withStatementList<SqliteIndexedColumn>(columns).withParRight().withSpace();
+
+ builder.withKeyword("AS").withStatement(select);
builder.withOperator(";");
return builder.build();
}
+
+QString SqliteCreateView::getTargetDatabase() const
+{
+ return database;
+}
+
+void SqliteCreateView::setTargetDatabase(const QString& database)
+{
+ this->database = database;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
index 4858227..1f46d5e 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.h
@@ -1,20 +1,26 @@
#ifndef SQLITECREATEVIEW_H
#define SQLITECREATEVIEW_H
+#include "sqliteddlwithdbcontext.h"
#include "sqlitequery.h"
+#include <QList>
#include <QString>
class SqliteSelect;
+class SqliteIndexedColumn;
-class API_EXPORT SqliteCreateView : public SqliteQuery
+class API_EXPORT SqliteCreateView : public SqliteQuery, public SqliteDdlWithDbContext
{
public:
SqliteCreateView();
SqliteCreateView(const SqliteCreateView& other);
SqliteCreateView(int temp, bool ifNotExists, const QString& name1, const QString& name2, SqliteSelect* select);
+ SqliteCreateView(int temp, bool ifNotExists, const QString& name1, const QString& name2, SqliteSelect* select, const QList<SqliteIndexedColumn*>& columns);
~SqliteCreateView();
SqliteStatement* clone();
+ QString getTargetDatabase() const;
+ void setTargetDatabase(const QString& database);
bool tempKw = false;
bool temporaryKw = false;
@@ -22,6 +28,7 @@ class API_EXPORT SqliteCreateView : public SqliteQuery
QString database = QString::null;
QString view = QString::null;
SqliteSelect* select = nullptr;
+ QList<SqliteIndexedColumn*> columns;
protected:
QStringList getDatabasesInStatement();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h
new file mode 100644
index 0000000..cb64986
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteddlwithdbcontext.h
@@ -0,0 +1,16 @@
+#ifndef SQLITEDDLWITHDBCONTEXT_H
+#define SQLITEDDLWITHDBCONTEXT_H
+
+#include "coreSQLiteStudio_global.h"
+#include <QSharedPointer>
+
+class API_EXPORT SqliteDdlWithDbContext
+{
+ public:
+ virtual QString getTargetDatabase() const = 0;
+ virtual void setTargetDatabase(const QString& database) = 0;
+};
+
+typedef QSharedPointer<SqliteDdlWithDbContext> SqliteDdlWithDbContextPtr;
+
+#endif // SQLITEDDLWITHDBCONTEXT_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
index b84a818..3009b4b 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp
@@ -91,7 +91,7 @@ QString SqliteExpr::notNullOp(SqliteExpr::NotNull value)
}
}
-SqliteStatement*SqliteExpr::clone()
+SqliteStatement* SqliteExpr::clone()
{
return new SqliteExpr(*this);
}
@@ -462,7 +462,11 @@ TokenList SqliteExpr::rebuildTokensFromContents()
if (distinctKw)
builder.withKeyword("DISTINCT");
- builder.withStatementList(exprList).withParRight();
+ if (star)
+ builder.withOperator("*").withParRight();
+ else
+ builder.withStatementList(exprList).withParRight();
+
break;
case SqliteExpr::Mode::SUB_EXPR:
builder.withParLeft().withStatement(expr1).withParRight();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteextendedindexedcolumn.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteextendedindexedcolumn.h
new file mode 100644
index 0000000..1ea6119
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteextendedindexedcolumn.h
@@ -0,0 +1,19 @@
+#ifndef SQLITEEXTENDEDINDEXEDCOLUMN_H
+#define SQLITEEXTENDEDINDEXEDCOLUMN_H
+
+#include "coreSQLiteStudio_global.h"
+#include <QSharedPointer>
+
+class API_EXPORT SqliteExtendedIndexedColumn
+{
+ public:
+ virtual QString getColumnName() const = 0;
+ virtual void setColumnName(const QString& name) = 0;
+ virtual QString getCollation() const = 0;
+ virtual void setCollation(const QString& name) = 0;
+ virtual void clearCollation() = 0;
+};
+
+typedef QSharedPointer<SqliteExtendedIndexedColumn> SqliteExtendedIndexedColumnPtr;
+
+#endif // SQLITEEXTENDEDINDEXEDCOLUMN_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.cpp
index 5e65eab..142af06 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.cpp
@@ -24,11 +24,26 @@ SqliteIndexedColumn::SqliteIndexedColumn(const QString& name)
this->name = name;
}
-SqliteStatement*SqliteIndexedColumn::clone()
+SqliteStatement* SqliteIndexedColumn::clone()
{
return new SqliteIndexedColumn(*this);
}
+QString SqliteIndexedColumn::getColumnName() const
+{
+ return name;
+}
+
+void SqliteIndexedColumn::setColumnName(const QString& name)
+{
+ this->name = name;
+}
+
+void SqliteIndexedColumn::setCollation(const QString& name)
+{
+ this->collate = name;
+}
+
QStringList SqliteIndexedColumn::getColumnsInStatement()
{
return getStrListFromValue(name);
@@ -50,3 +65,13 @@ TokenList SqliteIndexedColumn::rebuildTokensFromContents()
builder.withSortOrder(sortOrder);
return builder.build();
}
+
+QString SqliteIndexedColumn::getCollation() const
+{
+ return collate;
+}
+
+void SqliteIndexedColumn::clearCollation()
+{
+ collate.clear();
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.h
index c013d17..c0fe680 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteindexedcolumn.h
@@ -3,9 +3,10 @@
#include "sqlitestatement.h"
#include "sqlitesortorder.h"
+#include "sqliteextendedindexedcolumn.h"
#include <QString>
-class API_EXPORT SqliteIndexedColumn : public SqliteStatement
+class API_EXPORT SqliteIndexedColumn : public SqliteStatement, public SqliteExtendedIndexedColumn
{
public:
SqliteIndexedColumn();
@@ -14,6 +15,11 @@ class API_EXPORT SqliteIndexedColumn : public SqliteStatement
explicit SqliteIndexedColumn(const QString& name);
SqliteStatement* clone();
+ QString getColumnName() const;
+ void setColumnName(const QString& name);
+ void setCollation(const QString& name);
+ QString getCollation() const;
+ void clearCollation();
QString name = QString::null;
SqliteSortOrder sortOrder = SqliteSortOrder::null;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
index 3bb1b44..8eb7b46 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.cpp
@@ -30,6 +30,76 @@ SqliteStatement*SqliteOrderBy::clone()
return new SqliteOrderBy(*this);
}
+bool SqliteOrderBy::isSimpleColumn() const
+{
+ return !getColumnName().isEmpty();
+}
+
+QString SqliteOrderBy::getColumnName() const
+{
+ if (!expr)
+ return QString();
+
+ if (expr->mode == SqliteExpr::Mode::ID)
+ return expr->column;
+
+ if (expr->mode == SqliteExpr::Mode::COLLATE && expr->expr1 && expr->expr1->mode == SqliteExpr::Mode::ID)
+ return expr->expr1->literalValue.toString();
+
+ return QString();
+}
+
+QString SqliteOrderBy::getCollation() const
+{
+ if (expr->mode == SqliteExpr::Mode::COLLATE)
+ return expr->collation;
+
+ return QString();
+}
+
+QString SqliteOrderBy::getColumnString() const
+{
+ QString res = getColumnName();
+ if (res.isNull())
+ return expr->detokenize();
+
+ return res;
+}
+
+void SqliteOrderBy::setColumnName(const QString& name)
+{
+ if (expr && expr->mode == SqliteExpr::Mode::COLLATE)
+ {
+ safe_delete(expr->expr1);
+ expr->expr1 = new SqliteExpr();
+ expr->expr1->setParent(expr);
+ expr->expr1->initId(name);
+ }
+ else
+ {
+ safe_delete(expr);
+ expr = new SqliteExpr();
+ expr->setParent(this);
+ expr->initId(name);
+ }
+}
+
+void SqliteOrderBy::setCollation(const QString& name)
+{
+ if (expr && expr->mode == SqliteExpr::Mode::COLLATE)
+ {
+ expr->collation = name;
+ }
+ else
+ {
+ SqliteExpr* theExpr = expr;
+ SqliteExpr* collationExpr = new SqliteExpr();
+ collationExpr->initCollate(theExpr, name);
+ theExpr->setParent(collationExpr);
+ collationExpr->setParent(this);
+ }
+}
+
TokenList SqliteOrderBy::rebuildTokensFromContents()
{
StatementTokenBuilder builder;
@@ -39,3 +109,15 @@ TokenList SqliteOrderBy::rebuildTokensFromContents()
return builder.build();
}
+
+
+void SqliteOrderBy::clearCollation()
+{
+ if (expr->mode != SqliteExpr::Mode::COLLATE)
+ return;
+
+ SqliteExpr* tmpExpr = expr;
+ expr = tmpExpr->expr1;
+ expr->setParent(this);
+ delete tmpExpr;
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.h
index 598423d..4f75c78 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteorderby.h
@@ -3,10 +3,11 @@
#include "sqlitestatement.h"
#include "sqlitesortorder.h"
+#include "sqliteextendedindexedcolumn.h"
class SqliteExpr;
-class API_EXPORT SqliteOrderBy : public SqliteStatement
+class API_EXPORT SqliteOrderBy : public SqliteStatement, public SqliteExtendedIndexedColumn
{
public:
SqliteOrderBy();
@@ -15,9 +16,16 @@ class API_EXPORT SqliteOrderBy : public SqliteStatement
~SqliteOrderBy();
SqliteStatement* clone();
+ bool isSimpleColumn() const;
+ QString getColumnName() const;
+ QString getCollation() const;
+ QString getColumnString() const;
+ void setColumnName(const QString& name);
+ void setCollation(const QString& name);
+ void clearCollation();
SqliteExpr* expr = nullptr;
- SqliteSortOrder order;
+ SqliteSortOrder order = SqliteSortOrder::null;
protected:
TokenList rebuildTokensFromContents();
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitetablerelatedddl.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitetablerelatedddl.h
index 599849a..9de9be7 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitetablerelatedddl.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitetablerelatedddl.h
@@ -2,6 +2,7 @@
#define SQLITETABLERELATEDDDL_H
#include "coreSQLiteStudio_global.h"
+#include <QSharedPointer>
class API_EXPORT SqliteTableRelatedDdl
{
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp
index 96ff7a4..9d595ed 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp
@@ -32,6 +32,9 @@ QStringList SqliteVacuum::getDatabasesInStatement()
TokenList SqliteVacuum::getDatabaseTokensInStatement()
{
+ if (!tokensMap.contains("nm"))
+ return TokenList();
+
return getTokenListFromNamedKey("nm");
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
index c85b3ba..6be7528 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.cpp
@@ -3,6 +3,7 @@
#include "lexer_low_lev.h"
#include "sqlite2_parse.h"
#include "sqlite3_parse.h"
+#include "common/utils_sql.h"
#include <QString>
#include <QMultiHash>
#include <QDebug>
@@ -281,11 +282,41 @@ QString Lexer::detokenize(const TokenList& tokens)
QString str;
foreach (TokenPtr token, tokens)
- str += token->value;
+ str += detokenize(token);
return str;
}
+QString Lexer::detokenize(const TokenPtr& token)
+{
+ switch (token->type) {
+ case Token::OTHER:
+ case Token::CTX_ALIAS:
+ case Token::CTX_COLLATION:
+ case Token::CTX_COLUMN:
+ case Token::CTX_COLUMN_NEW:
+ case Token::CTX_COLUMN_TYPE:
+ case Token::CTX_CONSTRAINT:
+ case Token::CTX_DATABASE:
+ case Token::CTX_INDEX:
+ case Token::CTX_INDEX_NEW:
+ case Token::CTX_TABLE:
+ case Token::CTX_TABLE_NEW:
+ case Token::CTX_TRANSACTION:
+ case Token::CTX_TRIGGER:
+ case Token::CTX_TRIGGER_NEW:
+ case Token::CTX_VIEW:
+ case Token::CTX_VIEW_NEW:
+ return token->value.isEmpty() ? wrapObjName(token->value, Dialect::Sqlite3, NameWrapper::DOUBLE_QUOTE) : token->value;
+ case Token::CTX_ERROR_MESSAGE:
+ case Token::STRING:
+ return token->value.isEmpty() ? wrapString(token->value) : token->value;
+ default:
+ break;
+ }
+ return token->value;
+}
+
TokenList Lexer::tokenize(const QString& sql, Dialect dialect)
{
Lexer lexer(dialect);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
index b21639e..8473844 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lexer.h
@@ -129,6 +129,15 @@ class API_EXPORT Lexer
static QString detokenize(const TokenList& tokens);
/**
+ * @brief Translates token to string propert representation.
+ * @param token Token to translate.
+ * @return Translated string.
+ *
+ * This method applies wrappers where needed (for strings and ids).
+ */
+ static QString detokenize(const TokenPtr& token);
+
+ /**
* @brief Tokenizes given SQL query with given dialect.
* @param sql SQL query to tokenize.
* @param dialect SQLite dialect to use when tokenizing.
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
index 9ff6487..43cc4a0 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
@@ -170,7 +170,7 @@ 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 724
+#define YYNSTATE 725
#define YYNRULE 424
#define YYFALLBACK 1
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
@@ -243,235 +243,237 @@ static const YYMINORTYPE yyzerominor = { 0 };
** shifting non-terminals after a reduce.
** yy_default[] Default action for each state.
*/
-#define YY_ACTTAB_COUNT (2263)
+#define YY_ACTTAB_COUNT (2285)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 431, 48, 48, 47, 47, 47, 46, 216, 716, 339,
- /* 10 */ 643, 425, 51, 51, 51, 51, 44, 49, 49, 49,
- /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1026,
- /* 30 */ 1026, 643, 131, 580, 51, 51, 51, 51, 411, 49,
- /* 40 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216,
- /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1026, 1026,
- /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 70 */ 1026, 1026, 563, 1026, 1026, 1026, 1026, 38, 39, 1026,
- /* 80 */ 1026, 1026, 1026, 1026, 40, 431, 528, 385, 716, 595,
- /* 90 */ 594, 280, 4, 377, 716, 630, 425, 642, 608, 422,
- /* 100 */ 12, 134, 687, 429, 562, 609, 483, 690, 331, 279,
- /* 110 */ 714, 713, 564, 565, 642, 689, 688, 687, 235, 506,
- /* 120 */ 60, 320, 610, 411, 47, 47, 47, 46, 216, 122,
- /* 130 */ 243, 213, 247, 59, 1142, 1142, 486, 609, 607, 603,
- /* 140 */ 685, 306, 485, 584, 716, 41, 507, 509, 642, 508,
- /* 150 */ 676, 9, 642, 144, 95, 281, 379, 276, 378, 132,
- /* 160 */ 297, 716, 38, 39, 601, 200, 199, 7, 355, 40,
- /* 170 */ 884, 307, 1134, 274, 249, 716, 17, 4, 884, 1134,
- /* 180 */ 56, 717, 642, 431, 422, 884, 329, 687, 429, 716,
- /* 190 */ 687, 643, 690, 687, 425, 690, 714, 713, 690, 642,
- /* 200 */ 689, 688, 687, 689, 688, 687, 689, 688, 687, 98,
- /* 210 */ 682, 240, 643, 218, 410, 884, 486, 884, 884, 483,
- /* 220 */ 716, 411, 239, 884, 303, 582, 512, 581, 884, 884,
- /* 230 */ 884, 884, 884, 642, 643, 676, 9, 642, 685, 217,
- /* 240 */ 245, 673, 102, 41, 287, 300, 714, 713, 67, 302,
- /* 250 */ 148, 307, 1133, 151, 306, 484, 81, 715, 97, 1133,
- /* 260 */ 38, 39, 551, 714, 713, 771, 130, 40, 946, 376,
- /* 270 */ 373, 372, 447, 46, 216, 4, 946, 714, 713, 334,
- /* 280 */ 642, 682, 422, 946, 606, 687, 429, 371, 448, 447,
- /* 290 */ 690, 714, 713, 304, 265, 146, 267, 642, 689, 688,
- /* 300 */ 687, 287, 68, 677, 691, 255, 362, 259, 359, 692,
- /* 310 */ 1027, 1027, 682, 946, 715, 946, 946, 447, 698, 234,
- /* 320 */ 386, 715, 714, 713, 773, 651, 946, 946, 946, 946,
- /* 330 */ 110, 642, 317, 676, 9, 642, 222, 677, 299, 52,
- /* 340 */ 53, 426, 289, 1027, 1027, 675, 675, 50, 50, 51,
- /* 350 */ 51, 51, 51, 716, 49, 49, 49, 49, 48, 48,
- /* 360 */ 47, 47, 47, 46, 216, 431, 428, 340, 716, 335,
- /* 370 */ 671, 670, 287, 283, 716, 138, 425, 209, 219, 430,
- /* 380 */ 268, 395, 651, 682, 336, 715, 715, 686, 187, 52,
- /* 390 */ 53, 426, 289, 715, 452, 675, 675, 50, 50, 51,
- /* 400 */ 51, 51, 51, 411, 49, 49, 49, 49, 48, 48,
- /* 410 */ 47, 47, 47, 46, 216, 91, 953, 716, 619, 712,
- /* 420 */ 685, 403, 382, 130, 710, 41, 376, 373, 372, 711,
- /* 430 */ 233, 953, 394, 311, 210, 593, 666, 384, 428, 16,
- /* 440 */ 316, 659, 38, 39, 371, 231, 230, 716, 89, 40,
- /* 450 */ 931, 430, 716, 658, 716, 714, 713, 4, 931, 686,
- /* 460 */ 92, 143, 642, 358, 422, 931, 674, 687, 429, 14,
- /* 470 */ 714, 713, 690, 131, 456, 551, 714, 713, 953, 642,
- /* 480 */ 689, 688, 687, 668, 667, 210, 593, 458, 384, 457,
- /* 490 */ 576, 88, 1027, 1027, 13, 931, 672, 931, 931, 54,
- /* 500 */ 575, 678, 42, 368, 37, 401, 35, 381, 931, 1,
- /* 510 */ 931, 931, 641, 642, 634, 676, 9, 642, 661, 714,
- /* 520 */ 713, 52, 53, 426, 289, 1027, 1027, 675, 675, 50,
- /* 530 */ 50, 51, 51, 51, 51, 660, 49, 49, 49, 49,
- /* 540 */ 48, 48, 47, 47, 47, 46, 216, 657, 648, 714,
- /* 550 */ 713, 496, 542, 569, 714, 713, 714, 713, 656, 691,
- /* 560 */ 543, 614, 320, 30, 692, 27, 716, 585, 274, 682,
- /* 570 */ 160, 1027, 1027, 426, 289, 693, 613, 675, 675, 50,
- /* 580 */ 50, 51, 51, 51, 51, 398, 49, 49, 49, 49,
- /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1025, 1025, 81,
- /* 600 */ 52, 53, 426, 289, 1027, 1027, 675, 675, 50, 50,
- /* 610 */ 51, 51, 51, 51, 496, 49, 49, 49, 49, 48,
- /* 620 */ 48, 47, 47, 47, 46, 216, 1025, 1025, 1025, 1025,
- /* 630 */ 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
- /* 640 */ 716, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
- /* 650 */ 1025, 1025, 1027, 1027, 357, 49, 49, 49, 49, 48,
- /* 660 */ 48, 47, 47, 47, 46, 216, 288, 552, 714, 713,
- /* 670 */ 495, 682, 298, 662, 346, 153, 538, 69, 694, 715,
- /* 680 */ 715, 52, 53, 426, 289, 1027, 1027, 675, 675, 50,
- /* 690 */ 50, 51, 51, 51, 51, 1094, 49, 49, 49, 49,
- /* 700 */ 48, 48, 47, 47, 47, 46, 216, 52, 53, 426,
- /* 710 */ 289, 418, 511, 675, 675, 50, 50, 51, 51, 51,
- /* 720 */ 51, 159, 49, 49, 49, 49, 48, 48, 47, 47,
- /* 730 */ 47, 46, 216, 490, 954, 315, 482, 482, 663, 553,
- /* 740 */ 215, 650, 714, 713, 81, 52, 53, 426, 289, 954,
- /* 750 */ 414, 675, 675, 50, 50, 51, 51, 51, 51, 397,
- /* 760 */ 49, 49, 49, 49, 48, 48, 47, 47, 47, 46,
- /* 770 */ 216, 158, 1094, 21, 716, 627, 459, 716, 1079, 716,
- /* 780 */ 647, 1045, 140, 89, 716, 1149, 154, 435, 2, 715,
- /* 790 */ 424, 671, 670, 396, 460, 461, 954, 52, 53, 426,
- /* 800 */ 289, 573, 716, 675, 675, 50, 50, 51, 51, 51,
- /* 810 */ 51, 321, 49, 49, 49, 49, 48, 48, 47, 47,
- /* 820 */ 47, 46, 216, 431, 1108, 81, 206, 205, 204, 52,
- /* 830 */ 53, 426, 289, 716, 425, 675, 675, 50, 50, 51,
- /* 840 */ 51, 51, 51, 344, 49, 49, 49, 49, 48, 48,
- /* 850 */ 47, 47, 47, 46, 216, 597, 715, 666, 600, 462,
- /* 860 */ 666, 411, 31, 716, 657, 90, 12, 894, 720, 668,
- /* 870 */ 667, 609, 724, 434, 81, 656, 714, 713, 685, 714,
- /* 880 */ 713, 714, 713, 41, 528, 272, 714, 713, 610, 349,
- /* 890 */ 528, 450, 89, 677, 12, 633, 633, 338, 636, 609,
- /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1142, 1142,
- /* 910 */ 716, 524, 682, 581, 716, 4, 610, 468, 60, 450,
- /* 920 */ 642, 208, 422, 506, 60, 687, 429, 677, 32, 109,
- /* 930 */ 690, 609, 500, 501, 352, 714, 713, 642, 689, 688,
- /* 940 */ 687, 428, 900, 900, 467, 466, 552, 465, 421, 383,
- /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1142, 1142, 715,
- /* 960 */ 444, 722, 686, 182, 646, 714, 713, 645, 231, 230,
- /* 970 */ 437, 642, 356, 676, 9, 642, 417, 444, 52, 53,
- /* 980 */ 426, 289, 91, 91, 675, 675, 50, 50, 51, 51,
- /* 990 */ 51, 51, 644, 49, 49, 49, 49, 48, 48, 47,
- /* 1000 */ 47, 47, 46, 216, 1034, 444, 668, 667, 714, 713,
- /* 1010 */ 91, 453, 714, 713, 682, 641, 714, 713, 324, 202,
- /* 1020 */ 52, 53, 426, 289, 446, 680, 675, 675, 50, 50,
- /* 1030 */ 51, 51, 51, 51, 639, 49, 49, 49, 49, 48,
- /* 1040 */ 48, 47, 47, 47, 46, 216, 605, 52, 53, 426,
- /* 1050 */ 289, 716, 446, 675, 675, 50, 50, 51, 51, 51,
- /* 1060 */ 51, 459, 49, 49, 49, 49, 48, 48, 47, 47,
- /* 1070 */ 47, 46, 216, 453, 715, 36, 663, 423, 215, 460,
- /* 1080 */ 341, 369, 592, 52, 53, 426, 289, 638, 89, 675,
- /* 1090 */ 675, 50, 50, 51, 51, 51, 51, 31, 49, 49,
- /* 1100 */ 49, 49, 48, 48, 47, 47, 47, 46, 216, 413,
- /* 1110 */ 723, 2, 11, 52, 53, 426, 289, 33, 588, 675,
- /* 1120 */ 675, 50, 50, 51, 51, 51, 51, 624, 49, 49,
- /* 1130 */ 49, 49, 48, 48, 47, 47, 47, 46, 216, 515,
- /* 1140 */ 715, 537, 29, 91, 342, 666, 140, 136, 571, 52,
- /* 1150 */ 53, 426, 289, 714, 713, 675, 675, 50, 50, 51,
- /* 1160 */ 51, 51, 51, 548, 49, 49, 49, 49, 48, 48,
- /* 1170 */ 47, 47, 47, 46, 216, 91, 716, 234, 386, 52,
- /* 1180 */ 53, 426, 289, 338, 271, 675, 675, 50, 50, 51,
- /* 1190 */ 51, 51, 51, 333, 49, 49, 49, 49, 48, 48,
- /* 1200 */ 47, 47, 47, 46, 216, 532, 8, 517, 696, 87,
- /* 1210 */ 137, 52, 53, 426, 289, 22, 557, 675, 675, 50,
- /* 1220 */ 50, 51, 51, 51, 51, 135, 49, 49, 49, 49,
- /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1109, 91,
- /* 1240 */ 716, 91, 52, 53, 426, 289, 615, 722, 675, 675,
- /* 1250 */ 50, 50, 51, 51, 51, 51, 620, 49, 49, 49,
- /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1107,
- /* 1270 */ 99, 504, 390, 491, 52, 53, 426, 289, 714, 713,
- /* 1280 */ 675, 675, 50, 50, 51, 51, 51, 51, 682, 49,
- /* 1290 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216,
- /* 1300 */ 226, 52, 57, 426, 289, 599, 388, 675, 675, 50,
- /* 1310 */ 50, 51, 51, 51, 51, 428, 49, 49, 49, 49,
- /* 1320 */ 48, 48, 47, 47, 47, 46, 216, 431, 430, 5,
- /* 1330 */ 10, 620, 620, 632, 491, 631, 686, 187, 425, 53,
- /* 1340 */ 426, 289, 714, 713, 675, 675, 50, 50, 51, 51,
- /* 1350 */ 51, 51, 716, 49, 49, 49, 49, 48, 48, 47,
- /* 1360 */ 47, 47, 46, 216, 552, 411, 598, 107, 464, 591,
- /* 1370 */ 403, 387, 428, 697, 69, 612, 611, 715, 428, 716,
- /* 1380 */ 404, 715, 685, 716, 209, 430, 209, 41, 625, 316,
- /* 1390 */ 682, 430, 596, 686, 187, 428, 223, 590, 539, 686,
- /* 1400 */ 187, 653, 287, 716, 38, 39, 589, 225, 430, 718,
- /* 1410 */ 431, 40, 620, 716, 91, 715, 686, 187, 252, 4,
- /* 1420 */ 570, 425, 715, 19, 642, 89, 422, 403, 405, 687,
- /* 1430 */ 429, 716, 624, 332, 690, 716, 428, 328, 716, 705,
- /* 1440 */ 716, 642, 689, 688, 687, 715, 316, 266, 411, 430,
- /* 1450 */ 561, 365, 316, 716, 714, 713, 602, 686, 187, 488,
- /* 1460 */ 715, 829, 716, 375, 65, 685, 308, 682, 540, 406,
- /* 1470 */ 41, 706, 285, 209, 273, 642, 475, 676, 9, 642,
- /* 1480 */ 530, 714, 713, 651, 715, 714, 713, 38, 39, 64,
- /* 1490 */ 18, 399, 370, 431, 40, 129, 716, 366, 326, 534,
- /* 1500 */ 534, 63, 4, 270, 425, 714, 713, 642, 475, 422,
- /* 1510 */ 316, 530, 687, 429, 716, 714, 713, 690, 279, 716,
- /* 1520 */ 533, 716, 156, 624, 642, 689, 688, 687, 525, 716,
- /* 1530 */ 125, 411, 519, 714, 713, 514, 715, 714, 713, 3,
- /* 1540 */ 714, 713, 714, 713, 79, 525, 682, 85, 685, 519,
- /* 1550 */ 479, 26, 514, 41, 25, 714, 713, 516, 642, 472,
- /* 1560 */ 676, 9, 642, 716, 714, 713, 407, 479, 716, 682,
- /* 1570 */ 38, 39, 353, 77, 286, 431, 510, 40, 283, 505,
- /* 1580 */ 555, 428, 616, 503, 83, 4, 425, 715, 140, 351,
- /* 1590 */ 642, 715, 422, 469, 430, 687, 429, 716, 714, 713,
- /* 1600 */ 690, 716, 686, 192, 472, 428, 703, 642, 689, 688,
- /* 1610 */ 687, 438, 428, 411, 497, 62, 714, 713, 430, 119,
- /* 1620 */ 254, 714, 713, 714, 713, 430, 686, 181, 438, 704,
- /* 1630 */ 685, 714, 713, 686, 163, 41, 251, 629, 311, 161,
- /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1035, 682, 531,
- /* 1650 */ 701, 702, 38, 39, 152, 641, 498, 469, 431, 40,
- /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1037, 425,
- /* 1670 */ 714, 713, 642, 416, 422, 715, 430, 687, 429, 641,
- /* 1680 */ 428, 350, 690, 619, 686, 172, 641, 494, 454, 642,
- /* 1690 */ 689, 688, 687, 430, 111, 428, 411, 716, 72, 714,
- /* 1700 */ 713, 686, 190, 714, 713, 621, 287, 337, 430, 428,
- /* 1710 */ 436, 428, 96, 685, 209, 558, 686, 188, 41, 715,
- /* 1720 */ 567, 287, 430, 642, 430, 676, 9, 642, 716, 207,
- /* 1730 */ 686, 196, 686, 195, 715, 38, 39, 641, 716, 286,
- /* 1740 */ 431, 327, 40, 224, 86, 428, 695, 319, 203, 428,
- /* 1750 */ 4, 425, 715, 318, 641, 642, 325, 422, 430, 715,
- /* 1760 */ 687, 429, 430, 150, 261, 690, 686, 197, 221, 641,
- /* 1770 */ 686, 201, 642, 689, 688, 687, 428, 715, 411, 716,
- /* 1780 */ 719, 709, 708, 641, 433, 641, 707, 651, 258, 430,
- /* 1790 */ 428, 283, 220, 536, 428, 685, 149, 686, 232, 714,
- /* 1800 */ 713, 715, 651, 430, 715, 147, 642, 430, 676, 9,
- /* 1810 */ 642, 686, 290, 428, 82, 686, 191, 38, 39, 641,
- /* 1820 */ 679, 367, 432, 641, 40, 15, 430, 145, 700, 234,
- /* 1830 */ 714, 713, 4, 715, 686, 194, 408, 642, 420, 422,
- /* 1840 */ 714, 713, 687, 429, 716, 428, 684, 690, 637, 715,
- /* 1850 */ 641, 227, 428, 294, 642, 689, 688, 687, 430, 716,
- /* 1860 */ 293, 715, 428, 17, 641, 430, 686, 193, 641, 292,
- /* 1870 */ 400, 291, 402, 686, 185, 430, 521, 28, 683, 55,
- /* 1880 */ 428, 714, 713, 686, 189, 43, 428, 641, 642, 640,
- /* 1890 */ 676, 9, 642, 430, 216, 419, 428, 66, 529, 430,
- /* 1900 */ 428, 686, 314, 428, 229, 214, 228, 686, 313, 430,
- /* 1910 */ 428, 415, 34, 430, 141, 626, 430, 686, 312, 641,
- /* 1920 */ 428, 686, 184, 430, 686, 171, 641, 428, 715, 635,
- /* 1930 */ 139, 686, 170, 430, 108, 386, 641, 716, 463, 622,
- /* 1940 */ 430, 686, 183, 428, 617, 428, 714, 713, 686, 169,
- /* 1950 */ 428, 716, 715, 389, 641, 583, 430, 715, 430, 380,
- /* 1960 */ 641, 714, 713, 430, 686, 186, 686, 168, 428, 716,
- /* 1970 */ 641, 686, 167, 541, 641, 428, 578, 641, 716, 257,
- /* 1980 */ 133, 430, 577, 256, 641, 428, 474, 428, 430, 686,
- /* 1990 */ 93, 428, 715, 715, 641, 716, 686, 166, 430, 716,
- /* 2000 */ 430, 641, 330, 716, 430, 716, 686, 164, 686, 174,
- /* 2010 */ 428, 277, 686, 173, 393, 428, 275, 641, 716, 641,
- /* 2020 */ 716, 568, 574, 430, 641, 428, 573, 715, 430, 715,
- /* 2030 */ 428, 686, 175, 489, 715, 428, 686, 178, 430, 714,
- /* 2040 */ 713, 572, 641, 430, 716, 428, 686, 94, 430, 641,
- /* 2050 */ 310, 686, 177, 714, 713, 128, 686, 176, 430, 641,
- /* 2060 */ 554, 641, 549, 716, 428, 641, 686, 180, 716, 428,
- /* 2070 */ 716, 714, 713, 716, 392, 715, 547, 430, 546, 545,
- /* 2080 */ 714, 713, 430, 502, 641, 686, 179, 430, 544, 641,
- /* 2090 */ 686, 165, 527, 309, 80, 686, 70, 714, 713, 641,
- /* 2100 */ 535, 714, 713, 269, 641, 714, 713, 714, 713, 641,
- /* 2110 */ 127, 106, 471, 523, 248, 263, 715, 518, 481, 641,
- /* 2120 */ 714, 713, 714, 713, 476, 212, 246, 715, 715, 244,
- /* 2130 */ 477, 126, 492, 473, 480, 262, 242, 354, 641, 715,
- /* 2140 */ 470, 236, 715, 641, 360, 322, 714, 713, 641, 715,
- /* 2150 */ 347, 363, 24, 652, 715, 442, 427, 715, 443, 441,
- /* 2160 */ 124, 284, 526, 715, 648, 714, 713, 264, 715, 715,
- /* 2170 */ 714, 713, 714, 713, 715, 714, 713, 253, 78, 250,
- /* 2180 */ 715, 241, 237, 238, 105, 123, 121, 84, 104, 155,
- /* 2190 */ 715, 513, 715, 120, 715, 715, 715, 493, 348, 103,
- /* 2200 */ 118, 345, 76, 343, 117, 75, 116, 115, 114, 74,
- /* 2210 */ 73, 113, 23, 323, 451, 101, 20, 100, 623, 112,
- /* 2220 */ 61, 520, 449, 445, 439, 655, 628, 162, 278, 669,
- /* 2230 */ 665, 412, 569, 295, 681, 198, 374, 522, 618, 260,
- /* 2240 */ 361, 6, 305, 664, 654, 556, 364, 409, 566, 211,
- /* 2250 */ 296, 71, 560, 559, 487, 587, 586, 81, 550, 1150,
- /* 2260 */ 1150, 1150, 45,
+ /* 0 */ 432, 49, 49, 48, 48, 48, 47, 216, 717, 340,
+ /* 10 */ 644, 426, 52, 52, 52, 52, 45, 50, 50, 50,
+ /* 20 */ 50, 49, 49, 48, 48, 48, 47, 216, 722, 1027,
+ /* 30 */ 1027, 644, 131, 581, 52, 52, 52, 52, 412, 50,
+ /* 40 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216,
+ /* 50 */ 580, 81, 59, 644, 157, 686, 302, 283, 1027, 1027,
+ /* 60 */ 42, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 70 */ 1027, 1027, 564, 1027, 1027, 1027, 1027, 39, 40, 1027,
+ /* 80 */ 1027, 1027, 1027, 1027, 41, 432, 529, 386, 717, 596,
+ /* 90 */ 595, 281, 4, 378, 717, 631, 426, 643, 609, 423,
+ /* 100 */ 13, 134, 688, 430, 563, 610, 484, 691, 332, 280,
+ /* 110 */ 715, 714, 565, 566, 643, 690, 689, 688, 235, 507,
+ /* 120 */ 61, 321, 611, 412, 48, 48, 48, 47, 216, 122,
+ /* 130 */ 243, 213, 247, 60, 1143, 1143, 487, 610, 608, 604,
+ /* 140 */ 686, 307, 486, 585, 717, 42, 508, 510, 643, 509,
+ /* 150 */ 677, 9, 643, 144, 95, 282, 380, 277, 379, 132,
+ /* 160 */ 298, 717, 39, 40, 602, 200, 199, 7, 356, 41,
+ /* 170 */ 885, 308, 1135, 275, 249, 717, 18, 4, 885, 1135,
+ /* 180 */ 57, 718, 643, 432, 423, 885, 330, 688, 430, 717,
+ /* 190 */ 688, 644, 691, 688, 426, 691, 715, 714, 691, 643,
+ /* 200 */ 690, 689, 688, 690, 689, 688, 690, 689, 688, 98,
+ /* 210 */ 683, 240, 644, 218, 411, 885, 487, 885, 885, 484,
+ /* 220 */ 717, 412, 239, 885, 304, 583, 513, 582, 885, 885,
+ /* 230 */ 885, 885, 885, 643, 644, 677, 9, 643, 686, 217,
+ /* 240 */ 245, 674, 102, 42, 288, 301, 715, 714, 67, 303,
+ /* 250 */ 148, 308, 1134, 151, 307, 485, 81, 716, 97, 1134,
+ /* 260 */ 39, 40, 552, 715, 714, 772, 130, 41, 947, 377,
+ /* 270 */ 374, 373, 448, 47, 216, 4, 947, 715, 714, 335,
+ /* 280 */ 643, 683, 423, 947, 607, 688, 430, 372, 449, 448,
+ /* 290 */ 691, 715, 714, 305, 265, 146, 268, 643, 690, 689,
+ /* 300 */ 688, 288, 68, 678, 692, 255, 363, 259, 360, 693,
+ /* 310 */ 1028, 1028, 683, 947, 716, 947, 947, 448, 699, 234,
+ /* 320 */ 387, 716, 715, 714, 774, 652, 947, 947, 947, 947,
+ /* 330 */ 110, 643, 318, 677, 9, 643, 222, 678, 300, 53,
+ /* 340 */ 54, 427, 290, 1028, 1028, 676, 676, 51, 51, 52,
+ /* 350 */ 52, 52, 52, 717, 50, 50, 50, 50, 49, 49,
+ /* 360 */ 48, 48, 48, 47, 216, 432, 429, 341, 717, 336,
+ /* 370 */ 672, 671, 288, 284, 717, 138, 426, 209, 219, 431,
+ /* 380 */ 269, 396, 652, 683, 337, 716, 716, 687, 187, 53,
+ /* 390 */ 54, 427, 290, 716, 453, 676, 676, 51, 51, 52,
+ /* 400 */ 52, 52, 52, 412, 50, 50, 50, 50, 49, 49,
+ /* 410 */ 48, 48, 48, 47, 216, 91, 954, 717, 620, 713,
+ /* 420 */ 686, 404, 383, 130, 711, 42, 377, 374, 373, 712,
+ /* 430 */ 233, 954, 395, 312, 210, 594, 667, 385, 429, 17,
+ /* 440 */ 317, 660, 39, 40, 372, 231, 230, 717, 89, 41,
+ /* 450 */ 932, 431, 717, 659, 717, 715, 714, 4, 932, 687,
+ /* 460 */ 92, 143, 643, 359, 423, 932, 675, 688, 430, 15,
+ /* 470 */ 715, 714, 691, 131, 457, 552, 715, 714, 954, 643,
+ /* 480 */ 690, 689, 688, 669, 668, 210, 594, 459, 385, 458,
+ /* 490 */ 577, 88, 1028, 1028, 14, 932, 673, 932, 932, 55,
+ /* 500 */ 576, 679, 43, 369, 38, 402, 36, 382, 932, 1,
+ /* 510 */ 932, 932, 642, 643, 635, 677, 9, 643, 662, 715,
+ /* 520 */ 714, 53, 54, 427, 290, 1028, 1028, 676, 676, 51,
+ /* 530 */ 51, 52, 52, 52, 52, 661, 50, 50, 50, 50,
+ /* 540 */ 49, 49, 48, 48, 48, 47, 216, 658, 649, 715,
+ /* 550 */ 714, 497, 543, 570, 715, 714, 715, 714, 657, 692,
+ /* 560 */ 544, 615, 321, 31, 693, 28, 717, 586, 275, 683,
+ /* 570 */ 160, 1028, 1028, 427, 290, 694, 614, 676, 676, 51,
+ /* 580 */ 51, 52, 52, 52, 52, 399, 50, 50, 50, 50,
+ /* 590 */ 49, 49, 48, 48, 48, 47, 216, 1026, 1026, 81,
+ /* 600 */ 53, 54, 427, 290, 1028, 1028, 676, 676, 51, 51,
+ /* 610 */ 52, 52, 52, 52, 497, 50, 50, 50, 50, 49,
+ /* 620 */ 49, 48, 48, 48, 47, 216, 1026, 1026, 1026, 1026,
+ /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 640 */ 717, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+ /* 650 */ 1026, 1026, 1028, 1028, 358, 50, 50, 50, 50, 49,
+ /* 660 */ 49, 48, 48, 48, 47, 216, 289, 553, 715, 714,
+ /* 670 */ 496, 683, 299, 663, 347, 153, 539, 69, 695, 716,
+ /* 680 */ 716, 53, 54, 427, 290, 1028, 1028, 676, 676, 51,
+ /* 690 */ 51, 52, 52, 52, 52, 1095, 50, 50, 50, 50,
+ /* 700 */ 49, 49, 48, 48, 48, 47, 216, 53, 54, 427,
+ /* 710 */ 290, 419, 512, 676, 676, 51, 51, 52, 52, 52,
+ /* 720 */ 52, 159, 50, 50, 50, 50, 49, 49, 48, 48,
+ /* 730 */ 48, 47, 216, 491, 955, 316, 483, 483, 664, 554,
+ /* 740 */ 215, 651, 715, 714, 81, 53, 54, 427, 290, 955,
+ /* 750 */ 415, 676, 676, 51, 51, 52, 52, 52, 52, 398,
+ /* 760 */ 50, 50, 50, 50, 49, 49, 48, 48, 48, 47,
+ /* 770 */ 216, 158, 1095, 22, 717, 628, 460, 717, 1080, 717,
+ /* 780 */ 648, 1046, 140, 89, 717, 1150, 154, 436, 2, 716,
+ /* 790 */ 425, 672, 671, 397, 461, 462, 955, 53, 54, 427,
+ /* 800 */ 290, 574, 717, 676, 676, 51, 51, 52, 52, 52,
+ /* 810 */ 52, 322, 50, 50, 50, 50, 49, 49, 48, 48,
+ /* 820 */ 48, 47, 216, 432, 1109, 81, 206, 205, 204, 53,
+ /* 830 */ 54, 427, 290, 717, 426, 676, 676, 51, 51, 52,
+ /* 840 */ 52, 52, 52, 345, 50, 50, 50, 50, 49, 49,
+ /* 850 */ 48, 48, 48, 47, 216, 598, 716, 667, 601, 463,
+ /* 860 */ 667, 412, 32, 717, 658, 90, 13, 895, 721, 669,
+ /* 870 */ 668, 610, 725, 435, 81, 657, 715, 714, 686, 715,
+ /* 880 */ 714, 715, 714, 42, 529, 273, 715, 714, 611, 350,
+ /* 890 */ 529, 451, 89, 678, 13, 634, 634, 339, 637, 610,
+ /* 900 */ 39, 40, 650, 610, 715, 714, 717, 41, 1143, 1143,
+ /* 910 */ 717, 525, 683, 582, 717, 4, 611, 469, 61, 451,
+ /* 920 */ 643, 208, 423, 507, 61, 688, 430, 678, 33, 109,
+ /* 930 */ 691, 610, 501, 502, 353, 715, 714, 643, 690, 689,
+ /* 940 */ 688, 429, 901, 901, 468, 467, 553, 466, 422, 384,
+ /* 950 */ 508, 510, 142, 509, 431, 441, 69, 1143, 1143, 716,
+ /* 960 */ 445, 723, 687, 182, 647, 715, 714, 646, 231, 230,
+ /* 970 */ 438, 643, 357, 677, 9, 643, 418, 445, 53, 54,
+ /* 980 */ 427, 290, 91, 91, 676, 676, 51, 51, 52, 52,
+ /* 990 */ 52, 52, 645, 50, 50, 50, 50, 49, 49, 48,
+ /* 1000 */ 48, 48, 47, 216, 1035, 445, 669, 668, 715, 714,
+ /* 1010 */ 91, 454, 715, 714, 683, 642, 715, 714, 325, 202,
+ /* 1020 */ 53, 54, 427, 290, 447, 681, 676, 676, 51, 51,
+ /* 1030 */ 52, 52, 52, 52, 640, 50, 50, 50, 50, 49,
+ /* 1040 */ 49, 48, 48, 48, 47, 216, 606, 53, 54, 427,
+ /* 1050 */ 290, 717, 447, 676, 676, 51, 51, 52, 52, 52,
+ /* 1060 */ 52, 460, 50, 50, 50, 50, 49, 49, 48, 48,
+ /* 1070 */ 48, 47, 216, 454, 716, 37, 664, 424, 215, 461,
+ /* 1080 */ 342, 370, 593, 53, 54, 427, 290, 639, 89, 676,
+ /* 1090 */ 676, 51, 51, 52, 52, 52, 52, 32, 50, 50,
+ /* 1100 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 414,
+ /* 1110 */ 724, 2, 12, 53, 54, 427, 290, 34, 589, 676,
+ /* 1120 */ 676, 51, 51, 52, 52, 52, 52, 625, 50, 50,
+ /* 1130 */ 50, 50, 49, 49, 48, 48, 48, 47, 216, 516,
+ /* 1140 */ 716, 538, 30, 91, 343, 667, 140, 136, 572, 53,
+ /* 1150 */ 54, 427, 290, 715, 714, 676, 676, 51, 51, 52,
+ /* 1160 */ 52, 52, 52, 549, 50, 50, 50, 50, 49, 49,
+ /* 1170 */ 48, 48, 48, 47, 216, 91, 717, 234, 387, 53,
+ /* 1180 */ 54, 427, 290, 339, 272, 676, 676, 51, 51, 52,
+ /* 1190 */ 52, 52, 52, 334, 50, 50, 50, 50, 49, 49,
+ /* 1200 */ 48, 48, 48, 47, 216, 533, 8, 518, 697, 87,
+ /* 1210 */ 137, 53, 54, 427, 290, 23, 558, 676, 676, 51,
+ /* 1220 */ 51, 52, 52, 52, 52, 135, 50, 50, 50, 50,
+ /* 1230 */ 49, 49, 48, 48, 48, 47, 216, 81, 1110, 91,
+ /* 1240 */ 717, 91, 53, 54, 427, 290, 616, 723, 676, 676,
+ /* 1250 */ 51, 51, 52, 52, 52, 52, 605, 50, 50, 50,
+ /* 1260 */ 50, 49, 49, 48, 48, 48, 47, 216, 99, 1108,
+ /* 1270 */ 391, 505, 389, 492, 53, 54, 427, 290, 715, 714,
+ /* 1280 */ 676, 676, 51, 51, 52, 52, 52, 52, 621, 50,
+ /* 1290 */ 50, 50, 50, 49, 49, 48, 48, 48, 47, 216,
+ /* 1300 */ 683, 53, 58, 427, 290, 683, 600, 676, 676, 51,
+ /* 1310 */ 51, 52, 52, 52, 52, 429, 50, 50, 50, 50,
+ /* 1320 */ 49, 49, 48, 48, 48, 47, 216, 432, 431, 717,
+ /* 1330 */ 5, 621, 226, 633, 492, 632, 687, 187, 426, 54,
+ /* 1340 */ 427, 290, 715, 714, 676, 676, 51, 51, 52, 52,
+ /* 1350 */ 52, 52, 717, 50, 50, 50, 50, 49, 49, 48,
+ /* 1360 */ 48, 48, 47, 216, 553, 412, 288, 599, 287, 717,
+ /* 1370 */ 404, 388, 429, 698, 69, 613, 252, 716, 429, 716,
+ /* 1380 */ 405, 716, 686, 30, 209, 431, 209, 42, 626, 317,
+ /* 1390 */ 489, 431, 597, 687, 187, 429, 223, 309, 540, 687,
+ /* 1400 */ 187, 329, 683, 717, 39, 40, 11, 683, 431, 287,
+ /* 1410 */ 432, 41, 621, 654, 91, 592, 687, 92, 556, 4,
+ /* 1420 */ 571, 426, 716, 625, 643, 537, 423, 404, 406, 688,
+ /* 1430 */ 430, 715, 714, 333, 691, 717, 716, 429, 717, 591,
+ /* 1440 */ 717, 643, 690, 689, 688, 107, 317, 652, 412, 531,
+ /* 1450 */ 431, 590, 317, 717, 715, 714, 612, 830, 687, 187,
+ /* 1460 */ 429, 225, 326, 717, 541, 686, 526, 417, 20, 642,
+ /* 1470 */ 42, 715, 714, 431, 683, 643, 717, 677, 9, 643,
+ /* 1480 */ 531, 687, 187, 526, 562, 717, 621, 39, 40, 327,
+ /* 1490 */ 376, 65, 64, 432, 41, 274, 19, 266, 371, 535,
+ /* 1500 */ 535, 267, 4, 271, 426, 715, 714, 643, 421, 423,
+ /* 1510 */ 716, 407, 688, 430, 286, 400, 717, 691, 717, 280,
+ /* 1520 */ 717, 63, 129, 429, 643, 690, 689, 688, 367, 717,
+ /* 1530 */ 603, 412, 520, 534, 317, 515, 431, 715, 714, 156,
+ /* 1540 */ 715, 714, 715, 714, 687, 192, 717, 209, 686, 520,
+ /* 1550 */ 480, 465, 515, 42, 717, 715, 714, 3, 643, 717,
+ /* 1560 */ 677, 9, 643, 717, 716, 715, 714, 480, 138, 125,
+ /* 1570 */ 39, 40, 85, 476, 79, 432, 683, 41, 715, 714,
+ /* 1580 */ 27, 429, 473, 511, 717, 4, 426, 715, 714, 517,
+ /* 1590 */ 643, 532, 423, 408, 431, 688, 430, 642, 26, 719,
+ /* 1600 */ 691, 717, 687, 181, 77, 476, 506, 643, 690, 689,
+ /* 1610 */ 688, 620, 716, 412, 354, 470, 706, 439, 715, 714,
+ /* 1620 */ 715, 714, 715, 714, 261, 288, 717, 473, 221, 504,
+ /* 1630 */ 686, 715, 714, 704, 439, 42, 717, 716, 716, 568,
+ /* 1640 */ 83, 643, 140, 677, 9, 643, 498, 1036, 715, 714,
+ /* 1650 */ 702, 284, 39, 40, 254, 642, 715, 714, 432, 41,
+ /* 1660 */ 328, 715, 714, 429, 716, 715, 714, 4, 1038, 426,
+ /* 1670 */ 119, 10, 643, 503, 423, 707, 431, 688, 430, 470,
+ /* 1680 */ 429, 161, 691, 251, 687, 163, 715, 714, 716, 643,
+ /* 1690 */ 690, 689, 688, 431, 717, 429, 412, 152, 479, 456,
+ /* 1700 */ 455, 687, 172, 715, 714, 72, 652, 705, 431, 429,
+ /* 1710 */ 630, 312, 111, 686, 530, 338, 687, 190, 42, 437,
+ /* 1720 */ 716, 622, 431, 643, 96, 677, 9, 643, 715, 714,
+ /* 1730 */ 687, 188, 209, 717, 207, 39, 40, 642, 715, 714,
+ /* 1740 */ 432, 224, 41, 617, 86, 429, 703, 717, 203, 429,
+ /* 1750 */ 4, 426, 320, 720, 642, 643, 150, 423, 431, 716,
+ /* 1760 */ 688, 430, 431, 700, 429, 691, 687, 196, 475, 642,
+ /* 1770 */ 687, 195, 643, 690, 689, 688, 716, 431, 412, 717,
+ /* 1780 */ 319, 710, 717, 642, 522, 687, 197, 709, 708, 258,
+ /* 1790 */ 499, 429, 434, 220, 500, 686, 715, 714, 625, 16,
+ /* 1800 */ 42, 717, 716, 257, 431, 717, 643, 256, 677, 9,
+ /* 1810 */ 643, 716, 687, 201, 717, 351, 716, 39, 40, 642,
+ /* 1820 */ 149, 248, 432, 642, 41, 482, 147, 246, 433, 442,
+ /* 1830 */ 368, 478, 4, 426, 716, 715, 714, 643, 642, 423,
+ /* 1840 */ 716, 717, 715, 430, 82, 701, 429, 691, 685, 715,
+ /* 1850 */ 714, 145, 495, 234, 643, 690, 689, 688, 429, 431,
+ /* 1860 */ 412, 559, 244, 284, 352, 642, 474, 687, 232, 18,
+ /* 1870 */ 242, 431, 401, 429, 471, 716, 716, 686, 295, 687,
+ /* 1880 */ 291, 715, 714, 716, 715, 714, 431, 294, 643, 696,
+ /* 1890 */ 677, 9, 643, 542, 687, 191, 528, 293, 680, 39,
+ /* 1900 */ 40, 717, 716, 715, 714, 429, 41, 715, 714, 429,
+ /* 1910 */ 490, 716, 292, 29, 4, 493, 715, 714, 431, 643,
+ /* 1920 */ 642, 423, 431, 227, 688, 430, 687, 194, 429, 691,
+ /* 1930 */ 687, 193, 642, 429, 477, 429, 643, 690, 689, 688,
+ /* 1940 */ 429, 431, 717, 715, 714, 429, 431, 642, 431, 687,
+ /* 1950 */ 185, 717, 403, 431, 687, 189, 687, 315, 431, 717,
+ /* 1960 */ 216, 687, 314, 429, 409, 684, 687, 313, 717, 429,
+ /* 1970 */ 643, 56, 677, 9, 643, 44, 431, 716, 717, 642,
+ /* 1980 */ 638, 627, 431, 642, 687, 184, 623, 420, 236, 653,
+ /* 1990 */ 687, 171, 323, 716, 716, 641, 229, 66, 214, 716,
+ /* 2000 */ 429, 716, 642, 715, 714, 618, 35, 642, 228, 642,
+ /* 2010 */ 429, 133, 394, 431, 642, 524, 276, 429, 716, 642,
+ /* 2020 */ 429, 687, 170, 431, 716, 716, 636, 569, 416, 716,
+ /* 2030 */ 431, 687, 183, 431, 429, 550, 429, 642, 687, 169,
+ /* 2040 */ 716, 687, 186, 642, 715, 714, 429, 431, 716, 431,
+ /* 2050 */ 141, 429, 108, 715, 714, 687, 168, 687, 167, 431,
+ /* 2060 */ 139, 715, 714, 270, 431, 519, 429, 687, 93, 390,
+ /* 2070 */ 715, 714, 687, 166, 642, 717, 716, 429, 584, 431,
+ /* 2080 */ 715, 714, 481, 429, 642, 717, 381, 687, 164, 717,
+ /* 2090 */ 431, 642, 444, 579, 642, 578, 431, 387, 687, 174,
+ /* 2100 */ 429, 263, 429, 472, 687, 173, 429, 331, 642, 278,
+ /* 2110 */ 642, 574, 575, 431, 716, 431, 429, 361, 464, 431,
+ /* 2120 */ 642, 687, 175, 687, 178, 642, 429, 687, 94, 431,
+ /* 2130 */ 716, 429, 573, 429, 555, 548, 348, 687, 177, 431,
+ /* 2140 */ 642, 547, 546, 545, 431, 429, 431, 687, 176, 716,
+ /* 2150 */ 393, 642, 687, 180, 687, 179, 443, 642, 431, 536,
+ /* 2160 */ 428, 128, 285, 431, 311, 310, 687, 165, 80, 716,
+ /* 2170 */ 264, 687, 70, 716, 642, 716, 642, 715, 714, 366,
+ /* 2180 */ 642, 649, 253, 716, 106, 250, 127, 715, 714, 241,
+ /* 2190 */ 642, 715, 714, 237, 126, 716, 238, 262, 716, 355,
+ /* 2200 */ 642, 212, 716, 25, 124, 642, 716, 642, 527, 716,
+ /* 2210 */ 364, 78, 105, 123, 121, 155, 84, 514, 104, 642,
+ /* 2220 */ 120, 349, 494, 624, 642, 346, 103, 118, 76, 344,
+ /* 2230 */ 117, 75, 116, 115, 74, 73, 114, 521, 324, 113,
+ /* 2240 */ 24, 452, 450, 21, 101, 100, 112, 446, 62, 440,
+ /* 2250 */ 162, 296, 670, 666, 656, 413, 279, 619, 570, 198,
+ /* 2260 */ 629, 375, 523, 260, 362, 306, 6, 71, 682, 665,
+ /* 2270 */ 655, 557, 211, 297, 410, 567, 365, 46, 551, 561,
+ /* 2280 */ 560, 488, 588, 81, 587,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 4, 81, 82, 83, 84, 85, 86, 87, 4, 58,
@@ -599,271 +601,273 @@ static const YYCODETYPE yy_lookahead[] = {
/* 1220 */ 71, 72, 73, 74, 75, 97, 77, 78, 79, 80,
/* 1230 */ 81, 82, 83, 84, 85, 86, 87, 55, 89, 219,
/* 1240 */ 4, 219, 62, 63, 64, 65, 30, 89, 68, 69,
- /* 1250 */ 70, 71, 72, 73, 74, 75, 191, 77, 78, 79,
- /* 1260 */ 80, 81, 82, 83, 84, 85, 86, 87, 144, 89,
- /* 1270 */ 99, 89, 99, 101, 62, 63, 64, 65, 106, 107,
- /* 1280 */ 68, 69, 70, 71, 72, 73, 74, 75, 4, 77,
+ /* 1250 */ 70, 71, 72, 73, 74, 75, 144, 77, 78, 79,
+ /* 1260 */ 80, 81, 82, 83, 84, 85, 86, 87, 99, 89,
+ /* 1270 */ 99, 89, 104, 101, 62, 63, 64, 65, 106, 107,
+ /* 1280 */ 68, 69, 70, 71, 72, 73, 74, 75, 191, 77,
/* 1290 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- /* 1300 */ 235, 62, 63, 64, 65, 83, 104, 68, 69, 70,
+ /* 1300 */ 4, 62, 63, 64, 65, 4, 83, 68, 69, 70,
/* 1310 */ 71, 72, 73, 74, 75, 177, 77, 78, 79, 80,
- /* 1320 */ 81, 82, 83, 84, 85, 86, 87, 4, 190, 96,
- /* 1330 */ 96, 191, 191, 201, 162, 201, 198, 199, 15, 63,
+ /* 1320 */ 81, 82, 83, 84, 85, 86, 87, 4, 190, 4,
+ /* 1330 */ 96, 191, 235, 201, 162, 201, 198, 199, 15, 63,
/* 1340 */ 64, 65, 106, 107, 68, 69, 70, 71, 72, 73,
/* 1350 */ 74, 75, 4, 77, 78, 79, 80, 81, 82, 83,
- /* 1360 */ 84, 85, 86, 87, 177, 42, 97, 17, 177, 97,
- /* 1370 */ 232, 233, 177, 186, 187, 235, 235, 190, 177, 4,
- /* 1380 */ 185, 190, 59, 4, 252, 190, 252, 64, 152, 251,
- /* 1390 */ 106, 190, 135, 198, 199, 177, 209, 97, 211, 198,
- /* 1400 */ 199, 117, 177, 4, 81, 82, 97, 38, 190, 177,
- /* 1410 */ 4, 88, 191, 4, 219, 190, 198, 199, 97, 96,
- /* 1420 */ 97, 15, 190, 96, 101, 104, 103, 232, 233, 106,
- /* 1430 */ 107, 4, 177, 232, 111, 4, 177, 212, 4, 91,
- /* 1440 */ 4, 118, 119, 120, 121, 190, 251, 177, 42, 190,
- /* 1450 */ 6, 181, 251, 4, 106, 107, 235, 198, 199, 97,
- /* 1460 */ 190, 97, 4, 38, 96, 59, 104, 4, 104, 251,
- /* 1470 */ 64, 177, 254, 252, 97, 152, 101, 154, 155, 156,
- /* 1480 */ 101, 106, 107, 258, 190, 106, 107, 81, 82, 96,
- /* 1490 */ 96, 232, 38, 4, 88, 115, 4, 64, 243, 100,
- /* 1500 */ 101, 96, 96, 97, 15, 106, 107, 101, 133, 103,
- /* 1510 */ 251, 132, 106, 107, 4, 106, 107, 111, 129, 4,
- /* 1520 */ 103, 4, 98, 177, 118, 119, 120, 121, 101, 4,
- /* 1530 */ 123, 42, 101, 106, 107, 101, 190, 106, 107, 12,
- /* 1540 */ 106, 107, 106, 107, 142, 118, 4, 128, 59, 118,
- /* 1550 */ 101, 71, 118, 64, 71, 106, 107, 139, 152, 101,
- /* 1560 */ 154, 155, 156, 4, 106, 107, 157, 118, 4, 106,
- /* 1570 */ 81, 82, 22, 153, 177, 4, 89, 88, 177, 89,
- /* 1580 */ 117, 177, 146, 47, 39, 96, 15, 190, 104, 243,
- /* 1590 */ 101, 190, 103, 101, 190, 106, 107, 4, 106, 107,
- /* 1600 */ 111, 4, 198, 199, 146, 177, 91, 118, 119, 120,
- /* 1610 */ 121, 101, 177, 42, 39, 96, 106, 107, 190, 123,
- /* 1620 */ 161, 106, 107, 106, 107, 190, 198, 199, 118, 177,
- /* 1630 */ 59, 106, 107, 198, 199, 64, 95, 236, 237, 96,
- /* 1640 */ 98, 152, 190, 154, 155, 156, 97, 158, 106, 132,
- /* 1650 */ 91, 177, 81, 82, 143, 251, 7, 165, 4, 88,
- /* 1660 */ 11, 103, 177, 177, 190, 106, 107, 96, 97, 15,
- /* 1670 */ 106, 107, 101, 276, 103, 190, 190, 106, 107, 251,
- /* 1680 */ 177, 32, 111, 141, 198, 199, 251, 162, 97, 118,
- /* 1690 */ 119, 120, 121, 190, 93, 177, 42, 4, 95, 106,
- /* 1700 */ 107, 198, 199, 106, 107, 141, 177, 37, 190, 177,
- /* 1710 */ 36, 177, 189, 59, 252, 118, 198, 199, 64, 190,
- /* 1720 */ 127, 177, 190, 152, 190, 154, 155, 156, 4, 238,
- /* 1730 */ 198, 199, 198, 199, 190, 81, 82, 251, 4, 177,
- /* 1740 */ 4, 212, 88, 204, 204, 177, 177, 275, 273, 177,
- /* 1750 */ 96, 15, 190, 275, 251, 101, 212, 103, 190, 190,
- /* 1760 */ 106, 107, 190, 90, 177, 111, 198, 199, 181, 251,
- /* 1770 */ 198, 199, 118, 119, 120, 121, 177, 190, 42, 4,
- /* 1780 */ 176, 176, 176, 251, 176, 251, 49, 258, 177, 190,
- /* 1790 */ 177, 177, 181, 100, 177, 59, 178, 198, 199, 106,
- /* 1800 */ 107, 190, 258, 190, 190, 178, 152, 190, 154, 155,
- /* 1810 */ 156, 198, 199, 177, 180, 198, 199, 81, 82, 251,
- /* 1820 */ 177, 60, 183, 251, 88, 104, 190, 56, 184, 138,
- /* 1830 */ 106, 107, 96, 190, 198, 199, 177, 101, 276, 103,
- /* 1840 */ 106, 107, 106, 107, 4, 177, 221, 111, 177, 190,
- /* 1850 */ 251, 237, 177, 227, 118, 119, 120, 121, 190, 4,
- /* 1860 */ 228, 190, 177, 151, 251, 190, 198, 199, 251, 229,
- /* 1870 */ 148, 230, 147, 198, 199, 190, 152, 149, 231, 150,
- /* 1880 */ 177, 106, 107, 198, 199, 252, 177, 251, 152, 64,
- /* 1890 */ 154, 155, 156, 190, 87, 203, 177, 96, 164, 190,
- /* 1900 */ 177, 198, 199, 177, 259, 87, 255, 198, 199, 190,
- /* 1910 */ 177, 203, 158, 190, 99, 177, 190, 198, 199, 251,
- /* 1920 */ 177, 198, 199, 190, 198, 199, 251, 177, 190, 241,
- /* 1930 */ 241, 198, 199, 190, 99, 139, 251, 4, 163, 177,
- /* 1940 */ 190, 198, 199, 177, 177, 177, 106, 107, 198, 199,
- /* 1950 */ 177, 4, 190, 223, 251, 200, 190, 190, 190, 123,
- /* 1960 */ 251, 106, 107, 190, 198, 199, 198, 199, 177, 4,
- /* 1970 */ 251, 198, 199, 118, 251, 177, 200, 251, 4, 177,
- /* 1980 */ 177, 190, 208, 181, 251, 177, 146, 177, 190, 198,
- /* 1990 */ 199, 177, 190, 190, 251, 4, 198, 199, 190, 4,
- /* 2000 */ 190, 251, 31, 4, 190, 4, 198, 199, 198, 199,
- /* 2010 */ 177, 200, 198, 199, 177, 177, 177, 251, 4, 251,
- /* 2020 */ 4, 177, 202, 190, 251, 177, 122, 190, 190, 190,
- /* 2030 */ 177, 198, 199, 100, 190, 177, 198, 199, 190, 106,
- /* 2040 */ 107, 200, 251, 190, 4, 177, 198, 199, 190, 251,
- /* 2050 */ 203, 198, 199, 106, 107, 99, 198, 199, 190, 251,
- /* 2060 */ 208, 251, 177, 4, 177, 251, 198, 199, 4, 177,
- /* 2070 */ 4, 106, 107, 4, 177, 190, 200, 190, 200, 200,
- /* 2080 */ 106, 107, 190, 118, 251, 198, 199, 190, 200, 251,
- /* 2090 */ 198, 199, 118, 203, 180, 198, 199, 106, 107, 251,
- /* 2100 */ 241, 106, 107, 177, 251, 106, 107, 106, 107, 251,
- /* 2110 */ 99, 180, 165, 118, 177, 177, 190, 118, 181, 251,
- /* 2120 */ 106, 107, 106, 107, 133, 241, 177, 190, 190, 177,
- /* 2130 */ 181, 99, 118, 181, 118, 264, 177, 27, 251, 190,
- /* 2140 */ 181, 177, 190, 251, 177, 181, 106, 107, 251, 190,
- /* 2150 */ 177, 265, 158, 152, 190, 177, 177, 190, 118, 100,
- /* 2160 */ 99, 177, 227, 190, 100, 106, 107, 177, 190, 190,
- /* 2170 */ 106, 107, 106, 107, 190, 106, 107, 177, 215, 177,
- /* 2180 */ 190, 177, 177, 177, 62, 99, 99, 96, 180, 250,
- /* 2190 */ 190, 215, 190, 99, 190, 190, 190, 227, 241, 180,
- /* 2200 */ 99, 241, 217, 60, 99, 217, 99, 99, 99, 217,
- /* 2210 */ 217, 99, 268, 241, 18, 99, 268, 99, 152, 99,
- /* 2220 */ 270, 152, 241, 241, 16, 201, 240, 224, 201, 261,
- /* 2230 */ 261, 256, 206, 226, 191, 210, 202, 227, 242, 242,
- /* 2240 */ 242, 224, 175, 191, 191, 191, 263, 216, 207, 262,
- /* 2250 */ 222, 239, 207, 207, 274, 198, 198, 55, 211, 277,
- /* 2260 */ 277, 277, 253,
+ /* 1360 */ 84, 85, 86, 87, 177, 42, 177, 97, 177, 4,
+ /* 1370 */ 232, 233, 177, 186, 187, 235, 97, 190, 177, 190,
+ /* 1380 */ 185, 190, 59, 104, 252, 190, 252, 64, 152, 251,
+ /* 1390 */ 97, 190, 135, 198, 199, 177, 209, 104, 211, 198,
+ /* 1400 */ 199, 212, 106, 4, 81, 82, 96, 106, 190, 177,
+ /* 1410 */ 4, 88, 191, 117, 219, 97, 198, 199, 117, 96,
+ /* 1420 */ 97, 15, 190, 177, 101, 100, 103, 232, 233, 106,
+ /* 1430 */ 107, 106, 107, 232, 111, 4, 190, 177, 4, 97,
+ /* 1440 */ 4, 118, 119, 120, 121, 17, 251, 258, 42, 101,
+ /* 1450 */ 190, 97, 251, 4, 106, 107, 235, 97, 198, 199,
+ /* 1460 */ 177, 38, 244, 4, 104, 59, 101, 276, 96, 251,
+ /* 1470 */ 64, 106, 107, 190, 4, 152, 4, 154, 155, 156,
+ /* 1480 */ 132, 198, 199, 118, 6, 4, 191, 81, 82, 243,
+ /* 1490 */ 38, 96, 96, 4, 88, 97, 96, 177, 38, 100,
+ /* 1500 */ 101, 181, 96, 97, 15, 106, 107, 101, 276, 103,
+ /* 1510 */ 190, 251, 106, 107, 254, 232, 4, 111, 4, 129,
+ /* 1520 */ 4, 96, 115, 177, 118, 119, 120, 121, 64, 4,
+ /* 1530 */ 235, 42, 101, 103, 251, 101, 190, 106, 107, 98,
+ /* 1540 */ 106, 107, 106, 107, 198, 199, 4, 252, 59, 118,
+ /* 1550 */ 101, 177, 118, 64, 4, 106, 107, 12, 152, 4,
+ /* 1560 */ 154, 155, 156, 4, 190, 106, 107, 118, 98, 123,
+ /* 1570 */ 81, 82, 128, 101, 142, 4, 106, 88, 106, 107,
+ /* 1580 */ 71, 177, 101, 89, 4, 96, 15, 106, 107, 139,
+ /* 1590 */ 101, 132, 103, 157, 190, 106, 107, 251, 71, 177,
+ /* 1600 */ 111, 4, 198, 199, 153, 133, 89, 118, 119, 120,
+ /* 1610 */ 121, 141, 190, 42, 22, 101, 91, 101, 106, 107,
+ /* 1620 */ 106, 107, 106, 107, 177, 177, 4, 146, 181, 47,
+ /* 1630 */ 59, 106, 107, 91, 118, 64, 4, 190, 190, 127,
+ /* 1640 */ 39, 152, 104, 154, 155, 156, 39, 158, 106, 107,
+ /* 1650 */ 91, 177, 81, 82, 161, 251, 106, 107, 4, 88,
+ /* 1660 */ 212, 106, 107, 177, 190, 106, 107, 96, 97, 15,
+ /* 1670 */ 123, 96, 101, 118, 103, 177, 190, 106, 107, 165,
+ /* 1680 */ 177, 96, 111, 95, 198, 199, 106, 107, 190, 118,
+ /* 1690 */ 119, 120, 121, 190, 4, 177, 42, 143, 103, 97,
+ /* 1700 */ 97, 198, 199, 106, 107, 95, 258, 177, 190, 177,
+ /* 1710 */ 236, 237, 93, 59, 164, 37, 198, 199, 64, 36,
+ /* 1720 */ 190, 141, 190, 152, 189, 154, 155, 156, 106, 107,
+ /* 1730 */ 198, 199, 252, 4, 238, 81, 82, 251, 106, 107,
+ /* 1740 */ 4, 204, 88, 146, 204, 177, 177, 4, 273, 177,
+ /* 1750 */ 96, 15, 275, 176, 251, 101, 90, 103, 190, 190,
+ /* 1760 */ 106, 107, 190, 177, 177, 111, 198, 199, 146, 251,
+ /* 1770 */ 198, 199, 118, 119, 120, 121, 190, 190, 42, 4,
+ /* 1780 */ 275, 176, 4, 251, 152, 198, 199, 176, 49, 177,
+ /* 1790 */ 7, 177, 176, 181, 11, 59, 106, 107, 177, 104,
+ /* 1800 */ 64, 4, 190, 177, 190, 4, 152, 181, 154, 155,
+ /* 1810 */ 156, 190, 198, 199, 4, 32, 190, 81, 82, 251,
+ /* 1820 */ 178, 177, 4, 251, 88, 181, 178, 177, 183, 100,
+ /* 1830 */ 60, 181, 96, 15, 190, 106, 107, 101, 251, 103,
+ /* 1840 */ 190, 4, 106, 107, 180, 184, 177, 111, 221, 106,
+ /* 1850 */ 107, 56, 162, 138, 118, 119, 120, 121, 177, 190,
+ /* 1860 */ 42, 118, 177, 177, 243, 251, 181, 198, 199, 151,
+ /* 1870 */ 177, 190, 148, 177, 181, 190, 190, 59, 227, 198,
+ /* 1880 */ 199, 106, 107, 190, 106, 107, 190, 228, 152, 177,
+ /* 1890 */ 154, 155, 156, 118, 198, 199, 118, 229, 177, 81,
+ /* 1900 */ 82, 4, 190, 106, 107, 177, 88, 106, 107, 177,
+ /* 1910 */ 100, 190, 230, 149, 96, 118, 106, 107, 190, 101,
+ /* 1920 */ 251, 103, 190, 237, 106, 107, 198, 199, 177, 111,
+ /* 1930 */ 198, 199, 251, 177, 133, 177, 118, 119, 120, 121,
+ /* 1940 */ 177, 190, 4, 106, 107, 177, 190, 251, 190, 198,
+ /* 1950 */ 199, 4, 147, 190, 198, 199, 198, 199, 190, 4,
+ /* 1960 */ 87, 198, 199, 177, 177, 231, 198, 199, 4, 177,
+ /* 1970 */ 152, 150, 154, 155, 156, 252, 190, 190, 4, 251,
+ /* 1980 */ 177, 177, 190, 251, 198, 199, 177, 203, 177, 152,
+ /* 1990 */ 198, 199, 181, 190, 190, 64, 259, 96, 87, 190,
+ /* 2000 */ 177, 190, 251, 106, 107, 177, 158, 251, 255, 251,
+ /* 2010 */ 177, 177, 177, 190, 251, 118, 177, 177, 190, 251,
+ /* 2020 */ 177, 198, 199, 190, 190, 190, 241, 177, 203, 190,
+ /* 2030 */ 190, 198, 199, 190, 177, 177, 177, 251, 198, 199,
+ /* 2040 */ 190, 198, 199, 251, 106, 107, 177, 190, 190, 190,
+ /* 2050 */ 99, 177, 99, 106, 107, 198, 199, 198, 199, 190,
+ /* 2060 */ 241, 106, 107, 177, 190, 118, 177, 198, 199, 223,
+ /* 2070 */ 106, 107, 198, 199, 251, 4, 190, 177, 200, 190,
+ /* 2080 */ 106, 107, 118, 177, 251, 4, 123, 198, 199, 4,
+ /* 2090 */ 190, 251, 118, 200, 251, 208, 190, 139, 198, 199,
+ /* 2100 */ 177, 177, 177, 165, 198, 199, 177, 31, 251, 200,
+ /* 2110 */ 251, 122, 202, 190, 190, 190, 177, 177, 163, 190,
+ /* 2120 */ 251, 198, 199, 198, 199, 251, 177, 198, 199, 190,
+ /* 2130 */ 190, 177, 200, 177, 208, 200, 177, 198, 199, 190,
+ /* 2140 */ 251, 200, 200, 200, 190, 177, 190, 198, 199, 190,
+ /* 2150 */ 177, 251, 198, 199, 198, 199, 177, 251, 190, 241,
+ /* 2160 */ 177, 99, 177, 190, 203, 203, 198, 199, 180, 190,
+ /* 2170 */ 177, 198, 199, 190, 251, 190, 251, 106, 107, 203,
+ /* 2180 */ 251, 100, 177, 190, 180, 177, 99, 106, 107, 177,
+ /* 2190 */ 251, 106, 107, 177, 99, 190, 177, 264, 190, 27,
+ /* 2200 */ 251, 241, 190, 158, 99, 251, 190, 251, 227, 190,
+ /* 2210 */ 265, 215, 62, 99, 99, 250, 96, 215, 180, 251,
+ /* 2220 */ 99, 241, 227, 152, 251, 241, 180, 99, 217, 60,
+ /* 2230 */ 99, 217, 99, 99, 217, 217, 99, 152, 241, 99,
+ /* 2240 */ 268, 18, 241, 268, 99, 99, 99, 241, 270, 16,
+ /* 2250 */ 224, 226, 261, 261, 201, 256, 201, 242, 206, 210,
+ /* 2260 */ 240, 202, 227, 242, 242, 175, 224, 239, 191, 191,
+ /* 2270 */ 191, 191, 262, 222, 216, 207, 263, 253, 211, 207,
+ /* 2280 */ 207, 274, 198, 55, 198,
};
#define YY_SHIFT_USE_DFLT (-81)
-#define YY_SHIFT_COUNT (434)
+#define YY_SHIFT_COUNT (435)
#define YY_SHIFT_MIN (-80)
-#define YY_SHIFT_MAX (2208)
+#define YY_SHIFT_MAX (2233)
static const short yy_shift_ofst[] = {
/* 0 */ 1158, -4, 201, 1182, 819, 1571, 1571, 689, 361, 1489,
- /* 10 */ 1654, 1654, 770, 364, 364, 157, 81, 179, 1406, 1323,
- /* 20 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+ /* 10 */ 1654, 1654, 1654, 770, 364, 364, 157, 81, 179, 1406,
+ /* 20 */ 1323, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
/* 30 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
/* 40 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
- /* 50 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1736, 370, 798,
- /* 60 */ 181, 370, 2001, 2001, 2001, 2001, 2001, 887, 887, 565,
- /* 70 */ 277, 4, 1510, 1492, 1458, 1375, 1449, 1434, 1431, 1427,
- /* 80 */ 1379, 448, 1399, 2066, 2066, 2069, 439, 2066, 2064, 2001,
+ /* 50 */ 1654, 1654, 1654, 1654, 1654, 1654, 1736, 1654, 1818, 370,
+ /* 60 */ 798, 181, 370, 1837, 1837, 1837, 1837, 887, 887, 565,
+ /* 70 */ 277, 4, 1516, 1514, 1481, 1472, 1449, 1434, 1431, 1365,
+ /* 80 */ 1348, 448, 1399, 2071, 2071, 2085, 439, 2071, 2081, 1837,
/* 90 */ 565, 1039, 538, 538, 735, 84, 44, 171, 859, 775,
/* 100 */ 906, 773, 910, 636, 1172, 5, 450, 5, 443, 413,
- /* 110 */ 185, 2059, 2040, 1775, 1947, 1840, 1991, 2016, 1933, 2014,
- /* 120 */ 1525, 1999, 1724, 1995, 1974, 1965, 1734, 1517, 1693, 1855,
- /* 130 */ 1047, 1593, 1597, 902, 140, 1542, 1542, 1436, 1564, 1542,
- /* 140 */ 1236, 780, 1409, 349, 562, 216, 620, 1559, 1515, 1348,
- /* 150 */ 90, 829, 829, 829, 872, 544, 2202, 2202, 2202, 2202,
- /* 160 */ 2202, -81, -81, 459, 619, 619, 619, 619, 619, 619,
+ /* 110 */ 185, 1729, 1974, 1955, 1938, 1622, 1801, 1964, 1810, 1797,
+ /* 120 */ 1690, 1947, 1632, 1897, 1778, 1555, 1550, 1459, 1325, 1775,
+ /* 130 */ 1047, 1512, 1743, 902, 140, 1470, 1470, 1597, 1580, 1470,
+ /* 140 */ 1236, 780, 1436, 349, 562, 216, 620, 1559, 1542, 1525,
+ /* 150 */ 90, 829, 829, 829, 872, 544, 2228, 2228, 2228, 2228,
+ /* 160 */ 2228, -81, -81, 459, 619, 619, 619, 619, 619, 619,
/* 170 */ 619, 619, 619, 645, 327, 683, 1180, 1149, 1117, 1087,
/* 180 */ 1051, 1021, 985, 958, 916, 767, 1239, 1212, 1276, 509,
/* 190 */ 509, -60, -38, -38, -38, -38, 578, -80, 314, 87,
/* 200 */ 87, 41, 155, 75, 58, 58, 58, -6, 186, 862,
- /* 210 */ -47, 808, 1649, 1463, 1284, 206, 908, 424, 400, 25,
- /* 220 */ 729, 729, 679, 1364, -2, 855, 729, 442, 346, 855,
- /* 230 */ 750, 750, 187, -9, 169, 2208, 2120, 2118, 2116, 2196,
- /* 240 */ 2196, 2112, 2109, 2143, 2108, 2143, 2107, 2143, 2105, 2143,
- /* 250 */ 2101, 1761, 1712, 2094, 1761, 2122, 2091, 2087, 2086, 2122,
- /* 260 */ 1712, 2061, 1994, 2110, 2032, 1761, 2011, 1761, 1956, 1801,
- /* 270 */ 1836, 1836, 1836, 1836, 1971, 1801, 1836, 1904, 1836, 1971,
- /* 280 */ 1836, 1836, 1796, 1835, 1815, 1754, 1801, 1818, 1801, 1825,
- /* 290 */ 1807, 1729, 1725, 1728, 1722, 1712, 1691, 1771, 1721, 1761,
- /* 300 */ 1737, 1737, 1673, 1673, 1673, 1673, -81, -81, -81, -81,
- /* 310 */ -81, -81, -81, -81, -81, -81, 564, 79, 158, 45,
- /* 320 */ 702, 243, -49, 398, 1362, 1321, 1042, 984, 788, 2,
- /* 330 */ 471, -20, 758, 678, 344, 144, -44, 1674, 1670, 1601,
- /* 340 */ 1603, 1591, 1549, 1558, 1543, 1511, 1541, 1519, 1496, 1459,
- /* 350 */ 1575, 1484, 1545, 1536, 1550, 1490, 1487, 1418, 1420, 1483,
- /* 360 */ 1480, 1419, 1402, 1527, 1407, 1424, 1417, 1433, 1389, 1380,
- /* 370 */ 1405, 1454, 1394, 1393, 1377, 1368, 1425, 1444, 1327, 1369,
- /* 380 */ 1350, 1309, 1300, 1272, 1202, 1257, 1234, 1269, 1233, 1202,
- /* 390 */ 1222, 1173, 1171, 1124, 1128, 1050, 1216, 1197, 1113, 993,
- /* 400 */ 1193, 1038, 1099, 993, 990, 937, 846, 895, 870, 848,
- /* 410 */ 867, 825, 757, 805, 675, 652, 571, 644, 625, 613,
- /* 420 */ 571, 438, 474, 421, 399, 406, 355, 362, 231, 225,
- /* 430 */ 166, 143, 63, -37, -61,
+ /* 210 */ -47, 808, 1783, 1301, 1296, 206, 908, 424, 400, 25,
+ /* 220 */ 729, 729, 679, 1360, -2, 855, 729, 442, 346, 855,
+ /* 230 */ 750, 750, 187, -9, 169, 2233, 2147, 2146, 2145, 2223,
+ /* 240 */ 2223, 2140, 2137, 2169, 2134, 2169, 2133, 2169, 2131, 2169,
+ /* 250 */ 2128, 1770, 1718, 2121, 1770, 2150, 2120, 2115, 2114, 2150,
+ /* 260 */ 1718, 2105, 2045, 2172, 2095, 1770, 2087, 1901, 1770, 2062,
+ /* 270 */ 1901, 1963, 1963, 1963, 1963, 2076, 1901, 1963, 1989, 1963,
+ /* 280 */ 2076, 1963, 1963, 1958, 1953, 1951, 1848, 1901, 1911, 1901,
+ /* 290 */ 1931, 1873, 1821, 1805, 1764, 1724, 1718, 1715, 1795, 1695,
+ /* 300 */ 1770, 1739, 1739, 1666, 1666, 1666, 1666, -81, -81, -81,
+ /* 310 */ -81, -81, -81, -81, -81, -81, -81, 564, 79, 158,
+ /* 320 */ 45, 702, 243, -49, 398, 1293, 1279, 1042, 984, 788,
+ /* 330 */ 2, 471, -20, 758, 678, 344, 144, -44, 1683, 1678,
+ /* 340 */ 1619, 1610, 1603, 1602, 1595, 1585, 1554, 1588, 1575, 1547,
+ /* 350 */ 1493, 1607, 1538, 1601, 1582, 1592, 1517, 1494, 1450, 1451,
+ /* 360 */ 1527, 1509, 1444, 1432, 1545, 1446, 1441, 1430, 1464, 1390,
+ /* 370 */ 1407, 1425, 1460, 1400, 1396, 1398, 1395, 1452, 1478, 1372,
+ /* 380 */ 1423, 1428, 1354, 1342, 1318, 1168, 1257, 1310, 1270, 1234,
+ /* 390 */ 1168, 1223, 1171, 1169, 1112, 1128, 1050, 1216, 1197, 1113,
+ /* 400 */ 993, 1193, 1038, 1099, 993, 990, 937, 846, 895, 870,
+ /* 410 */ 848, 867, 825, 757, 805, 675, 652, 571, 644, 625,
+ /* 420 */ 613, 571, 438, 474, 421, 399, 406, 355, 362, 231,
+ /* 430 */ 225, 166, 143, 63, -37, -61,
};
#define YY_REDUCE_USE_DFLT (-100)
-#define YY_REDUCE_COUNT (315)
+#define YY_REDUCE_COUNT (316)
#define YY_REDUCE_MIN (-99)
-#define YY_REDUCE_MAX (2067)
+#define YY_REDUCE_MAX (2090)
static const short yy_reduce_ofst[] = {
- /* 0 */ 615, 1195, 699, -99, 764, 1138, 189, 705, 1259, 1218,
- /* 10 */ 1201, 261, 196, 884, 599, 1187, 1897, 1892, 1887, 1868,
- /* 20 */ 1858, 1853, 1848, 1838, 1833, 1814, 1810, 1808, 1798, 1791,
- /* 30 */ 1773, 1768, 1766, 1750, 1743, 1733, 1726, 1723, 1719, 1709,
- /* 40 */ 1703, 1685, 1675, 1668, 1636, 1617, 1613, 1599, 1572, 1568,
- /* 50 */ 1534, 1532, 1518, 1503, 1486, 1435, 1428, 1404, 490, 1401,
- /* 60 */ 214, 769, 1544, 1529, 1225, 124, 67, 596, 175, 547,
- /* 70 */ 1221, 1614, 1964, 1959, 1952, 1949, 1937, 1802, 1611, 1587,
- /* 80 */ 1270, 1562, 203, 1346, 1255, 131, 347, 950, 1397, 195,
- /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2006, 2005, 1979,
- /* 100 */ 1671, 1671, 2004, 2002, 2000, 697, 1990, 11, 1671, 1984,
- /* 110 */ 1979, 1978, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1973,
- /* 120 */ 1671, 1671, 1967, 1671, 1671, 1938, 1671, 1671, 1671, 1926,
- /* 130 */ 1885, 1844, 1839, 1837, 1803, 1141, 1140, 1767, 1762, 1065,
- /* 140 */ 1738, 1671, 1659, 1643, 1569, 1485, 632, 1474, 1452, 1294,
- /* 150 */ 1232, 1191, 666, 489, 938, 1022, 1020, 956, 924, 791,
- /* 160 */ 763, 746, 205, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
- /* 170 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
- /* 180 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,
- /* 190 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 2047, 2058,
- /* 200 */ 2057, 1462, 1980, 1980, 2046, 2045, 2041, 2012, 2031, 2009,
- /* 210 */ 2028, 1983, 1987, 2054, 2053, 2052, 2043, 2017, 2067, 2010,
- /* 220 */ 1998, 1997, 2034, 2025, 2026, 2027, 1996, 1986, 1975, 2024,
- /* 230 */ 1969, 1968, 1462, 2007, 2003, 1950, 1859, 1982, 1981, 1948,
- /* 240 */ 1944, 1972, 1859, 1993, 1859, 1992, 1859, 1988, 1859, 1985,
- /* 250 */ 1960, 2019, 1970, 1957, 2008, 1976, 1939, 1859, 1859, 1963,
- /* 260 */ 1935, 1859, 1886, 1871, 1884, 1931, 1859, 1914, 1859, 1890,
- /* 270 */ 1888, 1879, 1878, 1876, 1852, 1847, 1841, 1820, 1811, 1774,
- /* 280 */ 1776, 1755, 1730, 1689, 1688, 1651, 1708, 1645, 1692, 1633,
- /* 290 */ 1462, 1647, 1641, 1640, 1632, 1626, 1625, 1644, 1639, 1634,
- /* 300 */ 1627, 1618, 1608, 1606, 1605, 1604, 1478, 1472, 1475, 1540,
- /* 310 */ 1539, 1491, 1462, 1462, 1462, 1523,
+ /* 0 */ 615, 1195, 699, -99, 764, 1138, 189, 705, 1283, 1260,
+ /* 10 */ 1218, 1201, 261, 196, 884, 599, 1187, 1973, 1968, 1956,
+ /* 20 */ 1954, 1949, 1939, 1929, 1925, 1923, 1906, 1900, 1889, 1874,
+ /* 30 */ 1869, 1859, 1857, 1843, 1840, 1833, 1823, 1792, 1786, 1768,
+ /* 40 */ 1763, 1758, 1756, 1751, 1732, 1728, 1696, 1681, 1669, 1614,
+ /* 50 */ 1587, 1572, 1568, 1532, 1518, 1503, 1486, 1404, 1346, 490,
+ /* 60 */ 1474, 214, 769, 1448, 1189, 124, 67, 596, 175, 547,
+ /* 70 */ 1295, 1686, 1811, 1693, 1685, 1650, 1644, 1626, 1612, 1447,
+ /* 80 */ 1320, 1232, 203, 1621, 1246, 131, 347, 950, 1191, 195,
+ /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2019, 2016, 1983,
+ /* 100 */ 1803, 1803, 2012, 2008, 2005, 697, 1993, 11, 1803, 1985,
+ /* 110 */ 1983, 1979, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1959,
+ /* 120 */ 1803, 1803, 1940, 1803, 1803, 1924, 1803, 1803, 1803, 1886,
+ /* 130 */ 1858, 1850, 1839, 1835, 1834, 1221, 1140, 1828, 1809, 1097,
+ /* 140 */ 1804, 1803, 1787, 1721, 1712, 1586, 632, 1569, 1530, 1498,
+ /* 150 */ 1422, 1374, 666, 489, 938, 1022, 1020, 956, 924, 791,
+ /* 160 */ 763, 746, 205, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
+ /* 170 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
+ /* 180 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
+ /* 190 */ 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 2067, 2086,
+ /* 200 */ 2084, 1480, 2007, 2007, 2073, 2072, 2068, 2028, 2058, 2024,
+ /* 210 */ 2051, 2013, 2010, 2080, 2079, 2078, 2077, 2042, 2090, 2035,
+ /* 220 */ 2022, 2021, 2059, 2049, 2052, 2055, 2015, 2020, 1999, 2053,
+ /* 230 */ 1992, 1991, 1480, 2025, 2026, 1978, 1918, 2006, 2001, 1975,
+ /* 240 */ 1972, 1997, 1918, 2018, 1918, 2017, 1918, 2014, 1918, 2011,
+ /* 250 */ 1984, 2046, 1995, 1980, 2038, 2002, 1965, 1918, 1918, 1996,
+ /* 260 */ 1981, 1918, 1945, 1933, 1960, 2004, 1918, 1976, 1988, 1918,
+ /* 270 */ 1962, 1943, 1942, 1941, 1935, 1926, 1961, 1932, 1910, 1909,
+ /* 280 */ 1887, 1893, 1878, 1846, 1819, 1785, 1753, 1825, 1737, 1784,
+ /* 290 */ 1723, 1480, 1734, 1682, 1668, 1659, 1651, 1627, 1661, 1645,
+ /* 300 */ 1664, 1648, 1642, 1616, 1611, 1605, 1577, 1505, 1477, 1475,
+ /* 310 */ 1540, 1537, 1496, 1480, 1480, 1480, 1535,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 729, 1037, 1142, 1142, 1026, 1026, 1026, 1142, 1026, 1026,
- /* 10 */ 1026, 1026, 900, 1148, 1148, 1148, 1026, 1026, 1026, 1026,
- /* 20 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 30 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 40 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
- /* 50 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1015, 1148, 894,
- /* 60 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 774,
- /* 70 */ 890, 900, 1148, 1148, 1148, 1148, 1148, 962, 949, 940,
- /* 80 */ 1148, 1148, 1148, 972, 972, 955, 842, 972, 1148, 1148,
- /* 90 */ 1148, 1148, 928, 928, 1027, 1148, 766, 1112, 1117, 1013,
- /* 100 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 901, 1148,
- /* 110 */ 1013, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 120 */ 1148, 963, 956, 950, 941, 1148, 1148, 1148, 1148, 1148,
- /* 130 */ 1148, 1148, 1148, 1148, 1148, 890, 890, 1148, 1148, 890,
- /* 140 */ 1148, 1148, 1148, 1014, 1148, 1148, 763, 1148, 1148, 1148,
- /* 150 */ 735, 1058, 1148, 1148, 729, 1142, 1142, 1142, 1142, 1142,
- /* 160 */ 1142, 1135, 880, 935, 906, 945, 933, 937, 1038, 1031,
- /* 170 */ 1032, 1030, 936, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- /* 180 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 988, 1000,
- /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1148, 1148,
- /* 200 */ 1148, 992, 1148, 1148, 1148, 1148, 1148, 893, 1148, 1148,
- /* 210 */ 864, 1148, 1086, 1148, 1148, 776, 1148, 878, 738, 944,
- /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1033, 928,
- /* 230 */ 1148, 1148, 993, 891, 878, 1126, 909, 909, 909, 1111,
- /* 240 */ 1111, 909, 909, 855, 909, 855, 909, 855, 909, 855,
- /* 250 */ 909, 760, 944, 909, 760, 846, 968, 909, 909, 846,
- /* 260 */ 944, 909, 1093, 1091, 909, 760, 909, 760, 909, 1046,
- /* 270 */ 844, 844, 844, 844, 825, 1046, 844, 809, 844, 825,
- /* 280 */ 844, 844, 1148, 909, 909, 1148, 1046, 1052, 1046, 1027,
- /* 290 */ 994, 934, 922, 932, 929, 944, 1148, 757, 828, 760,
- /* 300 */ 746, 746, 734, 734, 734, 734, 1139, 1139, 1135, 811,
- /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1039, 1148, 1148, 1148,
- /* 320 */ 1148, 1148, 1148, 1060, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 330 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 730, 1148,
- /* 340 */ 1148, 1148, 1148, 1148, 1129, 1148, 1148, 1148, 1148, 1148,
- /* 350 */ 1148, 1090, 1089, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 360 */ 1148, 1148, 1148, 1078, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 370 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
- /* 380 */ 1148, 1148, 1148, 1148, 867, 869, 1148, 1148, 1148, 868,
- /* 390 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 930,
- /* 400 */ 1148, 923, 1148, 1036, 1148, 1017, 1025, 1148, 1148, 1148,
- /* 410 */ 1148, 1148, 1016, 1148, 1148, 1148, 1144, 1148, 1148, 1148,
- /* 420 */ 1143, 1148, 1148, 1148, 1148, 1148, 1028, 980, 1148, 979,
- /* 430 */ 978, 769, 1148, 744, 1148, 726, 731, 1128, 1125, 1127,
- /* 440 */ 1122, 1123, 1121, 1124, 1120, 1118, 1119, 1116, 1114, 1113,
- /* 450 */ 1115, 1110, 1106, 1066, 1064, 1062, 1071, 1070, 1069, 1068,
- /* 460 */ 1067, 1063, 1061, 1065, 1059, 959, 947, 938, 862, 1105,
- /* 470 */ 1103, 1104, 1057, 1055, 1056, 861, 860, 859, 854, 853,
- /* 480 */ 852, 851, 1132, 1141, 1140, 1138, 1137, 1136, 1130, 1131,
- /* 490 */ 1044, 1043, 1041, 1040, 1042, 762, 1082, 1085, 1084, 1083,
- /* 500 */ 1088, 1087, 1080, 1092, 1097, 1096, 1101, 1100, 1099, 1098,
- /* 510 */ 1095, 1077, 967, 966, 964, 969, 961, 960, 965, 952,
- /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1081,
- /* 530 */ 858, 857, 856, 761, 756, 911, 755, 754, 765, 831,
- /* 540 */ 832, 840, 843, 838, 841, 837, 836, 835, 839, 834,
- /* 550 */ 830, 768, 767, 775, 824, 802, 800, 799, 803, 816,
- /* 560 */ 815, 822, 821, 820, 819, 818, 814, 817, 813, 812,
- /* 570 */ 804, 797, 796, 810, 795, 827, 826, 823, 794, 850,
- /* 580 */ 849, 848, 845, 793, 792, 791, 790, 789, 788, 986,
- /* 590 */ 985, 1006, 977, 865, 872, 871, 870, 874, 875, 885,
- /* 600 */ 883, 882, 881, 917, 916, 915, 914, 913, 912, 905,
- /* 610 */ 903, 899, 898, 904, 902, 920, 921, 919, 897, 889,
- /* 620 */ 887, 888, 886, 974, 971, 973, 970, 907, 895, 892,
- /* 630 */ 879, 925, 924, 1029, 1018, 1008, 1019, 910, 1007, 1005,
- /* 640 */ 1028, 1025, 1020, 1102, 1024, 1012, 1011, 1010, 1147, 1145,
- /* 650 */ 1146, 1049, 1051, 1054, 1053, 1050, 927, 926, 1048, 1047,
- /* 660 */ 1009, 984, 781, 779, 780, 1074, 1073, 1076, 1075, 1072,
- /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1021, 1022, 981,
- /* 680 */ 1023, 983, 770, 873, 866, 976, 975, 808, 807, 806,
- /* 690 */ 805, 877, 876, 787, 801, 786, 784, 764, 759, 758,
- /* 700 */ 753, 751, 748, 750, 747, 752, 749, 745, 743, 742,
- /* 710 */ 741, 740, 739, 773, 772, 771, 769, 737, 736, 733,
- /* 720 */ 732, 728, 727, 725,
+ /* 0 */ 730, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027,
+ /* 10 */ 1027, 1027, 1027, 901, 1149, 1149, 1149, 1027, 1027, 1027,
+ /* 20 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 30 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 40 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
+ /* 50 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1016, 1149,
+ /* 60 */ 895, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 775,
+ /* 70 */ 891, 901, 1149, 1149, 1149, 1149, 1149, 963, 950, 941,
+ /* 80 */ 1149, 1149, 1149, 973, 973, 956, 843, 973, 1149, 1149,
+ /* 90 */ 1149, 1149, 929, 929, 1028, 1149, 767, 1113, 1118, 1014,
+ /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 902, 1149,
+ /* 110 */ 1014, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 120 */ 1149, 964, 957, 951, 942, 1149, 1149, 1149, 1149, 1149,
+ /* 130 */ 1149, 1149, 1149, 1149, 1149, 891, 891, 1149, 1149, 891,
+ /* 140 */ 1149, 1149, 1149, 1015, 1149, 1149, 764, 1149, 1149, 1149,
+ /* 150 */ 736, 1059, 1149, 1149, 730, 1143, 1143, 1143, 1143, 1143,
+ /* 160 */ 1143, 1136, 881, 936, 907, 946, 934, 938, 1039, 1032,
+ /* 170 */ 1033, 1031, 937, 1028, 1028, 1028, 1028, 1028, 1028, 1028,
+ /* 180 */ 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 989, 1001,
+ /* 190 */ 988, 996, 1005, 1000, 997, 991, 990, 992, 1149, 1149,
+ /* 200 */ 1149, 993, 1149, 1149, 1149, 1149, 1149, 894, 1149, 1149,
+ /* 210 */ 865, 1149, 1087, 1149, 1149, 777, 1149, 879, 739, 945,
+ /* 220 */ 919, 919, 810, 834, 799, 929, 919, 909, 1034, 929,
+ /* 230 */ 1149, 1149, 994, 892, 879, 1127, 910, 910, 910, 1112,
+ /* 240 */ 1112, 910, 910, 856, 910, 856, 910, 856, 910, 856,
+ /* 250 */ 910, 761, 945, 910, 761, 847, 969, 910, 910, 847,
+ /* 260 */ 945, 910, 1094, 1092, 910, 761, 910, 1047, 761, 910,
+ /* 270 */ 1047, 845, 845, 845, 845, 826, 1047, 845, 810, 845,
+ /* 280 */ 826, 845, 845, 1149, 910, 910, 1149, 1047, 1053, 1047,
+ /* 290 */ 1028, 995, 935, 923, 933, 930, 945, 1149, 758, 829,
+ /* 300 */ 761, 747, 747, 735, 735, 735, 735, 1140, 1140, 1136,
+ /* 310 */ 812, 812, 897, 1004, 1003, 1002, 786, 1040, 1149, 1149,
+ /* 320 */ 1149, 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149,
+ /* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 731,
+ /* 340 */ 1149, 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149,
+ /* 350 */ 1149, 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 360 */ 1149, 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149,
+ /* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 380 */ 1149, 1149, 1149, 1149, 1149, 868, 870, 1149, 1149, 1149,
+ /* 390 */ 869, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+ /* 400 */ 931, 1149, 924, 1149, 1037, 1149, 1018, 1026, 1149, 1149,
+ /* 410 */ 1149, 1149, 1149, 1017, 1149, 1149, 1149, 1145, 1149, 1149,
+ /* 420 */ 1149, 1144, 1149, 1149, 1149, 1149, 1149, 1029, 981, 1149,
+ /* 430 */ 980, 979, 770, 1149, 745, 1149, 727, 732, 1129, 1126,
+ /* 440 */ 1128, 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115,
+ /* 450 */ 1114, 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070,
+ /* 460 */ 1069, 1068, 1064, 1062, 1066, 1060, 960, 948, 939, 863,
+ /* 470 */ 1106, 1104, 1105, 1058, 1056, 1057, 862, 861, 860, 855,
+ /* 480 */ 854, 853, 852, 1133, 1142, 1141, 1139, 1138, 1137, 1131,
+ /* 490 */ 1132, 1045, 1044, 1042, 1041, 1043, 763, 1083, 1086, 1085,
+ /* 500 */ 1084, 1089, 1088, 1081, 1093, 1098, 1097, 1102, 1101, 1100,
+ /* 510 */ 1099, 1096, 1078, 968, 967, 965, 970, 962, 961, 966,
+ /* 520 */ 953, 959, 958, 949, 952, 848, 944, 940, 943, 864,
+ /* 530 */ 1082, 859, 858, 857, 762, 757, 912, 756, 755, 766,
+ /* 540 */ 832, 833, 841, 844, 839, 842, 838, 837, 836, 840,
+ /* 550 */ 835, 831, 769, 768, 776, 825, 803, 801, 800, 804,
+ /* 560 */ 817, 816, 823, 822, 821, 820, 819, 815, 818, 814,
+ /* 570 */ 813, 805, 798, 797, 811, 796, 828, 827, 824, 795,
+ /* 580 */ 851, 850, 849, 846, 794, 793, 792, 791, 790, 789,
+ /* 590 */ 987, 986, 1007, 978, 866, 873, 872, 871, 875, 876,
+ /* 600 */ 886, 884, 883, 882, 918, 917, 916, 915, 914, 913,
+ /* 610 */ 906, 904, 900, 899, 905, 903, 921, 922, 920, 898,
+ /* 620 */ 890, 888, 889, 887, 975, 972, 974, 971, 908, 896,
+ /* 630 */ 893, 880, 926, 925, 1030, 1019, 1009, 1020, 911, 1008,
+ /* 640 */ 1006, 1029, 1026, 1021, 1103, 1025, 1013, 1012, 1011, 1148,
+ /* 650 */ 1146, 1147, 1050, 1052, 1055, 1054, 1051, 928, 927, 1049,
+ /* 660 */ 1048, 1010, 985, 782, 780, 781, 1075, 1074, 1077, 1076,
+ /* 670 */ 1073, 784, 783, 779, 778, 999, 998, 983, 1022, 1023,
+ /* 680 */ 982, 1024, 984, 771, 874, 867, 977, 976, 809, 808,
+ /* 690 */ 807, 806, 878, 877, 788, 802, 787, 785, 765, 760,
+ /* 700 */ 759, 754, 752, 749, 751, 748, 753, 750, 746, 744,
+ /* 710 */ 743, 742, 741, 740, 774, 773, 772, 770, 738, 737,
+ /* 720 */ 734, 733, 729, 728, 726,
};
/* The next table maps tokens into fallback tokens. If a construct
@@ -1297,7 +1301,7 @@ static const char *const yyRuleName[] = {
/* 129 */ "cmd ::= DROP TABLE ifexists ID_DB|ID_TAB",
/* 130 */ "ifexists ::= IF EXISTS",
/* 131 */ "ifexists ::=",
- /* 132 */ "cmd ::= CREATE temp VIEW ifnotexists fullname AS select",
+ /* 132 */ "cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select",
/* 133 */ "cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW",
/* 134 */ "cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW",
/* 135 */ "cmd ::= DROP VIEW ifexists fullname",
@@ -1481,7 +1485,7 @@ static const char *const yyRuleName[] = {
/* 313 */ "exprlist ::=",
/* 314 */ "nexprlist ::= nexprlist COMMA expr",
/* 315 */ "nexprlist ::= exprx",
- /* 316 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt",
+ /* 316 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
/* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
/* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
/* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
@@ -2354,7 +2358,7 @@ static const struct {
{ 169, 4 },
{ 217, 2 },
{ 217, 0 },
- { 169, 7 },
+ { 169, 8 },
{ 169, 7 },
{ 169, 5 },
{ 169, 4 },
@@ -3398,12 +3402,13 @@ static void yy_reduce(
{ yy_destructor(yypParser,177,&yymsp[-2].minor);
}
break;
- case 132: /* cmd ::= CREATE temp VIEW ifnotexists fullname AS select */
+ case 132: /* cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select */
{
- yygotominor.yy399 = new SqliteCreateView(*(yymsp[-5].minor.yy376), *(yymsp[-3].minor.yy237), yymsp[-2].minor.yy66->name1, yymsp[-2].minor.yy66->name2, yymsp[0].minor.yy123);
- delete yymsp[-5].minor.yy376;
- delete yymsp[-3].minor.yy237;
- delete yymsp[-2].minor.yy66;
+ yygotominor.yy399 = new SqliteCreateView(*(yymsp[-6].minor.yy376), *(yymsp[-4].minor.yy237), yymsp[-3].minor.yy66->name1, yymsp[-3].minor.yy66->name2, yymsp[0].minor.yy123, *(yymsp[-2].minor.yy139));
+ delete yymsp[-6].minor.yy376;
+ delete yymsp[-4].minor.yy237;
+ delete yymsp[-3].minor.yy66;
+ delete yymsp[-2].minor.yy139;
objectForTokens = yygotominor.yy399;
}
break;
@@ -4463,7 +4468,7 @@ static void yy_reduce(
yygotominor.yy13->append(yymsp[0].minor.yy490);
}
break;
- case 316: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */
+ case 316: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
{
yygotominor.yy399 = new SqliteCreateIndex(
*(yymsp[-10].minor.yy237),
@@ -4471,7 +4476,7 @@ static void yy_reduce(
*(yymsp[-7].minor.yy211),
*(yymsp[-6].minor.yy211),
*(yymsp[-4].minor.yy211),
- *(yymsp[-2].minor.yy139),
+ *(yymsp[-2].minor.yy495),
yymsp[0].minor.yy490
);
delete yymsp[-8].minor.yy237;
@@ -4479,7 +4484,7 @@ static void yy_reduce(
delete yymsp[-7].minor.yy211;
delete yymsp[-6].minor.yy211;
delete yymsp[-4].minor.yy211;
- delete yymsp[-2].minor.yy139;
+ delete yymsp[-2].minor.yy495;
objectForTokens = yygotominor.yy399;
}
break;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
index 0bab877..932e965 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y
@@ -737,11 +737,12 @@ ifexists(X) ::= . {X = new bool(false);}
cmd(X) ::= CREATE temp(T) VIEW
ifnotexists(E) fullname(N)
- AS select(S). {
- X = new SqliteCreateView(*(T), *(E), N->name1, N->name2, S);
+ idxlist_opt(C) AS select(S). {
+ X = new SqliteCreateView(*(T), *(E), N->name1, N->name2, S, *(C));
delete T;
delete E;
delete N;
+ delete C;
objectForTokens = X;
}
@@ -1824,7 +1825,7 @@ nexprlist(X) ::= exprx(E). {
cmd(X) ::= CREATE uniqueflag(U) INDEX
ifnotexists(E) nm(N1) dbnm(N2)
- ON nm(N3) LP idxlist(L) RP
+ ON nm(N3) LP sortlist(L) RP
where_opt(W). {
X = new SqliteCreateIndex(
*(U),
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
index ba2ea37..a97b765 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp
@@ -74,7 +74,7 @@ StatementTokenBuilder& StatementTokenBuilder::withComment(const QString& value)
StatementTokenBuilder& StatementTokenBuilder::withFloat(double value)
{
- return with(Token::FLOAT, QString::number(value));
+ return with(Token::FLOAT, doubleToString(value));
}
StatementTokenBuilder& StatementTokenBuilder::withInteger(qint64 value)