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 }