1 /* Driver template for the LEMON parser generator.
2 ** The author disclaims copyright to this source code.
3 **
4 ** This version of "lempar.c" is modified, slightly, for use by SQLite.
5 ** The only modifications are the addition of a couple of NEVER()
6 ** macros to disable tests that are needed in the case of a general
7 ** LALR(1) grammar but which are always false in the
8 ** specific grammar used by SQLite.
9 */
10 /* First off, code is included that follows the "include" declaration
11 ** in the input grammar file. */
12 #include <stdio.h>
13 
14 #include "token.h"
15 #include "parsercontext.h"
16 #include "parser_helper_stubs.h"
17 #include "common/utils_sql.h"
18 #include "common/global.h"
19 #include "common/unused.h"
20 #include "parser/ast/sqlitealtertable.h"
21 #include "parser/ast/sqliteanalyze.h"
22 #include "parser/ast/sqliteattach.h"
23 #include "parser/ast/sqlitebegintrans.h"
24 #include "parser/ast/sqlitecommittrans.h"
25 #include "parser/ast/sqlitecopy.h"
26 #include "parser/ast/sqlitecreateindex.h"
27 #include "parser/ast/sqlitecreatetable.h"
28 #include "parser/ast/sqlitecreatetrigger.h"
29 #include "parser/ast/sqlitecreateview.h"
30 #include "parser/ast/sqlitecreatevirtualtable.h"
31 #include "parser/ast/sqlitedelete.h"
32 #include "parser/ast/sqlitedetach.h"
33 #include "parser/ast/sqlitedropindex.h"
34 #include "parser/ast/sqlitedroptable.h"
35 #include "parser/ast/sqlitedroptrigger.h"
36 #include "parser/ast/sqlitedropview.h"
37 #include "parser/ast/sqliteemptyquery.h"
38 #include "parser/ast/sqliteinsert.h"
39 #include "parser/ast/sqlitepragma.h"
40 #include "parser/ast/sqlitereindex.h"
41 #include "parser/ast/sqliterelease.h"
42 #include "parser/ast/sqliterollback.h"
43 #include "parser/ast/sqlitesavepoint.h"
44 #include "parser/ast/sqliteselect.h"
45 #include "parser/ast/sqliteupdate.h"
46 #include "parser/ast/sqlitevacuum.h"
47 #include "parser/ast/sqliteexpr.h"
48 #include "parser/ast/sqlitecolumntype.h"
49 #include "parser/ast/sqliteconflictalgo.h"
50 #include "parser/ast/sqlitesortorder.h"
51 #include "parser/ast/sqliteindexedcolumn.h"
52 #include "parser/ast/sqliteforeignkey.h"
53 #include "parser/ast/sqlitewith.h"
54 #include "parser/ast/sqliteupsert.h"
55 #include "parser/ast/sqlitewindowdefinition.h"
56 #include "parser/ast/sqlitefilterover.h"
57 #include "parser/ast/sqlitenulls.h"
58 #include <QObject>
59 #include <QDebug>
60 #include <limits.h>
61 
62 #define assert(X) Q_ASSERT(X)
63 #define UNUSED_PARAMETER(X) (void)(X)
64 #define DONT_INHERIT_TOKENS(X) noTokenInheritanceFields << X
65 /* Next is all token values, in a form suitable for use by makeheaders.
66 ** This section will be null unless lemon is run with the -m switch.
67 */
68 /*
69 ** These constants (all generated automatically by the parser generator)
70 ** specify the various kinds of tokens (terminals) that the parser
71 ** understands.
72 **
73 ** Each symbol here is a terminal symbol in the grammar.
74 */
75 /* Make sure the INTERFACE macro is defined.
76 */
77 #ifndef INTERFACE
78 # define INTERFACE 1
79 #endif
80 /* The next thing included is series of defines which control
81 ** various aspects of the generated parser.
82 **    YYCODETYPE         is the data type used for storing terminal
83 **                       and nonterminal numbers.  "unsigned char" is
84 **                       used if there are fewer than 250 terminals
85 **                       and nonterminals.  "int" is used otherwise.
86 **    YYNOCODE           is a number of type YYCODETYPE which corresponds
87 **                       to no legal terminal or nonterminal number.  This
88 **                       number is used to fill in empty slots of the hash
89 **                       table.
90 **    YYFALLBACK         If defined, this indicates that one or more tokens
91 **                       have fall-back values which should be used if the
92 **                       original value of the token will not parse.
93 **    YYACTIONTYPE       is the data type used for storing terminal
94 **                       and nonterminal numbers.  "unsigned char" is
95 **                       used if there are fewer than 250 rules and
96 **                       states combined.  "int" is used otherwise.
97 **    sqlite3_parseTOKENTYPE     is the data type used for minor tokens given
98 **                       directly to the parser from the tokenizer.
99 **    YYMINORTYPE        is the data type used for all minor tokens.
100 **                       This is typically a union of many types, one of
101 **                       which is sqlite3_parseTOKENTYPE.  The entry in the union
102 **                       for base tokens is called "yy0".
103 **    YYSTACKDEPTH       is the maximum depth of the parser's stack.  If
104 **                       zero the stack is dynamically sized using realloc()
105 **    sqlite3_parseARG_SDECL     A static variable declaration for the %extra_argument
106 **    sqlite3_parseARG_PDECL     A parameter declaration for the %extra_argument
107 **    sqlite3_parseARG_STORE     Code to store %extra_argument into yypParser
108 **    sqlite3_parseARG_FETCH     Code to extract %extra_argument from yypParser
109 **    YYNSTATE           the combined number of states.
110 **    YYNRULE            the number of rules in the grammar
111 **    YYERRORSYMBOL      is the code number of the error symbol.  If not
112 **                       defined, then do no error processing.
113 */
114 #define YYCODETYPE unsigned short int
115 #define YYNOCODE 321
116 #define YYACTIONTYPE unsigned short int
117 #define YYWILDCARD 78
118 #define sqlite3_parseTOKENTYPE Token*
119 typedef union {
120   int yyinit;
121   sqlite3_parseTOKENTYPE yy0;
122   SqliteWith* yy1;
123   SqliteLimit* yy4;
124   ParserDeferSubClause* yy9;
125   SqliteSelect::Core::JoinSource* yy31;
126   SqliteExpr::LikeOp* yy40;
127   SqliteWindowDefinition::Window::Frame* yy41;
128   ParserCreateTableColumnList* yy42;
129   ParserCreateTableColumnConstraintList* yy51;
130   ParserResultColumnList* yy53;
131   SqliteColumnType* yy57;
132   SqliteWindowDefinition::Window::Frame::Exclude* yy63;
133   ParserExprList* yy71;
134   SqliteCreateTrigger::Scope* yy83;
135   ParserStubTransDetails* yy84;
136   ParserStubExplain* yy91;
137   SqliteForeignKey::Condition::Reaction* yy104;
138   ParserQueryList* yy110;
139   SqliteCreateTable::Column* yy147;
140   SqliteCreateTrigger::Event* yy151;
141   ParserStubAlias* yy200;
142   ParserSetValueList* yy201;
143   SqliteSelect::Core::JoinOp* yy221;
144   ParserIndexedColumnList* yy223;
145   QVariant* yy229;
146   SqliteCreateTable::Constraint* yy246;
147   SqliteFilterOver* yy247;
148   SqliteFilterOver::Over* yy248;
149   SqliteWindowDefinition* yy266;
150   SqliteIndexedColumn* yy268;
151   SqliteSelect::Core::JoinConstraint* yy295;
152   ParserWindowDefList* yy299;
153   SqliteInitially* yy312;
154   SqliteSelect* yy313;
155   QString* yy319;
156   SqliteWindowDefinition::Window* yy334;
157   SqliteQuery* yy363;
158   SqliteSelect::CompoundOperator* yy382;
159   int* yy386;
160   SqliteFilterOver::Filter* yy397;
161   SqliteUpsert* yy400;
162   ParserOrderByList* yy403;
163   SqliteConflictAlgo* yy418;
164   SqliteWindowDefinition::Window::Frame::RangeOrRows* yy419;
165   ParserFullName* yy440;
166   SqliteSelect::Core::SingleSource* yy441;
167   SqliteWindowDefinition::Window::Frame::Bound* yy442;
168   SqliteWith::CommonTableExpression* yy446;
169   ParserOtherSourceList* yy451;
170   SqliteCreateTable::Column::Constraint* yy464;
171   SqliteSelect::Core* yy470;
172   ParserExprNestedList* yy486;
173   ParserCreateTableConstraintList* yy493;
174   ParserStubInsertOrReplace* yy504;
175   SqliteForeignKey::Condition* yy507;
176   SqliteExpr* yy512;
177   SqliteCreateTrigger::Time* yy532;
178   SqliteSortOrder* yy549;
179   QStringList* yy575;
180   SqliteNulls* yy579;
181   ParserFkConditionList* yy584;
182   ParserTermOrLiteral* yy590;
183   ParserIndexedBy* yy592;
184   ParserCteList* yy593;
185   bool* yy611;
186 } YYMINORTYPE;
187 #ifndef YYSTACKDEPTH
188 #define YYSTACKDEPTH 100
189 #endif
190 #define sqlite3_parseARG_SDECL ParserContext* parserContext;
191 #define sqlite3_parseARG_PDECL ,ParserContext* parserContext
192 #define sqlite3_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext
193 #define sqlite3_parseARG_STORE yypParser->parserContext = parserContext
194 #define YYNSTATE 844
195 #define YYNRULE 472
196 #define YYFALLBACK 1
197 #define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
198 #define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
199 #define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
200 
201 #define GET_CONTEXT yyParser* yypParser = pParser; sqlite3_parseARG_FETCH
202 
203 /* The yyzerominor constant is used to initialize instances of
204 ** YYMINORTYPE objects to zero. */
205 static const YYMINORTYPE yyzerominor = { 0 };
206 
207 /* Define the yytestcase() macro to be a no-op if is not already defined
208 ** otherwise.
209 **
210 ** Applications can choose to define yytestcase() in the %include section
211 ** to a macro that can assist in verifying code coverage.  For production
212 ** code the yytestcase() macro should be turned off.  But it is useful
213 ** for testing.
214 */
215 #ifndef yytestcase
216 # define yytestcase(X)
217 #endif
218 
219 
220 /* Next are the tables used to determine what action to take based on the
221 ** current state and lookahead token.  These tables are used to implement
222 ** functions that take a state number and lookahead value and return an
223 ** action integer.
224 **
225 ** Suppose the action integer is N.  Then the action is determined as
226 ** follows
227 **
228 **   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
229 **                                      token onto the stack and goto state N.
230 **
231 **   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
232 **
233 **   N == YYNSTATE+YYNRULE              A syntax error has occurred.
234 **
235 **   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
236 **
237 **   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
238 **                                      slots in the yy_action[] table.
239 **
240 ** The action table is constructed as a single large table named yy_action[].
241 ** Given state S and lookahead X, the action is computed as
242 **
243 **      yy_action[ yy_shift_ofst[S] + X ]
244 **
245 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
246 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
247 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
248 ** and that yy_default[S] should be used instead.
249 **
250 ** The formula above is for computing the action when the lookahead is
251 ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
252 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
253 ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
254 ** YY_SHIFT_USE_DFLT.
255 **
256 ** The following are the tables generated in this section:
257 **
258 **  yy_action[]        A single table containing all actions.
259 **  yy_lookahead[]     A table containing the lookahead for each entry in
260 **                     yy_action.  Used to detect hash collisions.
261 **  yy_shift_ofst[]    For each state, the offset into yy_action for
262 **                     shifting terminals.
263 **  yy_reduce_ofst[]   For each state, the offset into yy_action for
264 **                     shifting non-terminals after a reduce.
265 **  yy_default[]       Default action for each state.
266 */
267 #define YY_ACTTAB_COUNT (3037)
268 static const YYACTIONTYPE yy_action[] = {
269  /*     0 */   510,  625,  284,  836,  655,  288,  841,   64,   65,  509,
270  /*    10 */   339,  626,  501,  795,  795,   62,   62,   63,   63,   63,
271  /*    20 */    63,  351,   61,   61,   61,   61,   60,   60,   59,   59,
272  /*    30 */    59,   58,  253,  485, 1085,   61,   61,   61,   61,   60,
273  /*    40 */    60,   59,   59,   59,   58,  253,  835,  290,  794, 1085,
274  /*    50 */    71,  506,   63,   63,   63,   63,   40,   61,   61,   61,
275  /*    60 */    61,   60,   60,   59,   59,   59,   58,  253,  805,  635,
276  /*    70 */   836,  347,  785,  836,  592,   70,  452,   54,  817,   88,
277  /*    80 */   338,  835,  835,   59,   59,   59,   58,  253, 1085,  836,
278  /*    90 */   806,  223,  836,  835,   51,   52,  693, 1085,  635,  508,
279  /*   100 */   325,   53, 1012,  348,  261,  415,  622,  621,   88,    2,
280  /*   110 */  1012,  835,  681,  117,  793,  286,  498, 1012,  324,  807,
281  /*   120 */   833,  634,  834,  833,  510,  810,  157,  466,  453,  439,
282  /*   130 */   436,  435,  793,  809,  808,  807,  501, 1012,  563,  682,
283  /*   140 */   682,  611,  486,  746, 1078,  327,  677,  434,  366,  575,
284  /*   150 */  1012,  254, 1012, 1012,  396,  403, 1012,  296,  425,  303,
285  /*   160 */   749, 1012, 1012, 1012, 1012, 1012,  793,  274,  456,  793,
286  /*   170 */   748,  783,   12,  356,  565,  506,  273,  586,   77,   69,
287  /*   180 */    39,  138,   69, 1012,  701,  440,   22,  701,  768,  834,
288  /*   190 */   833,  805,  834,  833,   14,  836,  785,  111,    1,  489,
289  /*   200 */   798,   54,  702,  804,  835,  702,  587,  589,  834,  833,
290  /*   210 */   588,  834,  833,  806,  223,  570,  659,  701,   51,   52,
291  /*   220 */   701,  137,  508,  649,  706,   53, 1078,  836, 1029, 1029,
292  /*   230 */    21,  412,  386,    2, 1078,  172,  117,  328,  793,  705,
293  /*   240 */   498, 1078,  157,  807,  833,  439,  436,  435,  510,  810,
294  /*   250 */   392,   75,  443,  188,  421,  250,  793,  809,  808,  807,
295  /*   260 */   501, 1078,  784,  434, 1178,  275,  935,  835,  648,   56,
296  /*   270 */   455,  366,  687,  686, 1078,  130, 1078, 1078,  174,  121,
297  /*   280 */   326,  445,  321,  444,  159, 1078, 1078, 1078, 1078,  811,
298  /*   290 */   793,  700,  812,  793,  162,  783,   12,  245,  319,  506,
299  /*   300 */    60,   60,   59,   59,   59,   58,  253, 1078,  840,  526,
300  /*   310 */   836,  650,  651,  513,  834,  833,  563,  805,  836,  798,
301  /*   320 */   785,  717,  805,   23,  611,   54,  527,  526,  158,  257,
302  /*   330 */   835,  797,  699,  695,  835,  835,  242,  241,  240,  806,
303  /*   340 */   223,  523,   51,   52,  806,  208,  834,  833,  508,   53,
304  /*   350 */  1063,  356,  564,  508,  384,  526,  171,    2, 1063,  523,
305  /*   360 */   548,   77,  793,  786,  498, 1063,  431,  807,  833,  798,
306  /*   370 */   578,  329,  836,  810,  723,  579,  466,  451,  729,  465,
307  /*   380 */   793,  809,  808,  807,  835, 1063,  789,  523,  786,  547,
308  /*   390 */   546,  388,  788,  545,  502,  475,  497,  366, 1063,  729,
309  /*   400 */  1063, 1063,  754,  407,  798,  729,  692, 1160, 1160, 1063,
310  /*   410 */   329, 1063, 1063,   76,  793,  635,  117,  793,  516,  783,
311  /*   420 */    12,  786,  787,  835,  519,   88,  370,  108,  835,  834,
312  /*   430 */   833, 1063,  319,  117,  464,  361,  479,  834,  833,  731,
313  /*   440 */   836, 1163,  792,  836,   64,   65,  509,  339, 1160, 1160,
314  /*   450 */   795,  795,   62,   62,   63,   63,   63,   63,  781,   61,
315  /*   460 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
316  /*   470 */   836,  807,  729,  722,  361,   55,  792,  810,   58,  253,
317  /*   480 */   167,   73,  777,  776,  604,  809,  808,  807,  798, 1160,
318  /*   490 */  1160,  834,  833,  729,   64,   65,  509,  339,   66,  729,
319  /*   500 */   795,  795,   62,   62,   63,   63,   63,   63,  474,   61,
320  /*   510 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
321  /*   520 */   836,  770,  836,  798,  712,  771,   64,   65,  509,  339,
322  /*   530 */  1160, 1160,  795,  795,   62,   62,   63,   63,   63,   63,
323  /*   540 */   765,   61,   61,   61,   61,   60,   60,   59,   59,   59,
324  /*   550 */    58,  253,  764,  729,  613,  836,  562,  562,   44,  834,
325  /*   560 */   833,  191,  834,  833,  566,  805,  246,  685,   45,  454,
326  /*   570 */   482,  365, 1160, 1160,  729,  772,  636,  252,  835,  662,
327  /*   580 */   729, 1317,  184,  514,    3,  538,  613,  806,  208,  834,
328  /*   590 */   833,  765, 1163,  313, 1163,  661,  508,  393,  835,  357,
329  /*   600 */  1269,  742,  792,  764,  539,  540,  835, 1269,  130,   64,
330  /*   610 */    65,  509,  339, 1160, 1160,  795,  795,   62,   62,   63,
331  /*   620 */    63,   63,   63,  742,   61,   61,   61,   61,   60,   60,
332  /*   630 */    59,   59,   59,   58,  253,  818,  792,  769,  158,  834,
333  /*   640 */   833,  834,  833,  113,  566,  754,  836,   76,   64,   65,
334  /*   650 */   509,  339, 1160, 1160,  795,  795,   62,   62,   63,   63,
335  /*   660 */    63,   63,  488,   61,   61,   61,   61,   60,   60,   59,
336  /*   670 */    59,   59,   58,  253,  834,  833,  541,  775,  836,  357,
337  /*   680 */  1268,  330,  734,  473,   87,  814,  836, 1268,  836,   64,
338  /*   690 */    65,  509,  339, 1160, 1160,  795,  795,   62,   62,   63,
339  /*   700 */    63,   63,   63,  447,   61,   61,   61,   61,   60,   60,
340  /*   710 */    59,   59,   59,   58,  253,   63,   63,   63,   63,   56,
341  /*   720 */    61,   61,   61,   61,   60,   60,   59,   59,   59,   58,
342  /*   730 */   253,  494,   64,   65,  509,  339,  370,  671,  795,  795,
343  /*   740 */    62,   62,   63,   63,   63,   63,  813,   61,   61,   61,
344  /*   750 */    61,   60,   60,   59,   59,   59,   58,  253,  811, 1086,
345  /*   760 */   571,  812,  190,  488,  309,  834,  833,  312,  591,   64,
346  /*   770 */    65,  509,  339,  469, 1086,  795,  795,   62,   62,   63,
347  /*   780 */    63,   63,   63,  836,   61,   61,   61,   61,   60,   60,
348  /*   790 */    59,   59,   59,   58,  253,  107, 1087,  834,  833,  836,
349  /*   800 */   758,  798, 1164,  836,  485,  834,  833,  834,  833,  349,
350  /*   810 */   802, 1087,  755, 1086,   78,  836,  468,  835,   64,   65,
351  /*   820 */   509,  339, 1086,  571,  795,  795,   62,   62,   63,   63,
352  /*   830 */    63,   63,  510,   61,   61,   61,   61,   60,   60,   59,
353  /*   840 */    59,   59,   58,  253,  501, 1088,  271,  270, 1214,  836,
354  /*   850 */  1087,   78,  603,  493,  791,   64,   65,  509,  339, 1087,
355  /*   860 */  1088,  795,  795,   62,   62,   63,   63,   63,   63,  538,
356  /*   870 */    61,   61,   61,   61,   60,   60,   59,   59,   59,   58,
357  /*   880 */   253,  798,  835,  506, 1167,  777,  776,   20,  539,  398,
358  /*   890 */   117,  675,   69, 1022,  580,  581,  409,  701,  337, 1088,
359  /*   900 */    78,  753,  834,  833,  785,  391,  780,  779, 1088,   54,
360  /*   910 */     8,  835,  167,  576,  745,  702,  805,  620,  834,  833,
361  /*   920 */   798,  670,  834,  833,  327,  677,   51,   52,   44,  835,
362  /*   930 */   701, 1277, 1277,   53,  834,  833,  390,  112,  806,  223,
363  /*   940 */  1229,    2, 1170,  236,  235,  484,  793,  508,  498,  836,
364  /*   950 */   282,  807,  833, 1164,  117, 1164,  712,  810,   68,  136,
365  /*   960 */   399,  775,  782,  835,  793,  809,  808,  807,  807,   85,
366  /*   970 */   714,  836,  835,  504,  810,  466,  467,   42,  576,  775,
367  /*   980 */  1277, 1277,  809,  808,  807,  816,  759,  772,  499,  252,
368  /*   990 */    86,   19,  767,  643,  442,  832,  366,  470,  793,  111,
369  /*  1000 */   798,  793,  830,  783,   12,   27,   64,   65,  509,  339,
370  /*  1010 */   836,  831,  795,  795,   62,   62,   63,   63,   63,   63,
371  /*  1020 */   836,   61,   61,   61,   61,   60,   60,   59,   59,   59,
372  /*  1030 */    58,  253,   50, 1229,   48,   64,   65,  509,  339,   74,
373  /*  1040 */   544,  795,  795,   62,   62,   63,   63,   63,   63,  510,
374  /*  1050 */    61,   61,   61,   61,   60,   60,   59,   59,   59,   58,
375  /*  1060 */   253,  501, 1243,  532,  477,  136,  836,  329,  834,  833,
376  /*  1070 */   483,  724,    4,   83,  836,  500,  780,  779,  835,  341,
377  /*  1080 */   835,  335,  611,  798,  617,  617,   64,   65,  509,  339,
378  /*  1090 */   834,  833,  795,  795,   62,   62,   63,   63,   63,   63,
379  /*  1100 */   506,   61,   61,   61,   61,   60,   60,   59,   59,   59,
380  /*  1110 */    58,  253,  480,  476,  798,  668,  720,  667,  586,   77,
381  /*  1120 */   739,  785,  114,  168,  608, 1172,   54,  532,    6,  834,
382  /*  1130 */   833,  265,  310,  756,  836,  744,  311,  481,  615,  834,
383  /*  1140 */   833,   78,  608,   51,   52,  835, 1172,  587,  589,  775,
384  /*  1150 */    53,  588, 1172,  374,  238,  510,  738,  805,    2,  736,
385  /*  1160 */   271,  270,  836,  793,  689,  498,  836,  501,  807,  833,
386  /*  1170 */   835,   56,  413,  247,  810,  117,  450,  724,    4,  806,
387  /*  1180 */   223,  793,  809,  808,  807,  834,  833,  836,  508,    5,
388  /*  1190 */   535,  836,  531,  834,  833,  717, 1172,  414,  836,  777,
389  /*  1200 */   776,  729,  798,  537, 1172,  536,  506,  844,  835,  733,
390  /*  1210 */   416, 1172,  805,  371,  761,  793,  466,  457,  793,  730,
391  /*  1220 */   783,   12,  729,   78,  732,  835,  338,  785,  729,  805,
392  /*  1230 */    18, 1172,   54,  798,  806,  118,  395,  366,  597,  835,
393  /*  1240 */   718,  786,  835,  508, 1172,  641, 1172, 1172,  549,   51,
394  /*  1250 */    52,  806,  118,  834,  833, 1172,   53, 1172, 1172,  737,
395  /*  1260 */   508,  317,   17,  305,    2,  381,  786,  259,  111,  793,
396  /*  1270 */   837,  498,  666,  713,  807,  833,  835, 1172,  843,    3,
397  /*  1280 */   810,  834,  833,  487,  432,  834,  833,  793,  809,  808,
398  /*  1290 */   807,  111,  754,  836,  529,  665,  713,  836,  406,  786,
399  /*  1300 */   170,  602, 1165, 1277, 1277,  594,  834,  833,  110,  754,
400  /*  1310 */   834,  833,  338,  842,  549,  640,  639,  834,  833,  602,
401  /*  1320 */   707,  793,  529,  594,  793,  835,  783,   12,  631,   64,
402  /*  1330 */    65,  509,  339,  492,  757,  795,  795,   62,   62,   63,
403  /*  1340 */    63,   63,   63,  704,   61,   61,   61,   61,   60,   60,
404  /*  1350 */    59,   59,   59,   58,  253,   64,   65,  509,  339,  298,
405  /*  1360 */    16,  795,  795,   62,   62,   63,   63,   63,   63,   11,
406  /*  1370 */    61,   61,   61,   61,   60,   60,   59,   59,   59,   58,
407  /*  1380 */   253,  395,   64,   65,  509,  339,  743,    4,  795,  795,
408  /*  1390 */    62,   62,   63,   63,   63,   63,  117,   61,   61,   61,
409  /*  1400 */    61,   60,   60,   59,   59,   59,   58,  253,  422,  728,
410  /*  1410 */     4,  559,  834,  833,  166,  168,  834,  833,   56,  496,
411  /*  1420 */   757,  836,  727,    4,   64,   65,  509,  339,   49,  559,
412  /*  1430 */   795,  795,   62,   62,   63,   63,   63,   63,  165,   61,
413  /*  1440 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
414  /*  1450 */   607,  836,  667,  709,   64,   65,  509,  339,  842,  676,
415  /*  1460 */   795,  795,   62,   62,   63,   63,   63,   63,  708,   61,
416  /*  1470 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
417  /*  1480 */   164,   46,  725,    4,   64,   65,  509,  339,  163,  674,
418  /*  1490 */   795,  795,   62,   62,   63,   63,   63,   63,  696,   61,
419  /*  1500 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
420  /*  1510 */   246,  685,  836,  454,   64,   65,  509,  339,  124,  657,
421  /*  1520 */   795,  795,   62,   62,   63,   63,   63,   63,  460,   61,
422  /*  1530 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
423  /*  1540 */   834,  833,  419,  691,   64,   65,  509,  339,  458,  189,
424  /*  1550 */   795,  795,   62,   62,   63,   63,   63,   63,    7,   61,
425  /*  1560 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
426  /*  1570 */   834,  833,  726,    4,   64,   65,  509,  339,  690,  316,
427  /*  1580 */   795,  795,   62,   62,   63,   63,   63,   63,   15,   61,
428  /*  1590 */    61,   61,   61,   60,   60,   59,   59,   59,   58,  253,
429  /*  1600 */   612, 1193,   64,   65,  509,  339,  274,  456,  795,  795,
430  /*  1610 */    62,   62,   63,   63,   63,   63,  825,   61,   61,   61,
431  /*  1620 */    61,   60,   60,   59,   59,   59,   58,  253,  574,  688,
432  /*  1630 */   836,  834,  833,   64,   65,  509,  339,  836,   28,  795,
433  /*  1640 */   795,   62,   62,   63,   63,   63,   63,  684,   61,   61,
434  /*  1650 */    61,   61,   60,   60,   59,   59,   59,   58,  253,  836,
435  /*  1660 */  1244,   64,   65,  509,  339,  683,  836,  795,  795,   62,
436  /*  1670 */    62,   63,   63,   63,   63,  510,   61,   61,   61,   61,
437  /*  1680 */    60,   60,   59,   59,   59,   58,  253,  501, 1242,  420,
438  /*  1690 */   477,   64,   65,  509,  339,  116,  168,  795,  795,   62,
439  /*  1700 */    62,   63,   63,   63,   63,  798,   61,   61,   61,   61,
440  /*  1710 */    60,   60,   59,   59,   59,   58,  253,  123,  600,  280,
441  /*  1720 */   302,  255,  679,  805,  258,  168,  506,  421,  297,  401,
442  /*  1730 */   337,  279,  115,  835,  353,   44,  835,  448,  337,  476,
443  /*  1740 */   835,  823,  835,  835,  836,  806,  208,  785,  836,  834,
444  /*  1750 */   833,  835,   54,   37,  508,   25,  834,  833,  293,  133,
445  /*  1760 */   300,  127,  525,  821,  299,   44,  350,  836,  260,   51,
446  /*  1770 */    52,  352,  178,  835,  263,  805,   53,  104,  834,  833,
447  /*  1780 */    78,  510,  122,  441,    2,  834,  833,  333,  835,  793,
448  /*  1790 */   525,  498,  805,  501,  807,  833,  477,  806,  223,  805,
449  /*  1800 */   810,  713,  256,  754,  568,  835,  508,  793,  809,  808,
450  /*  1810 */   807,  358,  835,  556,  806,  223,  167,  354,  759,  176,
451  /*  1820 */   956,  806,  118,  508,  798,   78,  766,  623,  647,  836,
452  /*  1830 */   508,   36,  506,  713,  267,  836,  638,  331,  438,  717,
453  /*  1840 */   731,  793,   82,  247,  793,  478,  783,   12,  703,  836,
454  /*  1850 */   318,  266,  835,  785,  433,  366,  836,  367,   54,  584,
455  /*  1860 */   712,  836,  332,  834,  833,   81,  634,  834,  833,   24,
456  /*  1870 */   169,  838,  366,  160,  449,   51,   52,   80,  826,  754,
457  /*  1880 */   264,  517,   53,  824,  835,  289,  834,  833,  156,  561,
458  /*  1890 */     2,  835,  324,  397,  717,  793,  835,  498,  835,  517,
459  /*  1900 */   807,  833,  698,  616,   10,  510,  810,  835,  429,  380,
460  /*  1910 */   187,  152,  822,  793,  809,  808,  807,  501,  247,  101,
461  /*  1920 */    99,   64,   38,  509,  339,  835,   35,  795,  795,   62,
462  /*  1930 */    62,   63,   63,   63,   63,  836,   61,   61,   61,   61,
463  /*  1940 */    60,   60,   59,   59,   59,   58,  253,  793,  834,  833,
464  /*  1950 */   793,  713,  783,   12,  834,  833,  506,   34,   33,  836,
465  /*  1960 */   819,  805,   32,  555,  379,   98,  805,  644,  834,  833,
466  /*  1970 */   552,  836,  805,  835,  835,  834,  833,  785,  717,  835,
467  /*  1980 */   834,  833,   54,  806,  223,  835,  378,  697,  806,  223,
468  /*  1990 */   836,  835,  508,  376,  806,  118,  555,  508,  694,   51,
469  /*  2000 */    52,   97,  653,  508,  836,  805,   53,  595,  596,  590,
470  /*  2010 */   585,  510,  410,  337,    2,  656,  552,  247,  835,  793,
471  /*  2020 */   387,  498,  805,  501,  807,  833,  835,  806,  223,  836,
472  /*  2030 */   810,  583,  105,  168,  805,  835,  508,  793,  809,  808,
473  /*  2040 */   807,  366,  577,  377,  806,  118,  490,  835,  408,  336,
474  /*  2050 */   147,  383,  754,  508,  834,  833,  806,  216,  295,   13,
475  /*  2060 */   815,  292,  506,  181,  471,  508,  192,  624,  558,   92,
476  /*  2070 */   534,  793,  619,  835,  793,  533,  783,   12,  834,  833,
477  /*  2080 */   394,  337,  287,  785,  836,  366,  557,  803,   54,  139,
478  /*  2090 */   834,  833,  515,  375,  835,  835,   90,  247,  790,  262,
479  /*  2100 */   835,  759,  754,  582,  243,   51,   52,  109,  836,  834,
480  /*  2110 */   833,  835,   53,  503,  754,  239,  369,  510,  368,  382,
481  /*  2120 */     2,  315,  610,  834,  833,  793,  835,  498,  805,  501,
482  /*  2130 */   807,  833,  839,  179,  805,  180,  810,  829,  827,  805,
483  /*  2140 */   828,  835,  719,  793,  809,  808,  807,  835,  834,  833,
484  /*  2150 */   806,  194,  835,  836,  177,  835,  806,  204,  836,  508,
485  /*  2160 */   512,  806,  226,  285,  554,  508,  430,  553,  506,  759,
486  /*  2170 */   508,  511,  715,  836,  805,  614,  835,  793,  836,  805,
487  /*  2180 */   793,   72,  783,   12,  836,  835,  103,  835,  836,  785,
488  /*  2190 */   175,  820,  835,  836,   54,  801,  806,  224,  800,  173,
489  /*  2200 */   710,  806,  232,  834,  833,  508,  274,  836,  754,  836,
490  /*  2210 */   508,   51,   52,  835,  754,  343,  606,   23,   53,  754,
491  /*  2220 */    43,  569,  472,  510,  342,  805,    2,  834,  833,   67,
492  /*  2230 */   836,  793,  186,  498,  253,  501,  807,  833,  835,  799,
493  /*  2240 */   805,  836,  810,  752,  495,  805,   84,  806,  231,  793,
494  /*  2250 */   809,  808,  807,  835,  754,  251,  508,  283,  835,  754,
495  /*  2260 */   269,  550,  806,  233,  268,   47,  334,  806,  237,   57,
496  /*  2270 */   835,  508,  834,  833,  506,  751,  508,  834,  833,  488,
497  /*  2280 */   750,  161,  836,  793,  747,  601,  793,  389,  783,   12,
498  /*  2290 */  1168,  741,  834,  833,  835,  785,  244,  834,  833,  134,
499  /*  2300 */    54,  520,  463,  834,  833,  754,  756,  834,  833,  678,
500  /*  2310 */   522,  735,  834,  833,  135,  835,  572,   51,   52,  459,
501  /*  2320 */   754,  320,  835,  654,   53,  754,  834,  833,  834,  833,
502  /*  2330 */   456,  805,    2, 1170,  835,  680,  835,  793,  551,  498,
503  /*  2340 */   160,  560,  807,  833,  835,  663,  669,  510,  810,  834,
504  /*  2350 */   833,  542,  664,  806,  272,  793,  809,  808,  807,  501,
505  /*  2360 */   834,  833,  508,  446,   65,  509,  339,  385,  322,  795,
506  /*  2370 */   795,   62,   62,   63,   63,   63,   63,  805,   61,   61,
507  /*  2380 */    61,   61,   60,   60,   59,   59,   59,   58,  253,  793,
508  /*  2390 */   835,  660,  793,  276,  783,   12,  760,  372,  506,  806,
509  /*  2400 */   340,  834,  833,  632,  659,  805,  835,  716,  508,  314,
510  /*  2410 */   307,  754,  805,  404,  658,  637,  835,  618,  835,  785,
511  /*  2420 */   630,  360,  835,  835,   54,  835,  835,  806,  230,  155,
512  /*  2430 */   629,  521,  628,  346,  806,  203,  508,  805,  507,  627,
513  /*  2440 */   154,   51,   52,  508,  835,  308,  835,  359,   53,   30,
514  /*  2450 */   835,  835,  102,  510,  428,  132,    2,  754,  835,  806,
515  /*  2460 */   221,  793,  423,  498,  153,  501,  807,  833,  508,  249,
516  /*  2470 */   294,  805,  810,  291,  281,  835,  805,  411,  277,  793,
517  /*  2480 */   809,  808,  807,  835,  835,  754,  835,  835,  278,  835,
518  /*  2490 */   306,  835,  754,  806,  225,  426,   31,  151,  806,  364,
519  /*  2500 */   609,  835,  508,  131,  506,  100,  150,  508,  605,  149,
520  /*  2510 */   185,  106,  418,  793,  599,  148,  793,  754,  783,   12,
521  /*  2520 */   417,  593,  129,  128,  405,  785,  402,  146,  573,   96,
522  /*  2530 */    54,  145,  400,   95,  144,   94,  143,   93,  142,   30,
523  /*  2540 */   543,  141,   29,  530,  518,   26,  126,   51,   52,  373,
524  /*  2550 */   528,  754,  524,  805,   53,  125,  754,  140,  805,  193,
525  /*  2560 */    79,  778,    2,  344,  774,  763,  835,  793,  721,  498,
526  /*  2570 */   491,  835,  834,  833,  711,  806,  363,  183,  810,  323,
527  /*  2580 */   806,  362,  182,  655,  508,  793,  809,  808,  807,  508,
528  /*  2590 */   437,  234,  598,  304,  424,  509,  339,  301,  355,  795,
529  /*  2600 */   795,   62,   62,   63,   63,   63,   63,    9,   61,   61,
530  /*  2610 */    61,   61,   60,   60,   59,   59,   59,   58,  253,  793,
531  /*  2620 */   796,  773,  793,  762,  783,   12,  642,  805,  248,  345,
532  /*  2630 */   427,   41,  505,  754,  805,  740,  652,   91,  754,  567,
533  /*  2640 */   835,  805,  646,   78,  673,  645,  836,  835,  672,  806,
534  /*  2650 */   220, 1318,  633,  805,  835, 1318,  806,  206,  508, 1318,
535  /*  2660 */   805, 1318, 1318,  806,  219,  508,  835,  805, 1318, 1318,
536  /*  2670 */  1318, 1318,  508,  835, 1318,  806,  218, 1318, 1318,  805,
537  /*  2680 */   835,  805,  806,  205,  508, 1318, 1318, 1318, 1318,  806,
538  /*  2690 */   202,  508,  835,  805,  835, 1318, 1318, 1318,  508, 1318,
539  /*  2700 */  1318,  806,  119,  806,  201, 1318,  835,  754, 1318, 1318,
540  /*  2710 */   508, 1318,  508, 1318,  754,  806,  199, 1318, 1318,  805,
541  /*  2720 */  1318,  754, 1318, 1318,  508, 1318, 1318, 1318, 1318, 1318,
542  /*  2730 */  1318, 1318,  835,  754, 1318, 1318, 1318, 1318, 1318, 1318,
543  /*  2740 */   754,  806,  227, 1318, 1318, 1318, 1318,  754, 1318, 1318,
544  /*  2750 */   508, 1318, 1318,  805, 1318, 1318,  805, 1318,  805,  754,
545  /*  2760 */  1318,  754, 1318, 1318, 1318, 1318,  835, 1318, 1318,  835,
546  /*  2770 */  1318,  835,  805,  754, 1318,  806,  229, 1318,  806,  222,
547  /*  2780 */   806,  228, 1318, 1318,  508,  835, 1318,  508,  805,  508,
548  /*  2790 */  1318, 1318, 1318, 1318,  806,  217, 1318, 1318, 1318,  754,
549  /*  2800 */   805,  835, 1318,  508,  805, 1318, 1318, 1318, 1318, 1318,
550  /*  2810 */   806,  214, 1318,  835, 1318, 1318, 1318,  835, 1318,  508,
551  /*  2820 */  1318, 1318,  806,  198,  805, 1318,  806,  197, 1318, 1318,
552  /*  2830 */  1318,  508, 1318,  754, 1318,  508,  754,  835,  754, 1318,
553  /*  2840 */   805, 1318, 1318, 1318, 1318, 1318,  806,  196, 1318, 1318,
554  /*  2850 */  1318, 1318,  754,  835,  805,  508,  805, 1318, 1318, 1318,
555  /*  2860 */   805, 1318,  806,  195, 1318, 1318, 1318,  835,  754,  835,
556  /*  2870 */  1318,  508, 1318,  835, 1318,  805,  806,  207,  806,  212,
557  /*  2880 */   754, 1318,  806,  211,  754,  508, 1318,  508,  835, 1318,
558  /*  2890 */   805,  508,  805, 1318,  805, 1318, 1318,  806,  120, 1318,
559  /*  2900 */  1318, 1318, 1318,  835,  754,  835,  508,  835, 1318, 1318,
560  /*  2910 */  1318, 1318,  806,  210,  806,  209,  806,  215, 1318,  805,
561  /*  2920 */   754,  508, 1318,  508, 1318,  508, 1318, 1318, 1318, 1318,
562  /*  2930 */  1318, 1318,  835, 1318,  754, 1318,  754, 1318, 1318, 1318,
563  /*  2940 */   754,  806,  213, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
564  /*  2950 */   508, 1318, 1318,  805, 1318,  754,  805, 1318, 1318, 1318,
565  /*  2960 */  1318, 1318, 1318, 1318, 1318, 1318,  835, 1318, 1318,  835,
566  /*  2970 */   754, 1318,  754, 1318,  754,  806,  200, 1318,  806,   89,
567  /*  2980 */  1318, 1318, 1318, 1318,  508, 1318, 1318,  462, 1318, 1318,
568  /*  2990 */  1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,  754,
569  /*  3000 */  1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
570  /*  3010 */  1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
571  /*  3020 */  1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318, 1318,
572  /*  3030 */  1318, 1318, 1318,  754, 1318, 1318,  754,
573 };
574 static const YYCODETYPE yy_lookahead[] = {
575  /*     0 */     4,  228,   67,    4,  231,   70,  106,   79,   80,   81,
576  /*    10 */    82,  238,   16,   85,   86,   87,   88,   89,   90,   91,
577  /*    20 */    92,  110,   94,   95,   96,   97,   98,   99,  100,  101,
578  /*    30 */   102,  103,  104,  199,  106,   94,   95,   96,   97,   98,
579  /*    40 */    99,  100,  101,  102,  103,  104,  212,  112,  129,  121,
580  /*    50 */    88,   55,   89,   90,   91,   92,   93,   94,   95,   96,
581  /*    60 */    97,   98,   99,  100,  101,  102,  103,  104,  199,  199,
582  /*    70 */     4,  114,   76,    4,   59,  113,  207,   81,  208,  209,
583  /*    80 */   199,  212,  212,  100,  101,  102,  103,  104,  160,    4,
584  /*    90 */   221,  222,    4,  212,   98,   99,  100,  169,  199,  230,
585  /*   100 */   129,  105,  106,  204,  234,   24,  236,  208,  209,  113,
586  /*   110 */   114,  212,  285,  244,  118,  180,  120,  121,  147,  123,
587  /*   120 */   124,  122,  123,  124,    4,  129,  127,  258,  259,  130,
588  /*   130 */   131,  132,  136,  137,  138,  139,   16,  141,   78,   42,
589  /*   140 */    43,  207,  308,  309,   24,  318,  319,  148,  279,   65,
590  /*   150 */   154,  113,  156,  157,   75,   71,  160,  142,  143,  144,
591  /*   160 */    31,  165,  166,  167,  168,  169,  170,  152,  153,  173,
592  /*   170 */    41,  175,  176,  113,  114,   55,  250,  243,  244,  113,
593  /*   180 */    83,   84,  113,  187,  118,   34,  260,  118,  307,  123,
594  /*   190 */   124,  199,  123,  124,  113,    4,   76,  121,  113,  207,
595  /*   200 */     4,   81,  136,  118,  212,  136,  272,  273,  123,  124,
596  /*   210 */   276,  123,  124,  221,  222,  131,  140,  151,   98,   99,
597  /*   220 */   151,  116,  230,   15,  136,  105,  106,    4,  162,  163,
598  /*   230 */   296,  297,   81,  113,  114,  116,  244,  121,  118,  151,
599  /*   240 */   120,  121,  127,  123,  124,  130,  131,  132,    4,  129,
600  /*   250 */   258,  113,   44,  115,  199,  104,  136,  137,  138,  139,
601  /*   260 */    16,  141,  114,  148,  180,  186,  115,  212,   60,  121,
602  /*   270 */   154,  279,  156,  157,  154,  121,  156,  157,  127,  128,
603  /*   280 */   129,  130,  131,  132,  133,  165,  166,  167,  168,  155,
604  /*   290 */   170,  121,  158,  173,  124,  175,  176,  113,  147,   55,
605  /*   300 */    98,   99,  100,  101,  102,  103,  104,  187,  191,  118,
606  /*   310 */     4,  128,  129,  196,  123,  124,   78,  199,    4,  123,
607  /*   320 */    76,  199,  199,  169,  207,   81,  135,  136,   43,  274,
608  /*   330 */   212,  135,  162,  163,  212,  212,  142,  143,  144,  221,
609  /*   340 */   222,  118,   98,   99,  221,  222,  123,  124,  230,  105,
610  /*   350 */   106,  113,  114,  230,  146,  164,  121,  113,  114,  136,
611  /*   360 */   243,  244,  118,    5,  120,  121,   81,  123,  124,    4,
612  /*   370 */     7,  199,    4,  129,  121,   12,  258,  259,   35,  207,
613  /*   380 */   136,  137,  138,  139,  212,  141,  114,  164,   30,  272,
614  /*   390 */   273,  269,  114,  276,   36,   52,  207,  279,  154,   56,
615  /*   400 */   156,  157,  279,   40,    4,   62,  100,   42,   43,  165,
616  /*   410 */   199,  167,  168,  160,  170,  199,  244,  173,  301,  175,
617  /*   420 */   176,   63,  114,  212,  208,  209,  141,  113,  212,  123,
618  /*   430 */   124,  187,  147,  244,  262,  263,  313,  123,  124,  316,
619  /*   440 */     4,   26,  136,    4,   79,   80,   81,   82,   83,   84,
620  /*   450 */    85,   86,   87,   88,   89,   90,   91,   92,  114,   94,
621  /*   460 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
622  /*   470 */     4,  123,   35,  262,  263,  113,  170,  129,  103,  104,
623  /*   480 */   115,  113,  137,  138,  170,  137,  138,  139,  123,   42,
624  /*   490 */    43,  123,  124,   56,   79,   80,   81,   82,   51,   62,
625  /*   500 */    85,   86,   87,   88,   89,   90,   91,   92,  165,   94,
626  /*   510 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
627  /*   520 */     4,  114,    4,  123,  159,  125,   79,   80,   81,   82,
628  /*   530 */    83,   84,   85,   86,   87,   88,   89,   90,   91,   92,
629  /*   540 */    10,   94,   95,   96,   97,   98,   99,  100,  101,  102,
630  /*   550 */   103,  104,   22,   35,  118,    4,  117,  118,  121,  123,
631  /*   560 */   124,  113,  123,  124,   78,  199,  245,  246,  121,  248,
632  /*   570 */    52,  210,   42,   43,   56,  214,  215,  216,  212,   21,
633  /*   580 */    62,  192,  193,  194,  195,  199,  150,  221,  222,  123,
634  /*   590 */   124,   10,  177,  199,  179,   37,  230,  203,  212,  113,
635  /*   600 */   114,   32,  136,   22,  218,  219,  212,  121,  121,   79,
636  /*   610 */    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
637  /*   620 */    90,   91,   92,   54,   94,   95,   96,   97,   98,   99,
638  /*   630 */   100,  101,  102,  103,  104,  119,  170,  114,   43,  123,
639  /*   640 */   124,  123,  124,  121,   78,  279,    4,  160,   79,   80,
640  /*   650 */    81,   82,   42,   43,   85,   86,   87,   88,   89,   90,
641  /*   660 */    91,   92,  165,   94,   95,   96,   97,   98,   99,  100,
642  /*   670 */   101,  102,  103,  104,  123,  124,  290,  291,    4,  113,
643  /*   680 */   114,  315,  316,  165,  187,  134,    4,  121,    4,   79,
644  /*   690 */    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
645  /*   700 */    90,   91,   92,  100,   94,   95,   96,   97,   98,   99,
646  /*   710 */   100,  101,  102,  103,  104,   89,   90,   91,   92,  121,
647  /*   720 */    94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
648  /*   730 */   104,  115,   79,   80,   81,   82,  141,  212,   85,   86,
649  /*   740 */    87,   88,   89,   90,   91,   92,  221,   94,   95,   96,
650  /*   750 */    97,   98,   99,  100,  101,  102,  103,  104,  155,  106,
651  /*   760 */   118,  158,  113,  165,   67,  123,  124,   70,   26,   79,
652  /*   770 */    80,   81,   82,   38,  121,   85,   86,   87,   88,   89,
653  /*   780 */    90,   91,   92,    4,   94,   95,   96,   97,   98,   99,
654  /*   790 */   100,  101,  102,  103,  104,  113,  106,  123,  124,    4,
655  /*   800 */   114,    4,   26,    4,  199,  123,  124,  123,  124,  112,
656  /*   810 */   136,  121,   26,  160,   72,    4,   81,  212,   79,   80,
657  /*   820 */    81,   82,  169,  181,   85,   86,   87,   88,   89,   90,
658  /*   830 */    91,   92,    4,   94,   95,   96,   97,   98,   99,  100,
659  /*   840 */   101,  102,  103,  104,   16,  106,   98,   99,  106,    4,
660  /*   850 */   160,   72,  170,  207,  170,   79,   80,   81,   82,  169,
661  /*   860 */   121,   85,   86,   87,   88,   89,   90,   91,   92,  199,
662  /*   870 */    94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
663  /*   880 */   104,    4,  212,   55,  177,  137,  138,   14,  218,  219,
664  /*   890 */   244,  285,  113,  114,  142,  143,  144,  118,  199,  160,
665  /*   900 */    72,  114,  123,  124,   76,  217,  218,  219,  169,   81,
666  /*   910 */   113,  212,  115,  118,  309,  136,  199,  207,  123,  124,
667  /*   920 */   123,   76,  123,  124,  318,  319,   98,   99,  121,  212,
668  /*   930 */   151,  152,  153,  105,  123,  124,  237,  121,  221,  222,
669  /*   940 */    13,  113,  114,   98,   99,  115,  118,  230,  120,    4,
670  /*   950 */   199,  123,  124,  177,  244,  179,  159,  129,  113,  199,
671  /*   960 */   290,  291,  114,  212,  136,  137,  138,  139,  123,  121,
672  /*   970 */   159,    4,  212,  174,  129,  258,  259,  141,  183,  291,
673  /*   980 */   152,  153,  137,  138,  139,  220,  287,  214,  215,  216,
674  /*   990 */   113,   14,  114,  228,  229,   21,  279,  161,  170,  121,
675  /*  1000 */   123,  173,   28,  175,  176,   49,   79,   80,   81,   82,
676  /*  1010 */     4,   37,   85,   86,   87,   88,   89,   90,   91,   92,
677  /*  1020 */     4,   94,   95,   96,   97,   98,   99,  100,  101,  102,
678  /*  1030 */   103,  104,  177,  106,  179,   79,   80,   81,   82,  113,
679  /*  1040 */   289,   85,   86,   87,   88,   89,   90,   91,   92,    4,
680  /*  1050 */    94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
681  /*  1060 */   104,   16,  106,  118,   19,  199,    4,  199,  123,  124,
682  /*  1070 */   310,  311,  312,   57,    4,  217,  218,  219,  212,  255,
683  /*  1080 */   212,  257,  207,    4,  117,  118,   79,   80,   81,   82,
684  /*  1090 */   123,  124,   85,   86,   87,   88,   89,   90,   91,   92,
685  /*  1100 */    55,   94,   95,   96,   97,   98,   99,  100,  101,  102,
686  /*  1110 */   103,  104,   19,   68,    4,  239,  114,  241,  243,  244,
687  /*  1120 */    46,   76,  115,  121,  118,   35,   81,  182,   83,  123,
688  /*  1130 */   124,  263,  199,  117,    4,  114,  203,   44,  207,  123,
689  /*  1140 */   124,   72,  136,   98,   99,  212,   56,  272,  273,  291,
690  /*  1150 */   105,  276,   62,  302,  303,    4,   61,  199,  113,   66,
691  /*  1160 */    98,   99,    4,  118,  114,  120,    4,   16,  123,  124,
692  /*  1170 */   212,  121,  297,  280,  129,  244,  310,  311,  312,  221,
693  /*  1180 */   222,  136,  137,  138,  139,  123,  124,    4,  230,   80,
694  /*  1190 */   128,    4,  299,  123,  124,  199,  106,  128,    4,  137,
695  /*  1200 */   138,   35,  123,  141,  114,  143,   55,    0,  212,   32,
696  /*  1210 */   144,  121,  199,  201,  135,  170,  258,  259,  173,   54,
697  /*  1220 */   175,  176,   56,   72,   61,  212,  199,   76,   62,  199,
698  /*  1230 */    14,  141,   81,  123,  221,  222,   29,  279,  172,  212,
699  /*  1240 */   170,    5,  212,  230,  154,  135,  156,  157,  118,   98,
700  /*  1250 */    99,  221,  222,  123,  124,  165,  105,  167,  168,  166,
701  /*  1260 */   230,  114,   14,  199,  113,  269,   30,  203,  121,  118,
702  /*  1270 */   108,  120,   36,  214,  123,  124,  212,  187,  194,  195,
703  /*  1280 */   129,  123,  124,  270,  114,  123,  124,  136,  137,  138,
704  /*  1290 */   139,  121,  279,    4,  136,   59,  214,    4,  286,   63,
705  /*  1300 */   270,  118,   26,  152,  153,  118,  123,  124,  113,  279,
706  /*  1310 */   123,  124,  199,  106,  184,  212,  213,  123,  124,  136,
707  /*  1320 */   261,  170,  164,  136,  173,  212,  175,  176,  134,   79,
708  /*  1330 */    80,   81,   82,  306,  307,   85,   86,   87,   88,   89,
709  /*  1340 */    90,   91,   92,  261,   94,   95,   96,   97,   98,   99,
710  /*  1350 */   100,  101,  102,  103,  104,   79,   80,   81,   82,  207,
711  /*  1360 */    14,   85,   86,   87,   88,   89,   90,   91,   92,   14,
712  /*  1370 */    94,   95,   96,   97,   98,   99,  100,  101,  102,  103,
713  /*  1380 */   104,   29,   79,   80,   81,   82,  311,  312,   85,   86,
714  /*  1390 */    87,   88,   89,   90,   91,   92,  244,   94,   95,   96,
715  /*  1400 */    97,   98,   99,  100,  101,  102,  103,  104,  114,  311,
716  /*  1410 */   312,  118,  123,  124,   14,  121,  123,  124,  121,  306,
717  /*  1420 */   307,    4,  311,  312,   79,   80,   81,   82,  178,  136,
718  /*  1430 */    85,   86,   87,   88,   89,   90,   91,   92,  114,   94,
719  /*  1440 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
720  /*  1450 */   239,    4,  241,  164,   79,   80,   81,   82,  106,  114,
721  /*  1460 */    85,   86,   87,   88,   89,   90,   91,   92,   38,   94,
722  /*  1470 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
723  /*  1480 */   114,  178,  311,  312,   79,   80,   81,   82,  114,  114,
724  /*  1490 */    85,   86,   87,   88,   89,   90,   91,   92,  162,   94,
725  /*  1500 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
726  /*  1510 */   245,  246,    4,  248,   79,   80,   81,   82,  116,  114,
727  /*  1520 */    85,   86,   87,   88,   89,   90,   91,   92,  116,   94,
728  /*  1530 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
729  /*  1540 */   123,  124,  277,  100,   79,   80,   81,   82,  121,  114,
730  /*  1550 */    85,   86,   87,   88,   89,   90,   91,   92,  113,   94,
731  /*  1560 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
732  /*  1570 */   123,  124,  311,  312,   79,   80,   81,   82,  114,  114,
733  /*  1580 */    85,   86,   87,   88,   89,   90,   91,   92,  113,   94,
734  /*  1590 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
735  /*  1600 */   183,  106,   79,   80,   81,   82,  152,  153,   85,   86,
736  /*  1610 */    87,   88,   89,   90,   91,   92,  108,   94,   95,   96,
737  /*  1620 */    97,   98,   99,  100,  101,  102,  103,  104,  181,  155,
738  /*  1630 */     4,  123,  124,   79,   80,   81,   82,    4,  115,   85,
739  /*  1640 */    86,   87,   88,   89,   90,   91,   92,  114,   94,   95,
740  /*  1650 */    96,   97,   98,   99,  100,  101,  102,  103,  104,    4,
741  /*  1660 */   106,   79,   80,   81,   82,  114,    4,   85,   86,   87,
742  /*  1670 */    88,   89,   90,   91,   92,    4,   94,   95,   96,   97,
743  /*  1680 */    98,   99,  100,  101,  102,  103,  104,   16,  106,  114,
744  /*  1690 */    19,   79,   80,   81,   82,  114,  121,   85,   86,   87,
745  /*  1700 */    88,   89,   90,   91,   92,    4,   94,   95,   96,   97,
746  /*  1710 */    98,   99,  100,  101,  102,  103,  104,    9,  114,   11,
747  /*  1720 */   199,   13,  114,  199,  203,  121,   55,  199,  114,  199,
748  /*  1730 */   199,   23,  114,  212,   26,  121,  212,  113,  199,   68,
749  /*  1740 */   212,  108,  212,  212,    4,  221,  222,   76,    4,  123,
750  /*  1750 */   124,  212,   81,  169,  230,  113,  123,  124,  114,   18,
751  /*  1760 */   199,   53,  136,  108,  203,  121,   58,    4,  237,   98,
752  /*  1770 */    99,   63,   64,  212,   49,  199,  105,   69,  123,  124,
753  /*  1780 */    72,    4,   74,  115,  113,  123,  124,  224,  212,  118,
754  /*  1790 */   164,  120,  199,   16,  123,  124,   19,  221,  222,  199,
755  /*  1800 */   129,  214,  274,  279,  114,  212,  230,  136,  137,  138,
756  /*  1810 */   139,  121,  212,  151,  221,  222,  115,  109,  287,  111,
757  /*  1820 */   114,  221,  222,  230,  123,   72,  287,  121,    6,    4,
758  /*  1830 */   230,  113,   55,  214,  258,    4,    8,  313,   49,  199,
759  /*  1840 */   316,  170,  113,  280,  173,   68,  175,  176,  261,    4,
760  /*  1850 */   114,  258,  212,   76,   49,  279,    4,  149,   81,  106,
761  /*  1860 */   159,    4,  224,  123,  124,  113,  122,  123,  124,  113,
762  /*  1870 */   270,  199,  279,  188,  189,   98,   99,  113,  199,  279,
763  /*  1880 */   261,  118,  105,  199,  212,  199,  123,  124,  133,  203,
764  /*  1890 */   113,  212,  147,  185,  199,  118,  212,  120,  212,  136,
765  /*  1900 */   123,  124,  162,  120,   13,    4,  129,  212,   81,  269,
766  /*  1910 */   115,  141,  199,  136,  137,  138,  139,   16,  280,  160,
767  /*  1920 */   146,   79,   80,   81,   82,  212,   88,   85,   86,   87,
768  /*  1930 */    88,   89,   90,   91,   92,    4,   94,   95,   96,   97,
769  /*  1940 */    98,   99,  100,  101,  102,  103,  104,  170,  123,  124,
770  /*  1950 */   173,  214,  175,  176,  123,  124,   55,   88,   88,    4,
771  /*  1960 */   199,  199,   88,  118,  269,  171,  199,  136,  123,  124,
772  /*  1970 */   118,    4,  199,  212,  212,  123,  124,   76,  199,  212,
773  /*  1980 */   123,  124,   81,  221,  222,  212,   18,  162,  221,  222,
774  /*  1990 */     4,  212,  230,   24,  221,  222,  151,  230,  261,   98,
775  /*  2000 */    99,  146,  145,  230,    4,  199,  105,  153,  172,  106,
776  /*  2010 */   106,    4,   25,  199,  113,  114,  164,  280,  212,  118,
777  /*  2020 */   258,  120,  199,   16,  123,  124,  212,  221,  222,    4,
778  /*  2030 */   129,   61,   50,  121,  199,  212,  230,  136,  137,  138,
779  /*  2040 */   139,  279,   50,  270,  221,  222,  279,  212,  269,  282,
780  /*  2050 */   141,  237,  279,  230,  123,  124,  221,  222,  180,  113,
781  /*  2060 */   199,  112,   55,  161,  258,  230,  113,  136,  120,  112,
782  /*  2070 */   114,  170,  117,  212,  173,  114,  175,  176,  123,  124,
783  /*  2080 */    48,  199,  199,   76,    4,  279,  203,  199,   81,  110,
784  /*  2090 */   123,  124,   47,  270,  212,  212,  211,  280,  199,  227,
785  /*  2100 */   212,  287,  279,  136,  264,   98,   99,  227,    4,  123,
786  /*  2110 */   124,  212,  105,  199,  279,  303,  305,    4,  305,  237,
787  /*  2120 */   113,  114,  136,  123,  124,  118,  212,  120,  199,   16,
788  /*  2130 */   123,  124,  198,  200,  199,  107,  129,  198,   64,  199,
789  /*  2140 */   198,  212,  199,  136,  137,  138,  139,  212,  123,  124,
790  /*  2150 */   221,  222,  212,    4,  200,  212,  221,  222,    4,  230,
791  /*  2160 */   198,  221,  222,  199,  164,  230,   77,  203,   55,  287,
792  /*  2170 */   230,  205,  199,    4,  199,  150,  212,  170,    4,  199,
793  /*  2180 */   173,  121,  175,  176,    4,  212,  202,  212,    4,   76,
794  /*  2190 */    73,  206,  212,    4,   81,  267,  221,  222,  246,  116,
795  /*  2200 */   199,  221,  222,  123,  124,  230,  152,    4,  279,    4,
796  /*  2210 */   230,   98,   99,  212,  279,  252,  136,  169,  105,  279,
797  /*  2220 */   167,  117,  166,    4,  253,  199,  113,  123,  124,  168,
798  /*  2230 */     4,  118,  254,  120,  104,   16,  123,  124,  212,  256,
799  /*  2240 */   199,    4,  129,   81,  226,  199,  113,  221,  222,  136,
800  /*  2250 */   137,  138,  139,  212,  279,  104,  230,  199,  212,  279,
801  /*  2260 */   288,  203,  221,  222,  283,  177,  255,  221,  222,  280,
802  /*  2270 */   212,  230,  123,  124,   55,  256,  230,  123,  124,  165,
803  /*  2280 */   271,  199,    4,  170,  271,  136,  173,   45,  175,  176,
804  /*  2290 */   177,  314,  123,  124,  212,   76,   27,  123,  124,  116,
805  /*  2300 */    81,  117,  199,  123,  124,  279,  117,  123,  124,  199,
806  /*  2310 */   136,  314,  123,  124,  267,  212,  136,   98,   99,  248,
807  /*  2320 */   279,  199,  212,  199,  105,  279,  123,  124,  123,  124,
808  /*  2330 */   153,  199,  113,  114,  212,  319,  212,  118,  184,  120,
809  /*  2340 */   188,  136,  123,  124,  212,  233,  223,    4,  129,  123,
810  /*  2350 */   124,  182,  223,  221,  222,  136,  137,  138,  139,   16,
811  /*  2360 */   123,  124,  230,  141,   80,   81,   82,   39,  223,   85,
812  /*  2370 */    86,   87,   88,   89,   90,   91,   92,  199,   94,   95,
813  /*  2380 */    96,   97,   98,   99,  100,  101,  102,  103,  104,  170,
814  /*  2390 */   212,  225,  173,  199,  175,  176,  170,  203,   55,  221,
815  /*  2400 */   222,  123,  124,  199,  140,  199,  212,  170,  230,  199,
816  /*  2410 */   199,  279,  199,  199,  223,  233,  212,  267,  212,   76,
817  /*  2420 */   223,  226,  212,  212,   81,  212,  212,  221,  222,  116,
818  /*  2430 */   223,  199,  223,  199,  221,  222,  230,  199,  199,  223,
819  /*  2440 */   116,   98,   99,  230,  212,  199,  212,  226,  105,  171,
820  /*  2450 */   212,  212,  202,    4,  226,  202,  113,  279,  212,  221,
821  /*  2460 */   222,  118,  199,  120,  116,   16,  123,  124,  230,  267,
822  /*  2470 */   199,  199,  129,  199,  199,  212,  199,   33,  199,  136,
823  /*  2480 */   137,  138,  139,  212,  212,  279,  212,  212,  199,  212,
824  /*  2490 */   294,  212,  279,  221,  222,  295,  177,  116,  221,  222,
825  /*  2500 */   252,  212,  230,   79,   55,  240,  116,  230,  252,  116,
826  /*  2510 */   275,  113,  141,  170,  278,  116,  173,  279,  175,  176,
827  /*  2520 */   252,  240,  202,  202,  267,   76,  267,  116,  252,  242,
828  /*  2530 */    81,  116,   77,  242,  116,  242,  116,  242,  116,  171,
829  /*  2540 */   289,  116,  298,   20,   17,  298,  116,   98,   99,  267,
830  /*  2550 */   267,  279,  267,  199,  105,  116,  279,  116,  199,  249,
831  /*  2560 */   300,  291,  113,  251,  291,  224,  212,  118,  266,  120,
832  /*  2570 */   284,  212,  123,  124,  268,  221,  222,  255,  129,  224,
833  /*  2580 */   221,  222,  255,  231,  230,  136,  137,  138,  139,  230,
834  /*  2590 */   225,  235,  252,  268,  268,   81,   82,  251,  197,   85,
835  /*  2600 */    86,   87,   88,   89,   90,   91,   92,  249,   94,   95,
836  /*  2610 */    96,   97,   98,   99,  100,  101,  102,  103,  104,  170,
837  /*  2620 */   214,  214,  173,  214,  175,  176,  214,  199,  292,  247,
838  /*  2630 */   293,  281,  241,  279,  199,  317,  232,  265,  279,  304,
839  /*  2640 */   212,  199,  232,   72,  221,  232,    4,  212,  221,  221,
840  /*  2650 */   222,  320,  236,  199,  212,  320,  221,  222,  230,  320,
841  /*  2660 */   199,  320,  320,  221,  222,  230,  212,  199,  320,  320,
842  /*  2670 */   320,  320,  230,  212,  320,  221,  222,  320,  320,  199,
843  /*  2680 */   212,  199,  221,  222,  230,  320,  320,  320,  320,  221,
844  /*  2690 */   222,  230,  212,  199,  212,  320,  320,  320,  230,  320,
845  /*  2700 */   320,  221,  222,  221,  222,  320,  212,  279,  320,  320,
846  /*  2710 */   230,  320,  230,  320,  279,  221,  222,  320,  320,  199,
847  /*  2720 */   320,  279,  320,  320,  230,  320,  320,  320,  320,  320,
848  /*  2730 */   320,  320,  212,  279,  320,  320,  320,  320,  320,  320,
849  /*  2740 */   279,  221,  222,  320,  320,  320,  320,  279,  320,  320,
850  /*  2750 */   230,  320,  320,  199,  320,  320,  199,  320,  199,  279,
851  /*  2760 */   320,  279,  320,  320,  320,  320,  212,  320,  320,  212,
852  /*  2770 */   320,  212,  199,  279,  320,  221,  222,  320,  221,  222,
853  /*  2780 */   221,  222,  320,  320,  230,  212,  320,  230,  199,  230,
854  /*  2790 */   320,  320,  320,  320,  221,  222,  320,  320,  320,  279,
855  /*  2800 */   199,  212,  320,  230,  199,  320,  320,  320,  320,  320,
856  /*  2810 */   221,  222,  320,  212,  320,  320,  320,  212,  320,  230,
857  /*  2820 */   320,  320,  221,  222,  199,  320,  221,  222,  320,  320,
858  /*  2830 */   320,  230,  320,  279,  320,  230,  279,  212,  279,  320,
859  /*  2840 */   199,  320,  320,  320,  320,  320,  221,  222,  320,  320,
860  /*  2850 */   320,  320,  279,  212,  199,  230,  199,  320,  320,  320,
861  /*  2860 */   199,  320,  221,  222,  320,  320,  320,  212,  279,  212,
862  /*  2870 */   320,  230,  320,  212,  320,  199,  221,  222,  221,  222,
863  /*  2880 */   279,  320,  221,  222,  279,  230,  320,  230,  212,  320,
864  /*  2890 */   199,  230,  199,  320,  199,  320,  320,  221,  222,  320,
865  /*  2900 */   320,  320,  320,  212,  279,  212,  230,  212,  320,  320,
866  /*  2910 */   320,  320,  221,  222,  221,  222,  221,  222,  320,  199,
867  /*  2920 */   279,  230,  320,  230,  320,  230,  320,  320,  320,  320,
868  /*  2930 */   320,  320,  212,  320,  279,  320,  279,  320,  320,  320,
869  /*  2940 */   279,  221,  222,  320,  320,  320,  320,  320,  320,  320,
870  /*  2950 */   230,  320,  320,  199,  320,  279,  199,  320,  320,  320,
871  /*  2960 */   320,  320,  320,  320,  320,  320,  212,  320,  320,  212,
872  /*  2970 */   279,  320,  279,  320,  279,  221,  222,  320,  221,  222,
873  /*  2980 */   320,  320,  320,  320,  230,  320,  320,  230,  320,  320,
874  /*  2990 */   320,  320,  320,  320,  320,  320,  320,  320,  320,  279,
875  /*  3000 */   320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
876  /*  3010 */   320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
877  /*  3020 */   320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
878  /*  3030 */   320,  320,  320,  279,  320,  320,  279,
879 };
880 #define YY_SHIFT_USE_DFLT (-101)
881 #define YY_SHIFT_COUNT (513)
882 #define YY_SHIFT_MIN   (-100)
883 #define YY_SHIFT_MAX   (2642)
884 static const short yy_shift_ofst[] = {
885  /*     0 */  1352,  828, 1151, 1708, 1045, 1777, 1671, 2219, 2219, 2219,
886  /*    10 */  1753,  244, 2113, 2343, 2343, 2343, 2343, 2343, 2343, 2449,
887  /*    20 */  2343,  742,   -4,  120, 2007, 1901, 2343, 2343, 2343, 2343,
888  /*    30 */  2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
889  /*    40 */  2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
890  /*    50 */  2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,
891  /*    60 */  2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343,  779,
892  /*    70 */  1062, 1062,   -1,  518,  518, 1744,   66,   15, 1016, 1744,
893  /*    80 */  2226, 2226, 2226, 2189, 2226,  748,  748, 2203,  400,  365,
894  /*    90 */   151,   69, 1763, 1130, 1852, 1845, 1293,  682, 1187,  682,
895  /*   100 */  1183, 1006,  436,  967, 2278, 2237, 2237, 2237, 2237,  285,
896  /*   110 */  2237, 2226, 2203, 2203,  400, 1685, 1685, 1454,  530,  530,
897  /*   120 */   956,  845,  191,  223,  306, 1626, 1158,  945,  439,  642,
898  /*   130 */   314, 1236,  795, 1236,   88,  797,  343,  466,   85, 2184,
899  /*   140 */  2174, 2169, 2154, 2000, 1662, 2205, 2104, 2180, 1447, 2149,
900  /*   150 */  2080, 1986, 1967, 1417, 2025, 1955, 1931, 1194, 1857, 1831,
901  /*   160 */   368, 1825, 1740, 1701, 1701, 1701, 1289,  811, 1070,  437,
902  /*   170 */   437,  799,  684,  674,  551,  516,   84, 1655, 1633, 1508,
903  /*   180 */  1162, 2203, 1166, 1166, 1207, 1069,  497, 2571, 2571, 2642,
904  /*   190 */  2571, 2571, -101, -101,  447,  739,  690,  653,  -72,  610,
905  /*   200 */   610,  610,  610,  610,  610,  776,  415,  927,  569, 1582,
906  /*   210 */  1554, 1523, 1495, 1465, 1435, 1405, 1375, 1345, 1303, 1276,
907  /*   220 */  1250, 1007, 1842, 1612, 2284, 2514, 2514,  -37,  626,  626,
908  /*   230 */   626,  626,  -59,  202,  115,  348,  348,  -17,  566,  486,
909  /*   240 */   208,  208,  208,  170, 1093,  358,  116,   97,  752,  363,
910  /*   250 */  1110, 1079,  877,  196,  603,  974,  154,  487,  735,  735,
911  /*   260 */    76, 1706,  595,  581,  735,  836,  598,  598,  855,  581,
912  /*   270 */   345,  345,  375,  253,  134, 2527, 2441, 2439, 2430, 2523,
913  /*   280 */  2523, 2425, 2368, 2422, 2455, 2420, 2455, 2418, 2455, 2415,
914  /*   290 */  2455, 2411, 2089, 2048, 2399, 2089, 2424, 2048, 2371, 2398,
915  /*   300 */  2393, 2048, 2390, 2424, 2048, 2381, 2319, 2444, 2348, 2089,
916  /*   310 */  2324, 2133, 2089, 2313, 2133, 2222, 2222, 2222, 2222, 2328,
917  /*   320 */  2133, 2222, 2264, 2222, 2328, 2222, 2222, 2152, 2177, 2183,
918  /*   330 */  2269, 2269, 2242, 2242, 2061, 2114, 2088, 2151, 2133, 2162,
919  /*   340 */  2130, 2061, 2053, 2056, 2048, 2054, 2083, 2117, 2060, 2089,
920  /*   350 */  2074, 2074, 2028, 2028, 2028, 2028, -101, -101, -101, -101,
921  /*   360 */  -101, -101, -101, -101, -101, -101, 1090,  -65,  238,   60,
922  /*   370 */   194,  697,   79,  -38, 1690, 1644, 1066, 1614,   81, 1604,
923  /*   380 */  1575, 1294, 1170, 1147,  183,  558,  -29, 1050, 1002,  129,
924  /*   390 */   878,  848,  148,  138, 2045, 2032, 1979, 1957, 1961, 1956,
925  /*   400 */  1948, 1953, 1902, 1949, 1946, 1909, 1878, 1992, 1912, 1982,
926  /*   410 */  1970, 1987, 1904, 1903, 1854, 1836, 1855, 1969, 1968, 1794,
927  /*   420 */  1874, 1870, 1869, 1838, 1774, 1759, 1891, 1770, 1795, 1783,
928  /*   430 */  1827, 1745, 1755, 1764, 1805, 1756, 1752, 1736, 1729, 1789,
929  /*   440 */  1828, 1718, 1668, 1822, 1642, 1725, 1741, 1618, 1584, 1624,
930  /*   450 */  1608, 1581, 1551, 1533, 1427, 1474, 1475, 1464, 1445, 1427,
931  /*   460 */  1443, 1412, 1402, 1336, 1374, 1366, 1297, 1324, 1430, 1400,
932  /*   470 */  1195, 1297, 1355, 1346, 1248, 1216, 1165, 1163, 1177, 1109,
933  /*   480 */  1095, 1074,  977, 1021,  926,  830,  816,  807,  873,  787,
934  /*   490 */   707,  786,  522,  686,  649,  616,  522,  523,  448,  407,
935  /*   500 */   344,  362,  308,  278,  272,  235,  184,  119,  105,  -81,
936  /*   510 */    38,  -43,  -89, -100,
937 };
938 #define YY_REDUCE_USE_DFLT (-228)
939 #define YY_REDUCE_COUNT (365)
940 #define YY_REDUCE_MIN   (-227)
941 #define YY_REDUCE_MAX   (2757)
942 static const short yy_reduce_ofst[] = {
943  /*     0 */   389, -131,   -8,  117, 1524,  366,  123,  958,  717,  118,
944  /*    10 */   -66, 1806, 1767, 1823, 1773, 1762, 1600, 1030, 1593, 1576,
945  /*    20 */  1013,  875, 2757, 2754, 2720, 2695, 2693, 2691, 2676, 2661,
946  /*    30 */  2657, 2655, 2641, 2625, 2605, 2601, 2589, 2573, 2559, 2557,
947  /*    40 */  2554, 2520, 2494, 2482, 2480, 2468, 2461, 2454, 2442, 2435,
948  /*    50 */  2428, 2359, 2354, 2277, 2272, 2238, 2213, 2206, 2178, 2132,
949  /*    60 */  2046, 2041, 2026, 1980, 1975, 1940, 1935, 1929, 1835,  172,
950  /*    70 */   670,  386, -130,  866,  760, -101,  211, 1265, 1113,  216,
951  /*    80 */  1882, 1814, 1531, 1027,  699,  858,  688, -166,  361, 1737,
952  /*    90 */   765,  868, 2194, 2058, 1964, 1883, 1686, 1528, 1561,   55,
953  /*   100 */  1521, 1064,  933,  394,  751, 1779, 1695, 1640,  996, -227,
954  /*   110 */   122, 1539,  605, -119,  773,  606, -173,  321, 1638, 1563,
955  /*   120 */   893,  525, 2289, 2279, 2239, 1888, 1888, 2275, 2274, 2271,
956  /*   130 */  2263, 1211, 2246,  876, 1888, 1619, 1261, 2239, 2234, 2232,
957  /*   140 */  1888, 1888, 1888, 1888, 1888, 1888, 1888, 2214, 1888, 1888,
958  /*   150 */  1888, 1888, 2211, 1888, 1888, 1888, 2210, 2204, 2124, 2122,
959  /*   160 */  2110, 2103, 2082, 1587, 1082, 1059, 2001, 1973, 1943, 1171,
960  /*   170 */  1111, 1914, 1899, 1888, 1861, 1761, 1012, 1713, 1684, 1679,
961  /*   180 */  1672, 1530, 1098, 1075, 1084, 1152,  824,  931,  710, 1103,
962  /*   190 */   646,  189,  851,  -74, 1817, 1817, 1817, 1817, 1817, 1817,
963  /*   200 */  1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
964  /*   210 */  1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
965  /*   220 */  1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817,
966  /*   230 */  1817, 1817, 1817, 1817, 2416, 2427, 2423, 1817, 2335, 2335,
967  /*   240 */  2413, 2410, 2404, 2372, 2318, 2391, 2382, 2350, 2337, 2336,
968  /*   250 */  2412, 2409, 2407, 2406, 2358, 2401, 2340, 2346, 2326, 2325,
969  /*   260 */  2365, 2356, 2352, 2355, 2306, 2302, 2327, 2322, 2286, 2341,
970  /*   270 */  2273, 2270, 1817, 2312, 2310, 2260, 2150, 2285, 2283, 2247,
971  /*   280 */  2244, 2282, 2251, 2150, 2295, 2150, 2293, 2150, 2291, 2150,
972  /*   290 */  2287, 2259, 2321, 2276, 2257, 2320, 2281, 2268, 2236, 2235,
973  /*   300 */  2150, 2256, 2150, 2265, 2248, 2150, 2200, 2196, 2202, 2253,
974  /*   310 */  2150, 2228, 2250, 2150, 2221, 2216, 2209, 2207, 2197, 2182,
975  /*   320 */  2195, 2191, 2166, 2145, 2112, 2129, 2123, 2016, 2071, 2047,
976  /*   330 */  1997, 1977, 2013, 2009, 2019, 2011, 1981, 1972, 2018, 1989,
977  /*   340 */  1817, 1983, 1978, 1971, 1963, 1952, 1928, 1985, 1966, 1984,
978  /*   350 */  1954, 1933, 1962, 1942, 1939, 1934, 1813, 1811, 1812, 1880,
979  /*   360 */  1872, 1840, 1817, 1817, 1817, 1885,
980 };
981 static const YYACTIONTYPE yy_default[] = {
982  /*     0 */   849, 1158, 1158, 1277, 1158, 1158, 1158, 1158, 1158, 1158,
983  /*    10 */  1277, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
984  /*    20 */  1158, 1277, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
985  /*    30 */  1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
986  /*    40 */  1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
987  /*    50 */  1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
988  /*    60 */  1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1029,
989  /*    70 */  1316, 1316, 1316, 1293, 1293, 1316, 1022, 1316, 1316, 1316,
990  /*    80 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,  896, 1018,
991  /*    90 */   886, 1029, 1316, 1316, 1316, 1316, 1316, 1089, 1103, 1089,
992  /*   100 */  1081, 1072, 1316, 1316, 1194, 1097, 1097, 1097, 1097,  969,
993  /*   110 */  1097, 1316, 1316, 1316, 1316, 1129, 1128, 1316, 1057, 1057,
994  /*   120 */  1160, 1316, 1247, 1252, 1316, 1316, 1316, 1316, 1316, 1316,
995  /*   130 */  1090, 1316, 1316, 1316, 1030, 1018, 1293, 1316, 1316, 1316,
996  /*   140 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1104,
997  /*   150 */  1082, 1073, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
998  /*   160 */  1316, 1316, 1316, 1018, 1018, 1018, 1316, 1316, 1316, 1293,
999  /*   170 */  1293, 1316, 1316, 1316, 1316, 1316,  883, 1316, 1316, 1316,
1000  /*   180 */   855, 1316, 1293, 1293,  849, 1277, 1051, 1277, 1277,  891,
1001  /*   190 */  1277, 1277, 1270, 1008, 1067, 1160, 1160, 1160, 1160, 1035,
1002  /*   200 */  1077, 1065, 1069, 1171, 1068, 1160, 1160, 1160, 1160, 1160,
1003  /*   210 */  1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
1004  /*   220 */  1160, 1160, 1160, 1160, 1131, 1143, 1130, 1138, 1147, 1139,
1005  /*   230 */  1142, 1133, 1132, 1134, 1316, 1316, 1316, 1135, 1316, 1316,
1006  /*   240 */  1316, 1316, 1316, 1021, 1316, 1316,  991, 1316, 1316, 1221,
1007  /*   250 */  1316, 1316,  898, 1316, 1006,  858, 1076, 1019, 1047, 1047,
1008  /*   260 */   936,  960,  920, 1057, 1047, 1037, 1051, 1051, 1166, 1057,
1009  /*   270 */  1316, 1316, 1136, 1019, 1006, 1261, 1038, 1038, 1038, 1246,
1010  /*   280 */  1246, 1038, 1194, 1038,  982, 1038,  982, 1038,  982, 1038,
1011  /*   290 */   982, 1038,  880, 1076, 1038,  880,  973, 1076, 1109, 1093,
1012  /*   300 */  1038, 1076, 1038,  973, 1076, 1038, 1228, 1226, 1038,  880,
1013  /*   310 */  1038, 1179,  880, 1038, 1179,  971,  971,  971,  971,  952,
1014  /*   320 */  1179,  971,  936,  971,  952,  971,  971, 1312, 1316, 1038,
1015  /*   330 */  1303, 1303, 1060, 1060, 1066, 1051, 1316, 1185, 1179, 1160,
1016  /*   340 */  1137, 1066, 1064, 1061, 1076, 1316, 1038,  877,  955,  880,
1017  /*   350 */   866,  866,  854,  854,  854,  854, 1274, 1274, 1270,  938,
1018  /*   360 */   938, 1024, 1146, 1145, 1144,  907, 1159, 1316, 1316, 1316,
1019  /*   370 */  1316, 1316, 1316, 1195, 1316, 1316, 1316, 1316, 1316, 1316,
1020  /*   380 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
1021  /*   390 */  1316, 1316, 1316, 1316, 1316,  850, 1316, 1316, 1316, 1316,
1022  /*   400 */  1316, 1264, 1316, 1316, 1316, 1316, 1316, 1316, 1225, 1224,
1023  /*   410 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
1024  /*   420 */  1316, 1316, 1316, 1316, 1316, 1316, 1213, 1316, 1316, 1316,
1025  /*   430 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
1026  /*   440 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
1027  /*   450 */  1316, 1316, 1316, 1316,  994, 1000, 1316, 1316, 1316,  995,
1028  /*   460 */  1316, 1316, 1122, 1316, 1316, 1316, 1169, 1316, 1316, 1316,
1029  /*   470 */  1316, 1062, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316,
1030  /*   480 */  1316, 1316, 1316, 1316, 1316, 1316, 1309, 1052, 1316, 1316,
1031  /*   490 */  1159, 1316, 1279, 1316, 1316, 1316, 1278, 1316, 1316, 1316,
1032  /*   500 */  1316, 1316, 1316, 1316, 1316, 1316, 1316, 1123, 1122, 1161,
1033  /*   510 */   889, 1316,  864, 1316,  846,  851, 1263, 1260, 1262, 1257,
1034  /*   520 */  1258, 1256, 1259, 1255, 1253, 1254, 1251, 1249, 1248, 1250,
1035  /*   530 */  1245, 1241, 1201, 1199, 1197, 1206, 1205, 1204, 1203, 1202,
1036  /*   540 */  1198, 1196, 1200, 1192, 1191, 1100, 1079, 1070,  989, 1240,
1037  /*   550 */  1238, 1239, 1190, 1188, 1189,  988,  987,  986,  981,  980,
1038  /*   560 */   979,  978, 1267, 1276, 1275, 1273, 1272, 1271, 1265, 1266,
1039  /*   570 */  1177, 1176, 1174, 1173, 1175,  882, 1217, 1220, 1219, 1218,
1040  /*   580 */  1223, 1222, 1215, 1227, 1232, 1231, 1236, 1235, 1234, 1233,
1041  /*   590 */  1230, 1212, 1108, 1107, 1105, 1102, 1112, 1111, 1110, 1101,
1042  /*   600 */  1094, 1106, 1084, 1092, 1091, 1080, 1083,  974, 1075, 1071,
1043  /*   610 */  1074,  990, 1216,  985,  984,  983,  881,  876, 1040,  875,
1044  /*   620 */   874,  885,  958,  959,  967,  970,  965,  968,  964,  963,
1045  /*   630 */   962,  966,  961,  957,  888,  887,  897,  951,  934,  923,
1046  /*   640 */   890,  925,  922,  921,  926,  943,  942,  949,  948,  947,
1047  /*   650 */   946,  945,  941,  944,  940,  939,  927,  919,  918,  937,
1048  /*   660 */   917,  954,  953,  950,  916,  977,  976,  975,  972,  915,
1049  /*   670 */   914,  913,  912,  911,  910, 1157, 1315, 1311, 1314, 1313,
1050  /*   680 */  1310, 1156, 1162, 1150, 1148,  992, 1003, 1002, 1001,  998,
1051  /*   690 */   999, 1013, 1011, 1010, 1009, 1046, 1045, 1044, 1043, 1042,
1052  /*   700 */  1041, 1034, 1032, 1027, 1026, 1033, 1031, 1028, 1049, 1050,
1053  /*   710 */  1048, 1025, 1017, 1015, 1016, 1014, 1099, 1096, 1098, 1095,
1054  /*   720 */  1036, 1023, 1020, 1007, 1291, 1289, 1292, 1290, 1288, 1296,
1055  /*   730 */  1298, 1297, 1302, 1300, 1299, 1295, 1308, 1307, 1306, 1305,
1056  /*   740 */  1304, 1294, 1301, 1287, 1286, 1285, 1284, 1054, 1059, 1058,
1057  /*   750 */  1053,  997, 1161, 1149, 1159, 1153, 1282, 1280, 1283, 1182,
1058  /*   760 */  1184, 1187, 1186, 1183, 1056, 1055, 1181, 1180, 1281, 1152,
1059  /*   770 */  1127,  903,  901,  902, 1209, 1208, 1211, 1210, 1207,  905,
1060  /*   780 */   904,  900,  899, 1125, 1121, 1120, 1237, 1154, 1155, 1119,
1061  /*   790 */  1124, 1117, 1116, 1115, 1141, 1140, 1126, 1118,  892,  996,
1062  /*   800 */   993, 1151, 1114, 1039, 1113,  933,  932,  931,  930,  929,
1063  /*   810 */   928, 1005, 1004,  909,  924,  908,  906,  884,  879,  878,
1064  /*   820 */   873,  871,  868,  870,  867,  872,  869,  865,  863,  862,
1065  /*   830 */   861,  860,  859,  895,  894,  893,  889,  857,  856,  853,
1066  /*   840 */   852,  848,  847,  845,
1067 };
1068 
1069 /* The next table maps tokens into fallback tokens.  If a construct
1070 ** like the following:
1071 **
1072 **      %fallback ID X Y Z.
1073 **
1074 ** appears in the grammar, then ID becomes a fallback token for X, Y,
1075 ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
1076 ** but it does not parse, the type of the token is changed to ID and
1077 ** the parse is retried before an error is thrown.
1078 */
1079 #ifdef YYFALLBACK
1080 static const YYCODETYPE yyFallback[] = {
1081     0,  /*          $ => nothing */
1082     0,  /*    ILLEGAL => nothing */
1083     0,  /*    COMMENT => nothing */
1084     0,  /*      SPACE => nothing */
1085     0,  /*         ID => nothing */
1086     4,  /*      ABORT => ID */
1087     4,  /*     ACTION => ID */
1088     4,  /*      AFTER => ID */
1089     4,  /*     ALWAYS => ID */
1090     4,  /*    ANALYZE => ID */
1091     4,  /*        ASC => ID */
1092     4,  /*     ATTACH => ID */
1093     4,  /*     BEFORE => ID */
1094     4,  /*      BEGIN => ID */
1095     4,  /*         BY => ID */
1096     4,  /*    CASCADE => ID */
1097     4,  /*       CAST => ID */
1098     4,  /*   COLUMNKW => ID */
1099     4,  /*   CONFLICT => ID */
1100     4,  /*    CURRENT => ID */
1101     4,  /*   DATABASE => ID */
1102     4,  /*   DEFERRED => ID */
1103     4,  /*       DESC => ID */
1104     4,  /*     DETACH => ID */
1105     4,  /*         DO => ID */
1106     4,  /*       EACH => ID */
1107     4,  /*        END => ID */
1108     4,  /*    EXCLUDE => ID */
1109     4,  /*  EXCLUSIVE => ID */
1110     4,  /*    EXPLAIN => ID */
1111     4,  /*       FAIL => ID */
1112     4,  /*      FIRST => ID */
1113     4,  /*  FOLLOWING => ID */
1114     4,  /*        FOR => ID */
1115     4,  /*  GENERATED => ID */
1116     4,  /*     GROUPS => ID */
1117     4,  /*     IGNORE => ID */
1118     4,  /*  IMMEDIATE => ID */
1119     4,  /*    INDEXED => ID */
1120     4,  /*  INITIALLY => ID */
1121     4,  /*    INSTEAD => ID */
1122     4,  /*       LAST => ID */
1123     4,  /*    LIKE_KW => ID */
1124     4,  /*      MATCH => ID */
1125     4,  /*         NO => ID */
1126     4,  /*      NULLS => ID */
1127     4,  /*     OTHERS => ID */
1128     4,  /*       PLAN => ID */
1129     4,  /*      QUERY => ID */
1130     4,  /*        KEY => ID */
1131     4,  /*         OF => ID */
1132     4,  /*     OFFSET => ID */
1133     4,  /*  PARTITION => ID */
1134     4,  /*     PRAGMA => ID */
1135     4,  /*  PRECEDING => ID */
1136     4,  /*      RAISE => ID */
1137     4,  /*      RANGE => ID */
1138     4,  /*  RECURSIVE => ID */
1139     4,  /*    RELEASE => ID */
1140     4,  /*    REPLACE => ID */
1141     4,  /*   RESTRICT => ID */
1142     4,  /*        ROW => ID */
1143     4,  /*       ROWS => ID */
1144     4,  /*   ROLLBACK => ID */
1145     4,  /*  SAVEPOINT => ID */
1146     4,  /*       TEMP => ID */
1147     4,  /*       TIES => ID */
1148     4,  /*    TRIGGER => ID */
1149     4,  /*  UNBOUNDED => ID */
1150     4,  /*     VACUUM => ID */
1151     4,  /*       VIEW => ID */
1152     4,  /*    VIRTUAL => ID */
1153     4,  /*       WITH => ID */
1154     4,  /*    WITHOUT => ID */
1155     4,  /*    REINDEX => ID */
1156     4,  /*     RENAME => ID */
1157     4,  /*   CTIME_KW => ID */
1158     4,  /*         IF => ID */
1159 };
1160 #endif /* YYFALLBACK */
1161 
1162 /* The following structure represents a single element of the
1163 ** parser's stack.  Information stored includes:
1164 **
1165 **   +  The state number for the parser at this level of the stack.
1166 **
1167 **   +  The value of the token stored at this level of the stack.
1168 **      (In other words, the "major" token.)
1169 **
1170 **   +  The semantic value stored at this level of the stack.  This is
1171 **      the information used by the action routines in the grammar.
1172 **      It is sometimes called the "minor" token.
1173 */
1174 struct yyStackEntry {
1175   YYACTIONTYPE stateno;  /* The state-number */
1176   YYCODETYPE major;      /* The major token value.  This is the code
1177                          ** number for the token at this stack level */
1178   YYMINORTYPE minor;     /* The user-supplied minor token value.  This
1179                          ** is the value of the token  */
1180   QList<Token*>* tokens = nullptr;
1181 };
1182 typedef struct yyStackEntry yyStackEntry;
1183 
1184 /* The state of the parser is completely contained in an instance of
1185 ** the following structure */
1186 struct yyParser {
1187   int yyidx;                    /* Index of top element in stack */
1188 #ifdef YYTRACKMAXSTACKDEPTH
1189   int yyidxMax;                 /* Maximum value of yyidx */
1190 #endif
1191   int yyerrcnt;                 /* Shifts left before out of the error */
1192   sqlite3_parseARG_SDECL                /* A place to hold %extra_argument */
1193 #if YYSTACKDEPTH<=0
1194   int yystksz;                  /* Current side of the stack */
1195   yyStackEntry *yystack;        /* The parser's stack */
1196 #else
1197   yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
1198 #endif
1199 };
1200 typedef struct yyParser yyParser;
1201 
1202 #ifndef NDEBUG
1203 #include <stdio.h>
1204 static FILE *yyTraceFILE = 0;
1205 static char *yyTracePrompt = 0;
1206 #endif /* NDEBUG */
1207 
sqlite3_parseCopyParserState(void * other)1208 void *sqlite3_parseCopyParserState(void* other)
1209 {
1210   yyParser *pParser;
1211   yyParser *otherParser = (yyParser*)other;
1212 
1213   // Copy parser
1214   pParser = (yyParser*)malloc((size_t)sizeof(yyParser));
1215   memcpy(pParser, other, (size_t)sizeof(yyParser));
1216 
1217 #if YYSTACKDEPTH<=0
1218   // Copy stack
1219   int stackSize = sizeof(yyStackEntry) * pParser->yystksz;
1220   pParser->yystack = malloc((size_t)stackSize);
1221   memcpy(pParser->yystack, ((yyParser*)other)->yystack, (size_t)stackSize);
1222 #endif
1223 
1224   for (int i = 0; i <= pParser->yyidx; i++)
1225   {
1226       pParser->yystack[i].tokens = new QList<Token*>();
1227       *(pParser->yystack[i].tokens) = *(otherParser->yystack[i].tokens);
1228   }
1229 
1230   return pParser;
1231 }
1232 
sqlite3_parseAddToken(void * other,Token * token)1233 void sqlite3_parseAddToken(void* other, Token* token)
1234 {
1235     yyParser *otherParser = (yyParser*)other;
1236     if (otherParser->yyidx < 0)
1237         return; // Nothing on stack yet. Might happen when parsing just whitespaces, nothing else.
1238 
1239     otherParser->yystack[otherParser->yyidx].tokens->append(token);
1240 }
1241 
sqlite3_parseRestoreParserState(void * saved,void * target)1242 void sqlite3_parseRestoreParserState(void* saved, void* target)
1243 {
1244   yyParser *pParser = (yyParser*)target;
1245   yyParser *savedParser = (yyParser*)saved;
1246 
1247   for (int i = 0; i <= pParser->yyidx; i++)
1248       delete pParser->yystack[i].tokens;
1249 
1250   memcpy(pParser, saved, (size_t)sizeof(yyParser));
1251 
1252   for (int i = 0; i <= savedParser->yyidx; i++)
1253   {
1254       pParser->yystack[i].tokens = new QList<Token*>();
1255       *(pParser->yystack[i].tokens) = *(savedParser->yystack[i].tokens);
1256   }
1257 
1258 #if YYSTACKDEPTH<=0
1259   // Copy stack
1260   int stackSize = sizeof(yyStackEntry) * pParser->yystksz;
1261   pParser->yystack = relloc(pParser->yystack, (size_t)stackSize);
1262   memcpy(pParser->yystack, ((yyParser*)saved)->yystack, (size_t)stackSize);
1263 #endif
1264 }
1265 
sqlite3_parseFreeSavedState(void * other)1266 void sqlite3_parseFreeSavedState(void* other)
1267 {
1268     yyParser *pParser = (yyParser*)other;
1269     for (int i = 0; i <= pParser->yyidx; i++)
1270         delete pParser->yystack[i].tokens;
1271 
1272 #if YYSTACKDEPTH<=0
1273     free(pParser->yystack);
1274 #endif
1275     free(other);
1276 }
1277 
1278 #ifndef NDEBUG
1279 /*
1280 ** Turn parser tracing on by giving a stream to which to write the trace
1281 ** and a prompt to preface each trace message.  Tracing is turned off
1282 ** by making either argument NULL
1283 **
1284 ** Inputs:
1285 ** <ul>
1286 ** <li> A FILE* to which trace output should be written.
1287 **      If NULL, then tracing is turned off.
1288 ** <li> A prefix string written at the beginning of every
1289 **      line of trace output.  If NULL, then tracing is
1290 **      turned off.
1291 ** </ul>
1292 **
1293 ** Outputs:
1294 ** None.
1295 */
sqlite3_parseTrace(FILE * TraceFILE,char * zTracePrompt)1296 void sqlite3_parseTrace(FILE *TraceFILE, char *zTracePrompt){
1297   yyTraceFILE = TraceFILE;
1298   yyTracePrompt = zTracePrompt;
1299   if( yyTraceFILE==0 ) yyTracePrompt = 0;
1300   else if( yyTracePrompt==0 ) yyTraceFILE = 0;
1301 }
1302 #endif /* NDEBUG */
1303 
1304 #ifndef NDEBUG
1305 /* For tracing shifts, the names of all terminals and nonterminals
1306 ** are required.  The following table supplies these names */
1307 static const char *const yyTokenName[] = {
1308   "$",             "ILLEGAL",       "COMMENT",       "SPACE",
1309   "ID",            "ABORT",         "ACTION",        "AFTER",
1310   "ALWAYS",        "ANALYZE",       "ASC",           "ATTACH",
1311   "BEFORE",        "BEGIN",         "BY",            "CASCADE",
1312   "CAST",          "COLUMNKW",      "CONFLICT",      "CURRENT",
1313   "DATABASE",      "DEFERRED",      "DESC",          "DETACH",
1314   "DO",            "EACH",          "END",           "EXCLUDE",
1315   "EXCLUSIVE",     "EXPLAIN",       "FAIL",          "FIRST",
1316   "FOLLOWING",     "FOR",           "GENERATED",     "GROUPS",
1317   "IGNORE",        "IMMEDIATE",     "INDEXED",       "INITIALLY",
1318   "INSTEAD",       "LAST",          "LIKE_KW",       "MATCH",
1319   "NO",            "NULLS",         "OTHERS",        "PLAN",
1320   "QUERY",         "KEY",           "OF",            "OFFSET",
1321   "PARTITION",     "PRAGMA",        "PRECEDING",     "RAISE",
1322   "RANGE",         "RECURSIVE",     "RELEASE",       "REPLACE",
1323   "RESTRICT",      "ROW",           "ROWS",          "ROLLBACK",
1324   "SAVEPOINT",     "TEMP",          "TIES",          "TRIGGER",
1325   "UNBOUNDED",     "VACUUM",        "VIEW",          "VIRTUAL",
1326   "WITH",          "WITHOUT",       "REINDEX",       "RENAME",
1327   "CTIME_KW",      "IF",            "ANY",           "OR",
1328   "AND",           "NOT",           "IS",            "BETWEEN",
1329   "IN",            "ISNULL",        "NOTNULL",       "NE",
1330   "EQ",            "GT",            "LE",            "LT",
1331   "GE",            "ESCAPE",        "BITAND",        "BITOR",
1332   "LSHIFT",        "RSHIFT",        "PLUS",          "MINUS",
1333   "STAR",          "SLASH",         "REM",           "CONCAT",
1334   "COLLATE",       "BITNOT",        "SEMI",          "TRANSACTION",
1335   "ID_TRANS",      "COMMIT",        "TO",            "CREATE",
1336   "TABLE",         "LP",            "RP",            "AS",
1337   "DOT",           "ID_TAB_NEW",    "ID_DB",         "CTX_ROWID_KW",
1338   "EXISTS",        "COMMA",         "ID_COL_NEW",    "STRING",
1339   "JOIN_KW",       "ID_COL_TYPE",   "RIGHT_ASSOC",   "CONSTRAINT",
1340   "DEFAULT",       "NULL",          "PRIMARY",       "UNIQUE",
1341   "CHECK",         "REFERENCES",    "ID_CONSTR",     "ID_COLLATE",
1342   "ID_TAB",        "INTEGER",       "FLOAT",         "BLOB",
1343   "AUTOINCR",      "ON",            "INSERT",        "DELETE",
1344   "UPDATE",        "ID_FK_MATCH",   "SET",           "DEFERRABLE",
1345   "FOREIGN",       "DROP",          "ID_VIEW_NEW",   "ID_VIEW",
1346   "SELECT",        "VALUES",        "UNION",         "ALL",
1347   "EXCEPT",        "INTERSECT",     "DISTINCT",      "ID_ALIAS",
1348   "FROM",          "USING",         "JOIN",          "ID_JOIN_OPTS",
1349   "ID_IDX",        "ORDER",         "GROUP",         "HAVING",
1350   "LIMIT",         "WHERE",         "ID_COL",        "INTO",
1351   "NOTHING",       "ID_FN",         "ID_ERR_MSG",    "VARIABLE",
1352   "CASE",          "WHEN",          "THEN",          "ELSE",
1353   "INDEX",         "ID_IDX_NEW",    "ID_PRAGMA",     "ID_TRIG_NEW",
1354   "ID_TRIG",       "ALTER",         "ADD",           "WINDOW",
1355   "OVER",          "FILTER",        "error",         "cmd",
1356   "input",         "cmdlist",       "ecmd",          "explain",
1357   "cmdx",          "transtype",     "trans_opt",     "nm",
1358   "savepoint_opt",  "temp",          "ifnotexists",   "fullname",
1359   "columnlist",    "conslist_opt",  "table_options",  "select",
1360   "column",        "columnid",      "type",          "carglist",
1361   "id",            "id_opt",        "ids",           "typetoken",
1362   "typename",      "signed",        "plus_num",      "minus_num",
1363   "ccons",         "term",          "expr",          "onconf",
1364   "sortorder",     "autoinc",       "idxlist_opt",   "refargs",
1365   "defer_subclause",  "gen_always",    "tnm",           "refarg",
1366   "refact",        "init_deferred_pred_opt",  "conslist",      "tconscomma",
1367   "tcons",         "idxlist",       "defer_subclause_opt",  "resolvetype",
1368   "orconf",        "raisetype",     "ifexists",      "select_stmt",
1369   "with",          "selectnowith",  "oneselect",     "multiselect_op",
1370   "values",        "distinct",      "selcollist",    "from",
1371   "where_opt",     "groupby_opt",   "having_opt",    "orderby_opt",
1372   "limit_opt",     "window_clause",  "nexprlist",     "exprlist",
1373   "sclp",          "as",            "joinsrc",       "singlesrc",
1374   "seltablist",    "joinop",        "joinconstr_opt",  "dbnm",
1375   "indexed_opt",   "idlist",        "sortlist",      "nulls",
1376   "delete_stmt",   "update_stmt",   "setlist",       "idlist_opt",
1377   "insert_stmt",   "insert_cmd",    "upsert",        "exprx",
1378   "not_opt",       "likeop",        "case_operand",  "case_exprlist",
1379   "case_else",     "filter_over",   "uniqueflag",    "idxlist_single",
1380   "collate",       "vinto",         "nmnum",         "number",
1381   "trigger_time",  "trigger_event",  "foreach_clause",  "when_clause",
1382   "trigger_cmd_list",  "trigger_cmd",   "database_kw_opt",  "key_opt",
1383   "kwcolumn_opt",  "create_vtab",   "vtabarglist",   "vtabarg",
1384   "vtabargtoken",  "anylist",       "wqlist",        "wqcte",
1385   "windowdefn_list",  "windowdefn",    "window",        "frame_opt",
1386   "range_or_rows",  "frame_bound_s",  "frame_exclude_opt",  "frame_bound_e",
1387   "frame_bound",   "frame_exclude",  "filter_clause",  "over_clause",
1388 };
1389 #endif /* NDEBUG */
1390 
1391 #ifndef NDEBUG
1392 /* For tracing reduce actions, the names of all rules are required.
1393 */
1394 static const char *const yyRuleName[] = {
1395  /*   0 */ "input ::= cmdlist",
1396  /*   1 */ "cmdlist ::= cmdlist ecmd",
1397  /*   2 */ "cmdlist ::= ecmd",
1398  /*   3 */ "ecmd ::= SEMI",
1399  /*   4 */ "ecmd ::= explain cmdx SEMI",
1400  /*   5 */ "explain ::=",
1401  /*   6 */ "explain ::= EXPLAIN",
1402  /*   7 */ "explain ::= EXPLAIN QUERY PLAN",
1403  /*   8 */ "cmdx ::= cmd",
1404  /*   9 */ "cmd ::= BEGIN transtype trans_opt",
1405  /*  10 */ "trans_opt ::=",
1406  /*  11 */ "trans_opt ::= TRANSACTION",
1407  /*  12 */ "trans_opt ::= TRANSACTION nm",
1408  /*  13 */ "trans_opt ::= TRANSACTION ID_TRANS",
1409  /*  14 */ "transtype ::=",
1410  /*  15 */ "transtype ::= DEFERRED",
1411  /*  16 */ "transtype ::= IMMEDIATE",
1412  /*  17 */ "transtype ::= EXCLUSIVE",
1413  /*  18 */ "cmd ::= COMMIT trans_opt",
1414  /*  19 */ "cmd ::= END trans_opt",
1415  /*  20 */ "cmd ::= ROLLBACK trans_opt",
1416  /*  21 */ "savepoint_opt ::= SAVEPOINT",
1417  /*  22 */ "savepoint_opt ::=",
1418  /*  23 */ "cmd ::= SAVEPOINT nm",
1419  /*  24 */ "cmd ::= RELEASE savepoint_opt nm",
1420  /*  25 */ "cmd ::= ROLLBACK trans_opt TO savepoint_opt nm",
1421  /*  26 */ "cmd ::= SAVEPOINT ID_TRANS",
1422  /*  27 */ "cmd ::= RELEASE savepoint_opt ID_TRANS",
1423  /*  28 */ "cmd ::= ROLLBACK trans_opt TO savepoint_opt ID_TRANS",
1424  /*  29 */ "cmd ::= CREATE temp TABLE ifnotexists fullname LP columnlist conslist_opt RP table_options",
1425  /*  30 */ "cmd ::= CREATE temp TABLE ifnotexists fullname AS select",
1426  /*  31 */ "cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW",
1427  /*  32 */ "cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW",
1428  /*  33 */ "table_options ::=",
1429  /*  34 */ "table_options ::= WITHOUT nm",
1430  /*  35 */ "table_options ::= WITHOUT CTX_ROWID_KW",
1431  /*  36 */ "ifnotexists ::=",
1432  /*  37 */ "ifnotexists ::= IF NOT EXISTS",
1433  /*  38 */ "temp ::= TEMP",
1434  /*  39 */ "temp ::=",
1435  /*  40 */ "columnlist ::= columnlist COMMA column",
1436  /*  41 */ "columnlist ::= column",
1437  /*  42 */ "column ::= columnid type carglist",
1438  /*  43 */ "columnid ::= nm",
1439  /*  44 */ "columnid ::= ID_COL_NEW",
1440  /*  45 */ "id ::= ID",
1441  /*  46 */ "id_opt ::= id",
1442  /*  47 */ "id_opt ::=",
1443  /*  48 */ "ids ::= ID|STRING",
1444  /*  49 */ "nm ::= id",
1445  /*  50 */ "nm ::= STRING",
1446  /*  51 */ "nm ::= JOIN_KW",
1447  /*  52 */ "type ::=",
1448  /*  53 */ "type ::= typetoken",
1449  /*  54 */ "typetoken ::= typename",
1450  /*  55 */ "typetoken ::= typename LP signed RP",
1451  /*  56 */ "typetoken ::= typename LP signed COMMA signed RP",
1452  /*  57 */ "typename ::= ids",
1453  /*  58 */ "typename ::= typename ids",
1454  /*  59 */ "typename ::= ID_COL_TYPE",
1455  /*  60 */ "signed ::= plus_num",
1456  /*  61 */ "signed ::= minus_num",
1457  /*  62 */ "carglist ::= carglist ccons",
1458  /*  63 */ "carglist ::=",
1459  /*  64 */ "ccons ::= CONSTRAINT nm",
1460  /*  65 */ "ccons ::= DEFAULT term",
1461  /*  66 */ "ccons ::= DEFAULT LP expr RP",
1462  /*  67 */ "ccons ::= DEFAULT PLUS term",
1463  /*  68 */ "ccons ::= DEFAULT MINUS term",
1464  /*  69 */ "ccons ::= DEFAULT id",
1465  /*  70 */ "ccons ::= DEFAULT CTIME_KW",
1466  /*  71 */ "ccons ::= NULL onconf",
1467  /*  72 */ "ccons ::= NOT NULL onconf",
1468  /*  73 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
1469  /*  74 */ "ccons ::= UNIQUE onconf",
1470  /*  75 */ "ccons ::= CHECK LP expr RP",
1471  /*  76 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
1472  /*  77 */ "ccons ::= defer_subclause",
1473  /*  78 */ "ccons ::= COLLATE ids",
1474  /*  79 */ "ccons ::= gen_always AS LP expr RP id_opt",
1475  /*  80 */ "ccons ::= CONSTRAINT ID_CONSTR",
1476  /*  81 */ "ccons ::= COLLATE ID_COLLATE",
1477  /*  82 */ "ccons ::= REFERENCES ID_TAB",
1478  /*  83 */ "ccons ::= CHECK LP RP",
1479  /*  84 */ "term ::= NULL",
1480  /*  85 */ "term ::= INTEGER",
1481  /*  86 */ "term ::= FLOAT",
1482  /*  87 */ "term ::= STRING|BLOB",
1483  /*  88 */ "tnm ::= term",
1484  /*  89 */ "tnm ::= nm",
1485  /*  90 */ "gen_always ::= GENERATED ALWAYS",
1486  /*  91 */ "gen_always ::=",
1487  /*  92 */ "autoinc ::=",
1488  /*  93 */ "autoinc ::= AUTOINCR",
1489  /*  94 */ "refargs ::=",
1490  /*  95 */ "refargs ::= refargs refarg",
1491  /*  96 */ "refarg ::= MATCH nm",
1492  /*  97 */ "refarg ::= ON INSERT refact",
1493  /*  98 */ "refarg ::= ON DELETE refact",
1494  /*  99 */ "refarg ::= ON UPDATE refact",
1495  /* 100 */ "refarg ::= MATCH ID_FK_MATCH",
1496  /* 101 */ "refact ::= SET NULL",
1497  /* 102 */ "refact ::= SET DEFAULT",
1498  /* 103 */ "refact ::= CASCADE",
1499  /* 104 */ "refact ::= RESTRICT",
1500  /* 105 */ "refact ::= NO ACTION",
1501  /* 106 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
1502  /* 107 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
1503  /* 108 */ "init_deferred_pred_opt ::=",
1504  /* 109 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
1505  /* 110 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
1506  /* 111 */ "conslist_opt ::=",
1507  /* 112 */ "conslist_opt ::= COMMA conslist",
1508  /* 113 */ "conslist ::= conslist tconscomma tcons",
1509  /* 114 */ "conslist ::= tcons",
1510  /* 115 */ "tconscomma ::= COMMA",
1511  /* 116 */ "tconscomma ::=",
1512  /* 117 */ "tcons ::= CONSTRAINT nm",
1513  /* 118 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
1514  /* 119 */ "tcons ::= UNIQUE LP idxlist RP onconf",
1515  /* 120 */ "tcons ::= CHECK LP expr RP onconf",
1516  /* 121 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
1517  /* 122 */ "tcons ::= CONSTRAINT ID_CONSTR",
1518  /* 123 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB",
1519  /* 124 */ "tcons ::= CHECK LP RP onconf",
1520  /* 125 */ "defer_subclause_opt ::=",
1521  /* 126 */ "defer_subclause_opt ::= defer_subclause",
1522  /* 127 */ "onconf ::=",
1523  /* 128 */ "onconf ::= ON CONFLICT resolvetype",
1524  /* 129 */ "orconf ::=",
1525  /* 130 */ "orconf ::= OR resolvetype",
1526  /* 131 */ "resolvetype ::= raisetype",
1527  /* 132 */ "resolvetype ::= IGNORE",
1528  /* 133 */ "resolvetype ::= REPLACE",
1529  /* 134 */ "cmd ::= DROP TABLE ifexists fullname",
1530  /* 135 */ "cmd ::= DROP TABLE ifexists nm DOT ID_TAB",
1531  /* 136 */ "cmd ::= DROP TABLE ifexists ID_DB|ID_TAB",
1532  /* 137 */ "ifexists ::= IF EXISTS",
1533  /* 138 */ "ifexists ::=",
1534  /* 139 */ "cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select",
1535  /* 140 */ "cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW",
1536  /* 141 */ "cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW",
1537  /* 142 */ "cmd ::= DROP VIEW ifexists fullname",
1538  /* 143 */ "cmd ::= DROP VIEW ifexists nm DOT ID_VIEW",
1539  /* 144 */ "cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW",
1540  /* 145 */ "cmd ::= select_stmt",
1541  /* 146 */ "select_stmt ::= select",
1542  /* 147 */ "select ::= with selectnowith",
1543  /* 148 */ "selectnowith ::= oneselect",
1544  /* 149 */ "selectnowith ::= selectnowith multiselect_op oneselect",
1545  /* 150 */ "selectnowith ::= values",
1546  /* 151 */ "selectnowith ::= selectnowith COMMA values",
1547  /* 152 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
1548  /* 153 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
1549  /* 154 */ "values ::= VALUES LP nexprlist RP",
1550  /* 155 */ "values ::= values COMMA LP exprlist RP",
1551  /* 156 */ "multiselect_op ::= UNION",
1552  /* 157 */ "multiselect_op ::= UNION ALL",
1553  /* 158 */ "multiselect_op ::= EXCEPT",
1554  /* 159 */ "multiselect_op ::= INTERSECT",
1555  /* 160 */ "distinct ::= DISTINCT",
1556  /* 161 */ "distinct ::= ALL",
1557  /* 162 */ "distinct ::=",
1558  /* 163 */ "sclp ::= selcollist COMMA",
1559  /* 164 */ "sclp ::=",
1560  /* 165 */ "selcollist ::= sclp expr as",
1561  /* 166 */ "selcollist ::= sclp STAR",
1562  /* 167 */ "selcollist ::= sclp tnm DOT STAR",
1563  /* 168 */ "selcollist ::= sclp",
1564  /* 169 */ "selcollist ::= sclp ID_TAB DOT STAR",
1565  /* 170 */ "as ::= AS nm",
1566  /* 171 */ "as ::= ids",
1567  /* 172 */ "as ::= AS ID_ALIAS",
1568  /* 173 */ "as ::= ID_ALIAS",
1569  /* 174 */ "as ::=",
1570  /* 175 */ "from ::=",
1571  /* 176 */ "from ::= FROM joinsrc",
1572  /* 177 */ "joinsrc ::= singlesrc seltablist",
1573  /* 178 */ "joinsrc ::=",
1574  /* 179 */ "seltablist ::= seltablist joinop singlesrc joinconstr_opt",
1575  /* 180 */ "seltablist ::=",
1576  /* 181 */ "singlesrc ::= nm dbnm as indexed_opt",
1577  /* 182 */ "singlesrc ::= LP select RP as",
1578  /* 183 */ "singlesrc ::= LP joinsrc RP as",
1579  /* 184 */ "singlesrc ::= nm dbnm LP exprlist RP as",
1580  /* 185 */ "singlesrc ::=",
1581  /* 186 */ "singlesrc ::= nm DOT",
1582  /* 187 */ "singlesrc ::= nm DOT ID_TAB",
1583  /* 188 */ "singlesrc ::= ID_DB|ID_TAB",
1584  /* 189 */ "singlesrc ::= nm DOT ID_VIEW",
1585  /* 190 */ "singlesrc ::= ID_DB|ID_VIEW",
1586  /* 191 */ "joinconstr_opt ::= ON expr",
1587  /* 192 */ "joinconstr_opt ::= USING LP idlist RP",
1588  /* 193 */ "joinconstr_opt ::=",
1589  /* 194 */ "dbnm ::=",
1590  /* 195 */ "dbnm ::= DOT nm",
1591  /* 196 */ "fullname ::= nm dbnm",
1592  /* 197 */ "joinop ::= COMMA",
1593  /* 198 */ "joinop ::= JOIN",
1594  /* 199 */ "joinop ::= JOIN_KW JOIN",
1595  /* 200 */ "joinop ::= JOIN_KW nm JOIN",
1596  /* 201 */ "joinop ::= JOIN_KW nm nm JOIN",
1597  /* 202 */ "joinop ::= ID_JOIN_OPTS",
1598  /* 203 */ "indexed_opt ::=",
1599  /* 204 */ "indexed_opt ::= INDEXED BY nm",
1600  /* 205 */ "indexed_opt ::= NOT INDEXED",
1601  /* 206 */ "indexed_opt ::= INDEXED BY ID_IDX",
1602  /* 207 */ "orderby_opt ::=",
1603  /* 208 */ "orderby_opt ::= ORDER BY sortlist",
1604  /* 209 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
1605  /* 210 */ "sortlist ::= expr sortorder nulls",
1606  /* 211 */ "sortorder ::= ASC",
1607  /* 212 */ "sortorder ::= DESC",
1608  /* 213 */ "sortorder ::=",
1609  /* 214 */ "nulls ::= NULLS FIRST",
1610  /* 215 */ "nulls ::= NULLS LAST",
1611  /* 216 */ "nulls ::=",
1612  /* 217 */ "groupby_opt ::=",
1613  /* 218 */ "groupby_opt ::= GROUP BY nexprlist",
1614  /* 219 */ "groupby_opt ::= GROUP BY",
1615  /* 220 */ "having_opt ::=",
1616  /* 221 */ "having_opt ::= HAVING expr",
1617  /* 222 */ "limit_opt ::=",
1618  /* 223 */ "limit_opt ::= LIMIT expr",
1619  /* 224 */ "limit_opt ::= LIMIT expr OFFSET expr",
1620  /* 225 */ "limit_opt ::= LIMIT expr COMMA expr",
1621  /* 226 */ "cmd ::= delete_stmt",
1622  /* 227 */ "delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt",
1623  /* 228 */ "delete_stmt ::= with DELETE FROM",
1624  /* 229 */ "delete_stmt ::= with DELETE FROM nm DOT",
1625  /* 230 */ "delete_stmt ::= with DELETE FROM nm DOT ID_TAB",
1626  /* 231 */ "delete_stmt ::= with DELETE FROM ID_DB|ID_TAB",
1627  /* 232 */ "where_opt ::=",
1628  /* 233 */ "where_opt ::= WHERE expr",
1629  /* 234 */ "where_opt ::= WHERE",
1630  /* 235 */ "cmd ::= update_stmt",
1631  /* 236 */ "update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt",
1632  /* 237 */ "update_stmt ::= with UPDATE orconf",
1633  /* 238 */ "update_stmt ::= with UPDATE orconf nm DOT",
1634  /* 239 */ "update_stmt ::= with UPDATE orconf nm DOT ID_TAB",
1635  /* 240 */ "update_stmt ::= with UPDATE orconf ID_DB|ID_TAB",
1636  /* 241 */ "setlist ::= setlist COMMA nm EQ expr",
1637  /* 242 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
1638  /* 243 */ "setlist ::= nm EQ expr",
1639  /* 244 */ "setlist ::= LP idlist RP EQ expr",
1640  /* 245 */ "setlist ::=",
1641  /* 246 */ "setlist ::= setlist COMMA",
1642  /* 247 */ "setlist ::= setlist COMMA ID_COL",
1643  /* 248 */ "setlist ::= ID_COL",
1644  /* 249 */ "idlist_opt ::=",
1645  /* 250 */ "idlist_opt ::= LP idlist RP",
1646  /* 251 */ "idlist ::= idlist COMMA nm",
1647  /* 252 */ "idlist ::= nm",
1648  /* 253 */ "idlist ::=",
1649  /* 254 */ "idlist ::= idlist COMMA ID_COL",
1650  /* 255 */ "idlist ::= ID_COL",
1651  /* 256 */ "cmd ::= insert_stmt",
1652  /* 257 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert",
1653  /* 258 */ "insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES",
1654  /* 259 */ "insert_stmt ::= with insert_cmd INTO",
1655  /* 260 */ "insert_stmt ::= with insert_cmd INTO nm DOT",
1656  /* 261 */ "insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB",
1657  /* 262 */ "insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB",
1658  /* 263 */ "insert_cmd ::= INSERT orconf",
1659  /* 264 */ "insert_cmd ::= REPLACE",
1660  /* 265 */ "upsert ::=",
1661  /* 266 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
1662  /* 267 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
1663  /* 268 */ "upsert ::= ON CONFLICT DO NOTHING",
1664  /* 269 */ "exprx ::= expr not_opt IN ID_DB",
1665  /* 270 */ "exprx ::= expr not_opt IN nm DOT ID_TAB",
1666  /* 271 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN",
1667  /* 272 */ "exprx ::= tnm DOT ID_TAB|ID_COL",
1668  /* 273 */ "exprx ::= tnm DOT nm DOT ID_COL",
1669  /* 274 */ "exprx ::= expr COLLATE ID_COLLATE",
1670  /* 275 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP",
1671  /* 276 */ "exprx ::= CTIME_KW",
1672  /* 277 */ "exprx ::= LP nexprlist RP",
1673  /* 278 */ "exprx ::= tnm",
1674  /* 279 */ "exprx ::= tnm DOT nm",
1675  /* 280 */ "exprx ::= tnm DOT nm DOT nm",
1676  /* 281 */ "exprx ::= VARIABLE",
1677  /* 282 */ "exprx ::= expr COLLATE ids",
1678  /* 283 */ "exprx ::= CAST LP expr AS typetoken RP",
1679  /* 284 */ "exprx ::= ID LP distinct exprlist RP",
1680  /* 285 */ "exprx ::= ID LP STAR RP",
1681  /* 286 */ "exprx ::= expr AND expr",
1682  /* 287 */ "exprx ::= expr OR expr",
1683  /* 288 */ "exprx ::= expr LT|GT|GE|LE expr",
1684  /* 289 */ "exprx ::= expr EQ|NE expr",
1685  /* 290 */ "exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
1686  /* 291 */ "exprx ::= expr PLUS|MINUS expr",
1687  /* 292 */ "exprx ::= expr STAR|SLASH|REM expr",
1688  /* 293 */ "exprx ::= expr CONCAT expr",
1689  /* 294 */ "exprx ::= expr not_opt likeop expr",
1690  /* 295 */ "exprx ::= expr not_opt likeop expr ESCAPE expr",
1691  /* 296 */ "exprx ::= expr ISNULL|NOTNULL",
1692  /* 297 */ "exprx ::= expr NOT NULL",
1693  /* 298 */ "exprx ::= expr IS not_opt expr",
1694  /* 299 */ "exprx ::= NOT expr",
1695  /* 300 */ "exprx ::= BITNOT expr",
1696  /* 301 */ "exprx ::= MINUS expr",
1697  /* 302 */ "exprx ::= PLUS expr",
1698  /* 303 */ "exprx ::= expr not_opt BETWEEN expr AND expr",
1699  /* 304 */ "exprx ::= expr not_opt IN LP exprlist RP",
1700  /* 305 */ "exprx ::= LP select RP",
1701  /* 306 */ "exprx ::= expr not_opt IN LP select RP",
1702  /* 307 */ "exprx ::= expr not_opt IN nm dbnm",
1703  /* 308 */ "exprx ::= EXISTS LP select RP",
1704  /* 309 */ "exprx ::= CASE case_operand case_exprlist case_else END",
1705  /* 310 */ "exprx ::= RAISE LP IGNORE RP",
1706  /* 311 */ "exprx ::= RAISE LP raisetype COMMA nm RP",
1707  /* 312 */ "exprx ::= ID LP distinct exprlist RP filter_over",
1708  /* 313 */ "exprx ::= ID LP STAR RP filter_over",
1709  /* 314 */ "expr ::=",
1710  /* 315 */ "expr ::= exprx",
1711  /* 316 */ "not_opt ::=",
1712  /* 317 */ "not_opt ::= NOT",
1713  /* 318 */ "likeop ::= LIKE_KW|MATCH",
1714  /* 319 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1715  /* 320 */ "case_exprlist ::= WHEN expr THEN expr",
1716  /* 321 */ "case_else ::= ELSE expr",
1717  /* 322 */ "case_else ::=",
1718  /* 323 */ "case_operand ::= exprx",
1719  /* 324 */ "case_operand ::=",
1720  /* 325 */ "exprlist ::= nexprlist",
1721  /* 326 */ "exprlist ::=",
1722  /* 327 */ "nexprlist ::= nexprlist COMMA expr",
1723  /* 328 */ "nexprlist ::= exprx",
1724  /* 329 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
1725  /* 330 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB",
1726  /* 331 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW",
1727  /* 332 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW",
1728  /* 333 */ "uniqueflag ::= UNIQUE",
1729  /* 334 */ "uniqueflag ::=",
1730  /* 335 */ "idxlist_opt ::=",
1731  /* 336 */ "idxlist_opt ::= LP idxlist RP",
1732  /* 337 */ "idxlist ::= idxlist COMMA idxlist_single",
1733  /* 338 */ "idxlist ::= idxlist_single",
1734  /* 339 */ "idxlist_single ::= nm collate sortorder",
1735  /* 340 */ "idxlist_single ::= ID_COL",
1736  /* 341 */ "collate ::=",
1737  /* 342 */ "collate ::= COLLATE ids",
1738  /* 343 */ "collate ::= COLLATE ID_COLLATE",
1739  /* 344 */ "cmd ::= DROP INDEX ifexists fullname",
1740  /* 345 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX",
1741  /* 346 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX",
1742  /* 347 */ "cmd ::= VACUUM vinto",
1743  /* 348 */ "cmd ::= VACUUM nm vinto",
1744  /* 349 */ "vinto ::= INTO expr",
1745  /* 350 */ "vinto ::=",
1746  /* 351 */ "cmd ::= PRAGMA nm dbnm",
1747  /* 352 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
1748  /* 353 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
1749  /* 354 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
1750  /* 355 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
1751  /* 356 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA",
1752  /* 357 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA",
1753  /* 358 */ "nmnum ::= plus_num",
1754  /* 359 */ "nmnum ::= nm",
1755  /* 360 */ "nmnum ::= ON",
1756  /* 361 */ "nmnum ::= DELETE",
1757  /* 362 */ "nmnum ::= DEFAULT",
1758  /* 363 */ "plus_num ::= PLUS number",
1759  /* 364 */ "plus_num ::= number",
1760  /* 365 */ "minus_num ::= MINUS number",
1761  /* 366 */ "number ::= INTEGER",
1762  /* 367 */ "number ::= FLOAT",
1763  /* 368 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END",
1764  /* 369 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause",
1765  /* 370 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list",
1766  /* 371 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB",
1767  /* 372 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW",
1768  /* 373 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW",
1769  /* 374 */ "trigger_time ::= BEFORE",
1770  /* 375 */ "trigger_time ::= AFTER",
1771  /* 376 */ "trigger_time ::= INSTEAD OF",
1772  /* 377 */ "trigger_time ::=",
1773  /* 378 */ "trigger_event ::= DELETE",
1774  /* 379 */ "trigger_event ::= INSERT",
1775  /* 380 */ "trigger_event ::= UPDATE",
1776  /* 381 */ "trigger_event ::= UPDATE OF idlist",
1777  /* 382 */ "foreach_clause ::=",
1778  /* 383 */ "foreach_clause ::= FOR EACH ROW",
1779  /* 384 */ "when_clause ::=",
1780  /* 385 */ "when_clause ::= WHEN expr",
1781  /* 386 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
1782  /* 387 */ "trigger_cmd_list ::= trigger_cmd SEMI",
1783  /* 388 */ "trigger_cmd_list ::= SEMI",
1784  /* 389 */ "trigger_cmd ::= update_stmt",
1785  /* 390 */ "trigger_cmd ::= insert_stmt",
1786  /* 391 */ "trigger_cmd ::= delete_stmt",
1787  /* 392 */ "trigger_cmd ::= select_stmt",
1788  /* 393 */ "raisetype ::= ROLLBACK|ABORT|FAIL",
1789  /* 394 */ "cmd ::= DROP TRIGGER ifexists fullname",
1790  /* 395 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG",
1791  /* 396 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG",
1792  /* 397 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
1793  /* 398 */ "cmd ::= DETACH database_kw_opt expr",
1794  /* 399 */ "key_opt ::=",
1795  /* 400 */ "key_opt ::= KEY expr",
1796  /* 401 */ "database_kw_opt ::= DATABASE",
1797  /* 402 */ "database_kw_opt ::=",
1798  /* 403 */ "cmd ::= REINDEX",
1799  /* 404 */ "cmd ::= REINDEX nm dbnm",
1800  /* 405 */ "cmd ::= REINDEX ID_COLLATE",
1801  /* 406 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX",
1802  /* 407 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB",
1803  /* 408 */ "cmd ::= ANALYZE",
1804  /* 409 */ "cmd ::= ANALYZE nm dbnm",
1805  /* 410 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX",
1806  /* 411 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB",
1807  /* 412 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
1808  /* 413 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column",
1809  /* 414 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW",
1810  /* 415 */ "cmd ::= ALTER TABLE nm DOT ID_TAB",
1811  /* 416 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB",
1812  /* 417 */ "kwcolumn_opt ::=",
1813  /* 418 */ "kwcolumn_opt ::= COLUMNKW",
1814  /* 419 */ "cmd ::= create_vtab",
1815  /* 420 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm",
1816  /* 421 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP",
1817  /* 422 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW",
1818  /* 423 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW",
1819  /* 424 */ "vtabarglist ::= vtabarg",
1820  /* 425 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
1821  /* 426 */ "vtabarg ::=",
1822  /* 427 */ "vtabarg ::= vtabarg vtabargtoken",
1823  /* 428 */ "vtabargtoken ::= ANY",
1824  /* 429 */ "vtabargtoken ::= LP anylist RP",
1825  /* 430 */ "anylist ::=",
1826  /* 431 */ "anylist ::= anylist LP anylist RP",
1827  /* 432 */ "anylist ::= anylist ANY",
1828  /* 433 */ "with ::=",
1829  /* 434 */ "with ::= WITH wqlist",
1830  /* 435 */ "with ::= WITH RECURSIVE wqlist",
1831  /* 436 */ "wqlist ::= wqcte",
1832  /* 437 */ "wqlist ::= wqlist COMMA wqcte",
1833  /* 438 */ "wqlist ::= ID_TAB_NEW",
1834  /* 439 */ "wqcte ::= nm idxlist_opt AS LP select RP",
1835  /* 440 */ "windowdefn_list ::= windowdefn",
1836  /* 441 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
1837  /* 442 */ "windowdefn ::= nm AS LP window RP",
1838  /* 443 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
1839  /* 444 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
1840  /* 445 */ "window ::= ORDER BY sortlist frame_opt",
1841  /* 446 */ "window ::= nm ORDER BY sortlist frame_opt",
1842  /* 447 */ "window ::= frame_opt",
1843  /* 448 */ "window ::= nm frame_opt",
1844  /* 449 */ "frame_opt ::=",
1845  /* 450 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
1846  /* 451 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
1847  /* 452 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
1848  /* 453 */ "frame_bound_s ::= frame_bound",
1849  /* 454 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
1850  /* 455 */ "frame_bound_e ::= frame_bound",
1851  /* 456 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
1852  /* 457 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
1853  /* 458 */ "frame_bound ::= CURRENT ROW",
1854  /* 459 */ "frame_exclude_opt ::=",
1855  /* 460 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
1856  /* 461 */ "frame_exclude ::= NO OTHERS",
1857  /* 462 */ "frame_exclude ::= CURRENT ROW",
1858  /* 463 */ "frame_exclude ::= GROUP",
1859  /* 464 */ "frame_exclude ::= TIES",
1860  /* 465 */ "window_clause ::= WINDOW windowdefn_list",
1861  /* 466 */ "filter_over ::= filter_clause over_clause",
1862  /* 467 */ "filter_over ::= over_clause",
1863  /* 468 */ "filter_over ::= filter_clause",
1864  /* 469 */ "over_clause ::= OVER LP window RP",
1865  /* 470 */ "over_clause ::= OVER nm",
1866  /* 471 */ "filter_clause ::= FILTER LP WHERE expr RP",
1867 };
1868 #endif /* NDEBUG */
1869 
1870 
1871 #if YYSTACKDEPTH<=0
1872 /*
1873 ** Try to increase the size of the parser stack.
1874 */
yyGrowStack(yyParser * p)1875 static void yyGrowStack(yyParser *p){
1876   int newSize;
1877   yyStackEntry *pNew;
1878 
1879   newSize = p->yystksz*2 + 100;
1880   pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
1881   if( pNew ){
1882     p->yystack = pNew;
1883     p->yystksz = newSize;
1884 #ifndef NDEBUG
1885     if( yyTraceFILE ){
1886       fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
1887               yyTracePrompt, p->yystksz);
1888     }
1889 #endif
1890   }
1891 }
1892 #endif
1893 
1894 /*
1895 ** This function allocates a new parser.
1896 ** The only argument is a pointer to a function which works like
1897 ** malloc.
1898 **
1899 ** Inputs:
1900 ** A pointer to the function used to allocate memory.
1901 **
1902 ** Outputs:
1903 ** A pointer to a parser.  This pointer is used in subsequent calls
1904 ** to sqlite3_parse and sqlite3_parseFree.
1905 */
sqlite3_parseAlloc(void * (* mallocProc)(size_t))1906 void *sqlite3_parseAlloc(void *(*mallocProc)(size_t)){
1907   yyParser *pParser;
1908   pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1909   if( pParser ){
1910     pParser->yyidx = -1;
1911 #ifdef YYTRACKMAXSTACKDEPTH
1912     pParser->yyidxMax = 0;
1913 #endif
1914 #if YYSTACKDEPTH<=0
1915     pParser->yystack = NULL;
1916     pParser->yystksz = 0;
1917     yyGrowStack(pParser);
1918 #endif
1919   }
1920   return pParser;
1921 }
1922 
1923 /* The following function deletes the value associated with a
1924 ** symbol.  The symbol can be either a terminal or nonterminal.
1925 ** "yymajor" is the symbol code, and "yypminor" is a pointer to
1926 ** the value.
1927 */
yy_destructor(yyParser * yypParser,YYCODETYPE yymajor,YYMINORTYPE * yypminor)1928 static void yy_destructor(
1929   yyParser *yypParser,    /* The parser */
1930   YYCODETYPE yymajor,     /* Type code for object to destroy */
1931   YYMINORTYPE *yypminor   /* The object to be destroyed */
1932 ){
1933   sqlite3_parseARG_FETCH;
1934   if (parserContext->executeRules)
1935   {
1936       switch( yymajor ){
1937         /* Here is inserted the actions which take place when a
1938         ** terminal or non-terminal is destroyed.  This can happen
1939         ** when the symbol is popped from the stack during a
1940         ** reduce or during error processing or when a parser is
1941         ** being destroyed before it is finished parsing.
1942         **
1943         ** Note: during a reduce, the only symbols destroyed are those
1944         ** which appear on the RHS of the rule, but which are not used
1945         ** inside the C code.
1946         */
1947     case 191: /* cmd */
1948     case 194: /* ecmd */
1949     case 196: /* cmdx */
1950     case 243: /* select_stmt */
1951     case 272: /* delete_stmt */
1952     case 273: /* update_stmt */
1953     case 276: /* insert_stmt */
1954     case 297: /* trigger_cmd */
1955     case 301: /* create_vtab */
1956 {
1957 parser_safe_delete((yypminor->yy363));
1958 }
1959       break;
1960     case 195: /* explain */
1961 {
1962 parser_safe_delete((yypminor->yy91));
1963 }
1964       break;
1965     case 197: /* transtype */
1966     case 198: /* trans_opt */
1967 {
1968 parser_safe_delete((yypminor->yy84));
1969 }
1970       break;
1971     case 199: /* nm */
1972     case 206: /* table_options */
1973     case 209: /* columnid */
1974     case 212: /* id */
1975     case 213: /* id_opt */
1976     case 214: /* ids */
1977     case 216: /* typename */
1978     case 267: /* dbnm */
1979     case 288: /* collate */
1980     case 303: /* vtabarg */
1981     case 304: /* vtabargtoken */
1982     case 305: /* anylist */
1983 {
1984 parser_safe_delete((yypminor->yy319));
1985 }
1986       break;
1987     case 200: /* savepoint_opt */
1988     case 202: /* ifnotexists */
1989     case 225: /* autoinc */
1990     case 229: /* gen_always */
1991     case 235: /* tconscomma */
1992     case 242: /* ifexists */
1993     case 280: /* not_opt */
1994     case 286: /* uniqueflag */
1995     case 298: /* database_kw_opt */
1996     case 300: /* kwcolumn_opt */
1997 {
1998 parser_safe_delete((yypminor->yy611));
1999 }
2000       break;
2001     case 201: /* temp */
2002     case 249: /* distinct */
2003 {
2004 parser_safe_delete((yypminor->yy386));
2005 }
2006       break;
2007     case 203: /* fullname */
2008 {
2009 parser_safe_delete((yypminor->yy440));
2010 }
2011       break;
2012     case 204: /* columnlist */
2013 {
2014 parser_safe_delete((yypminor->yy42));
2015 }
2016       break;
2017     case 205: /* conslist_opt */
2018     case 234: /* conslist */
2019 {
2020 parser_safe_delete((yypminor->yy493));
2021 }
2022       break;
2023     case 207: /* select */
2024     case 245: /* selectnowith */
2025 {
2026 parser_safe_delete((yypminor->yy313));
2027 }
2028       break;
2029     case 208: /* column */
2030 {
2031 parser_safe_delete((yypminor->yy147));
2032 }
2033       break;
2034     case 210: /* type */
2035     case 215: /* typetoken */
2036 {
2037 parser_safe_delete((yypminor->yy57));
2038 }
2039       break;
2040     case 211: /* carglist */
2041 {
2042 parser_safe_delete((yypminor->yy51));
2043 }
2044       break;
2045     case 217: /* signed */
2046     case 218: /* plus_num */
2047     case 219: /* minus_num */
2048     case 221: /* term */
2049     case 290: /* nmnum */
2050     case 291: /* number */
2051 {
2052 parser_safe_delete((yypminor->yy229));
2053 }
2054       break;
2055     case 220: /* ccons */
2056 {
2057 parser_safe_delete((yypminor->yy464));
2058 }
2059       break;
2060     case 222: /* expr */
2061     case 252: /* where_opt */
2062     case 254: /* having_opt */
2063     case 279: /* exprx */
2064     case 282: /* case_operand */
2065     case 284: /* case_else */
2066     case 289: /* vinto */
2067     case 295: /* when_clause */
2068     case 299: /* key_opt */
2069 {
2070 parser_safe_delete((yypminor->yy512));
2071 }
2072       break;
2073     case 223: /* onconf */
2074     case 239: /* resolvetype */
2075     case 240: /* orconf */
2076 {
2077 parser_safe_delete((yypminor->yy418));
2078 }
2079       break;
2080     case 224: /* sortorder */
2081 {
2082 parser_safe_delete((yypminor->yy549));
2083 }
2084       break;
2085     case 226: /* idxlist_opt */
2086     case 237: /* idxlist */
2087 {
2088 parser_safe_delete((yypminor->yy223));
2089 }
2090       break;
2091     case 227: /* refargs */
2092 {
2093 parser_safe_delete((yypminor->yy584));
2094 }
2095       break;
2096     case 228: /* defer_subclause */
2097     case 238: /* defer_subclause_opt */
2098 {
2099 parser_safe_delete((yypminor->yy9));
2100 }
2101       break;
2102     case 230: /* tnm */
2103 {
2104 parser_safe_delete((yypminor->yy590));
2105 }
2106       break;
2107     case 231: /* refarg */
2108 {
2109 parser_safe_delete((yypminor->yy507));
2110 }
2111       break;
2112     case 232: /* refact */
2113 {
2114 parser_safe_delete((yypminor->yy104));
2115 }
2116       break;
2117     case 233: /* init_deferred_pred_opt */
2118 {
2119 parser_safe_delete((yypminor->yy312));
2120 }
2121       break;
2122     case 236: /* tcons */
2123 {
2124 parser_safe_delete((yypminor->yy246));
2125 }
2126       break;
2127     case 244: /* with */
2128 {
2129 parser_safe_delete((yypminor->yy1));
2130 }
2131       break;
2132     case 246: /* oneselect */
2133 {
2134 parser_safe_delete((yypminor->yy470));
2135 }
2136       break;
2137     case 247: /* multiselect_op */
2138 {
2139 parser_safe_delete((yypminor->yy382));
2140 }
2141       break;
2142     case 248: /* values */
2143 {
2144 parser_safe_delete((yypminor->yy486));
2145 }
2146       break;
2147     case 250: /* selcollist */
2148     case 260: /* sclp */
2149 {
2150 parser_safe_delete((yypminor->yy53));
2151 }
2152       break;
2153     case 251: /* from */
2154     case 262: /* joinsrc */
2155 {
2156 parser_safe_delete((yypminor->yy31));
2157 }
2158       break;
2159     case 253: /* groupby_opt */
2160     case 258: /* nexprlist */
2161     case 259: /* exprlist */
2162     case 283: /* case_exprlist */
2163 {
2164 parser_safe_delete((yypminor->yy71));
2165 }
2166       break;
2167     case 255: /* orderby_opt */
2168     case 270: /* sortlist */
2169 {
2170 parser_safe_delete((yypminor->yy403));
2171 }
2172       break;
2173     case 256: /* limit_opt */
2174 {
2175 parser_safe_delete((yypminor->yy4));
2176 }
2177       break;
2178     case 257: /* window_clause */
2179     case 308: /* windowdefn_list */
2180 {
2181 parser_safe_delete((yypminor->yy299));
2182 }
2183       break;
2184     case 261: /* as */
2185 {
2186 parser_safe_delete((yypminor->yy200));
2187 }
2188       break;
2189     case 263: /* singlesrc */
2190 {
2191 parser_safe_delete((yypminor->yy441));
2192 }
2193       break;
2194     case 264: /* seltablist */
2195 {
2196 parser_safe_delete((yypminor->yy451));
2197 }
2198       break;
2199     case 265: /* joinop */
2200 {
2201 parser_safe_delete((yypminor->yy221));
2202 }
2203       break;
2204     case 266: /* joinconstr_opt */
2205 {
2206 parser_safe_delete((yypminor->yy295));
2207 }
2208       break;
2209     case 268: /* indexed_opt */
2210 {
2211 parser_safe_delete((yypminor->yy592));
2212 }
2213       break;
2214     case 269: /* idlist */
2215     case 275: /* idlist_opt */
2216     case 302: /* vtabarglist */
2217 {
2218 parser_safe_delete((yypminor->yy575));
2219 }
2220       break;
2221     case 271: /* nulls */
2222 {
2223 parser_safe_delete((yypminor->yy579));
2224 }
2225       break;
2226     case 274: /* setlist */
2227 {
2228 parser_safe_delete((yypminor->yy201));
2229 }
2230       break;
2231     case 277: /* insert_cmd */
2232 {
2233 parser_safe_delete((yypminor->yy504));
2234 }
2235       break;
2236     case 278: /* upsert */
2237 {
2238 parser_safe_delete((yypminor->yy400));
2239 }
2240       break;
2241     case 281: /* likeop */
2242 {
2243 parser_safe_delete((yypminor->yy40));
2244 }
2245       break;
2246     case 285: /* filter_over */
2247 {
2248 parser_safe_delete((yypminor->yy247));
2249 }
2250       break;
2251     case 287: /* idxlist_single */
2252 {
2253 parser_safe_delete((yypminor->yy268));
2254 }
2255       break;
2256     case 292: /* trigger_time */
2257 {
2258 parser_safe_delete((yypminor->yy532));
2259 }
2260       break;
2261     case 293: /* trigger_event */
2262 {
2263 parser_safe_delete((yypminor->yy151));
2264 }
2265       break;
2266     case 294: /* foreach_clause */
2267 {
2268 parser_safe_delete((yypminor->yy83));
2269 }
2270       break;
2271     case 296: /* trigger_cmd_list */
2272 {
2273 parser_safe_delete((yypminor->yy110));
2274 }
2275       break;
2276     case 306: /* wqlist */
2277 {
2278 parser_safe_delete((yypminor->yy593));
2279 }
2280       break;
2281     case 307: /* wqcte */
2282 {
2283 parser_safe_delete((yypminor->yy446));
2284 }
2285       break;
2286     case 309: /* windowdefn */
2287 {
2288 parser_safe_delete((yypminor->yy266));
2289 }
2290       break;
2291     case 310: /* window */
2292 {
2293 parser_safe_delete((yypminor->yy334));
2294 }
2295       break;
2296     case 311: /* frame_opt */
2297 {
2298 parser_safe_delete((yypminor->yy41));
2299 }
2300       break;
2301     case 312: /* range_or_rows */
2302 {
2303 parser_safe_delete((yypminor->yy419));
2304 }
2305       break;
2306     case 313: /* frame_bound_s */
2307     case 315: /* frame_bound_e */
2308 {
2309 parser_safe_delete((yypminor->yy442));
2310 }
2311       break;
2312     case 316: /* frame_bound */
2313 {
2314 parser_safe_delete((yypminor->yy442));parser_safe_delete((yypminor->yy442));parser_safe_delete((yypminor->yy442));
2315 }
2316       break;
2317     case 318: /* filter_clause */
2318 {
2319 parser_safe_delete((yypminor->yy397));
2320 }
2321       break;
2322     case 319: /* over_clause */
2323 {
2324 parser_safe_delete((yypminor->yy248));
2325 }
2326       break;
2327         default:  break;   /* If no destructor action specified: do nothing */
2328       }
2329   }
2330 }
2331 
2332 /*
2333 ** Pop the parser's stack once.
2334 **
2335 ** If there is a destructor routine associated with the token which
2336 ** is popped from the stack, then call it.
2337 **
2338 ** Return the major token number for the symbol popped.
2339 */
yy_pop_parser_stack(yyParser * pParser)2340 static int yy_pop_parser_stack(yyParser *pParser){
2341   YYCODETYPE yymajor;
2342   yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
2343 
2344   /* There is no mechanism by which the parser stack can be popped below
2345   ** empty in SQLite.  */
2346   if( pParser->yyidx<0 ) return 0;
2347 #ifndef NDEBUG
2348   if( yyTraceFILE && pParser->yyidx>=0 ){
2349     fprintf(yyTraceFILE,"%sPopping %s\n",
2350       yyTracePrompt,
2351       yyTokenName[yytos->major]);
2352   }
2353 #endif
2354   yymajor = yytos->major;
2355   yy_destructor(pParser, yymajor, &yytos->minor);
2356   delete yytos->tokens;
2357   yytos->tokens = nullptr;
2358   pParser->yyidx--;
2359   return yymajor;
2360 }
2361 
2362 /*
2363 ** Deallocate and destroy a parser.  Destructors are all called for
2364 ** all stack elements before shutting the parser down.
2365 **
2366 ** Inputs:
2367 ** <ul>
2368 ** <li>  A pointer to the parser.  This should be a pointer
2369 **       obtained from sqlite3_parseAlloc.
2370 ** <li>  A pointer to a function used to reclaim memory obtained
2371 **       from malloc.
2372 ** </ul>
2373 */
sqlite3_parseFree(void * p,void (* freeProc)(void *))2374 void sqlite3_parseFree(
2375   void *p,                    /* The parser to be deleted */
2376   void (*freeProc)(void*)     /* Function used to reclaim memory */
2377 ){
2378   yyParser *pParser = (yyParser*)p;
2379   /* In SQLite, we never try to destroy a parser that was not successfully
2380   ** created in the first place. */
2381   if( pParser==0 ) return;
2382   while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
2383 #if YYSTACKDEPTH<=0
2384   free(pParser->yystack);
2385 #endif
2386   (*freeProc)((void*)pParser);
2387 }
2388 
2389 /*
2390 ** Return the peak depth of the stack for a parser.
2391 */
2392 #ifdef YYTRACKMAXSTACKDEPTH
sqlite3_parseStackPeak(void * p)2393 int sqlite3_parseStackPeak(void *p){
2394   yyParser *pParser = (yyParser*)p;
2395   return pParser->yyidxMax;
2396 }
2397 #endif
2398 
2399 /*
2400 ** Find the appropriate action for a parser given the terminal
2401 ** look-ahead token iLookAhead.
2402 **
2403 ** If the look-ahead token is YYNOCODE, then check to see if the action is
2404 ** independent of the look-ahead.  If it is, return the action, otherwise
2405 ** return YY_NO_ACTION.
2406 */
yy_find_shift_action(yyParser * pParser,YYCODETYPE iLookAhead)2407 static int yy_find_shift_action(
2408   yyParser *pParser,        /* The parser */
2409   YYCODETYPE iLookAhead     /* The look-ahead token */
2410 ){
2411   int i;
2412   int stateno = pParser->yystack[pParser->yyidx].stateno;
2413   GET_CONTEXT;
2414 
2415   if( stateno>YY_SHIFT_COUNT
2416    || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
2417     return yy_default[stateno];
2418   }
2419   assert( iLookAhead!=YYNOCODE );
2420   i += iLookAhead;
2421   if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
2422     if( iLookAhead>0 ){
2423 #ifdef YYFALLBACK
2424       YYCODETYPE iFallback;            /* Fallback token */
2425       if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
2426              && (iFallback = yyFallback[iLookAhead])!=0
2427              && parserContext->doFallbacks ){
2428 #ifndef NDEBUG
2429         if( yyTraceFILE ){
2430           fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
2431              yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
2432         }
2433 #endif
2434         return yy_find_shift_action(pParser, iFallback);
2435       }
2436 #endif
2437 #ifdef YYWILDCARD
2438       {
2439         int j = i - iLookAhead + YYWILDCARD;
2440         if(
2441 #if YY_SHIFT_MIN+YYWILDCARD<0
2442           j>=0 &&
2443 #endif
2444 #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
2445           j<YY_ACTTAB_COUNT &&
2446 #endif
2447           yy_lookahead[j]==YYWILDCARD
2448         ){
2449 #ifndef NDEBUG
2450           if( yyTraceFILE ){
2451             fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
2452                yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
2453           }
2454 #endif /* NDEBUG */
2455           return yy_action[j];
2456         }
2457       }
2458 #endif /* YYWILDCARD */
2459     }
2460     return yy_default[stateno];
2461   }else{
2462     return yy_action[i];
2463   }
2464 }
2465 
2466 /*
2467 ** Find the appropriate action for a parser given the non-terminal
2468 ** look-ahead token iLookAhead.
2469 **
2470 ** If the look-ahead token is YYNOCODE, then check to see if the action is
2471 ** independent of the look-ahead.  If it is, return the action, otherwise
2472 ** return YY_NO_ACTION.
2473 */
yy_find_reduce_action(int stateno,YYCODETYPE iLookAhead)2474 static int yy_find_reduce_action(
2475   int stateno,              /* Current state number */
2476   YYCODETYPE iLookAhead     /* The look-ahead token */
2477 ){
2478   int i;
2479 #ifdef YYERRORSYMBOL
2480   if( stateno>YY_REDUCE_COUNT ){
2481     return yy_default[stateno];
2482   }
2483 #else
2484   assert( stateno<=YY_REDUCE_COUNT );
2485 #endif
2486   i = yy_reduce_ofst[stateno];
2487   assert( i!=YY_REDUCE_USE_DFLT );
2488   assert( iLookAhead!=YYNOCODE );
2489   i += iLookAhead;
2490 #ifdef YYERRORSYMBOL
2491   if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
2492     return yy_default[stateno];
2493   }
2494 #else
2495   assert( i>=0 && i<YY_ACTTAB_COUNT );
2496   assert( yy_lookahead[i]==iLookAhead );
2497 #endif
2498   return yy_action[i];
2499 }
2500 
2501 /*
2502 ** The following routine is called if the stack overflows.
2503 */
yyStackOverflow(yyParser * yypParser,YYMINORTYPE * yypMinor)2504 static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
2505    UNUSED(yypMinor);
2506    sqlite3_parseARG_FETCH;
2507    yypParser->yyidx--;
2508 #ifndef NDEBUG
2509    if( yyTraceFILE ){
2510      fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
2511    }
2512 #endif
2513    while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
2514    /* Here code is inserted which will execute if the parser
2515    ** stack every overflows */
2516 
2517     parserContext->error(QObject::tr("Parser stack overflow"));
2518    sqlite3_parseARG_STORE; /* Suppress warning about unused %extra_argument var */
2519 }
2520 
2521 /*
2522 ** Perform a shift action.
2523 */
yy_shift(yyParser * yypParser,int yyNewState,int yyMajor,YYMINORTYPE * yypMinor)2524 static void yy_shift(
2525   yyParser *yypParser,          /* The parser to be shifted */
2526   int yyNewState,               /* The new state to shift in */
2527   int yyMajor,                  /* The major token to shift in */
2528   YYMINORTYPE *yypMinor         /* Pointer to the minor token to shift in */
2529 ){
2530   yyStackEntry *yytos;
2531   yypParser->yyidx++;
2532 #ifdef YYTRACKMAXSTACKDEPTH
2533   if( yypParser->yyidx>yypParser->yyidxMax ){
2534     yypParser->yyidxMax = yypParser->yyidx;
2535   }
2536 #endif
2537 #if YYSTACKDEPTH>0
2538   if( yypParser->yyidx>=YYSTACKDEPTH ){
2539     yyStackOverflow(yypParser, yypMinor);
2540     return;
2541   }
2542 #else
2543   if( yypParser->yyidx>=yypParser->yystksz ){
2544     yyGrowStack(yypParser);
2545     if( yypParser->yyidx>=yypParser->yystksz ){
2546       yyStackOverflow(yypParser, yypMinor);
2547       return;
2548     }
2549   }
2550 #endif
2551   yytos = &yypParser->yystack[yypParser->yyidx];
2552   yytos->stateno = (YYACTIONTYPE)yyNewState;
2553   yytos->major = (YYCODETYPE)yyMajor;
2554   yytos->minor = *yypMinor;
2555   yytos->tokens = new QList<Token*>();
2556 #ifndef NDEBUG
2557   if( yyTraceFILE && yypParser->yyidx>0 ){
2558     int i;
2559     fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
2560     fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
2561     for(i=1; i<=yypParser->yyidx; i++)
2562       fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
2563     fprintf(yyTraceFILE,"\n");
2564   }
2565 #endif
2566 }
2567 
2568 /* The following table contains information about every rule that
2569 ** is used during the reduce.
2570 */
2571 static const struct {
2572   YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
2573   unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
2574 } yyRuleInfo[] = {
2575   { 192, 1 },
2576   { 193, 2 },
2577   { 193, 1 },
2578   { 194, 1 },
2579   { 194, 3 },
2580   { 195, 0 },
2581   { 195, 1 },
2582   { 195, 3 },
2583   { 196, 1 },
2584   { 191, 3 },
2585   { 198, 0 },
2586   { 198, 1 },
2587   { 198, 2 },
2588   { 198, 2 },
2589   { 197, 0 },
2590   { 197, 1 },
2591   { 197, 1 },
2592   { 197, 1 },
2593   { 191, 2 },
2594   { 191, 2 },
2595   { 191, 2 },
2596   { 200, 1 },
2597   { 200, 0 },
2598   { 191, 2 },
2599   { 191, 3 },
2600   { 191, 5 },
2601   { 191, 2 },
2602   { 191, 3 },
2603   { 191, 5 },
2604   { 191, 10 },
2605   { 191, 7 },
2606   { 191, 7 },
2607   { 191, 5 },
2608   { 206, 0 },
2609   { 206, 2 },
2610   { 206, 2 },
2611   { 202, 0 },
2612   { 202, 3 },
2613   { 201, 1 },
2614   { 201, 0 },
2615   { 204, 3 },
2616   { 204, 1 },
2617   { 208, 3 },
2618   { 209, 1 },
2619   { 209, 1 },
2620   { 212, 1 },
2621   { 213, 1 },
2622   { 213, 0 },
2623   { 214, 1 },
2624   { 199, 1 },
2625   { 199, 1 },
2626   { 199, 1 },
2627   { 210, 0 },
2628   { 210, 1 },
2629   { 215, 1 },
2630   { 215, 4 },
2631   { 215, 6 },
2632   { 216, 1 },
2633   { 216, 2 },
2634   { 216, 1 },
2635   { 217, 1 },
2636   { 217, 1 },
2637   { 211, 2 },
2638   { 211, 0 },
2639   { 220, 2 },
2640   { 220, 2 },
2641   { 220, 4 },
2642   { 220, 3 },
2643   { 220, 3 },
2644   { 220, 2 },
2645   { 220, 2 },
2646   { 220, 2 },
2647   { 220, 3 },
2648   { 220, 5 },
2649   { 220, 2 },
2650   { 220, 4 },
2651   { 220, 4 },
2652   { 220, 1 },
2653   { 220, 2 },
2654   { 220, 6 },
2655   { 220, 2 },
2656   { 220, 2 },
2657   { 220, 2 },
2658   { 220, 3 },
2659   { 221, 1 },
2660   { 221, 1 },
2661   { 221, 1 },
2662   { 221, 1 },
2663   { 230, 1 },
2664   { 230, 1 },
2665   { 229, 2 },
2666   { 229, 0 },
2667   { 225, 0 },
2668   { 225, 1 },
2669   { 227, 0 },
2670   { 227, 2 },
2671   { 231, 2 },
2672   { 231, 3 },
2673   { 231, 3 },
2674   { 231, 3 },
2675   { 231, 2 },
2676   { 232, 2 },
2677   { 232, 2 },
2678   { 232, 1 },
2679   { 232, 1 },
2680   { 232, 2 },
2681   { 228, 3 },
2682   { 228, 2 },
2683   { 233, 0 },
2684   { 233, 2 },
2685   { 233, 2 },
2686   { 205, 0 },
2687   { 205, 2 },
2688   { 234, 3 },
2689   { 234, 1 },
2690   { 235, 1 },
2691   { 235, 0 },
2692   { 236, 2 },
2693   { 236, 7 },
2694   { 236, 5 },
2695   { 236, 5 },
2696   { 236, 10 },
2697   { 236, 2 },
2698   { 236, 7 },
2699   { 236, 4 },
2700   { 238, 0 },
2701   { 238, 1 },
2702   { 223, 0 },
2703   { 223, 3 },
2704   { 240, 0 },
2705   { 240, 2 },
2706   { 239, 1 },
2707   { 239, 1 },
2708   { 239, 1 },
2709   { 191, 4 },
2710   { 191, 6 },
2711   { 191, 4 },
2712   { 242, 2 },
2713   { 242, 0 },
2714   { 191, 8 },
2715   { 191, 7 },
2716   { 191, 5 },
2717   { 191, 4 },
2718   { 191, 6 },
2719   { 191, 4 },
2720   { 191, 1 },
2721   { 243, 1 },
2722   { 207, 2 },
2723   { 245, 1 },
2724   { 245, 3 },
2725   { 245, 1 },
2726   { 245, 3 },
2727   { 246, 9 },
2728   { 246, 10 },
2729   { 248, 4 },
2730   { 248, 5 },
2731   { 247, 1 },
2732   { 247, 2 },
2733   { 247, 1 },
2734   { 247, 1 },
2735   { 249, 1 },
2736   { 249, 1 },
2737   { 249, 0 },
2738   { 260, 2 },
2739   { 260, 0 },
2740   { 250, 3 },
2741   { 250, 2 },
2742   { 250, 4 },
2743   { 250, 1 },
2744   { 250, 4 },
2745   { 261, 2 },
2746   { 261, 1 },
2747   { 261, 2 },
2748   { 261, 1 },
2749   { 261, 0 },
2750   { 251, 0 },
2751   { 251, 2 },
2752   { 262, 2 },
2753   { 262, 0 },
2754   { 264, 4 },
2755   { 264, 0 },
2756   { 263, 4 },
2757   { 263, 4 },
2758   { 263, 4 },
2759   { 263, 6 },
2760   { 263, 0 },
2761   { 263, 2 },
2762   { 263, 3 },
2763   { 263, 1 },
2764   { 263, 3 },
2765   { 263, 1 },
2766   { 266, 2 },
2767   { 266, 4 },
2768   { 266, 0 },
2769   { 267, 0 },
2770   { 267, 2 },
2771   { 203, 2 },
2772   { 265, 1 },
2773   { 265, 1 },
2774   { 265, 2 },
2775   { 265, 3 },
2776   { 265, 4 },
2777   { 265, 1 },
2778   { 268, 0 },
2779   { 268, 3 },
2780   { 268, 2 },
2781   { 268, 3 },
2782   { 255, 0 },
2783   { 255, 3 },
2784   { 270, 5 },
2785   { 270, 3 },
2786   { 224, 1 },
2787   { 224, 1 },
2788   { 224, 0 },
2789   { 271, 2 },
2790   { 271, 2 },
2791   { 271, 0 },
2792   { 253, 0 },
2793   { 253, 3 },
2794   { 253, 2 },
2795   { 254, 0 },
2796   { 254, 2 },
2797   { 256, 0 },
2798   { 256, 2 },
2799   { 256, 4 },
2800   { 256, 4 },
2801   { 191, 1 },
2802   { 272, 6 },
2803   { 272, 3 },
2804   { 272, 5 },
2805   { 272, 6 },
2806   { 272, 4 },
2807   { 252, 0 },
2808   { 252, 2 },
2809   { 252, 1 },
2810   { 191, 1 },
2811   { 273, 9 },
2812   { 273, 3 },
2813   { 273, 5 },
2814   { 273, 6 },
2815   { 273, 4 },
2816   { 274, 5 },
2817   { 274, 7 },
2818   { 274, 3 },
2819   { 274, 5 },
2820   { 274, 0 },
2821   { 274, 2 },
2822   { 274, 3 },
2823   { 274, 1 },
2824   { 275, 0 },
2825   { 275, 3 },
2826   { 269, 3 },
2827   { 269, 1 },
2828   { 269, 0 },
2829   { 269, 3 },
2830   { 269, 1 },
2831   { 191, 1 },
2832   { 276, 7 },
2833   { 276, 7 },
2834   { 276, 3 },
2835   { 276, 5 },
2836   { 276, 4 },
2837   { 276, 6 },
2838   { 277, 2 },
2839   { 277, 1 },
2840   { 278, 0 },
2841   { 278, 11 },
2842   { 278, 8 },
2843   { 278, 4 },
2844   { 279, 4 },
2845   { 279, 6 },
2846   { 279, 1 },
2847   { 279, 3 },
2848   { 279, 5 },
2849   { 279, 3 },
2850   { 279, 6 },
2851   { 279, 1 },
2852   { 279, 3 },
2853   { 279, 1 },
2854   { 279, 3 },
2855   { 279, 5 },
2856   { 279, 1 },
2857   { 279, 3 },
2858   { 279, 6 },
2859   { 279, 5 },
2860   { 279, 4 },
2861   { 279, 3 },
2862   { 279, 3 },
2863   { 279, 3 },
2864   { 279, 3 },
2865   { 279, 3 },
2866   { 279, 3 },
2867   { 279, 3 },
2868   { 279, 3 },
2869   { 279, 4 },
2870   { 279, 6 },
2871   { 279, 2 },
2872   { 279, 3 },
2873   { 279, 4 },
2874   { 279, 2 },
2875   { 279, 2 },
2876   { 279, 2 },
2877   { 279, 2 },
2878   { 279, 6 },
2879   { 279, 6 },
2880   { 279, 3 },
2881   { 279, 6 },
2882   { 279, 5 },
2883   { 279, 4 },
2884   { 279, 5 },
2885   { 279, 4 },
2886   { 279, 6 },
2887   { 279, 6 },
2888   { 279, 5 },
2889   { 222, 0 },
2890   { 222, 1 },
2891   { 280, 0 },
2892   { 280, 1 },
2893   { 281, 1 },
2894   { 283, 5 },
2895   { 283, 4 },
2896   { 284, 2 },
2897   { 284, 0 },
2898   { 282, 1 },
2899   { 282, 0 },
2900   { 259, 1 },
2901   { 259, 0 },
2902   { 258, 3 },
2903   { 258, 1 },
2904   { 191, 12 },
2905   { 191, 8 },
2906   { 191, 7 },
2907   { 191, 5 },
2908   { 286, 1 },
2909   { 286, 0 },
2910   { 226, 0 },
2911   { 226, 3 },
2912   { 237, 3 },
2913   { 237, 1 },
2914   { 287, 3 },
2915   { 287, 1 },
2916   { 288, 0 },
2917   { 288, 2 },
2918   { 288, 2 },
2919   { 191, 4 },
2920   { 191, 6 },
2921   { 191, 4 },
2922   { 191, 2 },
2923   { 191, 3 },
2924   { 289, 2 },
2925   { 289, 0 },
2926   { 191, 3 },
2927   { 191, 5 },
2928   { 191, 6 },
2929   { 191, 5 },
2930   { 191, 6 },
2931   { 191, 4 },
2932   { 191, 2 },
2933   { 290, 1 },
2934   { 290, 1 },
2935   { 290, 1 },
2936   { 290, 1 },
2937   { 290, 1 },
2938   { 218, 2 },
2939   { 218, 1 },
2940   { 219, 2 },
2941   { 291, 1 },
2942   { 291, 1 },
2943   { 191, 15 },
2944   { 191, 12 },
2945   { 191, 14 },
2946   { 191, 10 },
2947   { 191, 7 },
2948   { 191, 5 },
2949   { 292, 1 },
2950   { 292, 1 },
2951   { 292, 2 },
2952   { 292, 0 },
2953   { 293, 1 },
2954   { 293, 1 },
2955   { 293, 1 },
2956   { 293, 3 },
2957   { 294, 0 },
2958   { 294, 3 },
2959   { 295, 0 },
2960   { 295, 2 },
2961   { 296, 3 },
2962   { 296, 2 },
2963   { 296, 1 },
2964   { 297, 1 },
2965   { 297, 1 },
2966   { 297, 1 },
2967   { 297, 1 },
2968   { 241, 1 },
2969   { 191, 4 },
2970   { 191, 6 },
2971   { 191, 4 },
2972   { 191, 6 },
2973   { 191, 3 },
2974   { 299, 0 },
2975   { 299, 2 },
2976   { 298, 1 },
2977   { 298, 0 },
2978   { 191, 1 },
2979   { 191, 3 },
2980   { 191, 2 },
2981   { 191, 4 },
2982   { 191, 2 },
2983   { 191, 1 },
2984   { 191, 3 },
2985   { 191, 4 },
2986   { 191, 2 },
2987   { 191, 6 },
2988   { 191, 6 },
2989   { 191, 6 },
2990   { 191, 5 },
2991   { 191, 3 },
2992   { 300, 0 },
2993   { 300, 1 },
2994   { 191, 1 },
2995   { 301, 8 },
2996   { 301, 11 },
2997   { 301, 7 },
2998   { 301, 5 },
2999   { 302, 1 },
3000   { 302, 3 },
3001   { 303, 0 },
3002   { 303, 2 },
3003   { 304, 1 },
3004   { 304, 3 },
3005   { 305, 0 },
3006   { 305, 4 },
3007   { 305, 2 },
3008   { 244, 0 },
3009   { 244, 2 },
3010   { 244, 3 },
3011   { 306, 1 },
3012   { 306, 3 },
3013   { 306, 1 },
3014   { 307, 6 },
3015   { 308, 1 },
3016   { 308, 3 },
3017   { 309, 5 },
3018   { 310, 5 },
3019   { 310, 6 },
3020   { 310, 4 },
3021   { 310, 5 },
3022   { 310, 1 },
3023   { 310, 2 },
3024   { 311, 0 },
3025   { 311, 3 },
3026   { 311, 6 },
3027   { 312, 1 },
3028   { 313, 1 },
3029   { 313, 2 },
3030   { 315, 1 },
3031   { 315, 2 },
3032   { 316, 2 },
3033   { 316, 2 },
3034   { 314, 0 },
3035   { 314, 2 },
3036   { 317, 2 },
3037   { 317, 2 },
3038   { 317, 1 },
3039   { 317, 1 },
3040   { 257, 2 },
3041   { 285, 2 },
3042   { 285, 1 },
3043   { 285, 1 },
3044   { 319, 4 },
3045   { 319, 2 },
3046   { 318, 5 },
3047 };
3048 
3049 static void yy_accept(yyParser*);  /* Forward Declaration */
3050 
3051 /*
3052 ** Perform a reduce action and the shift that must immediately
3053 ** follow the reduce.
3054 */
yy_reduce(yyParser * yypParser,int yyruleno)3055 static void yy_reduce(
3056   yyParser *yypParser,         /* The parser */
3057   int yyruleno                 /* Number of the rule by which to reduce */
3058 ){
3059   int yygoto;                     /* The next state */
3060   int yyact;                      /* The next action */
3061   YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
3062   yyStackEntry *yymsp;            /* The top of the parser's stack */
3063   int yysize;                     /* Amount to pop the stack */
3064   sqlite3_parseARG_FETCH;
3065   SqliteStatement* objectForTokens = 0;
3066   QStringList noTokenInheritanceFields;
3067   yymsp = &yypParser->yystack[yypParser->yyidx];
3068 #ifndef NDEBUG
3069   if( yyTraceFILE && yyruleno>=0
3070         && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
3071     fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
3072       yyRuleName[yyruleno]);
3073   }
3074 #endif /* NDEBUG */
3075 
3076   /* Silence complaints from purify about yygotominor being uninitialized
3077   ** in some cases when it is copied into the stack after the following
3078   ** switch.  yygotominor is uninitialized when a rule reduces that does
3079   ** not set the value of its left-hand side nonterminal.  Leaving the
3080   ** value of the nonterminal uninitialized is utterly harmless as long
3081   ** as the value is never used.  So really the only thing this code
3082   ** accomplishes is to quieten purify.
3083   **
3084   ** 2007-01-16:  The wireshark project (www.wireshark.org) reports that
3085   ** without this code, their parser segfaults.  I'm not sure what there
3086   ** parser is doing to make this happen.  This is the second bug report
3087   ** from wireshark this week.  Clearly they are stressing Lemon in ways
3088   ** that it has not been previously stressed...  (SQLite ticket #2172)
3089   */
3090   /*memset(&yygotominor, 0, sizeof(yygotominor));*/
3091   yygotominor = yyzerominor;
3092 
3093 
3094   if (parserContext->executeRules)
3095   {
3096       switch( yyruleno ){
3097       /* Beginning here are the reduction cases.  A typical example
3098       ** follows:
3099       **   case 0:
3100       **  #line <lineno> <grammarfile>
3101       **     { ... }           // User supplied code
3102       **  #line <lineno> <thisfile>
3103       **     break;
3104       */
3105       case 1: /* cmdlist ::= cmdlist ecmd */
3106 {parserContext->addQuery(yymsp[0].minor.yy363); DONT_INHERIT_TOKENS("cmdlist");}
3107         break;
3108       case 2: /* cmdlist ::= ecmd */
3109 {parserContext->addQuery(yymsp[0].minor.yy363);}
3110         break;
3111       case 3: /* ecmd ::= SEMI */
3112 {yygotominor.yy363 = new SqliteEmptyQuery();}
3113         break;
3114       case 4: /* ecmd ::= explain cmdx SEMI */
3115 {
3116                                                 yygotominor.yy363 = yymsp[-1].minor.yy363;
3117                                                 yygotominor.yy363->explain = yymsp[-2].minor.yy91->explain;
3118                                                 yygotominor.yy363->queryPlan = yymsp[-2].minor.yy91->queryPlan;
3119                                                 delete yymsp[-2].minor.yy91;
3120                                                 objectForTokens = yygotominor.yy363;
3121                                             }
3122         break;
3123       case 5: /* explain ::= */
3124 {yygotominor.yy91 = new ParserStubExplain(false, false);}
3125         break;
3126       case 6: /* explain ::= EXPLAIN */
3127 {yygotominor.yy91 = new ParserStubExplain(true, false);}
3128         break;
3129       case 7: /* explain ::= EXPLAIN QUERY PLAN */
3130 {yygotominor.yy91 = new ParserStubExplain(true, true);}
3131         break;
3132       case 8: /* cmdx ::= cmd */
3133       case 389: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==389);
3134       case 390: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==390);
3135       case 391: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==391);
3136       case 392: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==392);
3137       case 419: /* cmd ::= create_vtab */ yytestcase(yyruleno==419);
3138 {yygotominor.yy363 = yymsp[0].minor.yy363;}
3139         break;
3140       case 9: /* cmd ::= BEGIN transtype trans_opt */
3141 {
3142                                                 yygotominor.yy363 = new SqliteBeginTrans(
3143                                                         yymsp[-1].minor.yy84->type,
3144                                                         yymsp[0].minor.yy84->transactionKw,
3145                                                         yymsp[0].minor.yy84->name
3146                                                     );
3147                                                 delete yymsp[0].minor.yy84;
3148                                                 delete yymsp[-1].minor.yy84;
3149                                                 objectForTokens = yygotominor.yy363;
3150                                             }
3151         break;
3152       case 10: /* trans_opt ::= */
3153       case 14: /* transtype ::= */ yytestcase(yyruleno==14);
3154 {yygotominor.yy84 = new ParserStubTransDetails();}
3155         break;
3156       case 11: /* trans_opt ::= TRANSACTION */
3157 {
3158                                                 yygotominor.yy84 = new ParserStubTransDetails();
3159                                                 yygotominor.yy84->transactionKw = true;
3160                                             }
3161         break;
3162       case 12: /* trans_opt ::= TRANSACTION nm */
3163       case 13: /* trans_opt ::= TRANSACTION ID_TRANS */ yytestcase(yyruleno==13);
3164 {
3165                                                 yygotominor.yy84 = new ParserStubTransDetails();
3166                                                 yygotominor.yy84->transactionKw = true;
3167                                                 yygotominor.yy84->name = *(yymsp[0].minor.yy319);
3168                                                 delete yymsp[0].minor.yy319;
3169                                             }
3170         break;
3171       case 15: /* transtype ::= DEFERRED */
3172 {
3173                                                 yygotominor.yy84 = new ParserStubTransDetails();
3174                                                 yygotominor.yy84->type = SqliteBeginTrans::Type::DEFERRED;
3175                                             }
3176         break;
3177       case 16: /* transtype ::= IMMEDIATE */
3178 {
3179                                                 yygotominor.yy84 = new ParserStubTransDetails();
3180                                                 yygotominor.yy84->type = SqliteBeginTrans::Type::IMMEDIATE;
3181                                             }
3182         break;
3183       case 17: /* transtype ::= EXCLUSIVE */
3184 {
3185                                                 yygotominor.yy84 = new ParserStubTransDetails();
3186                                                 yygotominor.yy84->type = SqliteBeginTrans::Type::EXCLUSIVE;
3187                                             }
3188         break;
3189       case 18: /* cmd ::= COMMIT trans_opt */
3190 {
3191                                                 yygotominor.yy363 = new SqliteCommitTrans(
3192                                                         yymsp[0].minor.yy84->transactionKw,
3193                                                         yymsp[0].minor.yy84->name,
3194                                                         false
3195                                                     );
3196                                                 delete yymsp[0].minor.yy84;
3197                                                 objectForTokens = yygotominor.yy363;
3198                                             }
3199         break;
3200       case 19: /* cmd ::= END trans_opt */
3201 {
3202                                                 yygotominor.yy363 = new SqliteCommitTrans(
3203                                                         yymsp[0].minor.yy84->transactionKw,
3204                                                         yymsp[0].minor.yy84->name,
3205                                                         true
3206                                                     );
3207                                                 delete yymsp[0].minor.yy84;
3208                                                 objectForTokens = yygotominor.yy363;
3209                                             }
3210         break;
3211       case 20: /* cmd ::= ROLLBACK trans_opt */
3212 {
3213                                                 yygotominor.yy363 = new SqliteRollback(
3214                                                         yymsp[0].minor.yy84->transactionKw,
3215                                                         yymsp[0].minor.yy84->name
3216                                                     );
3217                                                 delete yymsp[0].minor.yy84;
3218                                                 objectForTokens = yygotominor.yy363;
3219                                             }
3220         break;
3221       case 21: /* savepoint_opt ::= SAVEPOINT */
3222       case 37: /* ifnotexists ::= IF NOT EXISTS */ yytestcase(yyruleno==37);
3223       case 90: /* gen_always ::= GENERATED ALWAYS */ yytestcase(yyruleno==90);
3224       case 93: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==93);
3225       case 115: /* tconscomma ::= COMMA */ yytestcase(yyruleno==115);
3226       case 137: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==137);
3227       case 317: /* not_opt ::= NOT */ yytestcase(yyruleno==317);
3228       case 333: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==333);
3229       case 401: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==401);
3230       case 417: /* kwcolumn_opt ::= */ yytestcase(yyruleno==417);
3231 {yygotominor.yy611 = new bool(true);}
3232         break;
3233       case 22: /* savepoint_opt ::= */
3234       case 36: /* ifnotexists ::= */ yytestcase(yyruleno==36);
3235       case 91: /* gen_always ::= */ yytestcase(yyruleno==91);
3236       case 92: /* autoinc ::= */ yytestcase(yyruleno==92);
3237       case 116: /* tconscomma ::= */ yytestcase(yyruleno==116);
3238       case 138: /* ifexists ::= */ yytestcase(yyruleno==138);
3239       case 316: /* not_opt ::= */ yytestcase(yyruleno==316);
3240       case 334: /* uniqueflag ::= */ yytestcase(yyruleno==334);
3241       case 402: /* database_kw_opt ::= */ yytestcase(yyruleno==402);
3242       case 418: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==418);
3243 {yygotominor.yy611 = new bool(false);}
3244         break;
3245       case 23: /* cmd ::= SAVEPOINT nm */
3246 {
3247                                                 yygotominor.yy363 = new SqliteSavepoint(*(yymsp[0].minor.yy319));
3248                                                 delete yymsp[0].minor.yy319;
3249                                                 objectForTokens = yygotominor.yy363;
3250                                             }
3251         break;
3252       case 24: /* cmd ::= RELEASE savepoint_opt nm */
3253 {
3254                                                 yygotominor.yy363 = new SqliteRelease(*(yymsp[-1].minor.yy611), *(yymsp[0].minor.yy319));
3255                                                 delete yymsp[0].minor.yy319;
3256                                                 objectForTokens = yygotominor.yy363;
3257                                             }
3258         break;
3259       case 25: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
3260       case 26: /* cmd ::= SAVEPOINT ID_TRANS */ yytestcase(yyruleno==26);
3261 {
3262                                                 yygotominor.yy363 = new SqliteRollback(
3263                                                         yymsp[-3].minor.yy84->transactionKw,
3264                                                         *(yymsp[-1].minor.yy611),
3265                                                         *(yymsp[0].minor.yy319)
3266                                                     );
3267                                                 delete yymsp[-1].minor.yy611;
3268                                                 delete yymsp[-3].minor.yy84;
3269                                                 objectForTokens = yygotominor.yy363;
3270                                             }
3271         break;
3272       case 27: /* cmd ::= RELEASE savepoint_opt ID_TRANS */
3273       case 28: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt ID_TRANS */ yytestcase(yyruleno==28);
3274 {  yy_destructor(yypParser,200,&yymsp[-1].minor);
3275 }
3276         break;
3277       case 29: /* cmd ::= CREATE temp TABLE ifnotexists fullname LP columnlist conslist_opt RP table_options */
3278 {
3279                                                 yygotominor.yy363 = new SqliteCreateTable(
3280                                                         *(yymsp[-6].minor.yy611),
3281                                                         *(yymsp[-8].minor.yy386),
3282                                                         yymsp[-5].minor.yy440->name1,
3283                                                         yymsp[-5].minor.yy440->name2,
3284                                                         *(yymsp[-3].minor.yy42),
3285                                                         *(yymsp[-2].minor.yy493),
3286                                                         *(yymsp[0].minor.yy319)
3287                                                     );
3288                                                 delete yymsp[-6].minor.yy611;
3289                                                 delete yymsp[-8].minor.yy386;
3290                                                 delete yymsp[-3].minor.yy42;
3291                                                 delete yymsp[-2].minor.yy493;
3292                                                 delete yymsp[-5].minor.yy440;
3293                                                 delete yymsp[0].minor.yy319;
3294                                                 objectForTokens = yygotominor.yy363;
3295                                             }
3296         break;
3297       case 30: /* cmd ::= CREATE temp TABLE ifnotexists fullname AS select */
3298 {
3299                                                 yygotominor.yy363 = new SqliteCreateTable(
3300                                                         *(yymsp[-3].minor.yy611),
3301                                                         *(yymsp[-5].minor.yy386),
3302                                                         yymsp[-2].minor.yy440->name1,
3303                                                         yymsp[-2].minor.yy440->name2,
3304                                                         yymsp[0].minor.yy313
3305                                                     );
3306                                                 delete yymsp[-3].minor.yy611;
3307                                                 delete yymsp[-5].minor.yy386;
3308                                                 delete yymsp[-2].minor.yy440;
3309                                                 objectForTokens = yygotominor.yy363;
3310                                             }
3311         break;
3312       case 31: /* cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW */
3313       case 140: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==140);
3314       case 372: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==372);
3315 {  yy_destructor(yypParser,201,&yymsp[-5].minor);
3316   yy_destructor(yypParser,199,&yymsp[-2].minor);
3317 }
3318         break;
3319       case 32: /* cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW */
3320       case 141: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==141);
3321       case 373: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==373);
3322 {  yy_destructor(yypParser,201,&yymsp[-3].minor);
3323 }
3324         break;
3325       case 33: /* table_options ::= */
3326       case 194: /* dbnm ::= */ yytestcase(yyruleno==194);
3327       case 341: /* collate ::= */ yytestcase(yyruleno==341);
3328       case 426: /* vtabarg ::= */ yytestcase(yyruleno==426);
3329       case 430: /* anylist ::= */ yytestcase(yyruleno==430);
3330 {yygotominor.yy319 = new QString();}
3331         break;
3332       case 34: /* table_options ::= WITHOUT nm */
3333       case 35: /* table_options ::= WITHOUT CTX_ROWID_KW */ yytestcase(yyruleno==35);
3334 {
3335                                                 if (yymsp[0].minor.yy319->toLower() != "rowid")
3336                                                     parserContext->errorAtToken(QString("Invalid table option: %1").arg(*(yymsp[0].minor.yy319)));
3337 
3338                                                 yygotominor.yy319 = yymsp[0].minor.yy319;
3339                                             }
3340         break;
3341       case 38: /* temp ::= TEMP */
3342 {yygotominor.yy386 = new int( (yymsp[0].minor.yy0->value.length() > 4) ? 2 : 1 );}
3343         break;
3344       case 39: /* temp ::= */
3345       case 162: /* distinct ::= */ yytestcase(yyruleno==162);
3346 {yygotominor.yy386 = new int(0);}
3347         break;
3348       case 40: /* columnlist ::= columnlist COMMA column */
3349 {
3350                                                 yymsp[-2].minor.yy42->append(yymsp[0].minor.yy147);
3351                                                 yygotominor.yy42 = yymsp[-2].minor.yy42;
3352                                                 DONT_INHERIT_TOKENS("columnlist");
3353                                             }
3354         break;
3355       case 41: /* columnlist ::= column */
3356 {
3357                                                 yygotominor.yy42 = new ParserCreateTableColumnList();
3358                                                 yygotominor.yy42->append(yymsp[0].minor.yy147);
3359                                             }
3360         break;
3361       case 42: /* column ::= columnid type carglist */
3362 {
3363                                                 yygotominor.yy147 = new SqliteCreateTable::Column(*(yymsp[-2].minor.yy319), yymsp[-1].minor.yy57, *(yymsp[0].minor.yy51));
3364                                                 delete yymsp[-2].minor.yy319;
3365                                                 delete yymsp[0].minor.yy51;
3366                                                 objectForTokens = yygotominor.yy147;
3367                                             }
3368         break;
3369       case 43: /* columnid ::= nm */
3370       case 44: /* columnid ::= ID_COL_NEW */ yytestcase(yyruleno==44);
3371       case 49: /* nm ::= id */ yytestcase(yyruleno==49);
3372       case 57: /* typename ::= ids */ yytestcase(yyruleno==57);
3373       case 195: /* dbnm ::= DOT nm */ yytestcase(yyruleno==195);
3374       case 342: /* collate ::= COLLATE ids */ yytestcase(yyruleno==342);
3375       case 343: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==343);
3376 {yygotominor.yy319 = yymsp[0].minor.yy319;}
3377         break;
3378       case 45: /* id ::= ID */
3379 {
3380                                                 yygotominor.yy319 = new QString(
3381                                                     stripObjName(
3382                                                         yymsp[0].minor.yy0->value
3383                                                     )
3384                                                 );
3385                                             }
3386         break;
3387       case 46: /* id_opt ::= id */
3388 {
3389                                                 yygotominor.yy319 = yymsp[0].minor.yy319;
3390                                             }
3391         break;
3392       case 47: /* id_opt ::= */
3393 {
3394                                                 yygotominor.yy319 = new QString();
3395                                             }
3396         break;
3397       case 48: /* ids ::= ID|STRING */
3398       case 51: /* nm ::= JOIN_KW */ yytestcase(yyruleno==51);
3399 {yygotominor.yy319 = new QString(yymsp[0].minor.yy0->value);}
3400         break;
3401       case 50: /* nm ::= STRING */
3402 {yygotominor.yy319 = new QString(stripString(yymsp[0].minor.yy0->value));}
3403         break;
3404       case 52: /* type ::= */
3405 {yygotominor.yy57 = nullptr;}
3406         break;
3407       case 53: /* type ::= typetoken */
3408 {yygotominor.yy57 = yymsp[0].minor.yy57;}
3409         break;
3410       case 54: /* typetoken ::= typename */
3411 {
3412                                                 yygotominor.yy57 = new SqliteColumnType(*(yymsp[0].minor.yy319));
3413                                                 delete yymsp[0].minor.yy319;
3414                                                 objectForTokens = yygotominor.yy57;
3415                                             }
3416         break;
3417       case 55: /* typetoken ::= typename LP signed RP */
3418 {
3419                                                 yygotominor.yy57 = new SqliteColumnType(*(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy229));
3420                                                 delete yymsp[-3].minor.yy319;
3421                                                 delete yymsp[-1].minor.yy229;
3422                                                 objectForTokens = yygotominor.yy57;
3423                                             }
3424         break;
3425       case 56: /* typetoken ::= typename LP signed COMMA signed RP */
3426 {
3427                                                 yygotominor.yy57 = new SqliteColumnType(*(yymsp[-5].minor.yy319), *(yymsp[-3].minor.yy229), *(yymsp[-1].minor.yy229));
3428                                                 delete yymsp[-5].minor.yy319;
3429                                                 delete yymsp[-3].minor.yy229;
3430                                                 delete yymsp[-1].minor.yy229;
3431                                                 objectForTokens = yygotominor.yy57;
3432                                             }
3433         break;
3434       case 58: /* typename ::= typename ids */
3435       case 59: /* typename ::= ID_COL_TYPE */ yytestcase(yyruleno==59);
3436 {
3437                                                 yymsp[-1].minor.yy319->append(" " + *(yymsp[0].minor.yy319));
3438                                                 delete yymsp[0].minor.yy319;
3439                                                 yygotominor.yy319 = yymsp[-1].minor.yy319;
3440                                             }
3441         break;
3442       case 60: /* signed ::= plus_num */
3443       case 61: /* signed ::= minus_num */ yytestcase(yyruleno==61);
3444       case 358: /* nmnum ::= plus_num */ yytestcase(yyruleno==358);
3445       case 363: /* plus_num ::= PLUS number */ yytestcase(yyruleno==363);
3446       case 364: /* plus_num ::= number */ yytestcase(yyruleno==364);
3447 {yygotominor.yy229 = yymsp[0].minor.yy229;}
3448         break;
3449       case 62: /* carglist ::= carglist ccons */
3450 {
3451                                                 yymsp[-1].minor.yy51->append(yymsp[0].minor.yy464);
3452                                                 yygotominor.yy51 = yymsp[-1].minor.yy51;
3453                                                 DONT_INHERIT_TOKENS("carglist");
3454                                             }
3455         break;
3456       case 63: /* carglist ::= */
3457 {yygotominor.yy51 = new ParserCreateTableColumnConstraintList();}
3458         break;
3459       case 64: /* ccons ::= CONSTRAINT nm */
3460 {
3461                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3462                                                 yygotominor.yy464->initDefNameOnly(*(yymsp[0].minor.yy319));
3463                                                 delete yymsp[0].minor.yy319;
3464                                                 objectForTokens = yygotominor.yy464;
3465                                             }
3466         break;
3467       case 65: /* ccons ::= DEFAULT term */
3468 {
3469                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3470                                                 yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229));
3471                                                 delete yymsp[0].minor.yy229;
3472                                                 objectForTokens = yygotominor.yy464;
3473                                             }
3474         break;
3475       case 66: /* ccons ::= DEFAULT LP expr RP */
3476 {
3477                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3478                                                 yygotominor.yy464->initDefExpr(yymsp[-1].minor.yy512);
3479                                                 objectForTokens = yygotominor.yy464;
3480                                             }
3481         break;
3482       case 67: /* ccons ::= DEFAULT PLUS term */
3483 {
3484                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3485                                                 yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229), false);
3486                                                 delete yymsp[0].minor.yy229;
3487                                                 objectForTokens = yygotominor.yy464;
3488                                             }
3489         break;
3490       case 68: /* ccons ::= DEFAULT MINUS term */
3491 {
3492                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3493                                                 yygotominor.yy464->initDefTerm(*(yymsp[0].minor.yy229), true);
3494                                                 delete yymsp[0].minor.yy229;
3495                                                 objectForTokens = yygotominor.yy464;
3496                                             }
3497         break;
3498       case 69: /* ccons ::= DEFAULT id */
3499 {
3500                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3501                                                 yygotominor.yy464->initDefId(*(yymsp[0].minor.yy319));
3502                                                 delete yymsp[0].minor.yy319;
3503                                                 objectForTokens = yygotominor.yy464;
3504                                             }
3505         break;
3506       case 70: /* ccons ::= DEFAULT CTIME_KW */
3507 {
3508                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3509                                                 yygotominor.yy464->initDefCTime(yymsp[0].minor.yy0->value);
3510                                                 objectForTokens = yygotominor.yy464;
3511                                             }
3512         break;
3513       case 71: /* ccons ::= NULL onconf */
3514 {
3515                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3516                                                 yygotominor.yy464->initNull(*(yymsp[0].minor.yy418));
3517                                                 delete yymsp[0].minor.yy418;
3518                                                 objectForTokens = yygotominor.yy464;
3519                                             }
3520         break;
3521       case 72: /* ccons ::= NOT NULL onconf */
3522 {
3523                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3524                                                 yygotominor.yy464->initNotNull(*(yymsp[0].minor.yy418));
3525                                                 delete yymsp[0].minor.yy418;
3526                                                 objectForTokens = yygotominor.yy464;
3527                                             }
3528         break;
3529       case 73: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
3530 {
3531                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3532                                                 yygotominor.yy464->initPk(*(yymsp[-2].minor.yy549), *(yymsp[-1].minor.yy418), *(yymsp[0].minor.yy611));
3533                                                 delete yymsp[-2].minor.yy549;
3534                                                 delete yymsp[0].minor.yy611;
3535                                                 delete yymsp[-1].minor.yy418;
3536                                                 objectForTokens = yygotominor.yy464;
3537                                             }
3538         break;
3539       case 74: /* ccons ::= UNIQUE onconf */
3540 {
3541                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3542                                                 yygotominor.yy464->initUnique(*(yymsp[0].minor.yy418));
3543                                                 delete yymsp[0].minor.yy418;
3544                                                 objectForTokens = yygotominor.yy464;
3545                                             }
3546         break;
3547       case 75: /* ccons ::= CHECK LP expr RP */
3548 {
3549                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3550                                                 yygotominor.yy464->initCheck(yymsp[-1].minor.yy512);
3551                                                 objectForTokens = yygotominor.yy464;
3552                                             }
3553         break;
3554       case 76: /* ccons ::= REFERENCES nm idxlist_opt refargs */
3555 {
3556                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3557                                                 yygotominor.yy464->initFk(*(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy223), *(yymsp[0].minor.yy584));
3558                                                 delete yymsp[-2].minor.yy319;
3559                                                 delete yymsp[0].minor.yy584;
3560                                                 delete yymsp[-1].minor.yy223;
3561                                                 objectForTokens = yygotominor.yy464;
3562                                             }
3563         break;
3564       case 77: /* ccons ::= defer_subclause */
3565 {
3566                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3567                                                 yygotominor.yy464->initDefer(yymsp[0].minor.yy9->initially, yymsp[0].minor.yy9->deferrable);
3568                                                 delete yymsp[0].minor.yy9;
3569                                                 objectForTokens = yygotominor.yy464;
3570                                             }
3571         break;
3572       case 78: /* ccons ::= COLLATE ids */
3573 {
3574                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3575                                                 yygotominor.yy464->initColl(*(yymsp[0].minor.yy319));
3576                                                 delete yymsp[0].minor.yy319;
3577                                                 objectForTokens = yygotominor.yy464;
3578                                             }
3579         break;
3580       case 79: /* ccons ::= gen_always AS LP expr RP id_opt */
3581       case 80: /* ccons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==80);
3582       case 81: /* ccons ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==81);
3583       case 82: /* ccons ::= REFERENCES ID_TAB */ yytestcase(yyruleno==82);
3584 {
3585                                                 if (!yymsp[0].minor.yy319->isNull() && yymsp[0].minor.yy319->toLower() != "stored" && yymsp[0].minor.yy319->toLower() != "virtual")
3586                                                     parserContext->errorAtToken(QString("Invalid generated column type: %1").arg(*(yymsp[0].minor.yy319)));
3587 
3588                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3589 												yygotominor.yy464->initGeneratedAs(yymsp[-2].minor.yy512, *(yymsp[-5].minor.yy611), *(yymsp[0].minor.yy319));
3590 												delete yymsp[-5].minor.yy611;
3591 												delete yymsp[0].minor.yy319;
3592 												objectForTokens = yygotominor.yy464;
3593 											}
3594         break;
3595       case 83: /* ccons ::= CHECK LP RP */
3596 {
3597                                                 yygotominor.yy464 = new SqliteCreateTable::Column::Constraint();
3598                                                 yygotominor.yy464->initCheck();
3599                                                 objectForTokens = yygotominor.yy464;
3600                                                 parserContext->minorErrorAfterLastToken("Syntax error");
3601                                             }
3602         break;
3603       case 84: /* term ::= NULL */
3604 {yygotominor.yy229 = new QVariant();}
3605         break;
3606       case 85: /* term ::= INTEGER */
3607       case 366: /* number ::= INTEGER */ yytestcase(yyruleno==366);
3608 {yygotominor.yy229 = parserContext->handleNumberToken(yymsp[0].minor.yy0->value);}
3609         break;
3610       case 86: /* term ::= FLOAT */
3611       case 367: /* number ::= FLOAT */ yytestcase(yyruleno==367);
3612 {yygotominor.yy229 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());}
3613         break;
3614       case 87: /* term ::= STRING|BLOB */
3615 {yygotominor.yy229 = new QVariant(stripString(yymsp[0].minor.yy0->value));}
3616         break;
3617       case 88: /* tnm ::= term */
3618 {
3619 												yygotominor.yy590 = new ParserTermOrLiteral(*(yymsp[0].minor.yy229));
3620 												delete yymsp[0].minor.yy229;
3621 											}
3622         break;
3623       case 89: /* tnm ::= nm */
3624 {
3625 												yygotominor.yy590 = new ParserTermOrLiteral(*(yymsp[0].minor.yy319));
3626 												delete yymsp[0].minor.yy319;
3627 											}
3628         break;
3629       case 94: /* refargs ::= */
3630 {yygotominor.yy584 = new ParserFkConditionList();}
3631         break;
3632       case 95: /* refargs ::= refargs refarg */
3633 {
3634                                                 yymsp[-1].minor.yy584->append(yymsp[0].minor.yy507);
3635                                                 yygotominor.yy584 = yymsp[-1].minor.yy584;
3636                                                 DONT_INHERIT_TOKENS("refargs");
3637                                             }
3638         break;
3639       case 96: /* refarg ::= MATCH nm */
3640 {
3641                                                 yygotominor.yy507 = new SqliteForeignKey::Condition(*(yymsp[0].minor.yy319));
3642                                                 delete yymsp[0].minor.yy319;
3643                                             }
3644         break;
3645       case 97: /* refarg ::= ON INSERT refact */
3646 {yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::INSERT, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
3647         break;
3648       case 98: /* refarg ::= ON DELETE refact */
3649 {yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::DELETE, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
3650         break;
3651       case 99: /* refarg ::= ON UPDATE refact */
3652       case 100: /* refarg ::= MATCH ID_FK_MATCH */ yytestcase(yyruleno==100);
3653 {yygotominor.yy507 = new SqliteForeignKey::Condition(SqliteForeignKey::Condition::UPDATE, *(yymsp[0].minor.yy104)); delete yymsp[0].minor.yy104;}
3654         break;
3655       case 101: /* refact ::= SET NULL */
3656 {yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_NULL);}
3657         break;
3658       case 102: /* refact ::= SET DEFAULT */
3659 {yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::SET_DEFAULT);}
3660         break;
3661       case 103: /* refact ::= CASCADE */
3662 {yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::CASCADE);}
3663         break;
3664       case 104: /* refact ::= RESTRICT */
3665 {yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::RESTRICT);}
3666         break;
3667       case 105: /* refact ::= NO ACTION */
3668 {yygotominor.yy104 = new SqliteForeignKey::Condition::Reaction(SqliteForeignKey::Condition::NO_ACTION);}
3669         break;
3670       case 106: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
3671 {
3672                                                 yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::NOT_DEFERRABLE, *(yymsp[0].minor.yy312));
3673                                                 delete yymsp[0].minor.yy312;
3674                                             }
3675         break;
3676       case 107: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
3677 {
3678                                                 yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::DEFERRABLE, *(yymsp[0].minor.yy312));
3679                                                 delete yymsp[0].minor.yy312;
3680                                             }
3681         break;
3682       case 108: /* init_deferred_pred_opt ::= */
3683 {yygotominor.yy312 = new SqliteInitially(SqliteInitially::null);}
3684         break;
3685       case 109: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
3686 {yygotominor.yy312 = new SqliteInitially(SqliteInitially::DEFERRED);}
3687         break;
3688       case 110: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
3689 {yygotominor.yy312 = new SqliteInitially(SqliteInitially::IMMEDIATE);}
3690         break;
3691       case 111: /* conslist_opt ::= */
3692 {yygotominor.yy493 = new ParserCreateTableConstraintList();}
3693         break;
3694       case 112: /* conslist_opt ::= COMMA conslist */
3695 {yygotominor.yy493 = yymsp[0].minor.yy493;}
3696         break;
3697       case 113: /* conslist ::= conslist tconscomma tcons */
3698 {
3699                                                 yymsp[0].minor.yy246->afterComma = *(yymsp[-1].minor.yy611);
3700                                                 yymsp[-2].minor.yy493->append(yymsp[0].minor.yy246);
3701                                                 yygotominor.yy493 = yymsp[-2].minor.yy493;
3702                                                 delete yymsp[-1].minor.yy611;
3703                                                 DONT_INHERIT_TOKENS("conslist");
3704                                             }
3705         break;
3706       case 114: /* conslist ::= tcons */
3707 {
3708                                                 yygotominor.yy493 = new ParserCreateTableConstraintList();
3709                                                 yygotominor.yy493->append(yymsp[0].minor.yy246);
3710                                             }
3711         break;
3712       case 117: /* tcons ::= CONSTRAINT nm */
3713 {
3714                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3715                                                 yygotominor.yy246->initNameOnly(*(yymsp[0].minor.yy319));
3716                                                 delete yymsp[0].minor.yy319;
3717                                                 objectForTokens = yygotominor.yy246;
3718                                             }
3719         break;
3720       case 118: /* tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf */
3721 {
3722                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3723                                                 yygotominor.yy246->initPk(*(yymsp[-3].minor.yy223), *(yymsp[-2].minor.yy611), *(yymsp[0].minor.yy418));
3724                                                 delete yymsp[-2].minor.yy611;
3725                                                 delete yymsp[0].minor.yy418;
3726                                                 delete yymsp[-3].minor.yy223;
3727                                                 objectForTokens = yygotominor.yy246;
3728                                             }
3729         break;
3730       case 119: /* tcons ::= UNIQUE LP idxlist RP onconf */
3731 {
3732                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3733                                                 yygotominor.yy246->initUnique(*(yymsp[-2].minor.yy223), *(yymsp[0].minor.yy418));
3734                                                 delete yymsp[0].minor.yy418;
3735                                                 delete yymsp[-2].minor.yy223;
3736                                                 objectForTokens = yygotominor.yy246;
3737                                             }
3738         break;
3739       case 120: /* tcons ::= CHECK LP expr RP onconf */
3740 {
3741                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3742                                                 yygotominor.yy246->initCheck(yymsp[-2].minor.yy512, *(yymsp[0].minor.yy418));
3743                                                 objectForTokens = yygotominor.yy246;
3744                                             }
3745         break;
3746       case 121: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt */
3747       case 122: /* tcons ::= CONSTRAINT ID_CONSTR */ yytestcase(yyruleno==122);
3748       case 123: /* tcons ::= FOREIGN KEY LP idxlist RP REFERENCES ID_TAB */ yytestcase(yyruleno==123);
3749 {
3750                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3751                                                 yygotominor.yy246->initFk(
3752                                                     *(yymsp[-6].minor.yy223),
3753                                                     *(yymsp[-3].minor.yy319),
3754                                                     *(yymsp[-2].minor.yy223),
3755                                                     *(yymsp[-1].minor.yy584),
3756                                                     yymsp[0].minor.yy9->initially,
3757                                                     yymsp[0].minor.yy9->deferrable
3758                                                 );
3759                                                 delete yymsp[-3].minor.yy319;
3760                                                 delete yymsp[-1].minor.yy584;
3761                                                 delete yymsp[0].minor.yy9;
3762                                                 delete yymsp[-2].minor.yy223;
3763                                                 delete yymsp[-6].minor.yy223;
3764                                                 objectForTokens = yygotominor.yy246;
3765                                             }
3766         break;
3767       case 124: /* tcons ::= CHECK LP RP onconf */
3768 {
3769                                                 yygotominor.yy246 = new SqliteCreateTable::Constraint();
3770                                                 yygotominor.yy246->initCheck();
3771                                                 objectForTokens = yygotominor.yy246;
3772                                                 parserContext->minorErrorAfterLastToken("Syntax error");
3773                                               yy_destructor(yypParser,223,&yymsp[0].minor);
3774 }
3775         break;
3776       case 125: /* defer_subclause_opt ::= */
3777 {yygotominor.yy9 = new ParserDeferSubClause(SqliteDeferrable::null, SqliteInitially::null);}
3778         break;
3779       case 126: /* defer_subclause_opt ::= defer_subclause */
3780 {yygotominor.yy9 = yymsp[0].minor.yy9;}
3781         break;
3782       case 127: /* onconf ::= */
3783       case 129: /* orconf ::= */ yytestcase(yyruleno==129);
3784 {yygotominor.yy418 = new SqliteConflictAlgo(SqliteConflictAlgo::null);}
3785         break;
3786       case 128: /* onconf ::= ON CONFLICT resolvetype */
3787       case 130: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==130);
3788 {yygotominor.yy418 = yymsp[0].minor.yy418;}
3789         break;
3790       case 131: /* resolvetype ::= raisetype */
3791       case 132: /* resolvetype ::= IGNORE */ yytestcase(yyruleno==132);
3792       case 133: /* resolvetype ::= REPLACE */ yytestcase(yyruleno==133);
3793 {yygotominor.yy418 = new SqliteConflictAlgo(sqliteConflictAlgo(yymsp[0].minor.yy0->value));}
3794         break;
3795       case 134: /* cmd ::= DROP TABLE ifexists fullname */
3796 {
3797                                                 yygotominor.yy363 = new SqliteDropTable(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
3798                                                 delete yymsp[-1].minor.yy611;
3799                                                 delete yymsp[0].minor.yy440;
3800                                                 objectForTokens = yygotominor.yy363;
3801                                             }
3802         break;
3803       case 135: /* cmd ::= DROP TABLE ifexists nm DOT ID_TAB */
3804       case 136: /* cmd ::= DROP TABLE ifexists ID_DB|ID_TAB */ yytestcase(yyruleno==136);
3805       case 143: /* cmd ::= DROP VIEW ifexists nm DOT ID_VIEW */ yytestcase(yyruleno==143);
3806       case 144: /* cmd ::= DROP VIEW ifexists ID_DB|ID_VIEW */ yytestcase(yyruleno==144);
3807       case 187: /* singlesrc ::= nm DOT ID_TAB */ yytestcase(yyruleno==187);
3808       case 188: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==188);
3809       case 189: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==189);
3810       case 190: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==190);
3811       case 331: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==331);
3812       case 332: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==332);
3813       case 345: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==345);
3814       case 346: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==346);
3815       case 356: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==356);
3816       case 357: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==357);
3817       case 395: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==395);
3818       case 396: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==396);
3819       case 406: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==406);
3820       case 407: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==407);
3821       case 410: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==410);
3822       case 411: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==411);
3823       case 415: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==415);
3824       case 416: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==416);
3825       case 422: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==422);
3826       case 423: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==423);
3827 {  yy_destructor(yypParser,199,&yymsp[-2].minor);
3828 }
3829         break;
3830       case 139: /* cmd ::= CREATE temp VIEW ifnotexists fullname idxlist_opt AS select */
3831 {
3832                                                 yygotominor.yy363 = new SqliteCreateView(*(yymsp[-6].minor.yy386), *(yymsp[-4].minor.yy611), yymsp[-3].minor.yy440->name1, yymsp[-3].minor.yy440->name2, yymsp[0].minor.yy313, *(yymsp[-2].minor.yy223));
3833                                                 delete yymsp[-6].minor.yy386;
3834                                                 delete yymsp[-4].minor.yy611;
3835                                                 delete yymsp[-3].minor.yy440;
3836                                                 delete yymsp[-2].minor.yy223;
3837                                                 objectForTokens = yygotominor.yy363;
3838                                             }
3839         break;
3840       case 142: /* cmd ::= DROP VIEW ifexists fullname */
3841 {
3842                                                 yygotominor.yy363 = new SqliteDropView(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
3843                                                 delete yymsp[-1].minor.yy611;
3844                                                 delete yymsp[0].minor.yy440;
3845                                                 objectForTokens = yygotominor.yy363;
3846                                             }
3847         break;
3848       case 145: /* cmd ::= select_stmt */
3849       case 226: /* cmd ::= delete_stmt */ yytestcase(yyruleno==226);
3850       case 235: /* cmd ::= update_stmt */ yytestcase(yyruleno==235);
3851       case 256: /* cmd ::= insert_stmt */ yytestcase(yyruleno==256);
3852 {
3853                                                 yygotominor.yy363 = yymsp[0].minor.yy363;
3854                                                 objectForTokens = yygotominor.yy363;
3855                                             }
3856         break;
3857       case 146: /* select_stmt ::= select */
3858 {
3859                                                 yygotominor.yy363 = yymsp[0].minor.yy313;
3860                                                 // since it's used in trigger:
3861                                                 objectForTokens = yygotominor.yy363;
3862                                             }
3863         break;
3864       case 147: /* select ::= with selectnowith */
3865 {
3866                                                 yygotominor.yy313 = yymsp[0].minor.yy313;
3867                                                 yymsp[0].minor.yy313->setWith(yymsp[-1].minor.yy1);
3868                                                 objectForTokens = yygotominor.yy313;
3869                                             }
3870         break;
3871       case 148: /* selectnowith ::= oneselect */
3872 {
3873                                                 yygotominor.yy313 = SqliteSelect::append(yymsp[0].minor.yy470);
3874                                                 objectForTokens = yygotominor.yy313;
3875                                             }
3876         break;
3877       case 149: /* selectnowith ::= selectnowith multiselect_op oneselect */
3878 {
3879                                                 yygotominor.yy313 = SqliteSelect::append(yymsp[-2].minor.yy313, *(yymsp[-1].minor.yy382), yymsp[0].minor.yy470);
3880                                                 delete yymsp[-1].minor.yy382;
3881                                                 objectForTokens = yygotominor.yy313;
3882                                             }
3883         break;
3884       case 150: /* selectnowith ::= values */
3885 {
3886                                                 yygotominor.yy313 = SqliteSelect::append(*(yymsp[0].minor.yy486));
3887                                                 delete yymsp[0].minor.yy486;
3888                                                 objectForTokens = yygotominor.yy313;
3889                                             }
3890         break;
3891       case 151: /* selectnowith ::= selectnowith COMMA values */
3892 {
3893                                                 yygotominor.yy313 = SqliteSelect::append(yymsp[-2].minor.yy313, SqliteSelect::CompoundOperator::UNION_ALL, *(yymsp[0].minor.yy486));
3894                                                 delete yymsp[0].minor.yy486;
3895                                                 objectForTokens = yygotominor.yy313;
3896                                             }
3897         break;
3898       case 152: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
3899 {
3900                                                 yygotominor.yy470 = new SqliteSelect::Core(
3901                                                         *(yymsp[-7].minor.yy386),
3902                                                         *(yymsp[-6].minor.yy53),
3903                                                         yymsp[-5].minor.yy31,
3904                                                         yymsp[-4].minor.yy512,
3905                                                         *(yymsp[-3].minor.yy71),
3906                                                         yymsp[-2].minor.yy512,
3907                                                         *(yymsp[-1].minor.yy403),
3908                                                         yymsp[0].minor.yy4
3909                                                     );
3910                                                 delete yymsp[-6].minor.yy53;
3911                                                 delete yymsp[-7].minor.yy386;
3912                                                 delete yymsp[-3].minor.yy71;
3913                                                 delete yymsp[-1].minor.yy403;
3914                                                 objectForTokens = yygotominor.yy470;
3915                                             }
3916         break;
3917       case 153: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
3918 {
3919                                                 yygotominor.yy470 = new SqliteSelect::Core(
3920                                                         *(yymsp[-8].minor.yy386),
3921                                                         *(yymsp[-7].minor.yy53),
3922                                                         yymsp[-6].minor.yy31,
3923                                                         yymsp[-5].minor.yy512,
3924                                                         *(yymsp[-4].minor.yy71),
3925                                                         yymsp[-3].minor.yy512,
3926 														*(yymsp[-2].minor.yy299),
3927                                                         *(yymsp[-1].minor.yy403),
3928                                                         yymsp[0].minor.yy4
3929                                                     );
3930                                                 delete yymsp[-7].minor.yy53;
3931                                                 delete yymsp[-8].minor.yy386;
3932                                                 delete yymsp[-4].minor.yy71;
3933                                                 delete yymsp[-1].minor.yy403;
3934 												delete yymsp[-2].minor.yy299;
3935                                                 objectForTokens = yygotominor.yy470;
3936 											}
3937         break;
3938       case 154: /* values ::= VALUES LP nexprlist RP */
3939 {
3940                                                 yygotominor.yy486 = new ParserExprNestedList();
3941                                                 yygotominor.yy486->append(*(yymsp[-1].minor.yy71));
3942                                                 delete yymsp[-1].minor.yy71;
3943                                             }
3944         break;
3945       case 155: /* values ::= values COMMA LP exprlist RP */
3946 {
3947                                                 yymsp[-4].minor.yy486->append(*(yymsp[-1].minor.yy71));
3948                                                 yygotominor.yy486 = yymsp[-4].minor.yy486;
3949                                                 delete yymsp[-1].minor.yy71;
3950                                                 DONT_INHERIT_TOKENS("values");
3951                                             }
3952         break;
3953       case 156: /* multiselect_op ::= UNION */
3954 {yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION);}
3955         break;
3956       case 157: /* multiselect_op ::= UNION ALL */
3957 {yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::UNION_ALL);}
3958         break;
3959       case 158: /* multiselect_op ::= EXCEPT */
3960 {yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::EXCEPT);}
3961         break;
3962       case 159: /* multiselect_op ::= INTERSECT */
3963 {yygotominor.yy382 = new SqliteSelect::CompoundOperator(SqliteSelect::CompoundOperator::INTERSECT);}
3964         break;
3965       case 160: /* distinct ::= DISTINCT */
3966 {yygotominor.yy386 = new int(1);}
3967         break;
3968       case 161: /* distinct ::= ALL */
3969 {yygotominor.yy386 = new int(2);}
3970         break;
3971       case 163: /* sclp ::= selcollist COMMA */
3972 {yygotominor.yy53 = yymsp[-1].minor.yy53;}
3973         break;
3974       case 164: /* sclp ::= */
3975 {yygotominor.yy53 = new ParserResultColumnList();}
3976         break;
3977       case 165: /* selcollist ::= sclp expr as */
3978 {
3979                                                 SqliteSelect::Core::ResultColumn* obj =
3980                                                     new SqliteSelect::Core::ResultColumn(
3981                                                         yymsp[-1].minor.yy512,
3982                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
3983                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
3984                                                     );
3985 
3986                                                 yymsp[-2].minor.yy53->append(obj);
3987                                                 yygotominor.yy53 = yymsp[-2].minor.yy53;
3988                                                 delete yymsp[0].minor.yy200;
3989                                                 objectForTokens = obj;
3990                                                 DONT_INHERIT_TOKENS("sclp");
3991                                             }
3992         break;
3993       case 166: /* selcollist ::= sclp STAR */
3994 {
3995                                                 SqliteSelect::Core::ResultColumn* obj =
3996                                                     new SqliteSelect::Core::ResultColumn(true);
3997 
3998                                                 yymsp[-1].minor.yy53->append(obj);
3999                                                 yygotominor.yy53 = yymsp[-1].minor.yy53;
4000                                                 objectForTokens = obj;
4001                                                 DONT_INHERIT_TOKENS("sclp");
4002                                             }
4003         break;
4004       case 167: /* selcollist ::= sclp tnm DOT STAR */
4005 {
4006                                                 SqliteSelect::Core::ResultColumn* obj =
4007                                                     new SqliteSelect::Core::ResultColumn(
4008                                                         true,
4009                                                         yymsp[-2].minor.yy590->toName()
4010                                                     );
4011 
4012 												if (!yymsp[-2].minor.yy590->isName())
4013 													parserContext->errorAtToken("Syntax error <expected name, not literal value>", -3);
4014 
4015                                                 yymsp[-3].minor.yy53->append(obj);
4016                                                 yygotominor.yy53 = yymsp[-3].minor.yy53;
4017                                                 delete yymsp[-2].minor.yy590;
4018                                                 objectForTokens = obj;
4019                                                 DONT_INHERIT_TOKENS("sclp");
4020                                             }
4021         break;
4022       case 168: /* selcollist ::= sclp */
4023       case 169: /* selcollist ::= sclp ID_TAB DOT STAR */ yytestcase(yyruleno==169);
4024 {
4025                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4026                                                 yygotominor.yy53 = yymsp[0].minor.yy53;
4027                                             }
4028         break;
4029       case 170: /* as ::= AS nm */
4030 {
4031                                                 yygotominor.yy200 = new ParserStubAlias(*(yymsp[0].minor.yy319), true);
4032                                                 delete yymsp[0].minor.yy319;
4033                                             }
4034         break;
4035       case 171: /* as ::= ids */
4036       case 172: /* as ::= AS ID_ALIAS */ yytestcase(yyruleno==172);
4037       case 173: /* as ::= ID_ALIAS */ yytestcase(yyruleno==173);
4038 {
4039                                                 yygotominor.yy200 = new ParserStubAlias(*(yymsp[0].minor.yy319), false);
4040                                                 delete yymsp[0].minor.yy319;
4041                                             }
4042         break;
4043       case 174: /* as ::= */
4044 {yygotominor.yy200 = nullptr;}
4045         break;
4046       case 175: /* from ::= */
4047 {yygotominor.yy31 = nullptr;}
4048         break;
4049       case 176: /* from ::= FROM joinsrc */
4050 {yygotominor.yy31 = yymsp[0].minor.yy31;}
4051         break;
4052       case 177: /* joinsrc ::= singlesrc seltablist */
4053 {
4054                                                 yygotominor.yy31 = new SqliteSelect::Core::JoinSource(
4055                                                         yymsp[-1].minor.yy441,
4056                                                         *(yymsp[0].minor.yy451)
4057                                                     );
4058                                                 delete yymsp[0].minor.yy451;
4059                                                 objectForTokens = yygotominor.yy31;
4060                                             }
4061         break;
4062       case 178: /* joinsrc ::= */
4063 {
4064                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4065                                                 yygotominor.yy31 = new SqliteSelect::Core::JoinSource();
4066                                                 objectForTokens = yygotominor.yy31;
4067                                             }
4068         break;
4069       case 179: /* seltablist ::= seltablist joinop singlesrc joinconstr_opt */
4070 {
4071                                                 SqliteSelect::Core::JoinSourceOther* src =
4072                                                     new SqliteSelect::Core::JoinSourceOther(yymsp[-2].minor.yy221, yymsp[-1].minor.yy441, yymsp[0].minor.yy295);
4073 
4074                                                 yymsp[-3].minor.yy451->append(src);
4075                                                 yygotominor.yy451 = yymsp[-3].minor.yy451;
4076                                                 objectForTokens = src;
4077                                                 DONT_INHERIT_TOKENS("seltablist");
4078                                             }
4079         break;
4080       case 180: /* seltablist ::= */
4081 {
4082                                                 yygotominor.yy451 = new ParserOtherSourceList();
4083                                             }
4084         break;
4085       case 181: /* singlesrc ::= nm dbnm as indexed_opt */
4086 {
4087                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
4088                                                         *(yymsp[-3].minor.yy319),
4089                                                         *(yymsp[-2].minor.yy319),
4090                                                         yymsp[-1].minor.yy200 ? yymsp[-1].minor.yy200->asKw : false,
4091                                                         yymsp[-1].minor.yy200 ? yymsp[-1].minor.yy200->name : QString(),
4092                                                         yymsp[0].minor.yy592 ? yymsp[0].minor.yy592->notIndexedKw : false,
4093                                                         yymsp[0].minor.yy592 ? yymsp[0].minor.yy592->indexedBy : QString()
4094                                                     );
4095                                                 delete yymsp[-3].minor.yy319;
4096                                                 delete yymsp[-2].minor.yy319;
4097                                                 delete yymsp[-1].minor.yy200;
4098                                                 if (yymsp[0].minor.yy592)
4099                                                     delete yymsp[0].minor.yy592;
4100                                                 objectForTokens = yygotominor.yy441;
4101                                             }
4102         break;
4103       case 182: /* singlesrc ::= LP select RP as */
4104 {
4105                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
4106                                                         yymsp[-2].minor.yy313,
4107                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
4108                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
4109                                                     );
4110                                                 delete yymsp[0].minor.yy200;
4111                                                 objectForTokens = yygotominor.yy441;
4112                                             }
4113         break;
4114       case 183: /* singlesrc ::= LP joinsrc RP as */
4115 {
4116                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
4117                                                         yymsp[-2].minor.yy31,
4118                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
4119                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString()
4120                                                     );
4121                                                 delete yymsp[0].minor.yy200;
4122                                                 objectForTokens = yygotominor.yy441;
4123                                             }
4124         break;
4125       case 184: /* singlesrc ::= nm dbnm LP exprlist RP as */
4126 {
4127                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource(
4128                                                         *(yymsp[-5].minor.yy319),
4129                                                         *(yymsp[-4].minor.yy319),
4130                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->asKw : false,
4131                                                         yymsp[0].minor.yy200 ? yymsp[0].minor.yy200->name : QString(),
4132                                                         *(yymsp[-2].minor.yy71)
4133                                                     );
4134                                                 delete yymsp[-5].minor.yy319;
4135                                                 delete yymsp[-4].minor.yy319;
4136                                                 delete yymsp[0].minor.yy200;
4137                                                 if (yymsp[-2].minor.yy71)
4138                                                     delete yymsp[-2].minor.yy71;
4139 
4140                                                 objectForTokens = yygotominor.yy441;
4141                                             }
4142         break;
4143       case 185: /* singlesrc ::= */
4144 {
4145                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4146                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource();
4147                                                 objectForTokens = yygotominor.yy441;
4148                                             }
4149         break;
4150       case 186: /* singlesrc ::= nm DOT */
4151 {
4152                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4153                                                 yygotominor.yy441 = new SqliteSelect::Core::SingleSource();
4154                                                 yygotominor.yy441->database = *(yymsp[-1].minor.yy319);
4155                                                 delete yymsp[-1].minor.yy319;
4156                                                 objectForTokens = yygotominor.yy441;
4157                                             }
4158         break;
4159       case 191: /* joinconstr_opt ::= ON expr */
4160 {
4161                                                 yygotominor.yy295 = new SqliteSelect::Core::JoinConstraint(yymsp[0].minor.yy512);
4162                                                 objectForTokens = yygotominor.yy295;
4163                                             }
4164         break;
4165       case 192: /* joinconstr_opt ::= USING LP idlist RP */
4166 {
4167                                                 yygotominor.yy295 = new SqliteSelect::Core::JoinConstraint(*(yymsp[-1].minor.yy575));
4168                                                 delete yymsp[-1].minor.yy575;
4169                                                 objectForTokens = yygotominor.yy295;
4170                                             }
4171         break;
4172       case 193: /* joinconstr_opt ::= */
4173 {yygotominor.yy295 = nullptr;}
4174         break;
4175       case 196: /* fullname ::= nm dbnm */
4176 {
4177                                                 yygotominor.yy440 = new ParserFullName();
4178                                                 yygotominor.yy440->name1 = *(yymsp[-1].minor.yy319);
4179                                                 yygotominor.yy440->name2 = *(yymsp[0].minor.yy319);
4180                                                 delete yymsp[-1].minor.yy319;
4181                                                 delete yymsp[0].minor.yy319;
4182                                             }
4183         break;
4184       case 197: /* joinop ::= COMMA */
4185 {
4186                                                 yygotominor.yy221 = new SqliteSelect::Core::JoinOp(true);
4187                                                 objectForTokens = yygotominor.yy221;
4188                                             }
4189         break;
4190       case 198: /* joinop ::= JOIN */
4191 {
4192                                                 yygotominor.yy221 = new SqliteSelect::Core::JoinOp(false);
4193                                                 objectForTokens = yygotominor.yy221;
4194                                             }
4195         break;
4196       case 199: /* joinop ::= JOIN_KW JOIN */
4197 {
4198                                                 yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-1].minor.yy0->value);
4199                                                 objectForTokens = yygotominor.yy221;
4200                                             }
4201         break;
4202       case 200: /* joinop ::= JOIN_KW nm JOIN */
4203 {
4204                                                 yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-2].minor.yy0->value, *(yymsp[-1].minor.yy319));
4205                                                 delete yymsp[-1].minor.yy319;
4206                                                 objectForTokens = yygotominor.yy221;
4207                                             }
4208         break;
4209       case 201: /* joinop ::= JOIN_KW nm nm JOIN */
4210       case 202: /* joinop ::= ID_JOIN_OPTS */ yytestcase(yyruleno==202);
4211 {
4212                                                 yygotominor.yy221 = new SqliteSelect::Core::JoinOp(yymsp[-3].minor.yy0->value, *(yymsp[-2].minor.yy319), *(yymsp[-1].minor.yy319));
4213                                                 delete yymsp[-2].minor.yy319;
4214                                                 objectForTokens = yygotominor.yy221;
4215                                             }
4216         break;
4217       case 203: /* indexed_opt ::= */
4218 {yygotominor.yy592 = nullptr;}
4219         break;
4220       case 204: /* indexed_opt ::= INDEXED BY nm */
4221 {
4222                                                 yygotominor.yy592 = new ParserIndexedBy(*(yymsp[0].minor.yy319));
4223                                                 delete yymsp[0].minor.yy319;
4224                                             }
4225         break;
4226       case 205: /* indexed_opt ::= NOT INDEXED */
4227       case 206: /* indexed_opt ::= INDEXED BY ID_IDX */ yytestcase(yyruleno==206);
4228 {yygotominor.yy592 = new ParserIndexedBy(true);}
4229         break;
4230       case 207: /* orderby_opt ::= */
4231 {yygotominor.yy403 = new ParserOrderByList();}
4232         break;
4233       case 208: /* orderby_opt ::= ORDER BY sortlist */
4234 {yygotominor.yy403 = yymsp[0].minor.yy403;}
4235         break;
4236       case 209: /* sortlist ::= sortlist COMMA expr sortorder nulls */
4237 {
4238                                                 SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy512, *(yymsp[-1].minor.yy549), *(yymsp[0].minor.yy579));
4239                                                 yymsp[-4].minor.yy403->append(obj);
4240                                                 yygotominor.yy403 = yymsp[-4].minor.yy403;
4241                                                 delete yymsp[-1].minor.yy549;
4242 												delete yymsp[0].minor.yy579;
4243                                                 objectForTokens = obj;
4244                                                 DONT_INHERIT_TOKENS("sortlist");
4245                                             }
4246         break;
4247       case 210: /* sortlist ::= expr sortorder nulls */
4248 {
4249                                                 SqliteOrderBy* obj = new SqliteOrderBy(yymsp[-2].minor.yy512, *(yymsp[-1].minor.yy549), *(yymsp[0].minor.yy579));
4250                                                 yygotominor.yy403 = new ParserOrderByList();
4251                                                 yygotominor.yy403->append(obj);
4252                                                 delete yymsp[-1].minor.yy549;
4253 												delete yymsp[0].minor.yy579;
4254                                                 objectForTokens = obj;
4255                                             }
4256         break;
4257       case 211: /* sortorder ::= ASC */
4258 {yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::ASC);}
4259         break;
4260       case 212: /* sortorder ::= DESC */
4261 {yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::DESC);}
4262         break;
4263       case 213: /* sortorder ::= */
4264 {yygotominor.yy549 = new SqliteSortOrder(SqliteSortOrder::null);}
4265         break;
4266       case 214: /* nulls ::= NULLS FIRST */
4267 {yygotominor.yy579 = new SqliteNulls(SqliteNulls::FIRST);}
4268         break;
4269       case 215: /* nulls ::= NULLS LAST */
4270 {yygotominor.yy579 = new SqliteNulls(SqliteNulls::LAST);}
4271         break;
4272       case 216: /* nulls ::= */
4273 {yygotominor.yy579 = new SqliteNulls(SqliteNulls::null);}
4274         break;
4275       case 217: /* groupby_opt ::= */
4276       case 326: /* exprlist ::= */ yytestcase(yyruleno==326);
4277 {yygotominor.yy71 = new ParserExprList();}
4278         break;
4279       case 218: /* groupby_opt ::= GROUP BY nexprlist */
4280       case 325: /* exprlist ::= nexprlist */ yytestcase(yyruleno==325);
4281 {yygotominor.yy71 = yymsp[0].minor.yy71;}
4282         break;
4283       case 219: /* groupby_opt ::= GROUP BY */
4284 {
4285                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4286                                                 yygotominor.yy71 = new ParserExprList();
4287                                             }
4288         break;
4289       case 220: /* having_opt ::= */
4290       case 232: /* where_opt ::= */ yytestcase(yyruleno==232);
4291       case 322: /* case_else ::= */ yytestcase(yyruleno==322);
4292       case 324: /* case_operand ::= */ yytestcase(yyruleno==324);
4293       case 350: /* vinto ::= */ yytestcase(yyruleno==350);
4294       case 384: /* when_clause ::= */ yytestcase(yyruleno==384);
4295       case 399: /* key_opt ::= */ yytestcase(yyruleno==399);
4296 {yygotominor.yy512 = nullptr;}
4297         break;
4298       case 221: /* having_opt ::= HAVING expr */
4299       case 233: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==233);
4300       case 315: /* expr ::= exprx */ yytestcase(yyruleno==315);
4301       case 321: /* case_else ::= ELSE expr */ yytestcase(yyruleno==321);
4302       case 323: /* case_operand ::= exprx */ yytestcase(yyruleno==323);
4303       case 349: /* vinto ::= INTO expr */ yytestcase(yyruleno==349);
4304       case 385: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==385);
4305       case 400: /* key_opt ::= KEY expr */ yytestcase(yyruleno==400);
4306 {yygotominor.yy512 = yymsp[0].minor.yy512;}
4307         break;
4308       case 222: /* limit_opt ::= */
4309 {yygotominor.yy4 = nullptr;}
4310         break;
4311       case 223: /* limit_opt ::= LIMIT expr */
4312 {
4313                                                 yygotominor.yy4 = new SqliteLimit(yymsp[0].minor.yy512);
4314                                                 objectForTokens = yygotominor.yy4;
4315                                             }
4316         break;
4317       case 224: /* limit_opt ::= LIMIT expr OFFSET expr */
4318 {
4319                                                 yygotominor.yy4 = new SqliteLimit(yymsp[-2].minor.yy512, yymsp[0].minor.yy512, true);
4320                                                 objectForTokens = yygotominor.yy4;
4321                                             }
4322         break;
4323       case 225: /* limit_opt ::= LIMIT expr COMMA expr */
4324 {
4325                                                 yygotominor.yy4 = new SqliteLimit(yymsp[-2].minor.yy512, yymsp[0].minor.yy512, false);
4326                                                 objectForTokens = yygotominor.yy4;
4327                                             }
4328         break;
4329       case 227: /* delete_stmt ::= with DELETE FROM fullname indexed_opt where_opt */
4330 {
4331                                                 if (yymsp[-1].minor.yy592)
4332                                                 {
4333                                                     if (!yymsp[-1].minor.yy592->indexedBy.isNull())
4334                                                     {
4335                                                         yygotominor.yy363 = new SqliteDelete(
4336                                                                 yymsp[-2].minor.yy440->name1,
4337                                                                 yymsp[-2].minor.yy440->name2,
4338                                                                 yymsp[-1].minor.yy592->indexedBy,
4339                                                                 yymsp[0].minor.yy512,
4340                                                                 yymsp[-5].minor.yy1
4341                                                             );
4342                                                     }
4343                                                     else
4344                                                     {
4345                                                         yygotominor.yy363 = new SqliteDelete(
4346                                                                 yymsp[-2].minor.yy440->name1,
4347                                                                 yymsp[-2].minor.yy440->name2,
4348                                                                 yymsp[-1].minor.yy592->notIndexedKw,
4349                                                                 yymsp[0].minor.yy512,
4350                                                                 yymsp[-5].minor.yy1
4351                                                             );
4352                                                     }
4353                                                     delete yymsp[-1].minor.yy592;
4354                                                 }
4355                                                 else
4356                                                 {
4357                                                     yygotominor.yy363 = new SqliteDelete(
4358                                                             yymsp[-2].minor.yy440->name1,
4359                                                             yymsp[-2].minor.yy440->name2,
4360                                                             false,
4361                                                             yymsp[0].minor.yy512,
4362                                                             yymsp[-5].minor.yy1
4363                                                         );
4364                                                 }
4365                                                 delete yymsp[-2].minor.yy440;
4366                                                 // since it's used in trigger:
4367                                                 objectForTokens = yygotominor.yy363;
4368                                             }
4369         break;
4370       case 228: /* delete_stmt ::= with DELETE FROM */
4371 {
4372                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4373                                                 SqliteDelete* q = new SqliteDelete();
4374                                                 q->with = yymsp[-2].minor.yy1;
4375                                                 yygotominor.yy363 = q;
4376                                                 objectForTokens = yygotominor.yy363;
4377                                             }
4378         break;
4379       case 229: /* delete_stmt ::= with DELETE FROM nm DOT */
4380 {
4381                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4382                                                 SqliteDelete* q = new SqliteDelete();
4383                                                 q->with = yymsp[-4].minor.yy1;
4384                                                 q->database = *(yymsp[-1].minor.yy319);
4385                                                 yygotominor.yy363 = q;
4386                                                 objectForTokens = yygotominor.yy363;
4387                                                 delete yymsp[-1].minor.yy319;
4388                                             }
4389         break;
4390       case 230: /* delete_stmt ::= with DELETE FROM nm DOT ID_TAB */
4391       case 239: /* update_stmt ::= with UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==239);
4392 {  yy_destructor(yypParser,244,&yymsp[-5].minor);
4393   yy_destructor(yypParser,199,&yymsp[-2].minor);
4394 }
4395         break;
4396       case 231: /* delete_stmt ::= with DELETE FROM ID_DB|ID_TAB */
4397       case 240: /* update_stmt ::= with UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==240);
4398 {  yy_destructor(yypParser,244,&yymsp[-3].minor);
4399 }
4400         break;
4401       case 234: /* where_opt ::= WHERE */
4402 {
4403                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4404                                                 yygotominor.yy512 = new SqliteExpr();
4405                                             }
4406         break;
4407       case 236: /* update_stmt ::= with UPDATE orconf fullname indexed_opt SET setlist from where_opt */
4408 {
4409                                                 yygotominor.yy363 = new SqliteUpdate(
4410                                                         *(yymsp[-6].minor.yy418),
4411                                                         yymsp[-5].minor.yy440->name1,
4412                                                         yymsp[-5].minor.yy440->name2,
4413                                                         yymsp[-4].minor.yy592 ? yymsp[-4].minor.yy592->notIndexedKw : false,
4414                                                         yymsp[-4].minor.yy592 ? yymsp[-4].minor.yy592->indexedBy : QString(),
4415                                                         *(yymsp[-2].minor.yy201),
4416 														yymsp[-1].minor.yy31,
4417                                                         yymsp[0].minor.yy512,
4418                                                         yymsp[-8].minor.yy1
4419                                                     );
4420                                                 delete yymsp[-6].minor.yy418;
4421                                                 delete yymsp[-5].minor.yy440;
4422                                                 delete yymsp[-2].minor.yy201;
4423                                                 if (yymsp[-4].minor.yy592)
4424                                                     delete yymsp[-4].minor.yy592;
4425                                                 // since it's used in trigger:
4426                                                 objectForTokens = yygotominor.yy363;
4427                                             }
4428         break;
4429       case 237: /* update_stmt ::= with UPDATE orconf */
4430 {
4431                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4432                                                 SqliteUpdate* q = new SqliteUpdate();
4433                                                 q->with = yymsp[-2].minor.yy1;
4434                                                 yygotominor.yy363 = q;
4435                                                 objectForTokens = yygotominor.yy363;
4436                                                 delete yymsp[0].minor.yy418;
4437                                             }
4438         break;
4439       case 238: /* update_stmt ::= with UPDATE orconf nm DOT */
4440 {
4441                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4442                                                 SqliteUpdate* q = new SqliteUpdate();
4443                                                 q->with = yymsp[-4].minor.yy1;
4444                                                 q->database = *(yymsp[-1].minor.yy319);
4445                                                 yygotominor.yy363 = q;
4446                                                 objectForTokens = yygotominor.yy363;
4447                                                 delete yymsp[-2].minor.yy418;
4448                                                 delete yymsp[-1].minor.yy319;
4449                                             }
4450         break;
4451       case 241: /* setlist ::= setlist COMMA nm EQ expr */
4452 {
4453                                                 yymsp[-4].minor.yy201->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy512));
4454                                                 yygotominor.yy201 = yymsp[-4].minor.yy201;
4455                                                 delete yymsp[-2].minor.yy319;
4456                                             }
4457         break;
4458       case 242: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
4459 {
4460                                                 yymsp[-6].minor.yy201->append(ParserSetValue(*(yymsp[-3].minor.yy575), yymsp[0].minor.yy512));
4461                                                 yygotominor.yy201 = yymsp[-6].minor.yy201;
4462                                                 delete yymsp[-3].minor.yy575;
4463                                             }
4464         break;
4465       case 243: /* setlist ::= nm EQ expr */
4466 {
4467                                                 yygotominor.yy201 = new ParserSetValueList();
4468                                                 yygotominor.yy201->append(ParserSetValue(*(yymsp[-2].minor.yy319), yymsp[0].minor.yy512));
4469                                                 delete yymsp[-2].minor.yy319;
4470                                             }
4471         break;
4472       case 244: /* setlist ::= LP idlist RP EQ expr */
4473 {
4474                                                 yygotominor.yy201 = new ParserSetValueList();
4475                                                 yygotominor.yy201->append(ParserSetValue(*(yymsp[-3].minor.yy575), yymsp[0].minor.yy512));
4476                                                 delete yymsp[-3].minor.yy575;
4477                                             }
4478         break;
4479       case 245: /* setlist ::= */
4480 {
4481                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4482                                                 yygotominor.yy201 = new ParserSetValueList();
4483                                             }
4484         break;
4485       case 246: /* setlist ::= setlist COMMA */
4486 {
4487                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4488                                                 yygotominor.yy201 = yymsp[-1].minor.yy201;
4489                                             }
4490         break;
4491       case 247: /* setlist ::= setlist COMMA ID_COL */
4492       case 248: /* setlist ::= ID_COL */ yytestcase(yyruleno==248);
4493 {  yy_destructor(yypParser,274,&yymsp[-2].minor);
4494 }
4495         break;
4496       case 249: /* idlist_opt ::= */
4497 {yygotominor.yy575 = new QStringList();}
4498         break;
4499       case 250: /* idlist_opt ::= LP idlist RP */
4500 {yygotominor.yy575 = yymsp[-1].minor.yy575;}
4501         break;
4502       case 251: /* idlist ::= idlist COMMA nm */
4503 {
4504                                                 yygotominor.yy575 = yymsp[-2].minor.yy575;
4505                                                 *(yygotominor.yy575) << *(yymsp[0].minor.yy319);
4506                                                 delete yymsp[0].minor.yy319;
4507                                             }
4508         break;
4509       case 252: /* idlist ::= nm */
4510 {
4511                                                 yygotominor.yy575 = new QStringList();
4512                                                 *(yygotominor.yy575) << *(yymsp[0].minor.yy319);
4513                                                 delete yymsp[0].minor.yy319;
4514                                             }
4515         break;
4516       case 253: /* idlist ::= */
4517 {
4518                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4519                                                 yygotominor.yy575 = new QStringList();
4520                                             }
4521         break;
4522       case 254: /* idlist ::= idlist COMMA ID_COL */
4523       case 255: /* idlist ::= ID_COL */ yytestcase(yyruleno==255);
4524 {  yy_destructor(yypParser,269,&yymsp[-2].minor);
4525 }
4526         break;
4527       case 257: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt select upsert */
4528 {
4529                                                 yygotominor.yy363 = new SqliteInsert(
4530                                                         yymsp[-5].minor.yy504->replace,
4531                                                         yymsp[-5].minor.yy504->orConflict,
4532                                                         yymsp[-3].minor.yy440->name1,
4533                                                         yymsp[-3].minor.yy440->name2,
4534                                                         *(yymsp[-2].minor.yy575),
4535                                                         yymsp[-1].minor.yy313,
4536                                                         yymsp[-6].minor.yy1,
4537                                                         yymsp[0].minor.yy400
4538                                                     );
4539                                                 delete yymsp[-3].minor.yy440;
4540                                                 delete yymsp[-5].minor.yy504;
4541                                                 delete yymsp[-2].minor.yy575;
4542                                                 // since it's used in trigger:
4543                                                 objectForTokens = yygotominor.yy363;
4544                                             }
4545         break;
4546       case 258: /* insert_stmt ::= with insert_cmd INTO fullname idlist_opt DEFAULT VALUES */
4547 {
4548                                                 yygotominor.yy363 = new SqliteInsert(
4549                                                         yymsp[-5].minor.yy504->replace,
4550                                                         yymsp[-5].minor.yy504->orConflict,
4551                                                         yymsp[-3].minor.yy440->name1,
4552                                                         yymsp[-3].minor.yy440->name2,
4553                                                         *(yymsp[-2].minor.yy575),
4554                                                         yymsp[-6].minor.yy1
4555                                                     );
4556                                                 delete yymsp[-3].minor.yy440;
4557                                                 delete yymsp[-5].minor.yy504;
4558                                                 delete yymsp[-2].minor.yy575;
4559                                                 // since it's used in trigger:
4560                                                 objectForTokens = yygotominor.yy363;
4561                                             }
4562         break;
4563       case 259: /* insert_stmt ::= with insert_cmd INTO */
4564 {
4565                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4566                                                 SqliteInsert* q = new SqliteInsert();
4567                                                 q->replaceKw = yymsp[-1].minor.yy504->replace;
4568                                                 q->onConflict = yymsp[-1].minor.yy504->orConflict;
4569                                                 q->with = yymsp[-2].minor.yy1;
4570                                                 yygotominor.yy363 = q;
4571                                                 objectForTokens = yygotominor.yy363;
4572                                                 delete yymsp[-1].minor.yy504;
4573                                             }
4574         break;
4575       case 260: /* insert_stmt ::= with insert_cmd INTO nm DOT */
4576 {
4577                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
4578                                                 SqliteInsert* q = new SqliteInsert();
4579                                                 q->replaceKw = yymsp[-3].minor.yy504->replace;
4580                                                 q->onConflict = yymsp[-3].minor.yy504->orConflict;
4581                                                 q->with = yymsp[-4].minor.yy1;
4582                                                 q->database = *(yymsp[-1].minor.yy319);
4583                                                 yygotominor.yy363 = q;
4584                                                 objectForTokens = yygotominor.yy363;
4585                                                 delete yymsp[-3].minor.yy504;
4586                                                 delete yymsp[-1].minor.yy319;
4587                                             }
4588         break;
4589       case 261: /* insert_stmt ::= with insert_cmd INTO ID_DB|ID_TAB */
4590 {  yy_destructor(yypParser,244,&yymsp[-3].minor);
4591   yy_destructor(yypParser,277,&yymsp[-2].minor);
4592 }
4593         break;
4594       case 262: /* insert_stmt ::= with insert_cmd INTO nm DOT ID_TAB */
4595 {  yy_destructor(yypParser,244,&yymsp[-5].minor);
4596   yy_destructor(yypParser,277,&yymsp[-4].minor);
4597   yy_destructor(yypParser,199,&yymsp[-2].minor);
4598 }
4599         break;
4600       case 263: /* insert_cmd ::= INSERT orconf */
4601 {
4602                                                 yygotominor.yy504 = new ParserStubInsertOrReplace(false, *(yymsp[0].minor.yy418));
4603                                                 delete yymsp[0].minor.yy418;
4604                                             }
4605         break;
4606       case 264: /* insert_cmd ::= REPLACE */
4607 {yygotominor.yy504 = new ParserStubInsertOrReplace(true);}
4608         break;
4609       case 265: /* upsert ::= */
4610 {
4611                                                 yygotominor.yy400 = nullptr;
4612                                             }
4613         break;
4614       case 266: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
4615 {
4616                                                 yygotominor.yy400 = new SqliteUpsert(*(yymsp[-7].minor.yy403), yymsp[-5].minor.yy512, *(yymsp[-1].minor.yy201), yymsp[0].minor.yy512);
4617                                                 delete yymsp[-7].minor.yy403;
4618                                                 delete yymsp[-1].minor.yy201;
4619                                                 objectForTokens = yygotominor.yy400;
4620                                             }
4621         break;
4622       case 267: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
4623 {
4624                                                 yygotominor.yy400 = new SqliteUpsert(*(yymsp[-4].minor.yy403), yymsp[-2].minor.yy512);
4625                                                 delete yymsp[-4].minor.yy403;
4626                                                 objectForTokens = yygotominor.yy400;
4627                                             }
4628         break;
4629       case 268: /* upsert ::= ON CONFLICT DO NOTHING */
4630 {
4631                                                 yygotominor.yy400 = new SqliteUpsert();
4632                                                 objectForTokens = yygotominor.yy400;
4633                                             }
4634         break;
4635       case 269: /* exprx ::= expr not_opt IN ID_DB */
4636 {  yy_destructor(yypParser,222,&yymsp[-3].minor);
4637 }
4638         break;
4639       case 270: /* exprx ::= expr not_opt IN nm DOT ID_TAB */
4640       case 271: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==271);
4641 {  yy_destructor(yypParser,222,&yymsp[-5].minor);
4642   yy_destructor(yypParser,199,&yymsp[-2].minor);
4643 }
4644         break;
4645       case 272: /* exprx ::= tnm DOT ID_TAB|ID_COL */
4646 {  yy_destructor(yypParser,230,&yymsp[-2].minor);
4647 }
4648         break;
4649       case 273: /* exprx ::= tnm DOT nm DOT ID_COL */
4650 {  yy_destructor(yypParser,230,&yymsp[-4].minor);
4651   yy_destructor(yypParser,199,&yymsp[-2].minor);
4652 }
4653         break;
4654       case 274: /* exprx ::= expr COLLATE ID_COLLATE */
4655       case 275: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==275);
4656 {  yy_destructor(yypParser,222,&yymsp[-2].minor);
4657 }
4658         break;
4659       case 276: /* exprx ::= CTIME_KW */
4660 {
4661                                                 yygotominor.yy512 = new SqliteExpr();
4662                                                 yygotominor.yy512->initCTime(yymsp[0].minor.yy0->value);
4663                                                 objectForTokens = yygotominor.yy512;
4664                                             }
4665         break;
4666       case 277: /* exprx ::= LP nexprlist RP */
4667 {
4668                                                 yygotominor.yy512 = new SqliteExpr();
4669                                                 yygotominor.yy512->initRowValue(*(yymsp[-1].minor.yy71));
4670                                                 delete yymsp[-1].minor.yy71;
4671                                                 objectForTokens = yygotominor.yy512;
4672                                             }
4673         break;
4674       case 278: /* exprx ::= tnm */
4675 {
4676                                                 yygotominor.yy512 = new SqliteExpr();
4677 												if (yymsp[0].minor.yy590->isLiteral())
4678 													yygotominor.yy512->initLiteral(yymsp[0].minor.yy590->toLiteral());
4679 												else
4680 													yygotominor.yy512->initId(yymsp[0].minor.yy590->toName());
4681 													//parserContext->errorBeforeLastToken("Syntax error <expected literal value>");
4682 
4683                                                 delete yymsp[0].minor.yy590;
4684                                                 objectForTokens = yygotominor.yy512;
4685                                             }
4686         break;
4687       case 279: /* exprx ::= tnm DOT nm */
4688 {
4689                                                 yygotominor.yy512 = new SqliteExpr();
4690 												if (yymsp[-2].minor.yy590->isName())
4691 													yygotominor.yy512->initId(yymsp[-2].minor.yy590->toName(), *(yymsp[0].minor.yy319));
4692 												else
4693 													parserContext->errorAtToken("Syntax error <expected name>", -3);
4694 
4695                                                 delete yymsp[-2].minor.yy590;
4696                                                 delete yymsp[0].minor.yy319;
4697                                                 objectForTokens = yygotominor.yy512;
4698                                             }
4699         break;
4700       case 280: /* exprx ::= tnm DOT nm DOT nm */
4701 {
4702                                                 yygotominor.yy512 = new SqliteExpr();
4703 												if (yymsp[-4].minor.yy590->isName())
4704 													yygotominor.yy512->initId(yymsp[-4].minor.yy590->toName(), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy319));
4705 												else
4706 													parserContext->errorAtToken("Syntax error <expected name>", -5);
4707 
4708                                                 delete yymsp[-4].minor.yy590;
4709                                                 delete yymsp[-2].minor.yy319;
4710                                                 delete yymsp[0].minor.yy319;
4711                                                 objectForTokens = yygotominor.yy512;
4712                                             }
4713         break;
4714       case 281: /* exprx ::= VARIABLE */
4715 {
4716                                                 yygotominor.yy512 = new SqliteExpr();
4717                                                 yygotominor.yy512->initBindParam(yymsp[0].minor.yy0->value);
4718                                                 objectForTokens = yygotominor.yy512;
4719                                             }
4720         break;
4721       case 282: /* exprx ::= expr COLLATE ids */
4722 {
4723                                                 yygotominor.yy512 = new SqliteExpr();
4724                                                 yygotominor.yy512->initCollate(yymsp[-2].minor.yy512, *(yymsp[0].minor.yy319));
4725                                                 delete yymsp[0].minor.yy319;
4726                                                 objectForTokens = yygotominor.yy512;
4727                                             }
4728         break;
4729       case 283: /* exprx ::= CAST LP expr AS typetoken RP */
4730 {
4731                                                 yygotominor.yy512 = new SqliteExpr();
4732                                                 yygotominor.yy512->initCast(yymsp[-3].minor.yy512, yymsp[-1].minor.yy57);
4733                                                 objectForTokens = yygotominor.yy512;
4734                                             }
4735         break;
4736       case 284: /* exprx ::= ID LP distinct exprlist RP */
4737 {
4738                                                 yygotominor.yy512 = new SqliteExpr();
4739                                                 yygotominor.yy512->initFunction(yymsp[-4].minor.yy0->value, *(yymsp[-2].minor.yy386), *(yymsp[-1].minor.yy71));
4740                                                 delete yymsp[-2].minor.yy386;
4741                                                 delete yymsp[-1].minor.yy71;
4742                                                 objectForTokens = yygotominor.yy512;
4743                                             }
4744         break;
4745       case 285: /* exprx ::= ID LP STAR RP */
4746 {
4747                                                 yygotominor.yy512 = new SqliteExpr();
4748                                                 yygotominor.yy512->initFunction(yymsp[-3].minor.yy0->value, true);
4749                                                 objectForTokens = yygotominor.yy512;
4750                                             }
4751         break;
4752       case 286: /* exprx ::= expr AND expr */
4753       case 287: /* exprx ::= expr OR expr */ yytestcase(yyruleno==287);
4754       case 288: /* exprx ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==288);
4755       case 289: /* exprx ::= expr EQ|NE expr */ yytestcase(yyruleno==289);
4756       case 290: /* exprx ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==290);
4757       case 291: /* exprx ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==291);
4758       case 292: /* exprx ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==292);
4759       case 293: /* exprx ::= expr CONCAT expr */ yytestcase(yyruleno==293);
4760 {
4761                                                 yygotominor.yy512 = new SqliteExpr();
4762                                                 yygotominor.yy512->initBinOp(yymsp[-2].minor.yy512, yymsp[-1].minor.yy0->value, yymsp[0].minor.yy512);
4763                                                 objectForTokens = yygotominor.yy512;
4764                                             }
4765         break;
4766       case 294: /* exprx ::= expr not_opt likeop expr */
4767 {
4768                                                 yygotominor.yy512 = new SqliteExpr();
4769                                                 yygotominor.yy512->initLike(yymsp[-3].minor.yy512, *(yymsp[-2].minor.yy611), *(yymsp[-1].minor.yy40), yymsp[0].minor.yy512);
4770                                                 delete yymsp[-2].minor.yy611;
4771                                                 delete yymsp[-1].minor.yy40;
4772                                                 objectForTokens = yygotominor.yy512;
4773                                             }
4774         break;
4775       case 295: /* exprx ::= expr not_opt likeop expr ESCAPE expr */
4776 {
4777                                                 yygotominor.yy512 = new SqliteExpr();
4778                                                 yygotominor.yy512->initLike(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), *(yymsp[-3].minor.yy40), yymsp[-2].minor.yy512, yymsp[0].minor.yy512);
4779                                                 delete yymsp[-4].minor.yy611;
4780                                                 delete yymsp[-3].minor.yy40;
4781                                                 objectForTokens = yygotominor.yy512;
4782                                             }
4783         break;
4784       case 296: /* exprx ::= expr ISNULL|NOTNULL */
4785 {
4786                                                 yygotominor.yy512 = new SqliteExpr();
4787                                                 yygotominor.yy512->initNull(yymsp[-1].minor.yy512, yymsp[0].minor.yy0->value);
4788                                                 objectForTokens = yygotominor.yy512;
4789                                             }
4790         break;
4791       case 297: /* exprx ::= expr NOT NULL */
4792 {
4793                                                 yygotominor.yy512 = new SqliteExpr();
4794                                                 yygotominor.yy512->initNull(yymsp[-2].minor.yy512, "NOT NULL");
4795                                                 objectForTokens = yygotominor.yy512;
4796                                             }
4797         break;
4798       case 298: /* exprx ::= expr IS not_opt expr */
4799 {
4800                                                 yygotominor.yy512 = new SqliteExpr();
4801                                                 yygotominor.yy512->initIs(yymsp[-3].minor.yy512, *(yymsp[-1].minor.yy611), yymsp[0].minor.yy512);
4802                                                 delete yymsp[-1].minor.yy611;
4803                                                 objectForTokens = yygotominor.yy512;
4804                                             }
4805         break;
4806       case 299: /* exprx ::= NOT expr */
4807 {
4808                                                 yygotominor.yy512 = new SqliteExpr();
4809                                                 yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
4810                                             }
4811         break;
4812       case 300: /* exprx ::= BITNOT expr */
4813       case 302: /* exprx ::= PLUS expr */ yytestcase(yyruleno==302);
4814 {
4815                                                 yygotominor.yy512 = new SqliteExpr();
4816                                                 yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
4817                                                 objectForTokens = yygotominor.yy512;
4818                                             }
4819         break;
4820       case 301: /* exprx ::= MINUS expr */
4821 {
4822                                                 yygotominor.yy512 = new SqliteExpr();
4823                                                 if (yymsp[0].minor.yy512->mode == SqliteExpr::Mode::LITERAL_VALUE &&
4824                                                     parserContext->isCandidateForMaxNegativeNumber() &&
4825                                                     yymsp[0].minor.yy512->literalValue == static_cast<qint64>(0L))
4826                                                 {
4827                                                     yygotominor.yy512->initLiteral(std::numeric_limits<qint64>::min());
4828                                                     delete yymsp[0].minor.yy512;
4829                                                 }
4830                                                 else
4831                                                 {
4832                                                     yygotominor.yy512->initUnaryOp(yymsp[0].minor.yy512, yymsp[-1].minor.yy0->value);
4833                                                 }
4834                                                 objectForTokens = yygotominor.yy512;
4835                                             }
4836         break;
4837       case 303: /* exprx ::= expr not_opt BETWEEN expr AND expr */
4838 {
4839                                                 yygotominor.yy512 = new SqliteExpr();
4840                                                 yygotominor.yy512->initBetween(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), yymsp[-2].minor.yy512, yymsp[0].minor.yy512);
4841                                                 delete yymsp[-4].minor.yy611;
4842                                                 objectForTokens = yygotominor.yy512;
4843                                             }
4844         break;
4845       case 304: /* exprx ::= expr not_opt IN LP exprlist RP */
4846 {
4847                                                 yygotominor.yy512 = new SqliteExpr();
4848                                                 yygotominor.yy512->initIn(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), *(yymsp[-1].minor.yy71));
4849                                                 delete yymsp[-4].minor.yy611;
4850                                                 delete yymsp[-1].minor.yy71;
4851                                                 objectForTokens = yygotominor.yy512;
4852                                             }
4853         break;
4854       case 305: /* exprx ::= LP select RP */
4855 {
4856                                                 yygotominor.yy512 = new SqliteExpr();
4857                                                 yygotominor.yy512->initSubSelect(yymsp[-1].minor.yy313);
4858                                                 objectForTokens = yygotominor.yy512;
4859                                             }
4860         break;
4861       case 306: /* exprx ::= expr not_opt IN LP select RP */
4862 {
4863                                                 yygotominor.yy512 = new SqliteExpr();
4864                                                 yygotominor.yy512->initIn(yymsp[-5].minor.yy512, *(yymsp[-4].minor.yy611), yymsp[-1].minor.yy313);
4865                                                 delete yymsp[-4].minor.yy611;
4866                                                 objectForTokens = yygotominor.yy512;
4867                                             }
4868         break;
4869       case 307: /* exprx ::= expr not_opt IN nm dbnm */
4870 {
4871                                                 yygotominor.yy512 = new SqliteExpr();
4872                                                 yygotominor.yy512->initIn(yymsp[-4].minor.yy512, *(yymsp[-3].minor.yy611), *(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
4873                                                 delete yymsp[-3].minor.yy611;
4874                                                 delete yymsp[-1].minor.yy319;
4875                                                 objectForTokens = yygotominor.yy512;
4876                                             }
4877         break;
4878       case 308: /* exprx ::= EXISTS LP select RP */
4879 {
4880                                                 yygotominor.yy512 = new SqliteExpr();
4881                                                 yygotominor.yy512->initExists(yymsp[-1].minor.yy313);
4882                                                 objectForTokens = yygotominor.yy512;
4883                                             }
4884         break;
4885       case 309: /* exprx ::= CASE case_operand case_exprlist case_else END */
4886 {
4887                                                 yygotominor.yy512 = new SqliteExpr();
4888                                                 yygotominor.yy512->initCase(yymsp[-3].minor.yy512, *(yymsp[-2].minor.yy71), yymsp[-1].minor.yy512);
4889                                                 delete yymsp[-2].minor.yy71;
4890                                                 objectForTokens = yygotominor.yy512;
4891                                             }
4892         break;
4893       case 310: /* exprx ::= RAISE LP IGNORE RP */
4894 {
4895                                                 yygotominor.yy512 = new SqliteExpr();
4896                                                 yygotominor.yy512->initRaise(yymsp[-1].minor.yy0->value);
4897                                                 objectForTokens = yygotominor.yy512;
4898                                             }
4899         break;
4900       case 311: /* exprx ::= RAISE LP raisetype COMMA nm RP */
4901 {
4902                                                 yygotominor.yy512 = new SqliteExpr();
4903                                                 yygotominor.yy512->initRaise(yymsp[-3].minor.yy0->value, *(yymsp[-1].minor.yy319));
4904                                                 delete yymsp[-1].minor.yy319;
4905                                                 objectForTokens = yygotominor.yy512;
4906                                             }
4907         break;
4908       case 312: /* exprx ::= ID LP distinct exprlist RP filter_over */
4909 {
4910                                                 yygotominor.yy512 = new SqliteExpr();
4911                                                 yygotominor.yy512->initWindowFunction(yymsp[-5].minor.yy0->value, *(yymsp[-3].minor.yy386), *(yymsp[-2].minor.yy71), yymsp[0].minor.yy247);
4912                                                 delete yymsp[-3].minor.yy386;
4913                                                 delete yymsp[-2].minor.yy71;
4914                                                 objectForTokens = yygotominor.yy512;
4915 											}
4916         break;
4917       case 313: /* exprx ::= ID LP STAR RP filter_over */
4918 {
4919                                                 yygotominor.yy512 = new SqliteExpr();
4920                                                 yygotominor.yy512->initWindowFunction(yymsp[-4].minor.yy0->value, yymsp[0].minor.yy247);
4921                                                 objectForTokens = yygotominor.yy512;
4922 											}
4923         break;
4924       case 314: /* expr ::= */
4925 {
4926                                                 yygotominor.yy512 = new SqliteExpr();
4927                                                 objectForTokens = yygotominor.yy512;
4928                                                 parserContext->minorErrorAfterLastToken("Syntax error <expr>");
4929                                             }
4930         break;
4931       case 318: /* likeop ::= LIKE_KW|MATCH */
4932 {yygotominor.yy40 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));}
4933         break;
4934       case 319: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
4935 {
4936                                                 yymsp[-4].minor.yy71->append(yymsp[-2].minor.yy512);
4937                                                 yymsp[-4].minor.yy71->append(yymsp[0].minor.yy512);
4938                                                 yygotominor.yy71 = yymsp[-4].minor.yy71;
4939                                             }
4940         break;
4941       case 320: /* case_exprlist ::= WHEN expr THEN expr */
4942 {
4943                                                 yygotominor.yy71 = new ParserExprList();
4944                                                 yygotominor.yy71->append(yymsp[-2].minor.yy512);
4945                                                 yygotominor.yy71->append(yymsp[0].minor.yy512);
4946                                             }
4947         break;
4948       case 327: /* nexprlist ::= nexprlist COMMA expr */
4949 {
4950                                                 yymsp[-2].minor.yy71->append(yymsp[0].minor.yy512);
4951                                                 yygotominor.yy71 = yymsp[-2].minor.yy71;
4952                                                 DONT_INHERIT_TOKENS("nexprlist");
4953                                             }
4954         break;
4955       case 328: /* nexprlist ::= exprx */
4956 {
4957                                                 yygotominor.yy71 = new ParserExprList();
4958                                                 yygotominor.yy71->append(yymsp[0].minor.yy512);
4959                                             }
4960         break;
4961       case 329: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
4962 {
4963                                                 yygotominor.yy363 = new SqliteCreateIndex(
4964                                                         *(yymsp[-10].minor.yy611),
4965                                                         *(yymsp[-8].minor.yy611),
4966                                                         *(yymsp[-7].minor.yy319),
4967                                                         *(yymsp[-6].minor.yy319),
4968                                                         *(yymsp[-4].minor.yy319),
4969                                                         *(yymsp[-2].minor.yy403),
4970                                                         yymsp[0].minor.yy512
4971                                                     );
4972                                                 delete yymsp[-8].minor.yy611;
4973                                                 delete yymsp[-10].minor.yy611;
4974                                                 delete yymsp[-7].minor.yy319;
4975                                                 delete yymsp[-6].minor.yy319;
4976                                                 delete yymsp[-4].minor.yy319;
4977                                                 delete yymsp[-2].minor.yy403;
4978                                                 objectForTokens = yygotominor.yy363;
4979                                             }
4980         break;
4981       case 330: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */
4982 {  yy_destructor(yypParser,199,&yymsp[-3].minor);
4983 }
4984         break;
4985       case 335: /* idxlist_opt ::= */
4986 {yygotominor.yy223 = new ParserIndexedColumnList();}
4987         break;
4988       case 336: /* idxlist_opt ::= LP idxlist RP */
4989 {yygotominor.yy223 = yymsp[-1].minor.yy223;}
4990         break;
4991       case 337: /* idxlist ::= idxlist COMMA idxlist_single */
4992 {
4993                                                 yymsp[-2].minor.yy223->append(yymsp[0].minor.yy268);
4994                                                 yygotominor.yy223 = yymsp[-2].minor.yy223;
4995                                                 DONT_INHERIT_TOKENS("idxlist");
4996                                             }
4997         break;
4998       case 338: /* idxlist ::= idxlist_single */
4999 {
5000                                                 yygotominor.yy223 = new ParserIndexedColumnList();
5001                                                 yygotominor.yy223->append(yymsp[0].minor.yy268);
5002                                             }
5003         break;
5004       case 339: /* idxlist_single ::= nm collate sortorder */
5005       case 340: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==340);
5006 {
5007                                                 SqliteIndexedColumn* obj =
5008                                                     new SqliteIndexedColumn(
5009                                                         *(yymsp[-2].minor.yy319),
5010                                                         *(yymsp[-1].minor.yy319),
5011                                                         *(yymsp[0].minor.yy549)
5012                                                     );
5013                                                 yygotominor.yy268 = obj;
5014                                                 delete yymsp[0].minor.yy549;
5015                                                 delete yymsp[-2].minor.yy319;
5016                                                 delete yymsp[-1].minor.yy319;
5017                                                 objectForTokens = yygotominor.yy268;
5018                                             }
5019         break;
5020       case 344: /* cmd ::= DROP INDEX ifexists fullname */
5021 {
5022                                                 yygotominor.yy363 = new SqliteDropIndex(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
5023                                                 delete yymsp[-1].minor.yy611;
5024                                                 delete yymsp[0].minor.yy440;
5025                                                 objectForTokens = yygotominor.yy363;
5026                                             }
5027         break;
5028       case 347: /* cmd ::= VACUUM vinto */
5029 {
5030                                                 yygotominor.yy363 = new SqliteVacuum(yymsp[0].minor.yy512);
5031                                                 objectForTokens = yygotominor.yy363;
5032                                             }
5033         break;
5034       case 348: /* cmd ::= VACUUM nm vinto */
5035 {
5036                                                 yygotominor.yy363 = new SqliteVacuum(*(yymsp[-1].minor.yy319), yymsp[0].minor.yy512);
5037                                                 delete yymsp[-1].minor.yy319;
5038                                                 objectForTokens = yygotominor.yy363;
5039                                             }
5040         break;
5041       case 351: /* cmd ::= PRAGMA nm dbnm */
5042 {
5043                                                 yygotominor.yy363 = new SqlitePragma(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
5044                                                 delete yymsp[-1].minor.yy319;
5045                                                 delete yymsp[0].minor.yy319;
5046                                                 objectForTokens = yygotominor.yy363;
5047                                             }
5048         break;
5049       case 352: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
5050       case 354: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==354);
5051 {
5052                                                 yygotominor.yy363 = new SqlitePragma(*(yymsp[-3].minor.yy319), *(yymsp[-2].minor.yy319), *(yymsp[0].minor.yy229), true);
5053                                                 delete yymsp[-3].minor.yy319;
5054                                                 delete yymsp[-2].minor.yy319;
5055                                                 delete yymsp[0].minor.yy229;
5056                                                 objectForTokens = yygotominor.yy363;
5057                                             }
5058         break;
5059       case 353: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
5060       case 355: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==355);
5061 {
5062                                                 yygotominor.yy363 = new SqlitePragma(*(yymsp[-4].minor.yy319), *(yymsp[-3].minor.yy319), *(yymsp[-1].minor.yy229), false);
5063                                                 delete yymsp[-4].minor.yy319;
5064                                                 delete yymsp[-3].minor.yy319;
5065                                                 delete yymsp[-1].minor.yy229;
5066                                                 objectForTokens = yygotominor.yy363;
5067                                             }
5068         break;
5069       case 359: /* nmnum ::= nm */
5070 {
5071                                                 yygotominor.yy229 = new QVariant(*(yymsp[0].minor.yy319));
5072                                                 delete yymsp[0].minor.yy319;
5073                                             }
5074         break;
5075       case 360: /* nmnum ::= ON */
5076       case 361: /* nmnum ::= DELETE */ yytestcase(yyruleno==361);
5077       case 362: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==362);
5078 {yygotominor.yy229 = new QVariant(yymsp[0].minor.yy0->value);}
5079         break;
5080       case 365: /* minus_num ::= MINUS number */
5081 {
5082                                                 if (yymsp[0].minor.yy229->type() == QVariant::Double)
5083                                                     *(yymsp[0].minor.yy229) = -(yymsp[0].minor.yy229->toDouble());
5084                                                 else if (yymsp[0].minor.yy229->type() == QVariant::LongLong)
5085                                                 {
5086                                                     if (parserContext->isCandidateForMaxNegativeNumber())
5087                                                         *(yymsp[0].minor.yy229) = std::numeric_limits<qint64>::min();
5088                                                     else
5089                                                         *(yymsp[0].minor.yy229) = -(yymsp[0].minor.yy229->toLongLong());
5090                                                 }
5091                                                 else
5092                                                     Q_ASSERT_X(true, "producing minus number", "QVariant is neither of Double or LongLong.");
5093 
5094                                                 yygotominor.yy229 = yymsp[0].minor.yy229;
5095                                             }
5096         break;
5097       case 368: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */
5098 {
5099                                                 yygotominor.yy363 = new SqliteCreateTrigger(
5100                                                         *(yymsp[-13].minor.yy386),
5101                                                         *(yymsp[-11].minor.yy611),
5102                                                         *(yymsp[-10].minor.yy319),
5103                                                         *(yymsp[-9].minor.yy319),
5104                                                         *(yymsp[-5].minor.yy319),
5105                                                         *(yymsp[-8].minor.yy532),
5106                                                         yymsp[-7].minor.yy151,
5107                                                         *(yymsp[-4].minor.yy83),
5108                                                         yymsp[-3].minor.yy512,
5109                                                         *(yymsp[-1].minor.yy110),
5110                                                         3
5111                                                     );
5112                                                 delete yymsp[-11].minor.yy611;
5113                                                 delete yymsp[-13].minor.yy386;
5114                                                 delete yymsp[-8].minor.yy532;
5115                                                 delete yymsp[-4].minor.yy83;
5116                                                 delete yymsp[-10].minor.yy319;
5117                                                 delete yymsp[-5].minor.yy319;
5118                                                 delete yymsp[-9].minor.yy319;
5119                                                 delete yymsp[-1].minor.yy110;
5120                                                 objectForTokens = yygotominor.yy363;
5121                                             }
5122         break;
5123       case 369: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */
5124 {
5125                                                 QList<SqliteQuery *> CL;
5126 
5127                                                 yygotominor.yy363 = new SqliteCreateTrigger(
5128                                                         *(yymsp[-10].minor.yy386),
5129                                                         *(yymsp[-8].minor.yy611),
5130                                                         *(yymsp[-7].minor.yy319),
5131                                                         *(yymsp[-6].minor.yy319),
5132                                                         *(yymsp[-2].minor.yy319),
5133                                                         *(yymsp[-5].minor.yy532),
5134                                                         yymsp[-4].minor.yy151,
5135                                                         *(yymsp[-1].minor.yy83),
5136                                                         yymsp[0].minor.yy512,
5137                                                         CL,
5138                                                         3
5139                                                     );
5140                                                 delete yymsp[-8].minor.yy611;
5141                                                 delete yymsp[-10].minor.yy386;
5142                                                 delete yymsp[-5].minor.yy532;
5143                                                 delete yymsp[-1].minor.yy83;
5144                                                 delete yymsp[-7].minor.yy319;
5145                                                 delete yymsp[-2].minor.yy319;
5146                                                 delete yymsp[-6].minor.yy319;
5147                                                 objectForTokens = yygotominor.yy363;
5148                                                 parserContext->minorErrorAfterLastToken("Syntax error");
5149                                             }
5150         break;
5151       case 370: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */
5152 {
5153                                                 yygotominor.yy363 = new SqliteCreateTrigger(
5154 													*(yymsp[-12].minor.yy386),
5155 													*(yymsp[-10].minor.yy611),
5156 													*(yymsp[-9].minor.yy319),
5157 													*(yymsp[-8].minor.yy319),
5158 													*(yymsp[-4].minor.yy319),
5159 													*(yymsp[-7].minor.yy532),
5160 													yymsp[-6].minor.yy151,
5161 													*(yymsp[-3].minor.yy83),
5162 													yymsp[-2].minor.yy512,
5163 													*(yymsp[0].minor.yy110),
5164 													3
5165                                                 );
5166                                                 delete yymsp[-10].minor.yy611;
5167                                                 delete yymsp[-12].minor.yy386;
5168                                                 delete yymsp[-7].minor.yy532;
5169                                                 delete yymsp[-3].minor.yy83;
5170                                                 delete yymsp[-9].minor.yy319;
5171                                                 delete yymsp[-4].minor.yy319;
5172                                                 delete yymsp[-8].minor.yy319;
5173                                                 delete yymsp[0].minor.yy110;
5174                                                 objectForTokens = yygotominor.yy363;
5175                                                 parserContext->minorErrorAfterLastToken("Syntax error");
5176                                             }
5177         break;
5178       case 371: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */
5179 {  yy_destructor(yypParser,201,&yymsp[-8].minor);
5180   yy_destructor(yypParser,199,&yymsp[-5].minor);
5181   yy_destructor(yypParser,292,&yymsp[-3].minor);
5182   yy_destructor(yypParser,293,&yymsp[-2].minor);
5183 }
5184         break;
5185       case 374: /* trigger_time ::= BEFORE */
5186 {yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);}
5187         break;
5188       case 375: /* trigger_time ::= AFTER */
5189 {yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);}
5190         break;
5191       case 376: /* trigger_time ::= INSTEAD OF */
5192 {yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);}
5193         break;
5194       case 377: /* trigger_time ::= */
5195 {yygotominor.yy532 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);}
5196         break;
5197       case 378: /* trigger_event ::= DELETE */
5198 {
5199                                                 yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE);
5200                                                 objectForTokens = yygotominor.yy151;
5201                                             }
5202         break;
5203       case 379: /* trigger_event ::= INSERT */
5204 {
5205                                                 yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT);
5206                                                 objectForTokens = yygotominor.yy151;
5207                                             }
5208         break;
5209       case 380: /* trigger_event ::= UPDATE */
5210 {
5211                                                 yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE);
5212                                                 objectForTokens = yygotominor.yy151;
5213                                             }
5214         break;
5215       case 381: /* trigger_event ::= UPDATE OF idlist */
5216 {
5217                                                 yygotominor.yy151 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy575));
5218                                                 delete yymsp[0].minor.yy575;
5219                                                 objectForTokens = yygotominor.yy151;
5220                                             }
5221         break;
5222       case 382: /* foreach_clause ::= */
5223 {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);}
5224         break;
5225       case 383: /* foreach_clause ::= FOR EACH ROW */
5226 {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);}
5227         break;
5228       case 386: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
5229 {
5230                                                 yymsp[-2].minor.yy110->append(yymsp[-1].minor.yy363);
5231                                                 yygotominor.yy110 = yymsp[-2].minor.yy110;
5232                                                 DONT_INHERIT_TOKENS("trigger_cmd_list");
5233                                             }
5234         break;
5235       case 387: /* trigger_cmd_list ::= trigger_cmd SEMI */
5236 {
5237                                                 yygotominor.yy110 = new ParserQueryList();
5238                                                 yygotominor.yy110->append(yymsp[-1].minor.yy363);
5239                                             }
5240         break;
5241       case 388: /* trigger_cmd_list ::= SEMI */
5242 {
5243                                                 yygotominor.yy110 = new ParserQueryList();
5244                                                 parserContext->minorErrorAfterLastToken("Syntax error");
5245                                             }
5246         break;
5247       case 393: /* raisetype ::= ROLLBACK|ABORT|FAIL */
5248 {yygotominor.yy0 = yymsp[0].minor.yy0;}
5249         break;
5250       case 394: /* cmd ::= DROP TRIGGER ifexists fullname */
5251 {
5252                                                 yygotominor.yy363 = new SqliteDropTrigger(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy440->name1, yymsp[0].minor.yy440->name2);
5253                                                 delete yymsp[-1].minor.yy611;
5254                                                 delete yymsp[0].minor.yy440;
5255                                                 objectForTokens = yygotominor.yy363;
5256                                             }
5257         break;
5258       case 397: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
5259 {
5260                                                 yygotominor.yy363 = new SqliteAttach(*(yymsp[-4].minor.yy611), yymsp[-3].minor.yy512, yymsp[-1].minor.yy512, yymsp[0].minor.yy512);
5261                                                 delete yymsp[-4].minor.yy611;
5262                                                 objectForTokens = yygotominor.yy363;
5263                                             }
5264         break;
5265       case 398: /* cmd ::= DETACH database_kw_opt expr */
5266 {
5267                                                 yygotominor.yy363 = new SqliteDetach(*(yymsp[-1].minor.yy611), yymsp[0].minor.yy512);
5268                                                 delete yymsp[-1].minor.yy611;
5269                                                 objectForTokens = yygotominor.yy363;
5270                                             }
5271         break;
5272       case 403: /* cmd ::= REINDEX */
5273 {yygotominor.yy363 = new SqliteReindex();}
5274         break;
5275       case 404: /* cmd ::= REINDEX nm dbnm */
5276       case 405: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==405);
5277 {
5278                                                 yygotominor.yy363 = new SqliteReindex(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
5279                                                 delete yymsp[-1].minor.yy319;
5280                                                 delete yymsp[0].minor.yy319;
5281                                                 objectForTokens = yygotominor.yy363;
5282                                             }
5283         break;
5284       case 408: /* cmd ::= ANALYZE */
5285 {
5286                                                 yygotominor.yy363 = new SqliteAnalyze();
5287                                                 objectForTokens = yygotominor.yy363;
5288                                             }
5289         break;
5290       case 409: /* cmd ::= ANALYZE nm dbnm */
5291 {
5292                                                 yygotominor.yy363 = new SqliteAnalyze(*(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319));
5293                                                 delete yymsp[-1].minor.yy319;
5294                                                 delete yymsp[0].minor.yy319;
5295                                                 objectForTokens = yygotominor.yy363;
5296                                             }
5297         break;
5298       case 412: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
5299 {
5300                                                 yygotominor.yy363 = new SqliteAlterTable(
5301                                                         yymsp[-3].minor.yy440->name1,
5302                                                         yymsp[-3].minor.yy440->name2,
5303                                                         *(yymsp[0].minor.yy319)
5304                                                     );
5305                                                 delete yymsp[0].minor.yy319;
5306                                                 delete yymsp[-3].minor.yy440;
5307                                                 objectForTokens = yygotominor.yy363;
5308                                             }
5309         break;
5310       case 413: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */
5311 {
5312                                                 yygotominor.yy363 = new SqliteAlterTable(
5313                                                         yymsp[-3].minor.yy440->name1,
5314                                                         yymsp[-3].minor.yy440->name2,
5315                                                         *(yymsp[-1].minor.yy611),
5316                                                         yymsp[0].minor.yy147
5317                                                     );
5318                                                 delete yymsp[-1].minor.yy611;
5319                                                 delete yymsp[-3].minor.yy440;
5320                                                 objectForTokens = yygotominor.yy363;
5321                                             }
5322         break;
5323       case 414: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */
5324 {  yy_destructor(yypParser,203,&yymsp[-3].minor);
5325 }
5326         break;
5327       case 420: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */
5328 {
5329                                                 yygotominor.yy363 = new SqliteCreateVirtualTable(
5330                                                         *(yymsp[-4].minor.yy611),
5331                                                         *(yymsp[-3].minor.yy319),
5332                                                         *(yymsp[-2].minor.yy319),
5333                                                         *(yymsp[0].minor.yy319)
5334                                                     );
5335                                                 delete yymsp[-4].minor.yy611;
5336                                                 delete yymsp[-3].minor.yy319;
5337                                                 delete yymsp[-2].minor.yy319;
5338                                                 delete yymsp[0].minor.yy319;
5339                                                 objectForTokens = yygotominor.yy363;
5340                                             }
5341         break;
5342       case 421: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */
5343 {
5344                                                 yygotominor.yy363 = new SqliteCreateVirtualTable(
5345                                                         *(yymsp[-7].minor.yy611),
5346                                                         *(yymsp[-6].minor.yy319),
5347                                                         *(yymsp[-5].minor.yy319),
5348                                                         *(yymsp[-3].minor.yy319),
5349                                                         *(yymsp[-1].minor.yy575)
5350                                                     );
5351                                                 delete yymsp[-6].minor.yy319;
5352                                                 delete yymsp[-5].minor.yy319;
5353                                                 delete yymsp[-3].minor.yy319;
5354                                                 delete yymsp[-7].minor.yy611;
5355                                                 delete yymsp[-1].minor.yy575;
5356                                                 objectForTokens = yygotominor.yy363;
5357                                             }
5358         break;
5359       case 424: /* vtabarglist ::= vtabarg */
5360 {
5361                                                 yygotominor.yy575 = new QStringList();
5362                                                 yygotominor.yy575->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
5363                                                 delete yymsp[0].minor.yy319;
5364                                             }
5365         break;
5366       case 425: /* vtabarglist ::= vtabarglist COMMA vtabarg */
5367 {
5368                                                 yymsp[-2].minor.yy575->append((yymsp[0].minor.yy319)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg
5369                                                 yygotominor.yy575 = yymsp[-2].minor.yy575;
5370                                                 delete yymsp[0].minor.yy319;
5371                                                 DONT_INHERIT_TOKENS("vtabarglist");
5372                                             }
5373         break;
5374       case 427: /* vtabarg ::= vtabarg vtabargtoken */
5375 {
5376                                                 yymsp[-1].minor.yy319->append(" "+ *(yymsp[0].minor.yy319));
5377                                                 yygotominor.yy319 = yymsp[-1].minor.yy319;
5378                                                 delete yymsp[0].minor.yy319;
5379                                             }
5380         break;
5381       case 428: /* vtabargtoken ::= ANY */
5382 {
5383                                                 yygotominor.yy319 = new QString(yymsp[0].minor.yy0->value);
5384                                             }
5385         break;
5386       case 429: /* vtabargtoken ::= LP anylist RP */
5387 {
5388                                                 yygotominor.yy319 = new QString("(");
5389                                                 yygotominor.yy319->append(*(yymsp[-1].minor.yy319));
5390                                                 yygotominor.yy319->append(")");
5391                                                 delete yymsp[-1].minor.yy319;
5392                                             }
5393         break;
5394       case 431: /* anylist ::= anylist LP anylist RP */
5395 {
5396                                                 yygotominor.yy319 = yymsp[-3].minor.yy319;
5397                                                 yygotominor.yy319->append("(");
5398                                                 yygotominor.yy319->append(*(yymsp[-1].minor.yy319));
5399                                                 yygotominor.yy319->append(")");
5400                                                 delete yymsp[-1].minor.yy319;
5401                                                 DONT_INHERIT_TOKENS("anylist");
5402                                             }
5403         break;
5404       case 432: /* anylist ::= anylist ANY */
5405 {
5406                                                 yygotominor.yy319 = yymsp[-1].minor.yy319;
5407                                                 yygotominor.yy319->append(yymsp[0].minor.yy0->value);
5408                                                 DONT_INHERIT_TOKENS("anylist");
5409                                             }
5410         break;
5411       case 433: /* with ::= */
5412 {yygotominor.yy1 = nullptr;}
5413         break;
5414       case 434: /* with ::= WITH wqlist */
5415 {
5416                                                 yygotominor.yy1 = new SqliteWith();
5417 												yygotominor.yy1->cteList = *(yymsp[0].minor.yy593);
5418 												delete yymsp[0].minor.yy593;
5419                                                 objectForTokens = yygotominor.yy1;
5420                                             }
5421         break;
5422       case 435: /* with ::= WITH RECURSIVE wqlist */
5423 {
5424                                                 yygotominor.yy1 = new SqliteWith();
5425 												yygotominor.yy1->cteList = *(yymsp[0].minor.yy593);
5426                                                 yygotominor.yy1->recursive = true;
5427 												delete yymsp[0].minor.yy593;
5428                                                 objectForTokens = yygotominor.yy1;
5429                                             }
5430         break;
5431       case 436: /* wqlist ::= wqcte */
5432 {
5433 												yygotominor.yy593 = new ParserCteList();
5434                                                 yygotominor.yy593->append(yymsp[0].minor.yy446);
5435                                             }
5436         break;
5437       case 437: /* wqlist ::= wqlist COMMA wqcte */
5438 {
5439                                                 yygotominor.yy593 = yymsp[-2].minor.yy593;
5440                                                 yygotominor.yy593->append(yymsp[0].minor.yy446);
5441                                                 DONT_INHERIT_TOKENS("wqlist");
5442                                             }
5443         break;
5444       case 438: /* wqlist ::= ID_TAB_NEW */
5445 {
5446                                                 parserContext->minorErrorBeforeNextToken("Syntax error");
5447                                             }
5448         break;
5449       case 439: /* wqcte ::= nm idxlist_opt AS LP select RP */
5450 {
5451                                                 yygotominor.yy446 = new SqliteWith::CommonTableExpression(*(yymsp[-5].minor.yy319), *(yymsp[-4].minor.yy223), yymsp[-1].minor.yy313);
5452                                                 delete yymsp[-5].minor.yy319;
5453                                                 delete yymsp[-4].minor.yy223;
5454 												objectForTokens = yygotominor.yy446;
5455 											}
5456         break;
5457       case 440: /* windowdefn_list ::= windowdefn */
5458 {
5459 												yygotominor.yy299 = new ParserWindowDefList();
5460 												yygotominor.yy299->append(yymsp[0].minor.yy266);
5461 											}
5462         break;
5463       case 441: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
5464 {
5465 												yymsp[-2].minor.yy299->append(yymsp[0].minor.yy266);
5466 												yygotominor.yy299 = yymsp[-2].minor.yy299;
5467 												DONT_INHERIT_TOKENS("windowdefn_list");
5468 											}
5469         break;
5470       case 442: /* windowdefn ::= nm AS LP window RP */
5471 {
5472 												yygotominor.yy266 = new SqliteWindowDefinition(*(yymsp[-4].minor.yy319), yymsp[-1].minor.yy334);
5473 												delete yymsp[-4].minor.yy319;
5474 												objectForTokens = yygotominor.yy266;
5475 											}
5476         break;
5477       case 443: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
5478 {
5479 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5480 												yygotominor.yy334->initPartitionBy(QString(), *(yymsp[-2].minor.yy71), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
5481 												delete yymsp[-2].minor.yy71;
5482 												delete yymsp[-1].minor.yy403;
5483 												objectForTokens = yygotominor.yy334;
5484 											}
5485         break;
5486       case 444: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
5487 {
5488 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5489 												yygotominor.yy334->initPartitionBy(*(yymsp[-5].minor.yy319), *(yymsp[-2].minor.yy71), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
5490 												delete yymsp[-2].minor.yy71;
5491 												delete yymsp[-5].minor.yy319;
5492 												delete yymsp[-1].minor.yy403;
5493 												objectForTokens = yygotominor.yy334;
5494 											}
5495         break;
5496       case 445: /* window ::= ORDER BY sortlist frame_opt */
5497 {
5498 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5499 												yygotominor.yy334->initOrderBy(QString(), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
5500 												delete yymsp[-1].minor.yy403;
5501 												objectForTokens = yygotominor.yy334;
5502 											}
5503         break;
5504       case 446: /* window ::= nm ORDER BY sortlist frame_opt */
5505 {
5506 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5507 												yygotominor.yy334->initOrderBy(*(yymsp[-4].minor.yy319), *(yymsp[-1].minor.yy403), yymsp[0].minor.yy41);
5508 												delete yymsp[-1].minor.yy403;
5509 												delete yymsp[-4].minor.yy319;
5510 												objectForTokens = yygotominor.yy334;
5511 											}
5512         break;
5513       case 447: /* window ::= frame_opt */
5514 {
5515 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5516 												yygotominor.yy334->init(QString(), yymsp[0].minor.yy41);
5517 												objectForTokens = yygotominor.yy334;
5518 											}
5519         break;
5520       case 448: /* window ::= nm frame_opt */
5521 {
5522 												yygotominor.yy334 = new SqliteWindowDefinition::Window();
5523 												yygotominor.yy334->init(QString(), yymsp[0].minor.yy41);
5524 												delete yymsp[-1].minor.yy319;
5525 												objectForTokens = yygotominor.yy334;
5526 											}
5527         break;
5528       case 449: /* frame_opt ::= */
5529 {yygotominor.yy41 = nullptr;}
5530         break;
5531       case 450: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
5532 {
5533 												yygotominor.yy41 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-2].minor.yy419), yymsp[-1].minor.yy442, nullptr, *(yymsp[0].minor.yy63));
5534 												delete yymsp[-2].minor.yy419;
5535 												delete yymsp[0].minor.yy63;
5536 												objectForTokens = yygotominor.yy41;
5537 											}
5538         break;
5539       case 451: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
5540 {
5541 												yygotominor.yy41 = new SqliteWindowDefinition::Window::Frame(*(yymsp[-5].minor.yy419), yymsp[-3].minor.yy442, yymsp[-1].minor.yy442, *(yymsp[0].minor.yy63));
5542 												delete yymsp[-5].minor.yy419;
5543 												delete yymsp[0].minor.yy63;
5544 												objectForTokens = yygotominor.yy41;
5545 											}
5546         break;
5547       case 452: /* range_or_rows ::= RANGE|ROWS|GROUPS */
5548 {
5549 												yygotominor.yy419 = new SqliteWindowDefinition::Window::Frame::RangeOrRows(
5550 													SqliteWindowDefinition::Window::Frame::toRangeOrRows(yymsp[0].minor.yy0->value)
5551 													);
5552 											}
5553         break;
5554       case 453: /* frame_bound_s ::= frame_bound */
5555       case 455: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==455);
5556 {
5557 												yygotominor.yy442 = yymsp[0].minor.yy442;
5558 												objectForTokens = yygotominor.yy442;
5559 											}
5560         break;
5561       case 454: /* frame_bound_s ::= UNBOUNDED PRECEDING */
5562       case 456: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==456);
5563       case 458: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==458);
5564 {
5565 												yygotominor.yy442 = new SqliteWindowDefinition::Window::Frame::Bound(nullptr, yymsp[-1].minor.yy0->value + " " + yymsp[0].minor.yy0->value);
5566 												objectForTokens = yygotominor.yy442;
5567 											}
5568         break;
5569       case 457: /* frame_bound ::= expr PRECEDING|FOLLOWING */
5570 {
5571 												yygotominor.yy442 = new SqliteWindowDefinition::Window::Frame::Bound(yymsp[-1].minor.yy512, yymsp[0].minor.yy0->value);
5572 												objectForTokens = yygotominor.yy442;
5573 											}
5574         break;
5575       case 459: /* frame_exclude_opt ::= */
5576 {
5577 												yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
5578 													SqliteWindowDefinition::Window::Frame::Exclude::null
5579 													);
5580 											}
5581         break;
5582       case 460: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
5583 {
5584 												yygotominor.yy63 = yymsp[0].minor.yy63;
5585 											}
5586         break;
5587       case 461: /* frame_exclude ::= NO OTHERS */
5588 {
5589 												yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
5590 													SqliteWindowDefinition::Window::Frame::Exclude::NO_OTHERS
5591 													);
5592 											}
5593         break;
5594       case 462: /* frame_exclude ::= CURRENT ROW */
5595 {
5596 												yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
5597 													SqliteWindowDefinition::Window::Frame::Exclude::CURRENT_ROW
5598 													);
5599 											}
5600         break;
5601       case 463: /* frame_exclude ::= GROUP */
5602 {
5603 												yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
5604 													SqliteWindowDefinition::Window::Frame::Exclude::GROUP
5605 													);
5606 											}
5607         break;
5608       case 464: /* frame_exclude ::= TIES */
5609 {
5610 												yygotominor.yy63 = new SqliteWindowDefinition::Window::Frame::Exclude(
5611 													SqliteWindowDefinition::Window::Frame::Exclude::TIES
5612 													);
5613 											}
5614         break;
5615       case 465: /* window_clause ::= WINDOW windowdefn_list */
5616 {
5617 												yygotominor.yy299 = yymsp[0].minor.yy299;
5618 											}
5619         break;
5620       case 466: /* filter_over ::= filter_clause over_clause */
5621 {
5622 												yygotominor.yy247 = new SqliteFilterOver(yymsp[-1].minor.yy397, yymsp[0].minor.yy248);
5623 												objectForTokens = yygotominor.yy247;
5624 											}
5625         break;
5626       case 467: /* filter_over ::= over_clause */
5627 {
5628 												yygotominor.yy247 = new SqliteFilterOver(nullptr, yymsp[0].minor.yy248);
5629 												objectForTokens = yygotominor.yy247;
5630 											}
5631         break;
5632       case 468: /* filter_over ::= filter_clause */
5633 {
5634 												yygotominor.yy247 = new SqliteFilterOver(yymsp[0].minor.yy397, nullptr);
5635 												objectForTokens = yygotominor.yy247;
5636 											}
5637         break;
5638       case 469: /* over_clause ::= OVER LP window RP */
5639 {
5640 												yygotominor.yy248 = new SqliteFilterOver::Over(yymsp[-1].minor.yy334);
5641 												objectForTokens = yygotominor.yy248;
5642 											}
5643         break;
5644       case 470: /* over_clause ::= OVER nm */
5645 {
5646 												yygotominor.yy248 = new SqliteFilterOver::Over(*(yymsp[0].minor.yy319));
5647 												delete yymsp[0].minor.yy319;
5648 												objectForTokens = yygotominor.yy248;
5649 											}
5650         break;
5651       case 471: /* filter_clause ::= FILTER LP WHERE expr RP */
5652 {
5653 												yygotominor.yy397 = new SqliteFilterOver::Filter(yymsp[-1].minor.yy512);
5654 												objectForTokens = yygotominor.yy397;
5655 											}
5656         break;
5657       default:
5658       /* (0) input ::= cmdlist */ yytestcase(yyruleno==0);
5659         break;
5660       };
5661   }
5662   assert( yyruleno>=0 && yyruleno<(int)(sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0])) );
5663   yygoto = yyRuleInfo[yyruleno].lhs;
5664   yysize = yyRuleInfo[yyruleno].nrhs;
5665 
5666   // Store tokens for the rule in parser context
5667   QList<Token*> allTokens;
5668   QList<Token*> allTokensWithAllInherited;
5669   QString keyForTokensMap;
5670   int tokensMapKeyCnt;
5671   if (parserContext->setupTokens)
5672   {
5673       if (objectForTokens)
5674       {
5675           // In case this is a list with recurrent references we need
5676           // to clear tokens before adding the new and extended list.
5677           objectForTokens->tokens.clear();
5678       }
5679 
5680       QList<Token*> tokens;
5681       for (int i = yypParser->yyidx - yysize + 1; i <= yypParser->yyidx; i++)
5682       {
5683           tokens.clear();
5684           const char* fieldName = yyTokenName[yypParser->yystack[i].major];
5685 
5686           // Adding token being subject of this reduction. It's usually not includes in the inherited tokens,
5687           // although if inheriting from simple statements, like "FAIL" or "ROLLBACK", this tends to be redundant with the inherited tokens.
5688           // That's why we're checking if it's not contained in the inherited tokens and add it only then.
5689           if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0) && !yypParser->yystack[i].tokens->contains(yypParser->yystack[i].minor.yy0))
5690               tokens += yypParser->yystack[i].minor.yy0;
5691 
5692           tokens += *(yypParser->yystack[i].tokens);
5693 
5694           if (!noTokenInheritanceFields.contains(fieldName))
5695           {
5696               if (objectForTokens)
5697               {
5698                   keyForTokensMap = fieldName;
5699                   tokensMapKeyCnt = 2;
5700                   while (objectForTokens->tokensMap.contains(keyForTokensMap))
5701                       keyForTokensMap = fieldName + QString::number(tokensMapKeyCnt++);
5702 
5703                   objectForTokens->tokensMap[keyForTokensMap] = parserContext->getTokenPtrList(tokens);
5704               }
5705 
5706               allTokens += tokens;
5707           }
5708           else
5709           {
5710               // If field is mentioned only once, then only one occurance of it will be ignored.
5711               // Second one should be inherited. See "anylist" definition for explanation why.
5712               noTokenInheritanceFields.removeOne(fieldName);
5713           }
5714           allTokensWithAllInherited += tokens;
5715       }
5716       if (objectForTokens)
5717       {
5718           objectForTokens->tokens += parserContext->getTokenPtrList(allTokens);
5719       }
5720   }
5721 
5722   // Clear token lists
5723   for (int i = yypParser->yyidx - yysize + 1; i <= yypParser->yyidx; i++)
5724   {
5725       delete yypParser->yystack[i].tokens;
5726       yypParser->yystack[i].tokens = nullptr;
5727   }
5728 
5729   yypParser->yyidx -= yysize;
5730   yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
5731   if( yyact < YYNSTATE ){
5732 #ifdef NDEBUG
5733     /* If we are not debugging and the reduce action popped at least
5734     ** one element off the stack, then we can push the new element back
5735     ** onto the stack here, and skip the stack overflow test in yy_shift().
5736     ** That gives a significant speed improvement. */
5737     if( yysize ){
5738       yypParser->yyidx++;
5739       yymsp -= yysize-1;
5740       yymsp->stateno = (YYACTIONTYPE)yyact;
5741       yymsp->major = (YYCODETYPE)yygoto;
5742       yymsp->minor = yygotominor;
5743       if (parserContext->setupTokens)
5744           *(yypParser->yystack[yypParser->yyidx].tokens) = allTokens;
5745     }else
5746 #endif
5747     {
5748       yy_shift(yypParser,yyact,yygoto,&yygotominor);
5749       if (parserContext->setupTokens)
5750       {
5751           QList<Token*>* tokensPtr = yypParser->yystack[yypParser->yyidx].tokens;
5752           *tokensPtr = allTokensWithAllInherited + *tokensPtr;
5753       }
5754     }
5755   }else{
5756     assert( yyact == YYNSTATE + YYNRULE + 1 );
5757     yy_accept(yypParser);
5758   }
5759 }
5760 
5761 /*
5762 ** The following code executes when the parse fails
5763 */
5764 #ifndef YYNOERRORRECOVERY
yy_parse_failed(yyParser * yypParser)5765 static void yy_parse_failed(
5766   yyParser *yypParser           /* The parser */
5767 ){
5768   sqlite3_parseARG_FETCH;
5769 #ifndef NDEBUG
5770   if( yyTraceFILE ){
5771     fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
5772   }
5773 #endif
5774   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
5775   /* Here code is inserted which will be executed whenever the
5776   ** parser fails */
5777   sqlite3_parseARG_STORE; /* Suppress warning about unused %extra_argument variable */
5778 }
5779 #endif /* YYNOERRORRECOVERY */
5780 
5781 /*
5782 ** The following code executes when a syntax error first occurs.
5783 */
yy_syntax_error(yyParser * yypParser,int yymajor,YYMINORTYPE yyminor)5784 static void yy_syntax_error(
5785   yyParser *yypParser,           /* The parser */
5786   int yymajor,                   /* The major type of the error token */
5787   YYMINORTYPE yyminor            /* The minor type of the error token */
5788 ){
5789   sqlite3_parseARG_FETCH;
5790 #define TOKEN (yyminor.yy0)
5791 
5792     UNUSED_PARAMETER(yymajor);
5793     parserContext->error(TOKEN, QObject::tr("Syntax error"));
5794     //qDebug() << "near " << TOKEN->toString() << ": syntax error";
5795   sqlite3_parseARG_STORE; /* Suppress warning about unused %extra_argument variable */
5796 }
5797 
5798 /*
5799 ** The following is executed when the parser accepts
5800 */
yy_accept(yyParser * yypParser)5801 static void yy_accept(
5802   yyParser *yypParser           /* The parser */
5803 ){
5804   sqlite3_parseARG_FETCH;
5805 #ifndef NDEBUG
5806   if( yyTraceFILE ){
5807     fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
5808   }
5809 #endif
5810   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
5811   /* Here code is inserted which will be executed whenever the
5812   ** parser accepts */
5813   sqlite3_parseARG_STORE; /* Suppress warning about unused %extra_argument variable */
5814 }
5815 
5816 /* The main parser program.
5817 ** The first argument is a pointer to a structure obtained from
5818 ** "sqlite3_parseAlloc" which describes the current state of the parser.
5819 ** The second argument is the major token number.  The third is
5820 ** the minor token.  The fourth optional argument is whatever the
5821 ** user wants (and specified in the grammar) and is available for
5822 ** use by the action routines.
5823 **
5824 ** Inputs:
5825 ** <ul>
5826 ** <li> A pointer to the parser (an opaque structure.)
5827 ** <li> The major token number.
5828 ** <li> The minor token number.
5829 ** <li> An option argument of a grammar-specified type.
5830 ** </ul>
5831 **
5832 ** Outputs:
5833 ** None.
5834 */
sqlite3_parse(void * yyp,int yymajor,sqlite3_parseTOKENTYPE yyminor sqlite3_parseARG_PDECL)5835 void sqlite3_parse(
5836   void *yyp,                   /* The parser */
5837   int yymajor,                 /* The major token code number */
5838   sqlite3_parseTOKENTYPE yyminor       /* The value for the token */
5839   sqlite3_parseARG_PDECL               /* Optional %extra_argument parameter */
5840 ){
5841   YYMINORTYPE yyminorunion;
5842   int yyact;            /* The parser action. */
5843 #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
5844   int yyendofinput;     /* True if we are at the end of input */
5845 #endif
5846 #ifdef YYERRORSYMBOL
5847   int yyerrorhit = 0;   /* True if yymajor has invoked an error */
5848 #endif
5849   yyParser *yypParser;  /* The parser */
5850 
5851   /* (re)initialize the parser, if necessary */
5852   yypParser = (yyParser*)yyp;
5853   if( yypParser->yyidx<0 ){
5854 #if YYSTACKDEPTH<=0
5855     if( yypParser->yystksz <=0 ){
5856       /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
5857       yyminorunion = yyzerominor;
5858       yyStackOverflow(yypParser, &yyminorunion);
5859       return;
5860     }
5861 #endif
5862     yypParser->yyidx = 0;
5863     yypParser->yyerrcnt = -1;
5864     yypParser->yystack[0].stateno = 0;
5865     yypParser->yystack[0].major = 0;
5866     yypParser->yystack[0].tokens = new QList<Token*>();
5867   }
5868   yyminorunion.yy0 = yyminor;
5869 #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
5870   yyendofinput = (yymajor==0);
5871 #endif
5872   sqlite3_parseARG_STORE;
5873 
5874 #ifndef NDEBUG
5875   if( yyTraceFILE ){
5876     fprintf(yyTraceFILE,"%sInput %s [%s] (lemon type: %s)\n",
5877             yyTracePrompt,
5878             yyminor->value.toLatin1().data(),
5879             yyminor->typeString().toLatin1().data(),
5880             yyTokenName[yymajor]);  }
5881 #endif
5882 
5883   do{
5884     yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
5885     if( yyact<YYNSTATE ){
5886       yy_shift(yypParser,yyact,yymajor,&yyminorunion);
5887       yypParser->yyerrcnt--;
5888       yymajor = YYNOCODE;
5889     }else if( yyact < YYNSTATE + YYNRULE ){
5890       yy_reduce(yypParser,yyact-YYNSTATE);
5891     }else{
5892       assert( yyact == YY_ERROR_ACTION );
5893 #ifdef YYERRORSYMBOL
5894       int yymx;
5895 #endif
5896 #ifndef NDEBUG
5897       if( yyTraceFILE ){
5898         fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
5899       }
5900 #endif
5901 #ifdef YYERRORSYMBOL
5902       /* A syntax error has occurred.
5903       ** The response to an error depends upon whether or not the
5904       ** grammar defines an error token "ERROR".
5905       **
5906       ** This is what we do if the grammar does define ERROR:
5907       **
5908       **  * Call the %syntax_error function.
5909       **
5910       **  * Begin popping the stack until we enter a state where
5911       **    it is legal to shift the error symbol, then shift
5912       **    the error symbol.
5913       **
5914       **  * Set the error count to three.
5915       **
5916       **  * Begin accepting and shifting new tokens.  No new error
5917       **    processing will occur until three tokens have been
5918       **    shifted successfully.
5919       **
5920       */
5921       if( yypParser->yyerrcnt<0 ){
5922         yy_syntax_error(yypParser,yymajor,yyminorunion);
5923       }
5924       yymx = yypParser->yystack[yypParser->yyidx].major;
5925       if( yymx==YYERRORSYMBOL || yyerrorhit ){
5926 #ifndef NDEBUG
5927         if( yyTraceFILE ){
5928           fprintf(yyTraceFILE,"%sDiscard input token %s\n",
5929              yyTracePrompt,yyTokenName[yymajor]);
5930         }
5931 #endif
5932         yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
5933         yymajor = YYNOCODE;
5934       }else{
5935          while(
5936           yypParser->yyidx >= 0 &&
5937           yymx != YYERRORSYMBOL &&
5938           (yyact = yy_find_reduce_action(
5939                         yypParser->yystack[yypParser->yyidx].stateno,
5940                         YYERRORSYMBOL)) >= YYNSTATE
5941         ){
5942           yy_pop_parser_stack(yypParser);
5943         }
5944         if( yypParser->yyidx < 0 || yymajor==0 ){
5945           yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
5946           yy_parse_failed(yypParser);
5947           yymajor = YYNOCODE;
5948         }else if( yymx!=YYERRORSYMBOL ){
5949           YYMINORTYPE u2;
5950           u2.YYERRSYMDT = 0;
5951           yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
5952         }
5953       }
5954       yypParser->yyerrcnt = 1; // not 3 valid tokens, but 1
5955       yyerrorhit = 1;
5956 #elif defined(YYNOERRORRECOVERY)
5957       /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
5958       ** do any kind of error recovery.  Instead, simply invoke the syntax
5959       ** error routine and continue going as if nothing had happened.
5960       **
5961       ** Applications can set this macro (for example inside %include) if
5962       ** they intend to abandon the parse upon the first syntax error seen.
5963       */
5964       yy_syntax_error(yypParser,yymajor,yyminorunion);
5965       yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
5966       yymajor = YYNOCODE;
5967 
5968 #else  /* YYERRORSYMBOL is not defined */
5969       /* This is what we do if the grammar does not define ERROR:
5970       **
5971       **  * Report an error message, and throw away the input token.
5972       **
5973       **  * If the input token is $, then fail the parse.
5974       **
5975       ** As before, subsequent error messages are suppressed until
5976       ** three input tokens have been successfully shifted.
5977       */
5978       if( yypParser->yyerrcnt<=0 ){
5979         yy_syntax_error(yypParser,yymajor,yyminorunion);
5980       }
5981       yypParser->yyerrcnt = 1; // not 3 valid tokens, but 1
5982       yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
5983       if( yyendofinput ){
5984         yy_parse_failed(yypParser);
5985       }
5986       yymajor = YYNOCODE;
5987 #endif
5988     }
5989   }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
5990   return;
5991 }