1 /* This file is automatically generated by Lemon from input grammar
2 ** source file "src/trace_processor/perfetto_sql/grammar/perfettosql_grammar.y".
3 */
4 /*
5 ** 2000-05-29
6 **
7 ** The author disclaims copyright to this source code. In place of
8 ** a legal notice, here is a blessing:
9 **
10 ** May you do good and not evil.
11 ** May you find forgiveness for yourself and forgive others.
12 ** May you share freely, never taking more than you give.
13 **
14 *************************************************************************
15 ** Driver template for the LEMON parser generator.
16 **
17 ** The "lemon" program processes an LALR(1) input grammar file, then uses
18 ** this template to construct a parser. The "lemon" program inserts text
19 ** at each "%%" line. Also, any "P-a-r-s-e" identifer prefix (without the
20 ** interstitial "-" characters) contained in this template is changed into
21 ** the value of the %name directive from the grammar. Otherwise, the content
22 ** of this template is copied straight through into the generate parser
23 ** source file.
24 **
25 ** The following is the concatenation of all %include directives from the
26 ** input grammar file:
27 */
28 /************ Begin %include sections from the grammar ************************/
29 #include <stddef.h>
30
31 #define YYNOERRORRECOVERY 1
32 /**************** End of %include directives **********************************/
33 /* These constants specify the various numeric values for terminal symbols.
34 ***************** Begin token definitions *************************************/
35 #ifndef TK_CREATE
36 #define TK_CREATE 1
37 #define TK_REPLACE 2
38 #define TK_PERFETTO 3
39 #define TK_MACRO 4
40 #define TK_INCLUDE 5
41 #define TK_MODULE 6
42 #define TK_RETURNS 7
43 #define TK_FUNCTION 8
44 #define TK_OR 9
45 #define TK_AND 10
46 #define TK_NOT 11
47 #define TK_IS 12
48 #define TK_MATCH 13
49 #define TK_LIKE_KW 14
50 #define TK_BETWEEN 15
51 #define TK_IN 16
52 #define TK_ISNULL 17
53 #define TK_NOTNULL 18
54 #define TK_NE 19
55 #define TK_EQ 20
56 #define TK_GT 21
57 #define TK_LE 22
58 #define TK_LT 23
59 #define TK_GE 24
60 #define TK_ESCAPE 25
61 #define TK_BITAND 26
62 #define TK_BITOR 27
63 #define TK_LSHIFT 28
64 #define TK_RSHIFT 29
65 #define TK_PLUS 30
66 #define TK_MINUS 31
67 #define TK_STAR 32
68 #define TK_SLASH 33
69 #define TK_REM 34
70 #define TK_CONCAT 35
71 #define TK_PTR 36
72 #define TK_COLLATE 37
73 #define TK_BITNOT 38
74 #define TK_ON 39
75 #define TK_ID 40
76 #define TK_ABORT 41
77 #define TK_ACTION 42
78 #define TK_AFTER 43
79 #define TK_ANALYZE 44
80 #define TK_ASC 45
81 #define TK_ATTACH 46
82 #define TK_BEFORE 47
83 #define TK_BEGIN 48
84 #define TK_BY 49
85 #define TK_CASCADE 50
86 #define TK_CAST 51
87 #define TK_COLUMNKW 52
88 #define TK_CONFLICT 53
89 #define TK_DATABASE 54
90 #define TK_DEFERRED 55
91 #define TK_DESC 56
92 #define TK_DETACH 57
93 #define TK_DO 58
94 #define TK_EACH 59
95 #define TK_END 60
96 #define TK_EXCLUSIVE 61
97 #define TK_EXPLAIN 62
98 #define TK_FAIL 63
99 #define TK_FOR 64
100 #define TK_IGNORE 65
101 #define TK_IMMEDIATE 66
102 #define TK_INITIALLY 67
103 #define TK_INSTEAD 68
104 #define TK_NO 69
105 #define TK_PLAN 70
106 #define TK_QUERY 71
107 #define TK_KEY 72
108 #define TK_OF 73
109 #define TK_OFFSET 74
110 #define TK_PRAGMA 75
111 #define TK_RAISE 76
112 #define TK_RECURSIVE 77
113 #define TK_RELEASE 78
114 #define TK_RESTRICT 79
115 #define TK_ROW 80
116 #define TK_ROWS 81
117 #define TK_ROLLBACK 82
118 #define TK_SAVEPOINT 83
119 #define TK_TEMP 84
120 #define TK_TRIGGER 85
121 #define TK_VACUUM 86
122 #define TK_VIEW 87
123 #define TK_VIRTUAL 88
124 #define TK_WITH 89
125 #define TK_WITHOUT 90
126 #define TK_NULLS 91
127 #define TK_FIRST 92
128 #define TK_LAST 93
129 #define TK_EXCEPT 94
130 #define TK_INTERSECT 95
131 #define TK_UNION 96
132 #define TK_CURRENT 97
133 #define TK_FOLLOWING 98
134 #define TK_PARTITION 99
135 #define TK_PRECEDING 100
136 #define TK_RANGE 101
137 #define TK_UNBOUNDED 102
138 #define TK_EXCLUDE 103
139 #define TK_GROUPS 104
140 #define TK_OTHERS 105
141 #define TK_TIES 106
142 #define TK_WITHIN 107
143 #define TK_GENERATED 108
144 #define TK_ALWAYS 109
145 #define TK_MATERIALIZED 110
146 #define TK_REINDEX 111
147 #define TK_RENAME 112
148 #define TK_CTIME_KW 113
149 #define TK_IF 114
150 #define TK_ANY 115
151 #define TK_COMMIT 116
152 #define TK_TO 117
153 #define TK_TABLE 118
154 #define TK_EXISTS 119
155 #define TK_LP 120
156 #define TK_RP 121
157 #define TK_AS 122
158 #define TK_COMMA 123
159 #define TK_STRING 124
160 #define TK_CONSTRAINT 125
161 #define TK_DEFAULT 126
162 #define TK_INDEXED 127
163 #define TK_NULL 128
164 #define TK_PRIMARY 129
165 #define TK_UNIQUE 130
166 #define TK_CHECK 131
167 #define TK_REFERENCES 132
168 #define TK_AUTOINCR 133
169 #define TK_INSERT 134
170 #define TK_DELETE 135
171 #define TK_UPDATE 136
172 #define TK_SET 137
173 #define TK_DEFERRABLE 138
174 #define TK_FOREIGN 139
175 #define TK_DROP 140
176 #define TK_ALL 141
177 #define TK_SELECT 142
178 #define TK_VALUES 143
179 #define TK_DISTINCT 144
180 #define TK_DOT 145
181 #define TK_FROM 146
182 #define TK_JOIN 147
183 #define TK_JOIN_KW 148
184 #define TK_USING 149
185 #define TK_ORDER 150
186 #define TK_GROUP 151
187 #define TK_HAVING 152
188 #define TK_LIMIT 153
189 #define TK_WHERE 154
190 #define TK_RETURNING 155
191 #define TK_INTO 156
192 #define TK_NOTHING 157
193 #define TK_FLOAT 158
194 #define TK_BLOB 159
195 #define TK_INTEGER 160
196 #define TK_VARIABLE 161
197 #define TK_CASE 162
198 #define TK_WHEN 163
199 #define TK_THEN 164
200 #define TK_ELSE 165
201 #define TK_INDEX 166
202 #define TK_SEMI 167
203 #define TK_ALTER 168
204 #define TK_ADD 169
205 #define TK_WINDOW 170
206 #define TK_OVER 171
207 #define TK_FILTER 172
208 #define TK_TRANSACTION 173
209 #define TK_SPACE 174
210 #define TK_ILLEGAL 175
211 #endif
212 /**************** End token definitions ***************************************/
213
214 /* The next sections is a series of control #defines.
215 ** various aspects of the generated parser.
216 ** YYCODETYPE is the data type used to store the integer codes
217 ** that represent terminal and non-terminal symbols.
218 ** "unsigned char" is used if there are fewer than
219 ** 256 symbols. Larger types otherwise.
220 ** YYNOCODE is a number of type YYCODETYPE that is not used for
221 ** any terminal or nonterminal symbol.
222 ** YYFALLBACK If defined, this indicates that one or more tokens
223 ** (also known as: "terminal symbols") have fall-back
224 ** values which should be used if the original symbol
225 ** would not parse. This permits keywords to sometimes
226 ** be used as identifiers, for example.
227 ** YYACTIONTYPE is the data type used for "action codes" - numbers
228 ** that indicate what to do in response to the next
229 ** token.
230 ** PerfettoSqlParserTOKENTYPE is the data type used for minor type for terminal
231 ** symbols. Background: A "minor type" is a semantic
232 ** value associated with a terminal or non-terminal
233 ** symbols. For example, for an "ID" terminal symbol,
234 ** the minor type might be the name of the identifier.
235 ** Each non-terminal can have a different minor type.
236 ** Terminal symbols all have the same minor type, though.
237 ** This macros defines the minor type for terminal
238 ** symbols.
239 ** YYMINORTYPE is the data type used for all minor types.
240 ** This is typically a union of many types, one of
241 ** which is PerfettoSqlParserTOKENTYPE. The entry in the union
242 ** for terminal symbols is called "yy0".
243 ** YYSTACKDEPTH is the maximum depth of the parser's stack. If
244 ** zero the stack is dynamically sized using realloc()
245 ** PerfettoSqlParserARG_SDECL A static variable declaration for the %extra_argument
246 ** PerfettoSqlParserARG_PDECL A parameter declaration for the %extra_argument
247 ** PerfettoSqlParserARG_PARAM Code to pass %extra_argument as a subroutine parameter
248 ** PerfettoSqlParserARG_STORE Code to store %extra_argument into yypParser
249 ** PerfettoSqlParserARG_FETCH Code to extract %extra_argument from yypParser
250 ** PerfettoSqlParserCTX_* As PerfettoSqlParserARG_ except for %extra_context
251 ** YYERRORSYMBOL is the code number of the error symbol. If not
252 ** defined, then do no error processing.
253 ** YYNSTATE the combined number of states.
254 ** YYNRULE the number of rules in the grammar
255 ** YYNTOKEN Number of terminal symbols
256 ** YY_MAX_SHIFT Maximum value for shift actions
257 ** YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions
258 ** YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions
259 ** YY_ERROR_ACTION The yy_action[] code for syntax error
260 ** YY_ACCEPT_ACTION The yy_action[] code for accept
261 ** YY_NO_ACTION The yy_action[] code for no-op
262 ** YY_MIN_REDUCE Minimum value for reduce actions
263 ** YY_MAX_REDUCE Maximum value for reduce actions
264 */
265 #ifndef INTERFACE
266 # define INTERFACE 1
267 #endif
268 /************* Begin control #defines *****************************************/
269 #define YYCODETYPE unsigned short int
270 #define YYNOCODE 309
271 #define YYACTIONTYPE unsigned short int
272 #define YYWILDCARD 115
273 #define PerfettoSqlParserTOKENTYPE void*
274 typedef union {
275 int yyinit;
276 PerfettoSqlParserTOKENTYPE yy0;
277 } YYMINORTYPE;
278 #ifndef YYSTACKDEPTH
279 #define YYSTACKDEPTH 100
280 #endif
281 #define PerfettoSqlParserARG_SDECL
282 #define PerfettoSqlParserARG_PDECL
283 #define PerfettoSqlParserARG_PARAM
284 #define PerfettoSqlParserARG_FETCH
285 #define PerfettoSqlParserARG_STORE
286 #define PerfettoSqlParserCTX_SDECL
287 #define PerfettoSqlParserCTX_PDECL
288 #define PerfettoSqlParserCTX_PARAM
289 #define PerfettoSqlParserCTX_FETCH
290 #define PerfettoSqlParserCTX_STORE
291 #define YYFALLBACK 1
292 #define YYNSTATE 579
293 #define YYNRULE 405
294 #define YYNRULE_WITH_ACTION 0
295 #define YYNTOKEN 176
296 #define YY_MAX_SHIFT 578
297 #define YY_MIN_SHIFTREDUCE 838
298 #define YY_MAX_SHIFTREDUCE 1242
299 #define YY_ERROR_ACTION 1243
300 #define YY_ACCEPT_ACTION 1244
301 #define YY_NO_ACTION 1245
302 #define YY_MIN_REDUCE 1246
303 #define YY_MAX_REDUCE 1650
304 /************* End control #defines *******************************************/
305 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
306
307 /* Define the yytestcase() macro to be a no-op if is not already defined
308 ** otherwise.
309 **
310 ** Applications can choose to define yytestcase() in the %include section
311 ** to a macro that can assist in verifying code coverage. For production
312 ** code the yytestcase() macro should be turned off. But it is useful
313 ** for testing.
314 */
315 #ifndef yytestcase
316 # define yytestcase(X)
317 #endif
318
319
320 /* Next are the tables used to determine what action to take based on the
321 ** current state and lookahead token. These tables are used to implement
322 ** functions that take a state number and lookahead value and return an
323 ** action integer.
324 **
325 ** Suppose the action integer is N. Then the action is determined as
326 ** follows
327 **
328 ** 0 <= N <= YY_MAX_SHIFT Shift N. That is, push the lookahead
329 ** token onto the stack and goto state N.
330 **
331 ** N between YY_MIN_SHIFTREDUCE Shift to an arbitrary state then
332 ** and YY_MAX_SHIFTREDUCE reduce by rule N-YY_MIN_SHIFTREDUCE.
333 **
334 ** N == YY_ERROR_ACTION A syntax error has occurred.
335 **
336 ** N == YY_ACCEPT_ACTION The parser accepts its input.
337 **
338 ** N == YY_NO_ACTION No such action. Denotes unused
339 ** slots in the yy_action[] table.
340 **
341 ** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE
342 ** and YY_MAX_REDUCE
343 **
344 ** The action table is constructed as a single large table named yy_action[].
345 ** Given state S and lookahead X, the action is computed as either:
346 **
347 ** (A) N = yy_action[ yy_shift_ofst[S] + X ]
348 ** (B) N = yy_default[S]
349 **
350 ** The (A) formula is preferred. The B formula is used instead if
351 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X.
352 **
353 ** The formulas above are for computing the action when the lookahead is
354 ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
355 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
356 ** the yy_shift_ofst[] array.
357 **
358 ** The following are the tables generated in this section:
359 **
360 ** yy_action[] A single table containing all actions.
361 ** yy_lookahead[] A table containing the lookahead for each entry in
362 ** yy_action. Used to detect hash collisions.
363 ** yy_shift_ofst[] For each state, the offset into yy_action for
364 ** shifting terminals.
365 ** yy_reduce_ofst[] For each state, the offset into yy_action for
366 ** shifting non-terminals after a reduce.
367 ** yy_default[] Default action for each state.
368 **
369 *********** Begin parsing tables **********************************************/
370 #define YY_ACTTAB_COUNT (2098)
371 static const YYACTIONTYPE yy_action[] = {
372 /* 0 */ 1607, 119, 116, 231, 282, 119, 116, 231, 1607, 126,
373 /* 10 */ 128, 411, 81, 1217, 1217, 1054, 1057, 1044, 1044, 124,
374 /* 20 */ 124, 125, 125, 125, 125, 1529, 123, 123, 123, 123,
375 /* 30 */ 122, 122, 121, 121, 121, 120, 117, 449, 120, 117,
376 /* 40 */ 449, 1041, 1041, 1055, 1058, 974, 122, 122, 121, 121,
377 /* 50 */ 121, 120, 117, 449, 449, 342, 975, 121, 121, 121,
378 /* 60 */ 120, 117, 449, 119, 116, 231, 126, 128, 411, 81,
379 /* 70 */ 1217, 1217, 1054, 1057, 1044, 1044, 124, 124, 125, 125,
380 /* 80 */ 125, 125, 564, 123, 123, 123, 123, 122, 122, 121,
381 /* 90 */ 121, 121, 120, 117, 449, 126, 128, 411, 81, 1217,
382 /* 100 */ 1217, 1054, 1057, 1044, 1044, 124, 124, 125, 125, 125,
383 /* 110 */ 125, 1279, 123, 123, 123, 123, 122, 122, 121, 121,
384 /* 120 */ 121, 120, 117, 449, 126, 128, 411, 81, 1217, 1217,
385 /* 130 */ 1054, 1057, 1044, 1044, 124, 124, 125, 125, 125, 125,
386 /* 140 */ 1493, 123, 123, 123, 123, 122, 122, 121, 121, 121,
387 /* 150 */ 120, 117, 449, 564, 564, 1164, 1045, 1164, 376, 1282,
388 /* 160 */ 129, 125, 125, 125, 125, 118, 123, 123, 123, 123,
389 /* 170 */ 122, 122, 121, 121, 121, 120, 117, 449, 1010, 450,
390 /* 180 */ 529, 238, 368, 125, 125, 125, 125, 87, 123, 123,
391 /* 190 */ 123, 123, 122, 122, 121, 121, 121, 120, 117, 449,
392 /* 200 */ 233, 529, 487, 359, 458, 455, 454, 415, 127, 100,
393 /* 210 */ 1138, 119, 116, 231, 453, 1140, 1642, 418, 1642, 126,
394 /* 220 */ 128, 411, 81, 1217, 1217, 1054, 1057, 1044, 1044, 124,
395 /* 230 */ 124, 125, 125, 125, 125, 548, 123, 123, 123, 123,
396 /* 240 */ 122, 122, 121, 121, 121, 120, 117, 449, 126, 128,
397 /* 250 */ 411, 81, 1217, 1217, 1054, 1057, 1044, 1044, 124, 124,
398 /* 260 */ 125, 125, 125, 125, 1281, 123, 123, 123, 123, 122,
399 /* 270 */ 122, 121, 121, 121, 120, 117, 449, 126, 128, 411,
400 /* 280 */ 81, 1217, 1217, 1054, 1057, 1044, 1044, 124, 124, 125,
401 /* 290 */ 125, 125, 125, 1557, 123, 123, 123, 123, 122, 122,
402 /* 300 */ 121, 121, 121, 120, 117, 449, 328, 1101, 1101, 510,
403 /* 310 */ 357, 482, 345, 530, 530, 126, 128, 411, 81, 1217,
404 /* 320 */ 1217, 1054, 1057, 1044, 1044, 124, 124, 125, 125, 125,
405 /* 330 */ 125, 321, 123, 123, 123, 123, 122, 122, 121, 121,
406 /* 340 */ 121, 120, 117, 449, 126, 128, 411, 81, 1217, 1217,
407 /* 350 */ 1054, 1057, 1044, 1044, 124, 124, 125, 125, 125, 125,
408 /* 360 */ 464, 123, 123, 123, 123, 122, 122, 121, 121, 121,
409 /* 370 */ 120, 117, 449, 126, 128, 411, 81, 1217, 1217, 1054,
410 /* 380 */ 1057, 1044, 1044, 124, 124, 125, 125, 125, 125, 879,
411 /* 390 */ 123, 123, 123, 123, 122, 122, 121, 121, 121, 120,
412 /* 400 */ 117, 449, 1138, 929, 929, 572, 521, 1140, 1643, 225,
413 /* 410 */ 1643, 126, 128, 411, 81, 1217, 1217, 1054, 1057, 1044,
414 /* 420 */ 1044, 124, 124, 125, 125, 125, 125, 872, 123, 123,
415 /* 430 */ 123, 123, 122, 122, 121, 121, 121, 120, 117, 449,
416 /* 440 */ 98, 126, 128, 411, 81, 1217, 1217, 1054, 1057, 1044,
417 /* 450 */ 1044, 124, 124, 125, 125, 125, 125, 88, 123, 123,
418 /* 460 */ 123, 123, 122, 122, 121, 121, 121, 120, 117, 449,
419 /* 470 */ 126, 128, 411, 81, 1217, 1217, 1054, 1057, 1044, 1044,
420 /* 480 */ 124, 124, 125, 125, 125, 125, 513, 123, 123, 123,
421 /* 490 */ 123, 122, 122, 121, 121, 121, 120, 117, 449, 123,
422 /* 500 */ 123, 123, 123, 122, 122, 121, 121, 121, 120, 117,
423 /* 510 */ 449, 1613, 144, 570, 974, 519, 144, 570, 445, 216,
424 /* 520 */ 570, 407, 522, 1032, 554, 975, 425, 1317, 531, 1296,
425 /* 530 */ 518, 377, 1031, 74, 74, 1098, 1317, 51, 51, 1098,
426 /* 540 */ 74, 74, 498, 1020, 230, 536, 288, 1019, 288, 476,
427 /* 550 */ 16, 16, 288, 1015, 288, 288, 368, 288, 567, 288,
428 /* 560 */ 508, 288, 261, 227, 567, 319, 571, 567, 553, 319,
429 /* 570 */ 571, 567, 532, 1563, 6, 553, 555, 1019, 1019, 1021,
430 /* 580 */ 569, 494, 1177, 520, 119, 116, 231, 471, 371, 445,
431 /* 590 */ 445, 438, 126, 128, 411, 81, 1217, 1217, 1054, 1057,
432 /* 600 */ 1044, 1044, 124, 124, 125, 125, 125, 125, 1010, 123,
433 /* 610 */ 123, 123, 123, 122, 122, 121, 121, 121, 120, 117,
434 /* 620 */ 449, 126, 128, 411, 81, 1217, 1217, 1054, 1057, 1044,
435 /* 630 */ 1044, 124, 124, 125, 125, 125, 125, 524, 123, 123,
436 /* 640 */ 123, 123, 122, 122, 121, 121, 121, 120, 117, 449,
437 /* 650 */ 126, 128, 411, 81, 1217, 1217, 1054, 1057, 1044, 1044,
438 /* 660 */ 124, 124, 125, 125, 125, 125, 1193, 123, 123, 123,
439 /* 670 */ 123, 122, 122, 121, 121, 121, 120, 117, 449, 126,
440 /* 680 */ 128, 411, 81, 1217, 1217, 1054, 1057, 1044, 1044, 124,
441 /* 690 */ 124, 125, 125, 125, 125, 144, 123, 123, 123, 123,
442 /* 700 */ 122, 122, 121, 121, 121, 120, 117, 449, 126, 115,
443 /* 710 */ 411, 81, 1217, 1217, 1054, 1057, 1044, 1044, 124, 124,
444 /* 720 */ 125, 125, 125, 125, 228, 123, 123, 123, 123, 122,
445 /* 730 */ 122, 121, 121, 121, 120, 117, 449, 1239, 1584, 297,
446 /* 740 */ 357, 570, 399, 1238, 1159, 1644, 400, 106, 319, 571,
447 /* 750 */ 1194, 233, 366, 1193, 388, 458, 455, 454, 444, 443,
448 /* 760 */ 570, 13, 13, 211, 1159, 453, 1268, 1159, 380, 346,
449 /* 770 */ 288, 348, 288, 320, 1193, 419, 109, 1193, 1268, 475,
450 /* 780 */ 42, 42, 567, 427, 1498, 390, 103, 128, 411, 81,
451 /* 790 */ 1217, 1217, 1054, 1057, 1044, 1044, 124, 124, 125, 125,
452 /* 800 */ 125, 125, 349, 123, 123, 123, 123, 122, 122, 121,
453 /* 810 */ 121, 121, 120, 117, 449, 411, 81, 1217, 1217, 1054,
454 /* 820 */ 1057, 1044, 1044, 124, 124, 125, 125, 125, 125, 113,
455 /* 830 */ 123, 123, 123, 123, 122, 122, 121, 121, 121, 120,
456 /* 840 */ 117, 449, 570, 178, 2, 462, 462, 344, 111, 111,
457 /* 850 */ 347, 293, 153, 570, 404, 403, 112, 193, 447, 916,
458 /* 860 */ 462, 1194, 74, 74, 1193, 475, 474, 475, 875, 565,
459 /* 870 */ 1498, 1500, 1498, 74, 74, 1313, 2, 462, 462, 374,
460 /* 880 */ 374, 1438, 370, 293, 153, 1193, 1225, 284, 1225, 960,
461 /* 890 */ 427, 288, 462, 288, 559, 424, 1269, 553, 1118, 546,
462 /* 900 */ 444, 443, 478, 567, 12, 552, 478, 144, 553, 1222,
463 /* 910 */ 1193, 1193, 570, 960, 229, 1193, 442, 251, 1355, 314,
464 /* 920 */ 1119, 421, 915, 288, 382, 288, 373, 545, 378, 1438,
465 /* 930 */ 570, 1031, 74, 74, 533, 567, 1170, 562, 4, 1117,
466 /* 940 */ 502, 1031, 568, 113, 85, 447, 1019, 8, 1159, 251,
467 /* 950 */ 13, 13, 1020, 463, 209, 875, 1019, 527, 527, 6,
468 /* 960 */ 319, 571, 111, 111, 292, 234, 447, 525, 1159, 570,
469 /* 970 */ 112, 1159, 447, 1244, 1, 1, 1019, 1019, 1021, 1022,
470 /* 980 */ 28, 1170, 503, 565, 1213, 463, 1019, 1019, 1021, 42,
471 /* 990 */ 42, 178, 466, 1556, 1194, 1194, 1224, 1193, 1193, 1194,
472 /* 1000 */ 570, 1193, 1193, 867, 208, 1223, 325, 1587, 559, 240,
473 /* 1010 */ 278, 1300, 327, 469, 330, 468, 239, 405, 1193, 1193,
474 /* 1020 */ 42, 42, 328, 1193, 1193, 459, 461, 461, 1225, 542,
475 /* 1030 */ 1225, 208, 293, 153, 541, 459, 301, 459, 148, 324,
476 /* 1040 */ 1612, 461, 904, 935, 396, 1031, 934, 1159, 237, 236,
477 /* 1050 */ 235, 562, 4, 1586, 852, 370, 568, 199, 570, 447,
478 /* 1060 */ 1019, 149, 1193, 1193, 9, 540, 264, 1159, 1213, 1299,
479 /* 1070 */ 1159, 1193, 288, 1193, 288, 1193, 319, 571, 72, 72,
480 /* 1080 */ 447, 1297, 570, 152, 567, 1194, 375, 867, 1193, 375,
481 /* 1090 */ 1019, 1019, 1021, 1022, 28, 417, 155, 245, 251, 340,
482 /* 1100 */ 1320, 290, 74, 74, 1159, 537, 537, 6, 1194, 1193,
483 /* 1110 */ 339, 1193, 843, 394, 895, 578, 539, 544, 845, 496,
484 /* 1120 */ 544, 496, 549, 844, 1159, 113, 855, 1159, 247, 496,
485 /* 1130 */ 485, 391, 1193, 467, 463, 393, 275, 315, 381, 172,
486 /* 1140 */ 427, 852, 143, 896, 111, 111, 1194, 1194, 940, 1193,
487 /* 1150 */ 1193, 194, 112, 5, 447, 1194, 1193, 1194, 1193, 1194,
488 /* 1160 */ 1193, 1320, 1193, 1322, 246, 565, 155, 513, 1196, 394,
489 /* 1170 */ 1193, 1193, 1076, 538, 507, 281, 1298, 281, 90, 1193,
490 /* 1180 */ 504, 1193, 962, 1193, 245, 1096, 340, 567, 290, 299,
491 /* 1190 */ 559, 302, 570, 412, 1193, 319, 571, 339, 1437, 305,
492 /* 1200 */ 394, 422, 578, 901, 210, 1193, 1266, 1528, 1485, 225,
493 /* 1210 */ 570, 542, 134, 134, 902, 247, 543, 370, 391, 1193,
494 /* 1220 */ 1181, 473, 393, 275, 1322, 1334, 172, 1031, 113, 143,
495 /* 1230 */ 13, 13, 219, 562, 4, 567, 502, 288, 568, 288,
496 /* 1240 */ 1194, 447, 1019, 1193, 430, 378, 1437, 111, 111, 567,
497 /* 1250 */ 113, 246, 1196, 496, 513, 112, 394, 447, 158, 432,
498 /* 1260 */ 487, 359, 447, 329, 1193, 12, 570, 521, 565, 111,
499 /* 1270 */ 111, 939, 1019, 1019, 1021, 1022, 28, 112, 1194, 447,
500 /* 1280 */ 412, 1193, 319, 571, 570, 35, 13, 13, 479, 1194,
501 /* 1290 */ 565, 570, 1193, 559, 1492, 97, 570, 960, 410, 3,
502 /* 1300 */ 435, 961, 1193, 1194, 13, 13, 1193, 1181, 473, 1118,
503 /* 1310 */ 502, 13, 13, 1193, 542, 559, 136, 136, 547, 541,
504 /* 1320 */ 113, 960, 229, 307, 432, 440, 548, 1193, 158, 882,
505 /* 1330 */ 1031, 1119, 356, 558, 570, 477, 562, 4, 205, 111,
506 /* 1340 */ 111, 568, 80, 486, 447, 1019, 150, 112, 1436, 447,
507 /* 1350 */ 1117, 208, 1031, 570, 13, 13, 1561, 6, 562, 4,
508 /* 1360 */ 565, 111, 111, 568, 397, 447, 447, 1019, 203, 112,
509 /* 1370 */ 570, 447, 570, 74, 74, 1019, 1019, 1021, 1022, 28,
510 /* 1380 */ 513, 513, 565, 522, 291, 559, 513, 447, 1271, 416,
511 /* 1390 */ 13, 13, 74, 74, 570, 378, 1436, 1019, 1019, 1021,
512 /* 1400 */ 1022, 28, 1562, 6, 204, 523, 308, 559, 316, 1560,
513 /* 1410 */ 6, 1239, 113, 882, 44, 44, 399, 1139, 1559, 6,
514 /* 1420 */ 1329, 1325, 1031, 306, 480, 570, 364, 446, 562, 4,
515 /* 1430 */ 515, 111, 111, 568, 410, 433, 447, 1019, 300, 112,
516 /* 1440 */ 1278, 447, 300, 561, 1031, 74, 74, 146, 1213, 37,
517 /* 1450 */ 562, 4, 565, 551, 288, 568, 288, 447, 447, 1019,
518 /* 1460 */ 852, 288, 570, 288, 570, 1328, 567, 1019, 1019, 1021,
519 /* 1470 */ 1022, 28, 97, 567, 288, 550, 288, 559, 291, 447,
520 /* 1480 */ 448, 570, 45, 45, 46, 46, 567, 563, 416, 1019,
521 /* 1490 */ 1019, 1021, 1022, 28, 420, 180, 288, 570, 288, 370,
522 /* 1500 */ 433, 47, 47, 245, 1212, 340, 434, 290, 567, 370,
523 /* 1510 */ 289, 110, 289, 108, 1031, 570, 339, 56, 56, 394,
524 /* 1520 */ 562, 4, 567, 570, 492, 568, 570, 219, 447, 1019,
525 /* 1530 */ 264, 570, 1213, 570, 247, 57, 57, 391, 319, 571,
526 /* 1540 */ 154, 393, 275, 15, 15, 172, 48, 48, 143, 447,
527 /* 1550 */ 156, 58, 58, 49, 49, 287, 570, 509, 570, 1019,
528 /* 1560 */ 1019, 1021, 1022, 28, 570, 238, 570, 91, 215, 570,
529 /* 1570 */ 246, 434, 570, 1539, 570, 394, 59, 59, 60, 60,
530 /* 1580 */ 1601, 439, 523, 570, 61, 61, 62, 62, 489, 63,
531 /* 1590 */ 63, 415, 64, 64, 65, 65, 570, 493, 410, 412,
532 /* 1600 */ 1541, 319, 571, 66, 66, 570, 472, 410, 500, 570,
533 /* 1610 */ 154, 570, 1233, 570, 318, 570, 67, 67, 570, 1537,
534 /* 1620 */ 156, 570, 509, 570, 410, 50, 50, 473, 570, 52,
535 /* 1630 */ 52, 14, 14, 132, 132, 133, 133, 570, 69, 69,
536 /* 1640 */ 218, 53, 53, 70, 70, 570, 439, 570, 71, 71,
537 /* 1650 */ 570, 32, 570, 935, 103, 570, 934, 54, 54, 570,
538 /* 1660 */ 451, 570, 260, 570, 886, 165, 165, 166, 166, 296,
539 /* 1670 */ 78, 78, 55, 55, 570, 135, 135, 244, 570, 73,
540 /* 1680 */ 73, 163, 163, 137, 137, 570, 322, 570, 103, 570,
541 /* 1690 */ 286, 227, 428, 517, 131, 131, 570, 336, 164, 164,
542 /* 1700 */ 570, 1135, 570, 401, 248, 157, 157, 141, 141, 140,
543 /* 1710 */ 140, 570, 894, 570, 893, 570, 138, 138, 570, 334,
544 /* 1720 */ 139, 139, 76, 76, 501, 488, 490, 250, 1083, 333,
545 /* 1730 */ 1023, 68, 68, 77, 77, 75, 75, 162, 43, 43,
546 /* 1740 */ 355, 1353, 103, 1012, 337, 263, 354, 303, 495, 338,
547 /* 1750 */ 263, 31, 341, 497, 19, 263, 360, 1079, 103, 260,
548 /* 1760 */ 965, 161, 263, 103, 977, 978, 534, 1095, 1094, 1095,
549 /* 1770 */ 1094, 865, 933, 151, 127, 932, 1367, 127, 201, 1366,
550 /* 1780 */ 481, 1544, 350, 1517, 1516, 505, 361, 1363, 365, 369,
551 /* 1790 */ 1575, 221, 1144, 1376, 1421, 1349, 556, 557, 1426, 387,
552 /* 1800 */ 514, 1361, 389, 213, 1257, 1256, 1258, 1594, 279, 11,
553 /* 1810 */ 1346, 311, 1083, 312, 1023, 313, 395, 1597, 243, 1403,
554 /* 1820 */ 1408, 298, 352, 353, 224, 304, 1396, 499, 1413, 1358,
555 /* 1830 */ 1359, 198, 1412, 456, 470, 408, 33, 332, 83, 423,
556 /* 1840 */ 1296, 886, 460, 1233, 182, 1489, 1488, 560, 272, 90,
557 /* 1850 */ 241, 1230, 217, 1536, 1534, 398, 1316, 191, 1315, 1314,
558 /* 1860 */ 1609, 426, 177, 483, 1286, 331, 358, 1611, 1610, 402,
559 /* 1870 */ 1285, 1284, 1307, 484, 220, 385, 1306, 206, 207, 575,
560 /* 1880 */ 253, 98, 96, 506, 257, 1357, 1356, 512, 436, 280,
561 /* 1890 */ 259, 437, 130, 548, 184, 266, 265, 186, 187, 188,
562 /* 1900 */ 189, 441, 230, 10, 107, 99, 526, 1187, 1417, 379,
563 /* 1910 */ 406, 195, 333, 367, 491, 277, 576, 386, 271, 273,
564 /* 1920 */ 409, 1259, 274, 179, 1483, 1254, 276, 1249, 1409, 36,
565 /* 1930 */ 232, 452, 82, 17, 18, 573, 323, 1494, 1415, 1414,
566 /* 1940 */ 38, 457, 170, 1339, 372, 1183, 142, 1182, 214, 86,
567 /* 1950 */ 89, 884, 326, 145, 1521, 384, 212, 1338, 383, 222,
568 /* 1960 */ 223, 294, 1522, 897, 1381, 1380, 1520, 1519, 79, 465,
569 /* 1970 */ 309, 310, 84, 295, 1505, 363, 171, 335, 242, 1093,
570 /* 1980 */ 147, 1470, 343, 183, 1091, 317, 173, 1212, 249, 185,
571 /* 1990 */ 918, 516, 351, 252, 190, 429, 1107, 431, 192, 92,
572 /* 2000 */ 93, 94, 174, 95, 175, 176, 1110, 254, 1106, 159,
573 /* 2010 */ 20, 256, 362, 1566, 1565, 255, 1099, 263, 196, 167,
574 /* 2020 */ 1227, 511, 168, 258, 1580, 197, 1146, 39, 1145, 226,
575 /* 2030 */ 283, 285, 200, 969, 262, 169, 963, 127, 413, 181,
576 /* 2040 */ 414, 21, 528, 1150, 34, 22, 102, 1060, 202, 160,
577 /* 2050 */ 101, 535, 23, 1175, 24, 25, 1161, 1165, 1163, 7,
578 /* 2060 */ 1168, 103, 1169, 26, 27, 104, 574, 1074, 1061, 1059,
579 /* 2070 */ 1116, 1064, 1115, 267, 268, 105, 566, 839, 1063, 40,
580 /* 2080 */ 1602, 269, 928, 577, 1024, 866, 114, 29, 30, 854,
581 /* 2090 */ 392, 41, 1245, 1245, 1245, 1245, 1245, 270,
582 };
583 static const YYCODETYPE yy_lookahead[] = {
584 /* 0 */ 200, 257, 258, 259, 198, 257, 258, 259, 208, 9,
585 /* 10 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
586 /* 20 */ 20, 21, 22, 23, 24, 281, 26, 27, 28, 29,
587 /* 30 */ 30, 31, 32, 33, 34, 35, 36, 37, 35, 36,
588 /* 40 */ 37, 13, 14, 15, 16, 45, 30, 31, 32, 33,
589 /* 50 */ 34, 35, 36, 37, 37, 181, 56, 32, 33, 34,
590 /* 60 */ 35, 36, 37, 257, 258, 259, 9, 10, 11, 12,
591 /* 70 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
592 /* 80 */ 23, 24, 197, 26, 27, 28, 29, 30, 31, 32,
593 /* 90 */ 33, 34, 35, 36, 37, 9, 10, 11, 12, 13,
594 /* 100 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
595 /* 110 */ 24, 201, 26, 27, 28, 29, 30, 31, 32, 33,
596 /* 120 */ 34, 35, 36, 37, 9, 10, 11, 12, 13, 14,
597 /* 130 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
598 /* 140 */ 266, 26, 27, 28, 29, 30, 31, 32, 33, 34,
599 /* 150 */ 35, 36, 37, 268, 269, 98, 128, 100, 204, 201,
600 /* 160 */ 74, 21, 22, 23, 24, 25, 26, 27, 28, 29,
601 /* 170 */ 30, 31, 32, 33, 34, 35, 36, 37, 2, 11,
602 /* 180 */ 181, 13, 181, 21, 22, 23, 24, 72, 26, 27,
603 /* 190 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
604 /* 200 */ 125, 181, 135, 136, 129, 130, 131, 39, 123, 123,
605 /* 210 */ 115, 257, 258, 259, 139, 120, 121, 216, 123, 9,
606 /* 220 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
607 /* 230 */ 20, 21, 22, 23, 24, 150, 26, 27, 28, 29,
608 /* 240 */ 30, 31, 32, 33, 34, 35, 36, 37, 9, 10,
609 /* 250 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
610 /* 260 */ 21, 22, 23, 24, 201, 26, 27, 28, 29, 30,
611 /* 270 */ 31, 32, 33, 34, 35, 36, 37, 9, 10, 11,
612 /* 280 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
613 /* 290 */ 22, 23, 24, 294, 26, 27, 28, 29, 30, 31,
614 /* 300 */ 32, 33, 34, 35, 36, 37, 138, 134, 135, 136,
615 /* 310 */ 134, 135, 136, 293, 294, 9, 10, 11, 12, 13,
616 /* 320 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
617 /* 330 */ 24, 121, 26, 27, 28, 29, 30, 31, 32, 33,
618 /* 340 */ 34, 35, 36, 37, 9, 10, 11, 12, 13, 14,
619 /* 350 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
620 /* 360 */ 121, 26, 27, 28, 29, 30, 31, 32, 33, 34,
621 /* 370 */ 35, 36, 37, 9, 10, 11, 12, 13, 14, 15,
622 /* 380 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 121,
623 /* 390 */ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
624 /* 400 */ 36, 37, 115, 94, 95, 96, 11, 120, 121, 123,
625 /* 410 */ 123, 9, 10, 11, 12, 13, 14, 15, 16, 17,
626 /* 420 */ 18, 19, 20, 21, 22, 23, 24, 121, 26, 27,
627 /* 430 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
628 /* 440 */ 154, 9, 10, 11, 12, 13, 14, 15, 16, 17,
629 /* 450 */ 18, 19, 20, 21, 22, 23, 24, 122, 26, 27,
630 /* 460 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
631 /* 470 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
632 /* 480 */ 19, 20, 21, 22, 23, 24, 181, 26, 27, 28,
633 /* 490 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 26,
634 /* 500 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
635 /* 510 */ 37, 214, 89, 181, 45, 192, 89, 181, 197, 155,
636 /* 520 */ 181, 192, 127, 121, 192, 56, 221, 208, 192, 210,
637 /* 530 */ 181, 204, 113, 201, 202, 43, 217, 201, 202, 47,
638 /* 540 */ 201, 202, 181, 124, 171, 172, 223, 128, 225, 126,
639 /* 550 */ 201, 202, 223, 121, 225, 223, 181, 225, 235, 223,
640 /* 560 */ 68, 225, 239, 240, 235, 142, 143, 235, 236, 142,
641 /* 570 */ 143, 235, 236, 296, 297, 236, 244, 158, 159, 160,
642 /* 580 */ 181, 252, 121, 244, 257, 258, 259, 282, 181, 268,
643 /* 590 */ 269, 216, 9, 10, 11, 12, 13, 14, 15, 16,
644 /* 600 */ 17, 18, 19, 20, 21, 22, 23, 24, 2, 26,
645 /* 610 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
646 /* 620 */ 37, 9, 10, 11, 12, 13, 14, 15, 16, 17,
647 /* 630 */ 18, 19, 20, 21, 22, 23, 24, 181, 26, 27,
648 /* 640 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
649 /* 650 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
650 /* 660 */ 19, 20, 21, 22, 23, 24, 40, 26, 27, 28,
651 /* 670 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 9,
652 /* 680 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
653 /* 690 */ 20, 21, 22, 23, 24, 89, 26, 27, 28, 29,
654 /* 700 */ 30, 31, 32, 33, 34, 35, 36, 37, 9, 10,
655 /* 710 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
656 /* 720 */ 21, 22, 23, 24, 181, 26, 27, 28, 29, 30,
657 /* 730 */ 31, 32, 33, 34, 35, 36, 37, 115, 181, 192,
658 /* 740 */ 134, 181, 120, 121, 81, 288, 289, 164, 142, 143,
659 /* 750 */ 124, 125, 85, 127, 87, 129, 130, 131, 30, 31,
660 /* 760 */ 181, 201, 202, 122, 101, 139, 181, 104, 181, 85,
661 /* 770 */ 223, 87, 225, 181, 148, 215, 164, 40, 193, 181,
662 /* 780 */ 201, 202, 235, 181, 181, 118, 123, 10, 11, 12,
663 /* 790 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
664 /* 800 */ 23, 24, 118, 26, 27, 28, 29, 30, 31, 32,
665 /* 810 */ 33, 34, 35, 36, 37, 11, 12, 13, 14, 15,
666 /* 820 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 11,
667 /* 830 */ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
668 /* 840 */ 36, 37, 181, 181, 176, 177, 178, 245, 30, 31,
669 /* 850 */ 166, 183, 184, 181, 30, 31, 38, 120, 40, 2,
670 /* 860 */ 192, 124, 201, 202, 127, 267, 268, 269, 40, 51,
671 /* 870 */ 267, 268, 269, 201, 202, 181, 176, 177, 178, 300,
672 /* 880 */ 301, 256, 181, 183, 184, 148, 158, 121, 160, 123,
673 /* 890 */ 181, 223, 192, 225, 76, 11, 181, 236, 41, 69,
674 /* 900 */ 30, 31, 243, 235, 198, 244, 247, 89, 236, 39,
675 /* 910 */ 40, 40, 181, 147, 148, 40, 244, 249, 242, 243,
676 /* 920 */ 63, 37, 65, 223, 232, 225, 234, 97, 303, 304,
677 /* 930 */ 181, 113, 201, 202, 32, 235, 106, 119, 120, 82,
678 /* 940 */ 181, 113, 124, 11, 120, 127, 128, 15, 81, 249,
679 /* 950 */ 201, 202, 124, 285, 245, 127, 128, 295, 296, 297,
680 /* 960 */ 142, 143, 30, 31, 215, 90, 148, 236, 101, 181,
681 /* 970 */ 38, 104, 40, 305, 306, 307, 158, 159, 160, 161,
682 /* 980 */ 162, 151, 276, 51, 40, 285, 158, 159, 160, 201,
683 /* 990 */ 202, 181, 108, 292, 124, 124, 126, 127, 127, 124,
684 /* 1000 */ 181, 40, 127, 40, 181, 135, 122, 307, 76, 125,
685 /* 1010 */ 126, 211, 128, 129, 130, 131, 132, 194, 148, 148,
686 /* 1020 */ 201, 202, 138, 148, 40, 181, 177, 178, 158, 97,
687 /* 1030 */ 160, 181, 183, 184, 102, 191, 277, 193, 77, 189,
688 /* 1040 */ 121, 192, 123, 141, 194, 113, 144, 81, 134, 135,
689 /* 1050 */ 136, 119, 120, 0, 1, 181, 124, 123, 181, 127,
690 /* 1060 */ 128, 77, 40, 40, 120, 99, 122, 101, 124, 211,
691 /* 1070 */ 104, 40, 223, 40, 225, 40, 142, 143, 201, 202,
692 /* 1080 */ 148, 181, 181, 120, 235, 124, 298, 124, 127, 301,
693 /* 1090 */ 158, 159, 160, 161, 162, 185, 222, 44, 249, 46,
694 /* 1100 */ 218, 48, 201, 202, 81, 295, 296, 297, 124, 148,
695 /* 1110 */ 57, 127, 55, 60, 50, 62, 150, 298, 61, 181,
696 /* 1120 */ 301, 181, 99, 66, 101, 11, 84, 104, 75, 181,
697 /* 1130 */ 88, 78, 148, 69, 285, 82, 83, 236, 261, 86,
698 /* 1140 */ 181, 1, 89, 79, 30, 31, 124, 124, 32, 127,
699 /* 1150 */ 127, 120, 38, 120, 40, 124, 40, 124, 127, 124,
700 /* 1160 */ 127, 279, 127, 218, 111, 51, 292, 181, 40, 116,
701 /* 1170 */ 148, 148, 130, 150, 264, 223, 211, 225, 156, 148,
702 /* 1180 */ 270, 148, 147, 148, 44, 60, 46, 235, 48, 251,
703 /* 1190 */ 76, 251, 181, 140, 40, 142, 143, 57, 256, 251,
704 /* 1200 */ 60, 137, 62, 55, 245, 40, 192, 221, 166, 123,
705 /* 1210 */ 181, 97, 201, 202, 66, 75, 102, 181, 78, 40,
706 /* 1220 */ 167, 168, 82, 83, 279, 225, 86, 113, 11, 89,
707 /* 1230 */ 201, 202, 146, 119, 120, 235, 181, 223, 124, 225,
708 /* 1240 */ 124, 127, 128, 127, 215, 303, 304, 30, 31, 235,
709 /* 1250 */ 11, 111, 124, 181, 181, 38, 116, 40, 222, 181,
710 /* 1260 */ 135, 136, 148, 181, 148, 198, 181, 11, 51, 30,
711 /* 1270 */ 31, 32, 158, 159, 160, 161, 162, 38, 124, 40,
712 /* 1280 */ 140, 127, 142, 143, 181, 120, 201, 202, 227, 124,
713 /* 1290 */ 51, 181, 127, 76, 221, 39, 181, 123, 237, 120,
714 /* 1300 */ 215, 147, 148, 124, 201, 202, 127, 167, 168, 41,
715 /* 1310 */ 181, 201, 202, 148, 97, 76, 201, 202, 215, 102,
716 /* 1320 */ 11, 147, 148, 251, 246, 215, 150, 148, 292, 40,
717 /* 1330 */ 113, 63, 277, 65, 181, 252, 119, 120, 271, 30,
718 /* 1340 */ 31, 124, 11, 276, 127, 128, 170, 38, 256, 40,
719 /* 1350 */ 82, 181, 113, 181, 201, 202, 296, 297, 119, 120,
720 /* 1360 */ 51, 30, 31, 124, 194, 148, 127, 128, 215, 38,
721 /* 1370 */ 181, 40, 181, 201, 202, 158, 159, 160, 161, 162,
722 /* 1380 */ 181, 181, 51, 127, 214, 76, 181, 148, 195, 196,
723 /* 1390 */ 201, 202, 201, 202, 181, 303, 304, 158, 159, 160,
724 /* 1400 */ 161, 162, 296, 297, 215, 149, 277, 76, 236, 296,
725 /* 1410 */ 297, 115, 11, 124, 201, 202, 120, 121, 296, 297,
726 /* 1420 */ 221, 221, 113, 192, 227, 181, 221, 236, 119, 120,
727 /* 1430 */ 192, 30, 31, 124, 237, 181, 127, 128, 243, 38,
728 /* 1440 */ 181, 40, 247, 192, 113, 201, 202, 120, 40, 122,
729 /* 1450 */ 119, 120, 51, 144, 223, 124, 225, 148, 127, 128,
730 /* 1460 */ 1, 223, 181, 225, 181, 192, 235, 158, 159, 160,
731 /* 1470 */ 161, 162, 39, 235, 223, 144, 225, 76, 308, 148,
732 /* 1480 */ 236, 181, 201, 202, 201, 202, 235, 195, 196, 158,
733 /* 1490 */ 159, 160, 161, 162, 286, 287, 223, 181, 225, 181,
734 /* 1500 */ 246, 201, 202, 44, 123, 46, 181, 48, 235, 181,
735 /* 1510 */ 223, 163, 225, 165, 113, 181, 57, 201, 202, 60,
736 /* 1520 */ 119, 120, 235, 181, 39, 124, 181, 146, 127, 128,
737 /* 1530 */ 122, 181, 124, 181, 75, 201, 202, 78, 142, 143,
738 /* 1540 */ 222, 82, 83, 201, 202, 86, 201, 202, 89, 148,
739 /* 1550 */ 222, 201, 202, 201, 202, 120, 181, 181, 181, 158,
740 /* 1560 */ 159, 160, 161, 162, 181, 13, 181, 154, 155, 181,
741 /* 1570 */ 111, 246, 181, 181, 181, 116, 201, 202, 201, 202,
742 /* 1580 */ 145, 181, 149, 181, 201, 202, 201, 202, 227, 201,
743 /* 1590 */ 202, 39, 201, 202, 201, 202, 181, 227, 237, 140,
744 /* 1600 */ 181, 142, 143, 201, 202, 181, 181, 237, 11, 181,
745 /* 1610 */ 292, 181, 52, 181, 227, 181, 201, 202, 181, 181,
746 /* 1620 */ 292, 181, 246, 181, 237, 201, 202, 168, 181, 201,
747 /* 1630 */ 202, 201, 202, 201, 202, 201, 202, 181, 201, 202,
748 /* 1640 */ 155, 201, 202, 201, 202, 181, 246, 181, 201, 202,
749 /* 1650 */ 181, 20, 181, 141, 123, 181, 144, 201, 202, 181,
750 /* 1660 */ 121, 181, 123, 181, 133, 201, 202, 201, 202, 112,
751 /* 1670 */ 201, 202, 201, 202, 181, 201, 202, 117, 181, 201,
752 /* 1680 */ 202, 201, 202, 201, 202, 181, 121, 181, 123, 181,
753 /* 1690 */ 239, 240, 58, 11, 201, 202, 181, 140, 201, 202,
754 /* 1700 */ 181, 121, 181, 123, 122, 201, 202, 201, 202, 201,
755 /* 1710 */ 202, 181, 126, 181, 128, 181, 201, 202, 181, 128,
756 /* 1720 */ 201, 202, 201, 202, 127, 136, 136, 145, 40, 138,
757 /* 1730 */ 40, 201, 202, 201, 202, 201, 202, 121, 201, 202,
758 /* 1740 */ 121, 241, 123, 121, 181, 123, 157, 157, 121, 181,
759 /* 1750 */ 123, 120, 181, 121, 120, 123, 121, 121, 123, 123,
760 /* 1760 */ 121, 121, 123, 123, 92, 93, 150, 158, 158, 160,
761 /* 1770 */ 160, 121, 121, 123, 123, 121, 181, 123, 238, 181,
762 /* 1780 */ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
763 /* 1790 */ 302, 199, 110, 181, 181, 181, 181, 279, 181, 181,
764 /* 1800 */ 273, 181, 181, 224, 181, 181, 181, 181, 272, 226,
765 /* 1810 */ 238, 238, 124, 238, 124, 238, 179, 188, 283, 250,
766 /* 1820 */ 254, 228, 278, 229, 213, 229, 250, 278, 254, 242,
767 /* 1830 */ 242, 120, 254, 205, 39, 254, 123, 204, 120, 67,
768 /* 1840 */ 210, 133, 190, 52, 283, 204, 204, 263, 145, 156,
769 /* 1850 */ 283, 54, 155, 187, 187, 206, 203, 120, 203, 203,
770 /* 1860 */ 203, 187, 9, 114, 203, 203, 228, 209, 209, 206,
771 /* 1870 */ 205, 203, 212, 187, 226, 228, 212, 232, 232, 114,
772 /* 1880 */ 186, 154, 163, 187, 186, 242, 242, 64, 122, 187,
773 /* 1890 */ 186, 37, 153, 150, 219, 103, 187, 220, 220, 220,
774 /* 1900 */ 220, 91, 171, 120, 163, 152, 151, 83, 219, 187,
775 /* 1910 */ 229, 219, 138, 206, 229, 173, 180, 187, 186, 186,
776 /* 1920 */ 229, 187, 182, 120, 229, 180, 182, 180, 255, 253,
777 /* 1930 */ 132, 72, 120, 120, 120, 206, 121, 266, 255, 255,
778 /* 1940 */ 253, 72, 123, 233, 232, 167, 121, 167, 120, 280,
779 /* 1950 */ 280, 40, 122, 207, 198, 229, 231, 233, 230, 199,
780 /* 1960 */ 199, 207, 198, 42, 248, 248, 198, 198, 198, 109,
781 /* 1970 */ 265, 265, 120, 72, 275, 274, 53, 169, 117, 121,
782 /* 1980 */ 118, 260, 143, 156, 121, 262, 137, 123, 122, 146,
783 /* 1990 */ 119, 291, 118, 149, 146, 58, 167, 53, 156, 20,
784 /* 2000 */ 20, 20, 137, 20, 137, 137, 127, 49, 167, 48,
785 /* 2010 */ 120, 39, 166, 299, 299, 145, 73, 123, 73, 284,
786 /* 2020 */ 80, 59, 284, 145, 304, 39, 121, 120, 110, 145,
787 /* 2030 */ 121, 121, 120, 127, 49, 284, 147, 123, 290, 287,
788 /* 2040 */ 290, 49, 122, 121, 120, 49, 154, 121, 123, 121,
789 /* 2050 */ 123, 120, 49, 121, 49, 49, 100, 80, 98, 10,
790 /* 2060 */ 105, 123, 80, 49, 49, 146, 11, 121, 121, 121,
791 /* 2070 */ 121, 60, 121, 123, 120, 146, 123, 70, 121, 120,
792 /* 2080 */ 145, 145, 141, 71, 121, 121, 120, 120, 120, 119,
793 /* 2090 */ 117, 122, 309, 309, 309, 309, 309, 145, 309, 309,
794 /* 2100 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
795 /* 2110 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
796 /* 2120 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
797 /* 2130 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
798 /* 2140 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
799 /* 2150 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
800 /* 2160 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
801 /* 2170 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
802 /* 2180 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
803 /* 2190 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
804 /* 2200 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
805 /* 2210 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
806 /* 2220 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
807 /* 2230 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
808 /* 2240 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
809 /* 2250 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
810 /* 2260 */ 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
811 /* 2270 */ 309, 309, 309, 309,
812 };
813 #define YY_SHIFT_COUNT (578)
814 #define YY_SHIFT_MIN (0)
815 #define YY_SHIFT_MAX (2055)
816 static const unsigned short int yy_shift_ofst[] = {
817 /* 0 */ 1140, 1053, 1459, 818, 818, 427, 932, 1114, 1217, 1401,
818 /* 10 */ 1401, 1401, 606, 0, 0, 115, 670, 1401, 1401, 1401,
819 /* 20 */ 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
820 /* 30 */ 1401, 870, 870, 626, 1023, 1023, 423, 427, 427, 427,
821 /* 40 */ 427, 427, 57, 86, 210, 239, 268, 306, 335, 364,
822 /* 50 */ 402, 432, 461, 583, 612, 641, 670, 670, 670, 670,
823 /* 60 */ 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
824 /* 70 */ 670, 670, 670, 699, 670, 670, 777, 804, 804, 1239,
825 /* 80 */ 1309, 1331, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
826 /* 90 */ 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
827 /* 100 */ 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
828 /* 110 */ 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
829 /* 120 */ 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1401,
830 /* 130 */ 1401, 140, 162, 162, 162, 162, 162, 162, 162, 473,
831 /* 140 */ 16, 25, 875, 961, 984, 168, 871, 871, 871, 871,
832 /* 150 */ 871, 728, 728, 1042, 934, 934, 934, 3, 934, 67,
833 /* 160 */ 373, 373, 373, 17, 17, 2098, 2098, 884, 884, 884,
834 /* 170 */ 875, 857, 1022, 737, 737, 737, 737, 857, 966, 871,
835 /* 180 */ 95, 287, 871, 871, 871, 871, 871, 871, 871, 871,
836 /* 190 */ 871, 871, 871, 871, 871, 871, 871, 871, 871, 871,
837 /* 200 */ 871, 1256, 871, 663, 663, 1125, 867, 867, 1128, 395,
838 /* 210 */ 395, 1128, 1176, 1396, 2098, 2098, 2098, 2098, 2098, 2098,
839 /* 220 */ 2098, 828, 419, 419, 75, 1031, 1116, 1033, 1035, 1154,
840 /* 230 */ 1165, 1179, 871, 871, 871, 1064, 1064, 1064, 871, 871,
841 /* 240 */ 871, 871, 871, 871, 871, 871, 871, 871, 871, 871,
842 /* 250 */ 871, 176, 871, 871, 871, 871, 871, 871, 871, 871,
843 /* 260 */ 871, 766, 871, 871, 871, 944, 830, 871, 1268, 871,
844 /* 270 */ 871, 871, 871, 871, 871, 871, 871, 871, 824, 173,
845 /* 280 */ 492, 309, 1408, 1408, 1408, 1408, 1174, 902, 309, 309,
846 /* 290 */ 1057, 919, 1531, 1327, 1552, 469, 1560, 1485, 1413, 1086,
847 /* 300 */ 1413, 1597, 286, 1485, 1485, 286, 1485, 1086, 1597, 469,
848 /* 310 */ 469, 1433, 1433, 1433, 1433, 85, 85, 1348, 1381, 1512,
849 /* 320 */ 1711, 1795, 1795, 1795, 1713, 1718, 1718, 1795, 1772, 1711,
850 /* 330 */ 1795, 1708, 1795, 1772, 1795, 1791, 1791, 1703, 1703, 1797,
851 /* 340 */ 1797, 1703, 1693, 1697, 1737, 1853, 1749, 1749, 1749, 1749,
852 /* 350 */ 1703, 1765, 1727, 1697, 1697, 1727, 1737, 1853, 1727, 1853,
853 /* 360 */ 1727, 1703, 1765, 1719, 1823, 1703, 1765, 1766, 1854, 1854,
854 /* 370 */ 1711, 1703, 1739, 1743, 1792, 1792, 1810, 1810, 1731, 1783,
855 /* 380 */ 1703, 1741, 1739, 1753, 1755, 1727, 1711, 1703, 1765, 1703,
856 /* 390 */ 1765, 1824, 1824, 1742, 1742, 1742, 2098, 2098, 2098, 2098,
857 /* 400 */ 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098,
858 /* 410 */ 2098, 28, 684, 622, 1296, 914, 963, 667, 1539, 1565,
859 /* 420 */ 1580, 1289, 1586, 1148, 1591, 1557, 1631, 1582, 1589, 1590,
860 /* 430 */ 1619, 1634, 1622, 1627, 1632, 1635, 1682, 1688, 1636, 1639,
861 /* 440 */ 1640, 1672, 1616, 1609, 1610, 1650, 1651, 1435, 1654, 1690,
862 /* 450 */ 1774, 1798, 1803, 1859, 1812, 1813, 1815, 1814, 1869, 1819,
863 /* 460 */ 1825, 1778, 1780, 1828, 1911, 1830, 1860, 1921, 1852, 1901,
864 /* 470 */ 1923, 1808, 1861, 1862, 1858, 1863, 1839, 1827, 1849, 1864,
865 /* 480 */ 1864, 1866, 1843, 1871, 1844, 1874, 1829, 1848, 1865, 1864,
866 /* 490 */ 1867, 1937, 1944, 1864, 1842, 1979, 1980, 1981, 1983, 1868,
867 /* 500 */ 1879, 1958, 1870, 1841, 1961, 1890, 1972, 1846, 1943, 1894,
868 /* 510 */ 1945, 1940, 1962, 1878, 1986, 1905, 1907, 1918, 1884, 1909,
869 /* 520 */ 1910, 1906, 1985, 1912, 1889, 1914, 1992, 1922, 1924, 1920,
870 /* 530 */ 1925, 1926, 1927, 1928, 1996, 1892, 1931, 1932, 2003, 2005,
871 /* 540 */ 2006, 1956, 1977, 1960, 2049, 1982, 1955, 1938, 2014, 2015,
872 /* 550 */ 1919, 1929, 1946, 1914, 1947, 1948, 1949, 1950, 1951, 1954,
873 /* 560 */ 2011, 1957, 1959, 1963, 1964, 1966, 1967, 1953, 1935, 1936,
874 /* 570 */ 1952, 1968, 1941, 1969, 1970, 2055, 1973, 2007, 2012,
875 };
876 #define YY_REDUCE_COUNT (410)
877 #define YY_REDUCE_MIN (-256)
878 #define YY_REDUCE_MAX (1770)
879 static const short yy_reduce_ofst[] = {
880 /* 0 */ 668, 700, 849, 332, 336, 323, 788, 579, 819, 339,
881 /* 10 */ 661, 672, 329, -46, 327, -256, -194, 560, 749, 1029,
882 /* 20 */ 1085, 731, 1110, 1153, 1189, 901, 1103, 1172, 877, 1191,
883 /* 30 */ 1244, 598, 603, 1170, 662, 810, 547, 1014, 1231, 1238,
884 /* 40 */ 1251, 1273, -252, -252, -252, -252, -252, -252, -252, -252,
885 /* 50 */ -252, -252, -252, -252, -252, -252, -252, -252, -252, -252,
886 /* 60 */ -252, -252, -252, -252, -252, -252, -252, -252, -252, -252,
887 /* 70 */ -252, -252, -252, -252, -252, -252, -252, -252, -252, 349,
888 /* 80 */ 1011, 1115, 1213, 1281, 1283, 1300, 1316, 1334, 1342, 1345,
889 /* 90 */ 1350, 1352, 1375, 1377, 1383, 1385, 1388, 1391, 1393, 1402,
890 /* 100 */ 1415, 1424, 1428, 1430, 1432, 1434, 1437, 1440, 1442, 1447,
891 /* 110 */ 1456, 1464, 1466, 1469, 1471, 1474, 1478, 1480, 1482, 1493,
892 /* 120 */ 1497, 1504, 1506, 1508, 1515, 1519, 1521, 1530, 1532, 1534,
893 /* 130 */ 1537, -252, -252, -252, -252, -252, -252, -252, -252, -252,
894 /* 140 */ -252, -252, 844, 874, 1036, 319, 850, 305, 1318, 1328,
895 /* 150 */ 20, -115, 321, 910, 952, 1287, 952, -252, 1287, 1067,
896 /* 160 */ 625, 942, 1092, -252, -252, -252, -252, -200, -200, -200,
897 /* 170 */ 585, 882, -126, 938, 940, 948, 1072, 945, 277, 1,
898 /* 180 */ 457, 457, 823, 602, 709, 959, 986, 1073, 1199, 1200,
899 /* 190 */ 759, 1078, 1055, 1254, 1325, 1129, 1376, 1205, 375, 701,
900 /* 200 */ 1400, 676, -1, 1060, 1106, 706, 1113, 1122, 1193, 659,
901 /* 210 */ 1195, 1292, 692, 1000, 1208, 1061, 1197, 1361, 1370, 1451,
902 /* 220 */ 1387, -90, -42, 63, 297, 361, 399, 407, 456, 543,
903 /* 230 */ 557, 587, 592, 694, 715, 800, 858, 965, 900, 1082,
904 /* 240 */ 1259, 1392, 1419, 1425, 1438, 1563, 1568, 1571, 1595, 1598,
905 /* 250 */ 1599, 1083, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607,
906 /* 260 */ 1608, 1500, 1612, 1613, 1614, 1540, 1488, 1615, 1518, 1617,
907 /* 270 */ 399, 1618, 1620, 1621, 1623, 1624, 1625, 1626, 1592, 1527,
908 /* 280 */ 1536, 1579, 1572, 1573, 1575, 1577, 1500, 1583, 1579, 1579,
909 /* 290 */ 1637, 1611, 1628, 1629, 1630, 1633, 1535, 1566, 1569, 1593,
910 /* 300 */ 1576, 1544, 1594, 1574, 1578, 1596, 1581, 1638, 1549, 1641,
911 /* 310 */ 1642, 1587, 1588, 1643, 1644, 1645, 1646, 1584, 1647, 1648,
912 /* 320 */ 1649, 1653, 1655, 1656, 1652, 1658, 1659, 1657, 1660, 1663,
913 /* 330 */ 1661, 1665, 1662, 1664, 1668, 1561, 1567, 1666, 1667, 1669,
914 /* 340 */ 1670, 1674, 1671, 1673, 1676, 1675, 1677, 1678, 1679, 1680,
915 /* 350 */ 1686, 1694, 1681, 1683, 1684, 1685, 1687, 1689, 1691, 1692,
916 /* 360 */ 1695, 1696, 1698, 1699, 1701, 1702, 1704, 1700, 1705, 1706,
917 /* 370 */ 1707, 1709, 1710, 1712, 1714, 1715, 1716, 1717, 1720, 1721,
918 /* 380 */ 1722, 1723, 1724, 1725, 1728, 1726, 1729, 1730, 1732, 1734,
919 /* 390 */ 1733, 1740, 1744, 1736, 1745, 1747, 1735, 1738, 1746, 1748,
920 /* 400 */ 1750, 1752, 1754, 1760, 1761, 1751, 1756, 1764, 1768, 1769,
921 /* 410 */ 1770,
922 };
923 static const YYACTIONTYPE yy_default[] = {
924 /* 0 */ 1648, 1648, 1648, 1478, 1243, 1354, 1243, 1243, 1243, 1478,
925 /* 10 */ 1478, 1478, 1243, 1384, 1384, 1531, 1276, 1243, 1243, 1243,
926 /* 20 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1477, 1243,
927 /* 30 */ 1243, 1243, 1243, 1243, 1564, 1564, 1243, 1243, 1243, 1243,
928 /* 40 */ 1243, 1243, 1243, 1393, 1243, 1243, 1243, 1243, 1243, 1400,
929 /* 50 */ 1479, 1480, 1243, 1243, 1243, 1243, 1530, 1532, 1495, 1407,
930 /* 60 */ 1406, 1405, 1404, 1513, 1372, 1398, 1391, 1395, 1479, 1474,
931 /* 70 */ 1475, 1473, 1626, 1243, 1480, 1394, 1442, 1441, 1458, 1243,
932 /* 80 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
933 /* 90 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
934 /* 100 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
935 /* 110 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
936 /* 120 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
937 /* 130 */ 1243, 1450, 1457, 1456, 1455, 1464, 1454, 1451, 1444, 1443,
938 /* 140 */ 1445, 1446, 1267, 1243, 1243, 1318, 1243, 1243, 1243, 1243,
939 /* 150 */ 1243, 1243, 1243, 1264, 1550, 1549, 1243, 1447, 1243, 1276,
940 /* 160 */ 1435, 1434, 1433, 1461, 1448, 1460, 1459, 1600, 1599, 1538,
941 /* 170 */ 1243, 1243, 1496, 1243, 1243, 1243, 1243, 1243, 1564, 1243,
942 /* 180 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
943 /* 190 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
944 /* 200 */ 1243, 1374, 1243, 1564, 1564, 1276, 1564, 1564, 1272, 1375,
945 /* 210 */ 1375, 1272, 1378, 1243, 1545, 1345, 1345, 1345, 1345, 1354,
946 /* 220 */ 1345, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
947 /* 230 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
948 /* 240 */ 1243, 1243, 1243, 1243, 1243, 1535, 1533, 1243, 1243, 1243,
949 /* 250 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
950 /* 260 */ 1243, 1243, 1243, 1243, 1243, 1350, 1243, 1243, 1243, 1243,
951 /* 270 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1593, 1277, 1243,
952 /* 280 */ 1508, 1332, 1350, 1350, 1350, 1350, 1352, 1344, 1333, 1331,
953 /* 290 */ 1250, 1615, 1293, 1243, 1288, 1384, 1640, 1410, 1399, 1351,
954 /* 300 */ 1399, 1637, 1397, 1410, 1410, 1397, 1410, 1351, 1637, 1384,
955 /* 310 */ 1384, 1374, 1374, 1374, 1374, 1378, 1378, 1476, 1351, 1344,
956 /* 320 */ 1486, 1319, 1319, 1319, 1311, 1243, 1243, 1319, 1308, 1486,
957 /* 330 */ 1319, 1293, 1319, 1308, 1319, 1640, 1640, 1360, 1360, 1639,
958 /* 340 */ 1639, 1360, 1496, 1623, 1419, 1321, 1327, 1327, 1327, 1327,
959 /* 350 */ 1360, 1261, 1397, 1623, 1623, 1397, 1419, 1321, 1397, 1321,
960 /* 360 */ 1397, 1360, 1261, 1512, 1634, 1360, 1261, 1243, 1490, 1490,
961 /* 370 */ 1486, 1360, 1392, 1378, 1574, 1574, 1387, 1387, 1582, 1481,
962 /* 380 */ 1360, 1243, 1392, 1390, 1388, 1397, 1486, 1360, 1261, 1360,
963 /* 390 */ 1261, 1596, 1596, 1592, 1592, 1592, 1608, 1608, 1295, 1645,
964 /* 400 */ 1645, 1545, 1295, 1277, 1277, 1608, 1276, 1276, 1276, 1276,
965 /* 410 */ 1276, 1243, 1243, 1243, 1243, 1243, 1603, 1243, 1243, 1243,
966 /* 420 */ 1243, 1243, 1243, 1243, 1243, 1540, 1497, 1364, 1243, 1243,
967 /* 430 */ 1243, 1243, 1243, 1243, 1243, 1243, 1551, 1243, 1243, 1243,
968 /* 440 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1424, 1243, 1243,
969 /* 450 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1265,
970 /* 460 */ 1243, 1243, 1243, 1542, 1291, 1243, 1243, 1243, 1243, 1243,
971 /* 470 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1401,
972 /* 480 */ 1402, 1365, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1416,
973 /* 490 */ 1243, 1243, 1243, 1411, 1243, 1243, 1243, 1243, 1243, 1243,
974 /* 500 */ 1243, 1243, 1636, 1243, 1243, 1243, 1243, 1243, 1243, 1511,
975 /* 510 */ 1510, 1243, 1243, 1362, 1243, 1243, 1243, 1243, 1243, 1243,
976 /* 520 */ 1243, 1243, 1243, 1243, 1243, 1389, 1243, 1243, 1243, 1243,
977 /* 530 */ 1579, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
978 /* 540 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1379, 1243, 1243,
979 /* 550 */ 1243, 1243, 1243, 1627, 1243, 1243, 1243, 1243, 1243, 1243,
980 /* 560 */ 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1619, 1428, 1425,
981 /* 570 */ 1243, 1243, 1335, 1243, 1243, 1243, 1255, 1243, 1246,
982 };
983 /********** End of lemon-generated parsing tables *****************************/
984
985 /* The next table maps tokens (terminal symbols) into fallback tokens.
986 ** If a construct like the following:
987 **
988 ** %fallback ID X Y Z.
989 **
990 ** appears in the grammar, then ID becomes a fallback token for X, Y,
991 ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
992 ** but it does not parse, the type of the token is changed to ID and
993 ** the parse is retried before an error is thrown.
994 **
995 ** This feature can be used, for example, to cause some keywords in a language
996 ** to revert to identifiers if they keyword does not apply in the context where
997 ** it appears.
998 */
999 #ifdef YYFALLBACK
1000 static const YYCODETYPE yyFallback[] = {
1001 0, /* $ => nothing */
1002 0, /* CREATE => nothing */
1003 40, /* REPLACE => ID */
1004 0, /* PERFETTO => nothing */
1005 0, /* MACRO => nothing */
1006 0, /* INCLUDE => nothing */
1007 0, /* MODULE => nothing */
1008 0, /* RETURNS => nothing */
1009 0, /* FUNCTION => nothing */
1010 0, /* OR => nothing */
1011 0, /* AND => nothing */
1012 0, /* NOT => nothing */
1013 0, /* IS => nothing */
1014 40, /* MATCH => ID */
1015 40, /* LIKE_KW => ID */
1016 0, /* BETWEEN => nothing */
1017 0, /* IN => nothing */
1018 0, /* ISNULL => nothing */
1019 0, /* NOTNULL => nothing */
1020 0, /* NE => nothing */
1021 0, /* EQ => nothing */
1022 0, /* GT => nothing */
1023 0, /* LE => nothing */
1024 0, /* LT => nothing */
1025 0, /* GE => nothing */
1026 0, /* ESCAPE => nothing */
1027 0, /* BITAND => nothing */
1028 0, /* BITOR => nothing */
1029 0, /* LSHIFT => nothing */
1030 0, /* RSHIFT => nothing */
1031 0, /* PLUS => nothing */
1032 0, /* MINUS => nothing */
1033 0, /* STAR => nothing */
1034 0, /* SLASH => nothing */
1035 0, /* REM => nothing */
1036 0, /* CONCAT => nothing */
1037 0, /* PTR => nothing */
1038 0, /* COLLATE => nothing */
1039 0, /* BITNOT => nothing */
1040 0, /* ON => nothing */
1041 0, /* ID => nothing */
1042 40, /* ABORT => ID */
1043 40, /* ACTION => ID */
1044 40, /* AFTER => ID */
1045 40, /* ANALYZE => ID */
1046 40, /* ASC => ID */
1047 40, /* ATTACH => ID */
1048 40, /* BEFORE => ID */
1049 40, /* BEGIN => ID */
1050 40, /* BY => ID */
1051 40, /* CASCADE => ID */
1052 40, /* CAST => ID */
1053 40, /* COLUMNKW => ID */
1054 40, /* CONFLICT => ID */
1055 40, /* DATABASE => ID */
1056 40, /* DEFERRED => ID */
1057 40, /* DESC => ID */
1058 40, /* DETACH => ID */
1059 40, /* DO => ID */
1060 40, /* EACH => ID */
1061 40, /* END => ID */
1062 40, /* EXCLUSIVE => ID */
1063 40, /* EXPLAIN => ID */
1064 40, /* FAIL => ID */
1065 40, /* FOR => ID */
1066 40, /* IGNORE => ID */
1067 40, /* IMMEDIATE => ID */
1068 40, /* INITIALLY => ID */
1069 40, /* INSTEAD => ID */
1070 40, /* NO => ID */
1071 40, /* PLAN => ID */
1072 40, /* QUERY => ID */
1073 40, /* KEY => ID */
1074 40, /* OF => ID */
1075 40, /* OFFSET => ID */
1076 40, /* PRAGMA => ID */
1077 40, /* RAISE => ID */
1078 40, /* RECURSIVE => ID */
1079 40, /* RELEASE => ID */
1080 40, /* RESTRICT => ID */
1081 40, /* ROW => ID */
1082 40, /* ROWS => ID */
1083 40, /* ROLLBACK => ID */
1084 40, /* SAVEPOINT => ID */
1085 40, /* TEMP => ID */
1086 40, /* TRIGGER => ID */
1087 40, /* VACUUM => ID */
1088 40, /* VIEW => ID */
1089 40, /* VIRTUAL => ID */
1090 40, /* WITH => ID */
1091 40, /* WITHOUT => ID */
1092 40, /* NULLS => ID */
1093 40, /* FIRST => ID */
1094 40, /* LAST => ID */
1095 40, /* EXCEPT => ID */
1096 40, /* INTERSECT => ID */
1097 40, /* UNION => ID */
1098 40, /* CURRENT => ID */
1099 40, /* FOLLOWING => ID */
1100 40, /* PARTITION => ID */
1101 40, /* PRECEDING => ID */
1102 40, /* RANGE => ID */
1103 40, /* UNBOUNDED => ID */
1104 40, /* EXCLUDE => ID */
1105 40, /* GROUPS => ID */
1106 40, /* OTHERS => ID */
1107 40, /* TIES => ID */
1108 40, /* WITHIN => ID */
1109 40, /* GENERATED => ID */
1110 40, /* ALWAYS => ID */
1111 40, /* MATERIALIZED => ID */
1112 40, /* REINDEX => ID */
1113 40, /* RENAME => ID */
1114 40, /* CTIME_KW => ID */
1115 40, /* IF => ID */
1116 0, /* ANY => nothing */
1117 0, /* COMMIT => nothing */
1118 0, /* TO => nothing */
1119 0, /* TABLE => nothing */
1120 0, /* EXISTS => nothing */
1121 0, /* LP => nothing */
1122 0, /* RP => nothing */
1123 0, /* AS => nothing */
1124 0, /* COMMA => nothing */
1125 0, /* STRING => nothing */
1126 0, /* CONSTRAINT => nothing */
1127 0, /* DEFAULT => nothing */
1128 0, /* INDEXED => nothing */
1129 0, /* NULL => nothing */
1130 0, /* PRIMARY => nothing */
1131 0, /* UNIQUE => nothing */
1132 0, /* CHECK => nothing */
1133 0, /* REFERENCES => nothing */
1134 0, /* AUTOINCR => nothing */
1135 0, /* INSERT => nothing */
1136 0, /* DELETE => nothing */
1137 0, /* UPDATE => nothing */
1138 0, /* SET => nothing */
1139 0, /* DEFERRABLE => nothing */
1140 0, /* FOREIGN => nothing */
1141 0, /* DROP => nothing */
1142 0, /* ALL => nothing */
1143 0, /* SELECT => nothing */
1144 0, /* VALUES => nothing */
1145 0, /* DISTINCT => nothing */
1146 0, /* DOT => nothing */
1147 0, /* FROM => nothing */
1148 0, /* JOIN => nothing */
1149 0, /* JOIN_KW => nothing */
1150 0, /* USING => nothing */
1151 0, /* ORDER => nothing */
1152 0, /* GROUP => nothing */
1153 0, /* HAVING => nothing */
1154 0, /* LIMIT => nothing */
1155 0, /* WHERE => nothing */
1156 0, /* RETURNING => nothing */
1157 0, /* INTO => nothing */
1158 0, /* NOTHING => nothing */
1159 0, /* FLOAT => nothing */
1160 0, /* BLOB => nothing */
1161 0, /* INTEGER => nothing */
1162 0, /* VARIABLE => nothing */
1163 0, /* CASE => nothing */
1164 0, /* WHEN => nothing */
1165 0, /* THEN => nothing */
1166 0, /* ELSE => nothing */
1167 0, /* INDEX => nothing */
1168 0, /* SEMI => nothing */
1169 0, /* ALTER => nothing */
1170 0, /* ADD => nothing */
1171 0, /* WINDOW => nothing */
1172 0, /* OVER => nothing */
1173 0, /* FILTER => nothing */
1174 0, /* TRANSACTION => nothing */
1175 0, /* SPACE => nothing */
1176 0, /* ILLEGAL => nothing */
1177 };
1178 #endif /* YYFALLBACK */
1179
1180 /* The following structure represents a single element of the
1181 ** parser's stack. Information stored includes:
1182 **
1183 ** + The state number for the parser at this level of the stack.
1184 **
1185 ** + The value of the token stored at this level of the stack.
1186 ** (In other words, the "major" token.)
1187 **
1188 ** + The semantic value stored at this level of the stack. This is
1189 ** the information used by the action routines in the grammar.
1190 ** It is sometimes called the "minor" token.
1191 **
1192 ** After the "shift" half of a SHIFTREDUCE action, the stateno field
1193 ** actually contains the reduce action for the second half of the
1194 ** SHIFTREDUCE.
1195 */
1196 struct yyStackEntry {
1197 YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */
1198 YYCODETYPE major; /* The major token value. This is the code
1199 ** number for the token at this stack level */
1200 YYMINORTYPE minor; /* The user-supplied minor token value. This
1201 ** is the value of the token */
1202 };
1203 typedef struct yyStackEntry yyStackEntry;
1204
1205 /* The state of the parser is completely contained in an instance of
1206 ** the following structure */
1207 struct yyParser {
1208 yyStackEntry *yytos; /* Pointer to top element of the stack */
1209 #ifdef YYTRACKMAXSTACKDEPTH
1210 int yyhwm; /* High-water mark of the stack */
1211 #endif
1212 #ifndef YYNOERRORRECOVERY
1213 int yyerrcnt; /* Shifts left before out of the error */
1214 #endif
1215 PerfettoSqlParserARG_SDECL /* A place to hold %extra_argument */
1216 PerfettoSqlParserCTX_SDECL /* A place to hold %extra_context */
1217 #if YYSTACKDEPTH<=0
1218 int yystksz; /* Current side of the stack */
1219 yyStackEntry *yystack; /* The parser's stack */
1220 yyStackEntry yystk0; /* First stack entry */
1221 #else
1222 yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
1223 yyStackEntry *yystackEnd; /* Last entry in the stack */
1224 #endif
1225 };
1226 typedef struct yyParser yyParser;
1227
1228 #include <assert.h>
1229 #ifndef NDEBUG
1230 #include <stdio.h>
1231 static FILE *yyTraceFILE = 0;
1232 static char *yyTracePrompt = 0;
1233 #endif /* NDEBUG */
1234
1235 #ifndef NDEBUG
1236 /*
1237 ** Turn parser tracing on by giving a stream to which to write the trace
1238 ** and a prompt to preface each trace message. Tracing is turned off
1239 ** by making either argument NULL
1240 **
1241 ** Inputs:
1242 ** <ul>
1243 ** <li> A FILE* to which trace output should be written.
1244 ** If NULL, then tracing is turned off.
1245 ** <li> A prefix string written at the beginning of every
1246 ** line of trace output. If NULL, then tracing is
1247 ** turned off.
1248 ** </ul>
1249 **
1250 ** Outputs:
1251 ** None.
1252 */
PerfettoSqlParserTrace(FILE * TraceFILE,char * zTracePrompt)1253 void PerfettoSqlParserTrace(FILE *TraceFILE, char *zTracePrompt){
1254 yyTraceFILE = TraceFILE;
1255 yyTracePrompt = zTracePrompt;
1256 if( yyTraceFILE==0 ) yyTracePrompt = 0;
1257 else if( yyTracePrompt==0 ) yyTraceFILE = 0;
1258 }
1259 #endif /* NDEBUG */
1260
1261 #if defined(YYCOVERAGE) || !defined(NDEBUG)
1262 /* For tracing shifts, the names of all terminals and nonterminals
1263 ** are required. The following table supplies these names */
1264 static const char *const yyTokenName[] = {
1265 /* 0 */ "$",
1266 /* 1 */ "CREATE",
1267 /* 2 */ "REPLACE",
1268 /* 3 */ "PERFETTO",
1269 /* 4 */ "MACRO",
1270 /* 5 */ "INCLUDE",
1271 /* 6 */ "MODULE",
1272 /* 7 */ "RETURNS",
1273 /* 8 */ "FUNCTION",
1274 /* 9 */ "OR",
1275 /* 10 */ "AND",
1276 /* 11 */ "NOT",
1277 /* 12 */ "IS",
1278 /* 13 */ "MATCH",
1279 /* 14 */ "LIKE_KW",
1280 /* 15 */ "BETWEEN",
1281 /* 16 */ "IN",
1282 /* 17 */ "ISNULL",
1283 /* 18 */ "NOTNULL",
1284 /* 19 */ "NE",
1285 /* 20 */ "EQ",
1286 /* 21 */ "GT",
1287 /* 22 */ "LE",
1288 /* 23 */ "LT",
1289 /* 24 */ "GE",
1290 /* 25 */ "ESCAPE",
1291 /* 26 */ "BITAND",
1292 /* 27 */ "BITOR",
1293 /* 28 */ "LSHIFT",
1294 /* 29 */ "RSHIFT",
1295 /* 30 */ "PLUS",
1296 /* 31 */ "MINUS",
1297 /* 32 */ "STAR",
1298 /* 33 */ "SLASH",
1299 /* 34 */ "REM",
1300 /* 35 */ "CONCAT",
1301 /* 36 */ "PTR",
1302 /* 37 */ "COLLATE",
1303 /* 38 */ "BITNOT",
1304 /* 39 */ "ON",
1305 /* 40 */ "ID",
1306 /* 41 */ "ABORT",
1307 /* 42 */ "ACTION",
1308 /* 43 */ "AFTER",
1309 /* 44 */ "ANALYZE",
1310 /* 45 */ "ASC",
1311 /* 46 */ "ATTACH",
1312 /* 47 */ "BEFORE",
1313 /* 48 */ "BEGIN",
1314 /* 49 */ "BY",
1315 /* 50 */ "CASCADE",
1316 /* 51 */ "CAST",
1317 /* 52 */ "COLUMNKW",
1318 /* 53 */ "CONFLICT",
1319 /* 54 */ "DATABASE",
1320 /* 55 */ "DEFERRED",
1321 /* 56 */ "DESC",
1322 /* 57 */ "DETACH",
1323 /* 58 */ "DO",
1324 /* 59 */ "EACH",
1325 /* 60 */ "END",
1326 /* 61 */ "EXCLUSIVE",
1327 /* 62 */ "EXPLAIN",
1328 /* 63 */ "FAIL",
1329 /* 64 */ "FOR",
1330 /* 65 */ "IGNORE",
1331 /* 66 */ "IMMEDIATE",
1332 /* 67 */ "INITIALLY",
1333 /* 68 */ "INSTEAD",
1334 /* 69 */ "NO",
1335 /* 70 */ "PLAN",
1336 /* 71 */ "QUERY",
1337 /* 72 */ "KEY",
1338 /* 73 */ "OF",
1339 /* 74 */ "OFFSET",
1340 /* 75 */ "PRAGMA",
1341 /* 76 */ "RAISE",
1342 /* 77 */ "RECURSIVE",
1343 /* 78 */ "RELEASE",
1344 /* 79 */ "RESTRICT",
1345 /* 80 */ "ROW",
1346 /* 81 */ "ROWS",
1347 /* 82 */ "ROLLBACK",
1348 /* 83 */ "SAVEPOINT",
1349 /* 84 */ "TEMP",
1350 /* 85 */ "TRIGGER",
1351 /* 86 */ "VACUUM",
1352 /* 87 */ "VIEW",
1353 /* 88 */ "VIRTUAL",
1354 /* 89 */ "WITH",
1355 /* 90 */ "WITHOUT",
1356 /* 91 */ "NULLS",
1357 /* 92 */ "FIRST",
1358 /* 93 */ "LAST",
1359 /* 94 */ "EXCEPT",
1360 /* 95 */ "INTERSECT",
1361 /* 96 */ "UNION",
1362 /* 97 */ "CURRENT",
1363 /* 98 */ "FOLLOWING",
1364 /* 99 */ "PARTITION",
1365 /* 100 */ "PRECEDING",
1366 /* 101 */ "RANGE",
1367 /* 102 */ "UNBOUNDED",
1368 /* 103 */ "EXCLUDE",
1369 /* 104 */ "GROUPS",
1370 /* 105 */ "OTHERS",
1371 /* 106 */ "TIES",
1372 /* 107 */ "WITHIN",
1373 /* 108 */ "GENERATED",
1374 /* 109 */ "ALWAYS",
1375 /* 110 */ "MATERIALIZED",
1376 /* 111 */ "REINDEX",
1377 /* 112 */ "RENAME",
1378 /* 113 */ "CTIME_KW",
1379 /* 114 */ "IF",
1380 /* 115 */ "ANY",
1381 /* 116 */ "COMMIT",
1382 /* 117 */ "TO",
1383 /* 118 */ "TABLE",
1384 /* 119 */ "EXISTS",
1385 /* 120 */ "LP",
1386 /* 121 */ "RP",
1387 /* 122 */ "AS",
1388 /* 123 */ "COMMA",
1389 /* 124 */ "STRING",
1390 /* 125 */ "CONSTRAINT",
1391 /* 126 */ "DEFAULT",
1392 /* 127 */ "INDEXED",
1393 /* 128 */ "NULL",
1394 /* 129 */ "PRIMARY",
1395 /* 130 */ "UNIQUE",
1396 /* 131 */ "CHECK",
1397 /* 132 */ "REFERENCES",
1398 /* 133 */ "AUTOINCR",
1399 /* 134 */ "INSERT",
1400 /* 135 */ "DELETE",
1401 /* 136 */ "UPDATE",
1402 /* 137 */ "SET",
1403 /* 138 */ "DEFERRABLE",
1404 /* 139 */ "FOREIGN",
1405 /* 140 */ "DROP",
1406 /* 141 */ "ALL",
1407 /* 142 */ "SELECT",
1408 /* 143 */ "VALUES",
1409 /* 144 */ "DISTINCT",
1410 /* 145 */ "DOT",
1411 /* 146 */ "FROM",
1412 /* 147 */ "JOIN",
1413 /* 148 */ "JOIN_KW",
1414 /* 149 */ "USING",
1415 /* 150 */ "ORDER",
1416 /* 151 */ "GROUP",
1417 /* 152 */ "HAVING",
1418 /* 153 */ "LIMIT",
1419 /* 154 */ "WHERE",
1420 /* 155 */ "RETURNING",
1421 /* 156 */ "INTO",
1422 /* 157 */ "NOTHING",
1423 /* 158 */ "FLOAT",
1424 /* 159 */ "BLOB",
1425 /* 160 */ "INTEGER",
1426 /* 161 */ "VARIABLE",
1427 /* 162 */ "CASE",
1428 /* 163 */ "WHEN",
1429 /* 164 */ "THEN",
1430 /* 165 */ "ELSE",
1431 /* 166 */ "INDEX",
1432 /* 167 */ "SEMI",
1433 /* 168 */ "ALTER",
1434 /* 169 */ "ADD",
1435 /* 170 */ "WINDOW",
1436 /* 171 */ "OVER",
1437 /* 172 */ "FILTER",
1438 /* 173 */ "TRANSACTION",
1439 /* 174 */ "SPACE",
1440 /* 175 */ "ILLEGAL",
1441 /* 176 */ "explain",
1442 /* 177 */ "cmdx",
1443 /* 178 */ "cmd",
1444 /* 179 */ "transtype",
1445 /* 180 */ "trans_opt",
1446 /* 181 */ "nm",
1447 /* 182 */ "savepoint_opt",
1448 /* 183 */ "create_table",
1449 /* 184 */ "createkw",
1450 /* 185 */ "temp",
1451 /* 186 */ "ifnotexists",
1452 /* 187 */ "dbnm",
1453 /* 188 */ "create_table_args",
1454 /* 189 */ "columnlist",
1455 /* 190 */ "conslist_opt",
1456 /* 191 */ "table_option_set",
1457 /* 192 */ "select",
1458 /* 193 */ "table_option",
1459 /* 194 */ "columnname",
1460 /* 195 */ "typetoken",
1461 /* 196 */ "typename",
1462 /* 197 */ "signed",
1463 /* 198 */ "scanpt",
1464 /* 199 */ "scantok",
1465 /* 200 */ "ccons",
1466 /* 201 */ "term",
1467 /* 202 */ "expr",
1468 /* 203 */ "onconf",
1469 /* 204 */ "sortorder",
1470 /* 205 */ "autoinc",
1471 /* 206 */ "eidlist_opt",
1472 /* 207 */ "refargs",
1473 /* 208 */ "defer_subclause",
1474 /* 209 */ "generated",
1475 /* 210 */ "refarg",
1476 /* 211 */ "refact",
1477 /* 212 */ "init_deferred_pred_opt",
1478 /* 213 */ "tconscomma",
1479 /* 214 */ "tcons",
1480 /* 215 */ "sortlist",
1481 /* 216 */ "eidlist",
1482 /* 217 */ "defer_subclause_opt",
1483 /* 218 */ "resolvetype",
1484 /* 219 */ "orconf",
1485 /* 220 */ "ifexists",
1486 /* 221 */ "fullname",
1487 /* 222 */ "wqlist",
1488 /* 223 */ "selectnowith",
1489 /* 224 */ "multiselect_op",
1490 /* 225 */ "oneselect",
1491 /* 226 */ "distinct",
1492 /* 227 */ "selcollist",
1493 /* 228 */ "from",
1494 /* 229 */ "where_opt",
1495 /* 230 */ "groupby_opt",
1496 /* 231 */ "having_opt",
1497 /* 232 */ "orderby_opt",
1498 /* 233 */ "limit_opt",
1499 /* 234 */ "window_clause",
1500 /* 235 */ "values",
1501 /* 236 */ "nexprlist",
1502 /* 237 */ "sclp",
1503 /* 238 */ "as",
1504 /* 239 */ "seltablist",
1505 /* 240 */ "stl_prefix",
1506 /* 241 */ "joinop",
1507 /* 242 */ "on_using",
1508 /* 243 */ "indexed_by",
1509 /* 244 */ "exprlist",
1510 /* 245 */ "xfullname",
1511 /* 246 */ "idlist",
1512 /* 247 */ "indexed_opt",
1513 /* 248 */ "nulls",
1514 /* 249 */ "with",
1515 /* 250 */ "where_opt_ret",
1516 /* 251 */ "setlist",
1517 /* 252 */ "insert_cmd",
1518 /* 253 */ "idlist_opt",
1519 /* 254 */ "upsert",
1520 /* 255 */ "returning",
1521 /* 256 */ "filter_over",
1522 /* 257 */ "likeop",
1523 /* 258 */ "between_op",
1524 /* 259 */ "in_op",
1525 /* 260 */ "paren_exprlist",
1526 /* 261 */ "case_operand",
1527 /* 262 */ "case_exprlist",
1528 /* 263 */ "case_else",
1529 /* 264 */ "uniqueflag",
1530 /* 265 */ "collate",
1531 /* 266 */ "vinto",
1532 /* 267 */ "nmnum",
1533 /* 268 */ "minus_num",
1534 /* 269 */ "plus_num",
1535 /* 270 */ "trigger_decl",
1536 /* 271 */ "trigger_cmd_list",
1537 /* 272 */ "trigger_time",
1538 /* 273 */ "trigger_event",
1539 /* 274 */ "foreach_clause",
1540 /* 275 */ "when_clause",
1541 /* 276 */ "trigger_cmd",
1542 /* 277 */ "trnm",
1543 /* 278 */ "tridxby",
1544 /* 279 */ "raisetype",
1545 /* 280 */ "database_kw_opt",
1546 /* 281 */ "key_opt",
1547 /* 282 */ "add_column_fullname",
1548 /* 283 */ "kwcolumn_opt",
1549 /* 284 */ "carglist",
1550 /* 285 */ "create_vtab",
1551 /* 286 */ "vtabarglist",
1552 /* 287 */ "vtabarg",
1553 /* 288 */ "vtabargtoken",
1554 /* 289 */ "lp",
1555 /* 290 */ "anylist",
1556 /* 291 */ "wqas",
1557 /* 292 */ "wqitem",
1558 /* 293 */ "windowdefn_list",
1559 /* 294 */ "windowdefn",
1560 /* 295 */ "window",
1561 /* 296 */ "frame_opt",
1562 /* 297 */ "range_or_rows",
1563 /* 298 */ "frame_bound_s",
1564 /* 299 */ "frame_exclude_opt",
1565 /* 300 */ "frame_bound_e",
1566 /* 301 */ "frame_bound",
1567 /* 302 */ "frame_exclude",
1568 /* 303 */ "filter_clause",
1569 /* 304 */ "over_clause",
1570 /* 305 */ "input",
1571 /* 306 */ "cmdlist",
1572 /* 307 */ "ecmd",
1573 /* 308 */ "conslist",
1574 };
1575 #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
1576
1577 #ifndef NDEBUG
1578 /* For tracing reduce actions, the names of all rules are required.
1579 */
1580 static const char *const yyRuleName[] = {
1581 /* 0 */ "explain ::= EXPLAIN",
1582 /* 1 */ "explain ::= EXPLAIN QUERY PLAN",
1583 /* 2 */ "cmdx ::= cmd",
1584 /* 3 */ "cmd ::= BEGIN transtype trans_opt",
1585 /* 4 */ "transtype ::=",
1586 /* 5 */ "transtype ::= DEFERRED",
1587 /* 6 */ "transtype ::= IMMEDIATE",
1588 /* 7 */ "transtype ::= EXCLUSIVE",
1589 /* 8 */ "cmd ::= COMMIT|END trans_opt",
1590 /* 9 */ "cmd ::= ROLLBACK trans_opt",
1591 /* 10 */ "cmd ::= SAVEPOINT nm",
1592 /* 11 */ "cmd ::= RELEASE savepoint_opt nm",
1593 /* 12 */ "cmd ::= ROLLBACK trans_opt TO savepoint_opt nm",
1594 /* 13 */ "create_table ::= createkw temp TABLE ifnotexists nm dbnm",
1595 /* 14 */ "createkw ::= CREATE",
1596 /* 15 */ "ifnotexists ::=",
1597 /* 16 */ "ifnotexists ::= IF NOT EXISTS",
1598 /* 17 */ "temp ::= TEMP",
1599 /* 18 */ "temp ::=",
1600 /* 19 */ "create_table_args ::= LP columnlist conslist_opt RP table_option_set",
1601 /* 20 */ "create_table_args ::= AS select",
1602 /* 21 */ "table_option_set ::=",
1603 /* 22 */ "table_option_set ::= table_option_set COMMA table_option",
1604 /* 23 */ "table_option ::= WITHOUT nm",
1605 /* 24 */ "table_option ::= nm",
1606 /* 25 */ "columnname ::= nm typetoken",
1607 /* 26 */ "typetoken ::=",
1608 /* 27 */ "typetoken ::= typename LP signed RP",
1609 /* 28 */ "typetoken ::= typename LP signed COMMA signed RP",
1610 /* 29 */ "typename ::= typename ID|STRING",
1611 /* 30 */ "scanpt ::=",
1612 /* 31 */ "scantok ::=",
1613 /* 32 */ "ccons ::= CONSTRAINT nm",
1614 /* 33 */ "ccons ::= DEFAULT scantok term",
1615 /* 34 */ "ccons ::= DEFAULT LP expr RP",
1616 /* 35 */ "ccons ::= DEFAULT PLUS scantok term",
1617 /* 36 */ "ccons ::= DEFAULT MINUS scantok term",
1618 /* 37 */ "ccons ::= DEFAULT scantok ID|INDEXED",
1619 /* 38 */ "ccons ::= NOT NULL onconf",
1620 /* 39 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
1621 /* 40 */ "ccons ::= UNIQUE onconf",
1622 /* 41 */ "ccons ::= CHECK LP expr RP",
1623 /* 42 */ "ccons ::= REFERENCES nm eidlist_opt refargs",
1624 /* 43 */ "ccons ::= defer_subclause",
1625 /* 44 */ "ccons ::= COLLATE ID|STRING",
1626 /* 45 */ "generated ::= LP expr RP",
1627 /* 46 */ "generated ::= LP expr RP ID",
1628 /* 47 */ "autoinc ::=",
1629 /* 48 */ "autoinc ::= AUTOINCR",
1630 /* 49 */ "refargs ::=",
1631 /* 50 */ "refargs ::= refargs refarg",
1632 /* 51 */ "refarg ::= MATCH nm",
1633 /* 52 */ "refarg ::= ON INSERT refact",
1634 /* 53 */ "refarg ::= ON DELETE refact",
1635 /* 54 */ "refarg ::= ON UPDATE refact",
1636 /* 55 */ "refact ::= SET NULL",
1637 /* 56 */ "refact ::= SET DEFAULT",
1638 /* 57 */ "refact ::= CASCADE",
1639 /* 58 */ "refact ::= RESTRICT",
1640 /* 59 */ "refact ::= NO ACTION",
1641 /* 60 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
1642 /* 61 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
1643 /* 62 */ "init_deferred_pred_opt ::=",
1644 /* 63 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
1645 /* 64 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
1646 /* 65 */ "conslist_opt ::=",
1647 /* 66 */ "tconscomma ::= COMMA",
1648 /* 67 */ "tcons ::= CONSTRAINT nm",
1649 /* 68 */ "tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
1650 /* 69 */ "tcons ::= UNIQUE LP sortlist RP onconf",
1651 /* 70 */ "tcons ::= CHECK LP expr RP onconf",
1652 /* 71 */ "tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
1653 /* 72 */ "defer_subclause_opt ::=",
1654 /* 73 */ "onconf ::=",
1655 /* 74 */ "onconf ::= ON CONFLICT resolvetype",
1656 /* 75 */ "orconf ::=",
1657 /* 76 */ "orconf ::= OR resolvetype",
1658 /* 77 */ "resolvetype ::= IGNORE",
1659 /* 78 */ "resolvetype ::= REPLACE",
1660 /* 79 */ "cmd ::= DROP TABLE ifexists fullname",
1661 /* 80 */ "ifexists ::= IF EXISTS",
1662 /* 81 */ "ifexists ::=",
1663 /* 82 */ "cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select",
1664 /* 83 */ "cmd ::= DROP VIEW ifexists fullname",
1665 /* 84 */ "cmd ::= select",
1666 /* 85 */ "select ::= WITH wqlist selectnowith",
1667 /* 86 */ "select ::= WITH RECURSIVE wqlist selectnowith",
1668 /* 87 */ "select ::= selectnowith",
1669 /* 88 */ "selectnowith ::= selectnowith multiselect_op oneselect",
1670 /* 89 */ "multiselect_op ::= UNION",
1671 /* 90 */ "multiselect_op ::= UNION ALL",
1672 /* 91 */ "multiselect_op ::= EXCEPT|INTERSECT",
1673 /* 92 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
1674 /* 93 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt",
1675 /* 94 */ "values ::= VALUES LP nexprlist RP",
1676 /* 95 */ "values ::= values COMMA LP nexprlist RP",
1677 /* 96 */ "distinct ::= DISTINCT",
1678 /* 97 */ "distinct ::= ALL",
1679 /* 98 */ "distinct ::=",
1680 /* 99 */ "sclp ::=",
1681 /* 100 */ "selcollist ::= sclp scanpt expr scanpt as",
1682 /* 101 */ "selcollist ::= sclp scanpt STAR",
1683 /* 102 */ "selcollist ::= sclp scanpt nm DOT STAR",
1684 /* 103 */ "as ::= AS nm",
1685 /* 104 */ "as ::=",
1686 /* 105 */ "from ::=",
1687 /* 106 */ "from ::= FROM seltablist",
1688 /* 107 */ "stl_prefix ::= seltablist joinop",
1689 /* 108 */ "stl_prefix ::=",
1690 /* 109 */ "seltablist ::= stl_prefix nm dbnm as on_using",
1691 /* 110 */ "seltablist ::= stl_prefix nm dbnm as indexed_by on_using",
1692 /* 111 */ "seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using",
1693 /* 112 */ "seltablist ::= stl_prefix LP select RP as on_using",
1694 /* 113 */ "seltablist ::= stl_prefix LP seltablist RP as on_using",
1695 /* 114 */ "dbnm ::=",
1696 /* 115 */ "dbnm ::= DOT nm",
1697 /* 116 */ "fullname ::= nm",
1698 /* 117 */ "fullname ::= nm DOT nm",
1699 /* 118 */ "xfullname ::= nm",
1700 /* 119 */ "xfullname ::= nm DOT nm",
1701 /* 120 */ "xfullname ::= nm DOT nm AS nm",
1702 /* 121 */ "xfullname ::= nm AS nm",
1703 /* 122 */ "joinop ::= COMMA|JOIN",
1704 /* 123 */ "joinop ::= JOIN_KW JOIN",
1705 /* 124 */ "joinop ::= JOIN_KW nm JOIN",
1706 /* 125 */ "joinop ::= JOIN_KW nm nm JOIN",
1707 /* 126 */ "on_using ::= ON expr",
1708 /* 127 */ "on_using ::= USING LP idlist RP",
1709 /* 128 */ "on_using ::=",
1710 /* 129 */ "indexed_opt ::=",
1711 /* 130 */ "indexed_by ::= INDEXED BY nm",
1712 /* 131 */ "indexed_by ::= NOT INDEXED",
1713 /* 132 */ "orderby_opt ::=",
1714 /* 133 */ "orderby_opt ::= ORDER BY sortlist",
1715 /* 134 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
1716 /* 135 */ "sortlist ::= expr sortorder nulls",
1717 /* 136 */ "sortorder ::= ASC",
1718 /* 137 */ "sortorder ::= DESC",
1719 /* 138 */ "sortorder ::=",
1720 /* 139 */ "nulls ::= NULLS FIRST",
1721 /* 140 */ "nulls ::= NULLS LAST",
1722 /* 141 */ "nulls ::=",
1723 /* 142 */ "groupby_opt ::=",
1724 /* 143 */ "groupby_opt ::= GROUP BY nexprlist",
1725 /* 144 */ "having_opt ::=",
1726 /* 145 */ "having_opt ::= HAVING expr",
1727 /* 146 */ "limit_opt ::=",
1728 /* 147 */ "limit_opt ::= LIMIT expr",
1729 /* 148 */ "limit_opt ::= LIMIT expr OFFSET expr",
1730 /* 149 */ "limit_opt ::= LIMIT expr COMMA expr",
1731 /* 150 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret",
1732 /* 151 */ "where_opt ::=",
1733 /* 152 */ "where_opt ::= WHERE expr",
1734 /* 153 */ "where_opt_ret ::=",
1735 /* 154 */ "where_opt_ret ::= WHERE expr",
1736 /* 155 */ "where_opt_ret ::= RETURNING selcollist",
1737 /* 156 */ "where_opt_ret ::= WHERE expr RETURNING selcollist",
1738 /* 157 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret",
1739 /* 158 */ "setlist ::= setlist COMMA nm EQ expr",
1740 /* 159 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
1741 /* 160 */ "setlist ::= nm EQ expr",
1742 /* 161 */ "setlist ::= LP idlist RP EQ expr",
1743 /* 162 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
1744 /* 163 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
1745 /* 164 */ "upsert ::=",
1746 /* 165 */ "upsert ::= RETURNING selcollist",
1747 /* 166 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
1748 /* 167 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
1749 /* 168 */ "upsert ::= ON CONFLICT DO NOTHING returning",
1750 /* 169 */ "upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
1751 /* 170 */ "returning ::= RETURNING selcollist",
1752 /* 171 */ "insert_cmd ::= INSERT orconf",
1753 /* 172 */ "insert_cmd ::= REPLACE",
1754 /* 173 */ "idlist_opt ::=",
1755 /* 174 */ "idlist_opt ::= LP idlist RP",
1756 /* 175 */ "idlist ::= idlist COMMA nm",
1757 /* 176 */ "idlist ::= nm",
1758 /* 177 */ "expr ::= LP expr RP",
1759 /* 178 */ "expr ::= ID|INDEXED|JOIN_KW",
1760 /* 179 */ "expr ::= nm DOT nm",
1761 /* 180 */ "expr ::= nm DOT nm DOT nm",
1762 /* 181 */ "term ::= NULL|FLOAT|BLOB",
1763 /* 182 */ "term ::= STRING",
1764 /* 183 */ "term ::= INTEGER",
1765 /* 184 */ "expr ::= VARIABLE",
1766 /* 185 */ "expr ::= expr COLLATE ID|STRING",
1767 /* 186 */ "expr ::= CAST LP expr AS typetoken RP",
1768 /* 187 */ "expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP",
1769 /* 188 */ "expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP",
1770 /* 189 */ "expr ::= ID|INDEXED|JOIN_KW LP STAR RP",
1771 /* 190 */ "expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over",
1772 /* 191 */ "expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over",
1773 /* 192 */ "expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over",
1774 /* 193 */ "term ::= CTIME_KW",
1775 /* 194 */ "expr ::= LP nexprlist COMMA expr RP",
1776 /* 195 */ "expr ::= expr AND expr",
1777 /* 196 */ "expr ::= expr OR expr",
1778 /* 197 */ "expr ::= expr LT|GT|GE|LE expr",
1779 /* 198 */ "expr ::= expr EQ|NE expr",
1780 /* 199 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
1781 /* 200 */ "expr ::= expr PLUS|MINUS expr",
1782 /* 201 */ "expr ::= expr STAR|SLASH|REM expr",
1783 /* 202 */ "expr ::= expr CONCAT expr",
1784 /* 203 */ "likeop ::= NOT LIKE_KW|MATCH",
1785 /* 204 */ "expr ::= expr likeop expr",
1786 /* 205 */ "expr ::= expr likeop expr ESCAPE expr",
1787 /* 206 */ "expr ::= expr ISNULL|NOTNULL",
1788 /* 207 */ "expr ::= expr NOT NULL",
1789 /* 208 */ "expr ::= expr IS expr",
1790 /* 209 */ "expr ::= expr IS NOT expr",
1791 /* 210 */ "expr ::= expr IS NOT DISTINCT FROM expr",
1792 /* 211 */ "expr ::= expr IS DISTINCT FROM expr",
1793 /* 212 */ "expr ::= NOT expr",
1794 /* 213 */ "expr ::= BITNOT expr",
1795 /* 214 */ "expr ::= PLUS|MINUS expr",
1796 /* 215 */ "expr ::= expr PTR expr",
1797 /* 216 */ "between_op ::= BETWEEN",
1798 /* 217 */ "between_op ::= NOT BETWEEN",
1799 /* 218 */ "expr ::= expr between_op expr AND expr",
1800 /* 219 */ "in_op ::= IN",
1801 /* 220 */ "in_op ::= NOT IN",
1802 /* 221 */ "expr ::= expr in_op LP exprlist RP",
1803 /* 222 */ "expr ::= LP select RP",
1804 /* 223 */ "expr ::= expr in_op LP select RP",
1805 /* 224 */ "expr ::= expr in_op nm dbnm paren_exprlist",
1806 /* 225 */ "expr ::= EXISTS LP select RP",
1807 /* 226 */ "expr ::= CASE case_operand case_exprlist case_else END",
1808 /* 227 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1809 /* 228 */ "case_exprlist ::= WHEN expr THEN expr",
1810 /* 229 */ "case_else ::= ELSE expr",
1811 /* 230 */ "case_else ::=",
1812 /* 231 */ "case_operand ::=",
1813 /* 232 */ "exprlist ::=",
1814 /* 233 */ "nexprlist ::= nexprlist COMMA expr",
1815 /* 234 */ "nexprlist ::= expr",
1816 /* 235 */ "paren_exprlist ::=",
1817 /* 236 */ "paren_exprlist ::= LP exprlist RP",
1818 /* 237 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
1819 /* 238 */ "uniqueflag ::= UNIQUE",
1820 /* 239 */ "uniqueflag ::=",
1821 /* 240 */ "eidlist_opt ::=",
1822 /* 241 */ "eidlist_opt ::= LP eidlist RP",
1823 /* 242 */ "eidlist ::= eidlist COMMA nm collate sortorder",
1824 /* 243 */ "eidlist ::= nm collate sortorder",
1825 /* 244 */ "collate ::=",
1826 /* 245 */ "collate ::= COLLATE ID|STRING",
1827 /* 246 */ "cmd ::= DROP INDEX ifexists fullname",
1828 /* 247 */ "cmd ::= VACUUM vinto",
1829 /* 248 */ "cmd ::= VACUUM nm vinto",
1830 /* 249 */ "vinto ::= INTO expr",
1831 /* 250 */ "vinto ::=",
1832 /* 251 */ "cmd ::= PRAGMA nm dbnm",
1833 /* 252 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
1834 /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
1835 /* 254 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
1836 /* 255 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
1837 /* 256 */ "plus_num ::= PLUS INTEGER|FLOAT",
1838 /* 257 */ "minus_num ::= MINUS INTEGER|FLOAT",
1839 /* 258 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
1840 /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
1841 /* 260 */ "trigger_time ::= BEFORE|AFTER",
1842 /* 261 */ "trigger_time ::= INSTEAD OF",
1843 /* 262 */ "trigger_time ::=",
1844 /* 263 */ "trigger_event ::= DELETE|INSERT",
1845 /* 264 */ "trigger_event ::= UPDATE",
1846 /* 265 */ "trigger_event ::= UPDATE OF idlist",
1847 /* 266 */ "when_clause ::=",
1848 /* 267 */ "when_clause ::= WHEN expr",
1849 /* 268 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
1850 /* 269 */ "trigger_cmd_list ::= trigger_cmd SEMI",
1851 /* 270 */ "trnm ::= nm DOT nm",
1852 /* 271 */ "tridxby ::= INDEXED BY nm",
1853 /* 272 */ "tridxby ::= NOT INDEXED",
1854 /* 273 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt",
1855 /* 274 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
1856 /* 275 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
1857 /* 276 */ "trigger_cmd ::= scanpt select scanpt",
1858 /* 277 */ "expr ::= RAISE LP IGNORE RP",
1859 /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP",
1860 /* 279 */ "raisetype ::= ROLLBACK",
1861 /* 280 */ "raisetype ::= ABORT",
1862 /* 281 */ "raisetype ::= FAIL",
1863 /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname",
1864 /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
1865 /* 284 */ "cmd ::= DETACH database_kw_opt expr",
1866 /* 285 */ "key_opt ::=",
1867 /* 286 */ "key_opt ::= KEY expr",
1868 /* 287 */ "cmd ::= REINDEX",
1869 /* 288 */ "cmd ::= REINDEX nm dbnm",
1870 /* 289 */ "cmd ::= ANALYZE",
1871 /* 290 */ "cmd ::= ANALYZE nm dbnm",
1872 /* 291 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
1873 /* 292 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
1874 /* 293 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
1875 /* 294 */ "add_column_fullname ::= fullname",
1876 /* 295 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
1877 /* 296 */ "cmd ::= create_vtab",
1878 /* 297 */ "cmd ::= create_vtab LP vtabarglist RP",
1879 /* 298 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
1880 /* 299 */ "vtabarg ::=",
1881 /* 300 */ "vtabargtoken ::= ANY",
1882 /* 301 */ "vtabargtoken ::= lp anylist RP",
1883 /* 302 */ "lp ::= LP",
1884 /* 303 */ "with ::= WITH wqlist",
1885 /* 304 */ "with ::= WITH RECURSIVE wqlist",
1886 /* 305 */ "wqas ::= AS",
1887 /* 306 */ "wqas ::= AS MATERIALIZED",
1888 /* 307 */ "wqas ::= AS NOT MATERIALIZED",
1889 /* 308 */ "wqitem ::= nm eidlist_opt wqas LP select RP",
1890 /* 309 */ "wqlist ::= wqitem",
1891 /* 310 */ "wqlist ::= wqlist COMMA wqitem",
1892 /* 311 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
1893 /* 312 */ "windowdefn ::= nm AS LP window RP",
1894 /* 313 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
1895 /* 314 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
1896 /* 315 */ "window ::= ORDER BY sortlist frame_opt",
1897 /* 316 */ "window ::= nm ORDER BY sortlist frame_opt",
1898 /* 317 */ "window ::= nm frame_opt",
1899 /* 318 */ "frame_opt ::=",
1900 /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
1901 /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
1902 /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
1903 /* 322 */ "frame_bound_s ::= frame_bound",
1904 /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
1905 /* 324 */ "frame_bound_e ::= frame_bound",
1906 /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
1907 /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
1908 /* 327 */ "frame_bound ::= CURRENT ROW",
1909 /* 328 */ "frame_exclude_opt ::=",
1910 /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
1911 /* 330 */ "frame_exclude ::= NO OTHERS",
1912 /* 331 */ "frame_exclude ::= CURRENT ROW",
1913 /* 332 */ "frame_exclude ::= GROUP|TIES",
1914 /* 333 */ "window_clause ::= WINDOW windowdefn_list",
1915 /* 334 */ "filter_over ::= filter_clause over_clause",
1916 /* 335 */ "filter_over ::= over_clause",
1917 /* 336 */ "filter_over ::= filter_clause",
1918 /* 337 */ "over_clause ::= OVER LP window RP",
1919 /* 338 */ "over_clause ::= OVER nm",
1920 /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP",
1921 /* 340 */ "input ::= cmdlist",
1922 /* 341 */ "cmdlist ::= cmdlist ecmd",
1923 /* 342 */ "cmdlist ::= ecmd",
1924 /* 343 */ "ecmd ::= SEMI",
1925 /* 344 */ "ecmd ::= cmdx SEMI",
1926 /* 345 */ "ecmd ::= explain cmdx SEMI",
1927 /* 346 */ "trans_opt ::=",
1928 /* 347 */ "trans_opt ::= TRANSACTION",
1929 /* 348 */ "trans_opt ::= TRANSACTION nm",
1930 /* 349 */ "savepoint_opt ::= SAVEPOINT",
1931 /* 350 */ "savepoint_opt ::=",
1932 /* 351 */ "cmd ::= create_table create_table_args",
1933 /* 352 */ "table_option_set ::= table_option",
1934 /* 353 */ "columnlist ::= columnlist COMMA columnname carglist",
1935 /* 354 */ "columnlist ::= columnname carglist",
1936 /* 355 */ "nm ::= ID|INDEXED|JOIN_KW",
1937 /* 356 */ "nm ::= STRING",
1938 /* 357 */ "typetoken ::= typename",
1939 /* 358 */ "typename ::= ID|STRING",
1940 /* 359 */ "signed ::= plus_num",
1941 /* 360 */ "signed ::= minus_num",
1942 /* 361 */ "carglist ::= carglist ccons",
1943 /* 362 */ "carglist ::=",
1944 /* 363 */ "ccons ::= NULL onconf",
1945 /* 364 */ "ccons ::= GENERATED ALWAYS AS generated",
1946 /* 365 */ "ccons ::= AS generated",
1947 /* 366 */ "conslist_opt ::= COMMA conslist",
1948 /* 367 */ "conslist ::= conslist tconscomma tcons",
1949 /* 368 */ "conslist ::= tcons",
1950 /* 369 */ "tconscomma ::=",
1951 /* 370 */ "defer_subclause_opt ::= defer_subclause",
1952 /* 371 */ "resolvetype ::= raisetype",
1953 /* 372 */ "selectnowith ::= oneselect",
1954 /* 373 */ "oneselect ::= values",
1955 /* 374 */ "sclp ::= selcollist COMMA",
1956 /* 375 */ "as ::= ID|STRING",
1957 /* 376 */ "indexed_opt ::= indexed_by",
1958 /* 377 */ "returning ::=",
1959 /* 378 */ "expr ::= term",
1960 /* 379 */ "likeop ::= LIKE_KW|MATCH",
1961 /* 380 */ "case_operand ::= expr",
1962 /* 381 */ "exprlist ::= nexprlist",
1963 /* 382 */ "nmnum ::= plus_num",
1964 /* 383 */ "nmnum ::= nm",
1965 /* 384 */ "nmnum ::= ON",
1966 /* 385 */ "nmnum ::= DELETE",
1967 /* 386 */ "nmnum ::= DEFAULT",
1968 /* 387 */ "plus_num ::= INTEGER|FLOAT",
1969 /* 388 */ "foreach_clause ::=",
1970 /* 389 */ "foreach_clause ::= FOR EACH ROW",
1971 /* 390 */ "trnm ::= nm",
1972 /* 391 */ "tridxby ::=",
1973 /* 392 */ "database_kw_opt ::= DATABASE",
1974 /* 393 */ "database_kw_opt ::=",
1975 /* 394 */ "kwcolumn_opt ::=",
1976 /* 395 */ "kwcolumn_opt ::= COLUMNKW",
1977 /* 396 */ "vtabarglist ::= vtabarg",
1978 /* 397 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
1979 /* 398 */ "vtabarg ::= vtabarg vtabargtoken",
1980 /* 399 */ "anylist ::=",
1981 /* 400 */ "anylist ::= anylist LP anylist RP",
1982 /* 401 */ "anylist ::= anylist ANY",
1983 /* 402 */ "with ::=",
1984 /* 403 */ "windowdefn_list ::= windowdefn",
1985 /* 404 */ "window ::= frame_opt",
1986 };
1987 #endif /* NDEBUG */
1988
1989
1990 #if YYSTACKDEPTH<=0
1991 /*
1992 ** Try to increase the size of the parser stack. Return the number
1993 ** of errors. Return 0 on success.
1994 */
yyGrowStack(yyParser * p)1995 static int yyGrowStack(yyParser *p){
1996 int newSize;
1997 int idx;
1998 yyStackEntry *pNew;
1999
2000 newSize = p->yystksz*2 + 100;
2001 idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
2002 if( p->yystack==&p->yystk0 ){
2003 pNew = malloc(newSize*sizeof(pNew[0]));
2004 if( pNew ) pNew[0] = p->yystk0;
2005 }else{
2006 pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
2007 }
2008 if( pNew ){
2009 p->yystack = pNew;
2010 p->yytos = &p->yystack[idx];
2011 #ifndef NDEBUG
2012 if( yyTraceFILE ){
2013 fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
2014 yyTracePrompt, p->yystksz, newSize);
2015 }
2016 #endif
2017 p->yystksz = newSize;
2018 }
2019 return pNew==0;
2020 }
2021 #endif
2022
2023 /* Datatype of the argument to the memory allocated passed as the
2024 ** second argument to PerfettoSqlParserAlloc() below. This can be changed by
2025 ** putting an appropriate #define in the %include section of the input
2026 ** grammar.
2027 */
2028 #ifndef YYMALLOCARGTYPE
2029 # define YYMALLOCARGTYPE size_t
2030 #endif
2031
2032 /* Initialize a new parser that has already been allocated.
2033 */
PerfettoSqlParserInit(void * yypRawParser PerfettoSqlParserCTX_PDECL)2034 void PerfettoSqlParserInit(void *yypRawParser PerfettoSqlParserCTX_PDECL){
2035 yyParser *yypParser = (yyParser*)yypRawParser;
2036 PerfettoSqlParserCTX_STORE
2037 #ifdef YYTRACKMAXSTACKDEPTH
2038 yypParser->yyhwm = 0;
2039 #endif
2040 #if YYSTACKDEPTH<=0
2041 yypParser->yytos = NULL;
2042 yypParser->yystack = NULL;
2043 yypParser->yystksz = 0;
2044 if( yyGrowStack(yypParser) ){
2045 yypParser->yystack = &yypParser->yystk0;
2046 yypParser->yystksz = 1;
2047 }
2048 #endif
2049 #ifndef YYNOERRORRECOVERY
2050 yypParser->yyerrcnt = -1;
2051 #endif
2052 yypParser->yytos = yypParser->yystack;
2053 yypParser->yystack[0].stateno = 0;
2054 yypParser->yystack[0].major = 0;
2055 #if YYSTACKDEPTH>0
2056 yypParser->yystackEnd = &yypParser->yystack[YYSTACKDEPTH-1];
2057 #endif
2058 }
2059
2060 #ifndef PerfettoSqlParser_ENGINEALWAYSONSTACK
2061 /*
2062 ** This function allocates a new parser.
2063 ** The only argument is a pointer to a function which works like
2064 ** malloc.
2065 **
2066 ** Inputs:
2067 ** A pointer to the function used to allocate memory.
2068 **
2069 ** Outputs:
2070 ** A pointer to a parser. This pointer is used in subsequent calls
2071 ** to PerfettoSqlParser and PerfettoSqlParserFree.
2072 */
PerfettoSqlParserAlloc(void * (* mallocProc)(YYMALLOCARGTYPE)PerfettoSqlParserCTX_PDECL)2073 void *PerfettoSqlParserAlloc(void *(*mallocProc)(YYMALLOCARGTYPE) PerfettoSqlParserCTX_PDECL){
2074 yyParser *yypParser;
2075 yypParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
2076 if( yypParser ){
2077 PerfettoSqlParserCTX_STORE
2078 PerfettoSqlParserInit(yypParser PerfettoSqlParserCTX_PARAM);
2079 }
2080 return (void*)yypParser;
2081 }
2082 #endif /* PerfettoSqlParser_ENGINEALWAYSONSTACK */
2083
2084
2085 /* The following function deletes the "minor type" or semantic value
2086 ** associated with a symbol. The symbol can be either a terminal
2087 ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is
2088 ** a pointer to the value to be deleted. The code used to do the
2089 ** deletions is derived from the %destructor and/or %token_destructor
2090 ** directives of the input grammar.
2091 */
yy_destructor(yyParser * yypParser,YYCODETYPE yymajor,YYMINORTYPE * yypminor)2092 static void yy_destructor(
2093 yyParser *yypParser, /* The parser */
2094 YYCODETYPE yymajor, /* Type code for object to destroy */
2095 YYMINORTYPE *yypminor /* The object to be destroyed */
2096 ){
2097 PerfettoSqlParserARG_FETCH
2098 PerfettoSqlParserCTX_FETCH
2099 switch( yymajor ){
2100 /* Here is inserted the actions which take place when a
2101 ** terminal or non-terminal is destroyed. This can happen
2102 ** when the symbol is popped from the stack during a
2103 ** reduce or during error processing or when a parser is
2104 ** being destroyed before it is finished parsing.
2105 **
2106 ** Note: during a reduce, the only symbols destroyed are those
2107 ** which appear on the RHS of the rule, but which are *not* used
2108 ** inside the C code.
2109 */
2110 /********* Begin destructor definitions ***************************************/
2111 /********* End destructor definitions *****************************************/
2112 default: break; /* If no destructor action specified: do nothing */
2113 }
2114 }
2115
2116 /*
2117 ** Pop the parser's stack once.
2118 **
2119 ** If there is a destructor routine associated with the token which
2120 ** is popped from the stack, then call it.
2121 */
yy_pop_parser_stack(yyParser * pParser)2122 static void yy_pop_parser_stack(yyParser *pParser){
2123 yyStackEntry *yytos;
2124 assert( pParser->yytos!=0 );
2125 assert( pParser->yytos > pParser->yystack );
2126 yytos = pParser->yytos--;
2127 #ifndef NDEBUG
2128 if( yyTraceFILE ){
2129 fprintf(yyTraceFILE,"%sPopping %s\n",
2130 yyTracePrompt,
2131 yyTokenName[yytos->major]);
2132 }
2133 #endif
2134 yy_destructor(pParser, yytos->major, &yytos->minor);
2135 }
2136
2137 /*
2138 ** Clear all secondary memory allocations from the parser
2139 */
PerfettoSqlParserFinalize(void * p)2140 void PerfettoSqlParserFinalize(void *p){
2141 yyParser *pParser = (yyParser*)p;
2142 while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
2143 #if YYSTACKDEPTH<=0
2144 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
2145 #endif
2146 }
2147
2148 #ifndef PerfettoSqlParser_ENGINEALWAYSONSTACK
2149 /*
2150 ** Deallocate and destroy a parser. Destructors are called for
2151 ** all stack elements before shutting the parser down.
2152 **
2153 ** If the YYPARSEFREENEVERNULL macro exists (for example because it
2154 ** is defined in a %include section of the input grammar) then it is
2155 ** assumed that the input pointer is never NULL.
2156 */
PerfettoSqlParserFree(void * p,void (* freeProc)(void *))2157 void PerfettoSqlParserFree(
2158 void *p, /* The parser to be deleted */
2159 void (*freeProc)(void*) /* Function used to reclaim memory */
2160 ){
2161 #ifndef YYPARSEFREENEVERNULL
2162 if( p==0 ) return;
2163 #endif
2164 PerfettoSqlParserFinalize(p);
2165 (*freeProc)(p);
2166 }
2167 #endif /* PerfettoSqlParser_ENGINEALWAYSONSTACK */
2168
2169 /*
2170 ** Return the peak depth of the stack for a parser.
2171 */
2172 #ifdef YYTRACKMAXSTACKDEPTH
PerfettoSqlParserStackPeak(void * p)2173 int PerfettoSqlParserStackPeak(void *p){
2174 yyParser *pParser = (yyParser*)p;
2175 return pParser->yyhwm;
2176 }
2177 #endif
2178
2179 /* This array of booleans keeps track of the parser statement
2180 ** coverage. The element yycoverage[X][Y] is set when the parser
2181 ** is in state X and has a lookahead token Y. In a well-tested
2182 ** systems, every element of this matrix should end up being set.
2183 */
2184 #if defined(YYCOVERAGE)
2185 static unsigned char yycoverage[YYNSTATE][YYNTOKEN];
2186 #endif
2187
2188 /*
2189 ** Write into out a description of every state/lookahead combination that
2190 **
2191 ** (1) has not been used by the parser, and
2192 ** (2) is not a syntax error.
2193 **
2194 ** Return the number of missed state/lookahead combinations.
2195 */
2196 #if defined(YYCOVERAGE)
PerfettoSqlParserCoverage(FILE * out)2197 int PerfettoSqlParserCoverage(FILE *out){
2198 int stateno, iLookAhead, i;
2199 int nMissed = 0;
2200 for(stateno=0; stateno<YYNSTATE; stateno++){
2201 i = yy_shift_ofst[stateno];
2202 for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){
2203 if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue;
2204 if( yycoverage[stateno][iLookAhead]==0 ) nMissed++;
2205 if( out ){
2206 fprintf(out,"State %d lookahead %s %s\n", stateno,
2207 yyTokenName[iLookAhead],
2208 yycoverage[stateno][iLookAhead] ? "ok" : "missed");
2209 }
2210 }
2211 }
2212 return nMissed;
2213 }
2214 #endif
2215
2216 /*
2217 ** Find the appropriate action for a parser given the terminal
2218 ** look-ahead token iLookAhead.
2219 */
yy_find_shift_action(YYCODETYPE iLookAhead,YYACTIONTYPE stateno)2220 static YYACTIONTYPE yy_find_shift_action(
2221 YYCODETYPE iLookAhead, /* The look-ahead token */
2222 YYACTIONTYPE stateno /* Current state number */
2223 ){
2224 int i;
2225
2226 if( stateno>YY_MAX_SHIFT ) return stateno;
2227 assert( stateno <= YY_SHIFT_COUNT );
2228 #if defined(YYCOVERAGE)
2229 yycoverage[stateno][iLookAhead] = 1;
2230 #endif
2231 do{
2232 i = yy_shift_ofst[stateno];
2233 assert( i>=0 );
2234 assert( i<=YY_ACTTAB_COUNT );
2235 assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD );
2236 assert( iLookAhead!=YYNOCODE );
2237 assert( iLookAhead < YYNTOKEN );
2238 i += iLookAhead;
2239 assert( i<(int)YY_NLOOKAHEAD );
2240 if( yy_lookahead[i]!=iLookAhead ){
2241 #ifdef YYFALLBACK
2242 YYCODETYPE iFallback; /* Fallback token */
2243 assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) );
2244 iFallback = yyFallback[iLookAhead];
2245 if( iFallback!=0 ){
2246 #ifndef NDEBUG
2247 if( yyTraceFILE ){
2248 fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
2249 yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
2250 }
2251 #endif
2252 assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */
2253 iLookAhead = iFallback;
2254 continue;
2255 }
2256 #endif
2257 #ifdef YYWILDCARD
2258 {
2259 int j = i - iLookAhead + YYWILDCARD;
2260 assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) );
2261 if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){
2262 #ifndef NDEBUG
2263 if( yyTraceFILE ){
2264 fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
2265 yyTracePrompt, yyTokenName[iLookAhead],
2266 yyTokenName[YYWILDCARD]);
2267 }
2268 #endif /* NDEBUG */
2269 return yy_action[j];
2270 }
2271 }
2272 #endif /* YYWILDCARD */
2273 return yy_default[stateno];
2274 }else{
2275 assert( i>=0 && i<(int)(sizeof(yy_action)/sizeof(yy_action[0])) );
2276 return yy_action[i];
2277 }
2278 }while(1);
2279 }
2280
2281 /*
2282 ** Find the appropriate action for a parser given the non-terminal
2283 ** look-ahead token iLookAhead.
2284 */
yy_find_reduce_action(YYACTIONTYPE stateno,YYCODETYPE iLookAhead)2285 static YYACTIONTYPE yy_find_reduce_action(
2286 YYACTIONTYPE stateno, /* Current state number */
2287 YYCODETYPE iLookAhead /* The look-ahead token */
2288 ){
2289 int i;
2290 #ifdef YYERRORSYMBOL
2291 if( stateno>YY_REDUCE_COUNT ){
2292 return yy_default[stateno];
2293 }
2294 #else
2295 assert( stateno<=YY_REDUCE_COUNT );
2296 #endif
2297 i = yy_reduce_ofst[stateno];
2298 assert( iLookAhead!=YYNOCODE );
2299 i += iLookAhead;
2300 #ifdef YYERRORSYMBOL
2301 if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
2302 return yy_default[stateno];
2303 }
2304 #else
2305 assert( i>=0 && i<YY_ACTTAB_COUNT );
2306 assert( yy_lookahead[i]==iLookAhead );
2307 #endif
2308 return yy_action[i];
2309 }
2310
2311 /*
2312 ** The following routine is called if the stack overflows.
2313 */
yyStackOverflow(yyParser * yypParser)2314 static void yyStackOverflow(yyParser *yypParser){
2315 PerfettoSqlParserARG_FETCH
2316 PerfettoSqlParserCTX_FETCH
2317 #ifndef NDEBUG
2318 if( yyTraceFILE ){
2319 fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
2320 }
2321 #endif
2322 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
2323 /* Here code is inserted which will execute if the parser
2324 ** stack every overflows */
2325 /******** Begin %stack_overflow code ******************************************/
2326 /******** End %stack_overflow code ********************************************/
2327 PerfettoSqlParserARG_STORE /* Suppress warning about unused %extra_argument var */
2328 PerfettoSqlParserCTX_STORE
2329 }
2330
2331 /*
2332 ** Print tracing information for a SHIFT action
2333 */
2334 #ifndef NDEBUG
yyTraceShift(yyParser * yypParser,int yyNewState,const char * zTag)2335 static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){
2336 if( yyTraceFILE ){
2337 if( yyNewState<YYNSTATE ){
2338 fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n",
2339 yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major],
2340 yyNewState);
2341 }else{
2342 fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n",
2343 yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major],
2344 yyNewState - YY_MIN_REDUCE);
2345 }
2346 }
2347 }
2348 #else
2349 # define yyTraceShift(X,Y,Z)
2350 #endif
2351
2352 /*
2353 ** Perform a shift action.
2354 */
yy_shift(yyParser * yypParser,YYACTIONTYPE yyNewState,YYCODETYPE yyMajor,PerfettoSqlParserTOKENTYPE yyMinor)2355 static void yy_shift(
2356 yyParser *yypParser, /* The parser to be shifted */
2357 YYACTIONTYPE yyNewState, /* The new state to shift in */
2358 YYCODETYPE yyMajor, /* The major token to shift in */
2359 PerfettoSqlParserTOKENTYPE yyMinor /* The minor token to shift in */
2360 ){
2361 yyStackEntry *yytos;
2362 yypParser->yytos++;
2363 #ifdef YYTRACKMAXSTACKDEPTH
2364 if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
2365 yypParser->yyhwm++;
2366 assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
2367 }
2368 #endif
2369 #if YYSTACKDEPTH>0
2370 if( yypParser->yytos>yypParser->yystackEnd ){
2371 yypParser->yytos--;
2372 yyStackOverflow(yypParser);
2373 return;
2374 }
2375 #else
2376 if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){
2377 if( yyGrowStack(yypParser) ){
2378 yypParser->yytos--;
2379 yyStackOverflow(yypParser);
2380 return;
2381 }
2382 }
2383 #endif
2384 if( yyNewState > YY_MAX_SHIFT ){
2385 yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
2386 }
2387 yytos = yypParser->yytos;
2388 yytos->stateno = yyNewState;
2389 yytos->major = yyMajor;
2390 yytos->minor.yy0 = yyMinor;
2391 yyTraceShift(yypParser, yyNewState, "Shift");
2392 }
2393
2394 /* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
2395 ** of that rule */
2396 static const YYCODETYPE yyRuleInfoLhs[] = {
2397 176, /* (0) explain ::= EXPLAIN */
2398 176, /* (1) explain ::= EXPLAIN QUERY PLAN */
2399 177, /* (2) cmdx ::= cmd */
2400 178, /* (3) cmd ::= BEGIN transtype trans_opt */
2401 179, /* (4) transtype ::= */
2402 179, /* (5) transtype ::= DEFERRED */
2403 179, /* (6) transtype ::= IMMEDIATE */
2404 179, /* (7) transtype ::= EXCLUSIVE */
2405 178, /* (8) cmd ::= COMMIT|END trans_opt */
2406 178, /* (9) cmd ::= ROLLBACK trans_opt */
2407 178, /* (10) cmd ::= SAVEPOINT nm */
2408 178, /* (11) cmd ::= RELEASE savepoint_opt nm */
2409 178, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
2410 183, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
2411 184, /* (14) createkw ::= CREATE */
2412 186, /* (15) ifnotexists ::= */
2413 186, /* (16) ifnotexists ::= IF NOT EXISTS */
2414 185, /* (17) temp ::= TEMP */
2415 185, /* (18) temp ::= */
2416 188, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
2417 188, /* (20) create_table_args ::= AS select */
2418 191, /* (21) table_option_set ::= */
2419 191, /* (22) table_option_set ::= table_option_set COMMA table_option */
2420 193, /* (23) table_option ::= WITHOUT nm */
2421 193, /* (24) table_option ::= nm */
2422 194, /* (25) columnname ::= nm typetoken */
2423 195, /* (26) typetoken ::= */
2424 195, /* (27) typetoken ::= typename LP signed RP */
2425 195, /* (28) typetoken ::= typename LP signed COMMA signed RP */
2426 196, /* (29) typename ::= typename ID|STRING */
2427 198, /* (30) scanpt ::= */
2428 199, /* (31) scantok ::= */
2429 200, /* (32) ccons ::= CONSTRAINT nm */
2430 200, /* (33) ccons ::= DEFAULT scantok term */
2431 200, /* (34) ccons ::= DEFAULT LP expr RP */
2432 200, /* (35) ccons ::= DEFAULT PLUS scantok term */
2433 200, /* (36) ccons ::= DEFAULT MINUS scantok term */
2434 200, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
2435 200, /* (38) ccons ::= NOT NULL onconf */
2436 200, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
2437 200, /* (40) ccons ::= UNIQUE onconf */
2438 200, /* (41) ccons ::= CHECK LP expr RP */
2439 200, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
2440 200, /* (43) ccons ::= defer_subclause */
2441 200, /* (44) ccons ::= COLLATE ID|STRING */
2442 209, /* (45) generated ::= LP expr RP */
2443 209, /* (46) generated ::= LP expr RP ID */
2444 205, /* (47) autoinc ::= */
2445 205, /* (48) autoinc ::= AUTOINCR */
2446 207, /* (49) refargs ::= */
2447 207, /* (50) refargs ::= refargs refarg */
2448 210, /* (51) refarg ::= MATCH nm */
2449 210, /* (52) refarg ::= ON INSERT refact */
2450 210, /* (53) refarg ::= ON DELETE refact */
2451 210, /* (54) refarg ::= ON UPDATE refact */
2452 211, /* (55) refact ::= SET NULL */
2453 211, /* (56) refact ::= SET DEFAULT */
2454 211, /* (57) refact ::= CASCADE */
2455 211, /* (58) refact ::= RESTRICT */
2456 211, /* (59) refact ::= NO ACTION */
2457 208, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
2458 208, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
2459 212, /* (62) init_deferred_pred_opt ::= */
2460 212, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
2461 212, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
2462 190, /* (65) conslist_opt ::= */
2463 213, /* (66) tconscomma ::= COMMA */
2464 214, /* (67) tcons ::= CONSTRAINT nm */
2465 214, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
2466 214, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
2467 214, /* (70) tcons ::= CHECK LP expr RP onconf */
2468 214, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
2469 217, /* (72) defer_subclause_opt ::= */
2470 203, /* (73) onconf ::= */
2471 203, /* (74) onconf ::= ON CONFLICT resolvetype */
2472 219, /* (75) orconf ::= */
2473 219, /* (76) orconf ::= OR resolvetype */
2474 218, /* (77) resolvetype ::= IGNORE */
2475 218, /* (78) resolvetype ::= REPLACE */
2476 178, /* (79) cmd ::= DROP TABLE ifexists fullname */
2477 220, /* (80) ifexists ::= IF EXISTS */
2478 220, /* (81) ifexists ::= */
2479 178, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
2480 178, /* (83) cmd ::= DROP VIEW ifexists fullname */
2481 178, /* (84) cmd ::= select */
2482 192, /* (85) select ::= WITH wqlist selectnowith */
2483 192, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
2484 192, /* (87) select ::= selectnowith */
2485 223, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
2486 224, /* (89) multiselect_op ::= UNION */
2487 224, /* (90) multiselect_op ::= UNION ALL */
2488 224, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
2489 225, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
2490 225, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
2491 235, /* (94) values ::= VALUES LP nexprlist RP */
2492 235, /* (95) values ::= values COMMA LP nexprlist RP */
2493 226, /* (96) distinct ::= DISTINCT */
2494 226, /* (97) distinct ::= ALL */
2495 226, /* (98) distinct ::= */
2496 237, /* (99) sclp ::= */
2497 227, /* (100) selcollist ::= sclp scanpt expr scanpt as */
2498 227, /* (101) selcollist ::= sclp scanpt STAR */
2499 227, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
2500 238, /* (103) as ::= AS nm */
2501 238, /* (104) as ::= */
2502 228, /* (105) from ::= */
2503 228, /* (106) from ::= FROM seltablist */
2504 240, /* (107) stl_prefix ::= seltablist joinop */
2505 240, /* (108) stl_prefix ::= */
2506 239, /* (109) seltablist ::= stl_prefix nm dbnm as on_using */
2507 239, /* (110) seltablist ::= stl_prefix nm dbnm as indexed_by on_using */
2508 239, /* (111) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */
2509 239, /* (112) seltablist ::= stl_prefix LP select RP as on_using */
2510 239, /* (113) seltablist ::= stl_prefix LP seltablist RP as on_using */
2511 187, /* (114) dbnm ::= */
2512 187, /* (115) dbnm ::= DOT nm */
2513 221, /* (116) fullname ::= nm */
2514 221, /* (117) fullname ::= nm DOT nm */
2515 245, /* (118) xfullname ::= nm */
2516 245, /* (119) xfullname ::= nm DOT nm */
2517 245, /* (120) xfullname ::= nm DOT nm AS nm */
2518 245, /* (121) xfullname ::= nm AS nm */
2519 241, /* (122) joinop ::= COMMA|JOIN */
2520 241, /* (123) joinop ::= JOIN_KW JOIN */
2521 241, /* (124) joinop ::= JOIN_KW nm JOIN */
2522 241, /* (125) joinop ::= JOIN_KW nm nm JOIN */
2523 242, /* (126) on_using ::= ON expr */
2524 242, /* (127) on_using ::= USING LP idlist RP */
2525 242, /* (128) on_using ::= */
2526 247, /* (129) indexed_opt ::= */
2527 243, /* (130) indexed_by ::= INDEXED BY nm */
2528 243, /* (131) indexed_by ::= NOT INDEXED */
2529 232, /* (132) orderby_opt ::= */
2530 232, /* (133) orderby_opt ::= ORDER BY sortlist */
2531 215, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
2532 215, /* (135) sortlist ::= expr sortorder nulls */
2533 204, /* (136) sortorder ::= ASC */
2534 204, /* (137) sortorder ::= DESC */
2535 204, /* (138) sortorder ::= */
2536 248, /* (139) nulls ::= NULLS FIRST */
2537 248, /* (140) nulls ::= NULLS LAST */
2538 248, /* (141) nulls ::= */
2539 230, /* (142) groupby_opt ::= */
2540 230, /* (143) groupby_opt ::= GROUP BY nexprlist */
2541 231, /* (144) having_opt ::= */
2542 231, /* (145) having_opt ::= HAVING expr */
2543 233, /* (146) limit_opt ::= */
2544 233, /* (147) limit_opt ::= LIMIT expr */
2545 233, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
2546 233, /* (149) limit_opt ::= LIMIT expr COMMA expr */
2547 178, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
2548 229, /* (151) where_opt ::= */
2549 229, /* (152) where_opt ::= WHERE expr */
2550 250, /* (153) where_opt_ret ::= */
2551 250, /* (154) where_opt_ret ::= WHERE expr */
2552 250, /* (155) where_opt_ret ::= RETURNING selcollist */
2553 250, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
2554 178, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
2555 251, /* (158) setlist ::= setlist COMMA nm EQ expr */
2556 251, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
2557 251, /* (160) setlist ::= nm EQ expr */
2558 251, /* (161) setlist ::= LP idlist RP EQ expr */
2559 178, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
2560 178, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
2561 254, /* (164) upsert ::= */
2562 254, /* (165) upsert ::= RETURNING selcollist */
2563 254, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
2564 254, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
2565 254, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
2566 254, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
2567 255, /* (170) returning ::= RETURNING selcollist */
2568 252, /* (171) insert_cmd ::= INSERT orconf */
2569 252, /* (172) insert_cmd ::= REPLACE */
2570 253, /* (173) idlist_opt ::= */
2571 253, /* (174) idlist_opt ::= LP idlist RP */
2572 246, /* (175) idlist ::= idlist COMMA nm */
2573 246, /* (176) idlist ::= nm */
2574 202, /* (177) expr ::= LP expr RP */
2575 202, /* (178) expr ::= ID|INDEXED|JOIN_KW */
2576 202, /* (179) expr ::= nm DOT nm */
2577 202, /* (180) expr ::= nm DOT nm DOT nm */
2578 201, /* (181) term ::= NULL|FLOAT|BLOB */
2579 201, /* (182) term ::= STRING */
2580 201, /* (183) term ::= INTEGER */
2581 202, /* (184) expr ::= VARIABLE */
2582 202, /* (185) expr ::= expr COLLATE ID|STRING */
2583 202, /* (186) expr ::= CAST LP expr AS typetoken RP */
2584 202, /* (187) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */
2585 202, /* (188) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */
2586 202, /* (189) expr ::= ID|INDEXED|JOIN_KW LP STAR RP */
2587 202, /* (190) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */
2588 202, /* (191) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */
2589 202, /* (192) expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */
2590 201, /* (193) term ::= CTIME_KW */
2591 202, /* (194) expr ::= LP nexprlist COMMA expr RP */
2592 202, /* (195) expr ::= expr AND expr */
2593 202, /* (196) expr ::= expr OR expr */
2594 202, /* (197) expr ::= expr LT|GT|GE|LE expr */
2595 202, /* (198) expr ::= expr EQ|NE expr */
2596 202, /* (199) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
2597 202, /* (200) expr ::= expr PLUS|MINUS expr */
2598 202, /* (201) expr ::= expr STAR|SLASH|REM expr */
2599 202, /* (202) expr ::= expr CONCAT expr */
2600 257, /* (203) likeop ::= NOT LIKE_KW|MATCH */
2601 202, /* (204) expr ::= expr likeop expr */
2602 202, /* (205) expr ::= expr likeop expr ESCAPE expr */
2603 202, /* (206) expr ::= expr ISNULL|NOTNULL */
2604 202, /* (207) expr ::= expr NOT NULL */
2605 202, /* (208) expr ::= expr IS expr */
2606 202, /* (209) expr ::= expr IS NOT expr */
2607 202, /* (210) expr ::= expr IS NOT DISTINCT FROM expr */
2608 202, /* (211) expr ::= expr IS DISTINCT FROM expr */
2609 202, /* (212) expr ::= NOT expr */
2610 202, /* (213) expr ::= BITNOT expr */
2611 202, /* (214) expr ::= PLUS|MINUS expr */
2612 202, /* (215) expr ::= expr PTR expr */
2613 258, /* (216) between_op ::= BETWEEN */
2614 258, /* (217) between_op ::= NOT BETWEEN */
2615 202, /* (218) expr ::= expr between_op expr AND expr */
2616 259, /* (219) in_op ::= IN */
2617 259, /* (220) in_op ::= NOT IN */
2618 202, /* (221) expr ::= expr in_op LP exprlist RP */
2619 202, /* (222) expr ::= LP select RP */
2620 202, /* (223) expr ::= expr in_op LP select RP */
2621 202, /* (224) expr ::= expr in_op nm dbnm paren_exprlist */
2622 202, /* (225) expr ::= EXISTS LP select RP */
2623 202, /* (226) expr ::= CASE case_operand case_exprlist case_else END */
2624 262, /* (227) case_exprlist ::= case_exprlist WHEN expr THEN expr */
2625 262, /* (228) case_exprlist ::= WHEN expr THEN expr */
2626 263, /* (229) case_else ::= ELSE expr */
2627 263, /* (230) case_else ::= */
2628 261, /* (231) case_operand ::= */
2629 244, /* (232) exprlist ::= */
2630 236, /* (233) nexprlist ::= nexprlist COMMA expr */
2631 236, /* (234) nexprlist ::= expr */
2632 260, /* (235) paren_exprlist ::= */
2633 260, /* (236) paren_exprlist ::= LP exprlist RP */
2634 178, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
2635 264, /* (238) uniqueflag ::= UNIQUE */
2636 264, /* (239) uniqueflag ::= */
2637 206, /* (240) eidlist_opt ::= */
2638 206, /* (241) eidlist_opt ::= LP eidlist RP */
2639 216, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
2640 216, /* (243) eidlist ::= nm collate sortorder */
2641 265, /* (244) collate ::= */
2642 265, /* (245) collate ::= COLLATE ID|STRING */
2643 178, /* (246) cmd ::= DROP INDEX ifexists fullname */
2644 178, /* (247) cmd ::= VACUUM vinto */
2645 178, /* (248) cmd ::= VACUUM nm vinto */
2646 266, /* (249) vinto ::= INTO expr */
2647 266, /* (250) vinto ::= */
2648 178, /* (251) cmd ::= PRAGMA nm dbnm */
2649 178, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
2650 178, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
2651 178, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
2652 178, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
2653 269, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
2654 268, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
2655 178, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
2656 270, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
2657 272, /* (260) trigger_time ::= BEFORE|AFTER */
2658 272, /* (261) trigger_time ::= INSTEAD OF */
2659 272, /* (262) trigger_time ::= */
2660 273, /* (263) trigger_event ::= DELETE|INSERT */
2661 273, /* (264) trigger_event ::= UPDATE */
2662 273, /* (265) trigger_event ::= UPDATE OF idlist */
2663 275, /* (266) when_clause ::= */
2664 275, /* (267) when_clause ::= WHEN expr */
2665 271, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
2666 271, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
2667 277, /* (270) trnm ::= nm DOT nm */
2668 278, /* (271) tridxby ::= INDEXED BY nm */
2669 278, /* (272) tridxby ::= NOT INDEXED */
2670 276, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
2671 276, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
2672 276, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
2673 276, /* (276) trigger_cmd ::= scanpt select scanpt */
2674 202, /* (277) expr ::= RAISE LP IGNORE RP */
2675 202, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
2676 279, /* (279) raisetype ::= ROLLBACK */
2677 279, /* (280) raisetype ::= ABORT */
2678 279, /* (281) raisetype ::= FAIL */
2679 178, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
2680 178, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
2681 178, /* (284) cmd ::= DETACH database_kw_opt expr */
2682 281, /* (285) key_opt ::= */
2683 281, /* (286) key_opt ::= KEY expr */
2684 178, /* (287) cmd ::= REINDEX */
2685 178, /* (288) cmd ::= REINDEX nm dbnm */
2686 178, /* (289) cmd ::= ANALYZE */
2687 178, /* (290) cmd ::= ANALYZE nm dbnm */
2688 178, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
2689 178, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
2690 178, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
2691 282, /* (294) add_column_fullname ::= fullname */
2692 178, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
2693 178, /* (296) cmd ::= create_vtab */
2694 178, /* (297) cmd ::= create_vtab LP vtabarglist RP */
2695 285, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
2696 287, /* (299) vtabarg ::= */
2697 288, /* (300) vtabargtoken ::= ANY */
2698 288, /* (301) vtabargtoken ::= lp anylist RP */
2699 289, /* (302) lp ::= LP */
2700 249, /* (303) with ::= WITH wqlist */
2701 249, /* (304) with ::= WITH RECURSIVE wqlist */
2702 291, /* (305) wqas ::= AS */
2703 291, /* (306) wqas ::= AS MATERIALIZED */
2704 291, /* (307) wqas ::= AS NOT MATERIALIZED */
2705 292, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
2706 222, /* (309) wqlist ::= wqitem */
2707 222, /* (310) wqlist ::= wqlist COMMA wqitem */
2708 293, /* (311) windowdefn_list ::= windowdefn_list COMMA windowdefn */
2709 294, /* (312) windowdefn ::= nm AS LP window RP */
2710 295, /* (313) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
2711 295, /* (314) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
2712 295, /* (315) window ::= ORDER BY sortlist frame_opt */
2713 295, /* (316) window ::= nm ORDER BY sortlist frame_opt */
2714 295, /* (317) window ::= nm frame_opt */
2715 296, /* (318) frame_opt ::= */
2716 296, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
2717 296, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
2718 297, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
2719 298, /* (322) frame_bound_s ::= frame_bound */
2720 298, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
2721 300, /* (324) frame_bound_e ::= frame_bound */
2722 300, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
2723 301, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
2724 301, /* (327) frame_bound ::= CURRENT ROW */
2725 299, /* (328) frame_exclude_opt ::= */
2726 299, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
2727 302, /* (330) frame_exclude ::= NO OTHERS */
2728 302, /* (331) frame_exclude ::= CURRENT ROW */
2729 302, /* (332) frame_exclude ::= GROUP|TIES */
2730 234, /* (333) window_clause ::= WINDOW windowdefn_list */
2731 256, /* (334) filter_over ::= filter_clause over_clause */
2732 256, /* (335) filter_over ::= over_clause */
2733 256, /* (336) filter_over ::= filter_clause */
2734 304, /* (337) over_clause ::= OVER LP window RP */
2735 304, /* (338) over_clause ::= OVER nm */
2736 303, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
2737 305, /* (340) input ::= cmdlist */
2738 306, /* (341) cmdlist ::= cmdlist ecmd */
2739 306, /* (342) cmdlist ::= ecmd */
2740 307, /* (343) ecmd ::= SEMI */
2741 307, /* (344) ecmd ::= cmdx SEMI */
2742 307, /* (345) ecmd ::= explain cmdx SEMI */
2743 180, /* (346) trans_opt ::= */
2744 180, /* (347) trans_opt ::= TRANSACTION */
2745 180, /* (348) trans_opt ::= TRANSACTION nm */
2746 182, /* (349) savepoint_opt ::= SAVEPOINT */
2747 182, /* (350) savepoint_opt ::= */
2748 178, /* (351) cmd ::= create_table create_table_args */
2749 191, /* (352) table_option_set ::= table_option */
2750 189, /* (353) columnlist ::= columnlist COMMA columnname carglist */
2751 189, /* (354) columnlist ::= columnname carglist */
2752 181, /* (355) nm ::= ID|INDEXED|JOIN_KW */
2753 181, /* (356) nm ::= STRING */
2754 195, /* (357) typetoken ::= typename */
2755 196, /* (358) typename ::= ID|STRING */
2756 197, /* (359) signed ::= plus_num */
2757 197, /* (360) signed ::= minus_num */
2758 284, /* (361) carglist ::= carglist ccons */
2759 284, /* (362) carglist ::= */
2760 200, /* (363) ccons ::= NULL onconf */
2761 200, /* (364) ccons ::= GENERATED ALWAYS AS generated */
2762 200, /* (365) ccons ::= AS generated */
2763 190, /* (366) conslist_opt ::= COMMA conslist */
2764 308, /* (367) conslist ::= conslist tconscomma tcons */
2765 308, /* (368) conslist ::= tcons */
2766 213, /* (369) tconscomma ::= */
2767 217, /* (370) defer_subclause_opt ::= defer_subclause */
2768 218, /* (371) resolvetype ::= raisetype */
2769 223, /* (372) selectnowith ::= oneselect */
2770 225, /* (373) oneselect ::= values */
2771 237, /* (374) sclp ::= selcollist COMMA */
2772 238, /* (375) as ::= ID|STRING */
2773 247, /* (376) indexed_opt ::= indexed_by */
2774 255, /* (377) returning ::= */
2775 202, /* (378) expr ::= term */
2776 257, /* (379) likeop ::= LIKE_KW|MATCH */
2777 261, /* (380) case_operand ::= expr */
2778 244, /* (381) exprlist ::= nexprlist */
2779 267, /* (382) nmnum ::= plus_num */
2780 267, /* (383) nmnum ::= nm */
2781 267, /* (384) nmnum ::= ON */
2782 267, /* (385) nmnum ::= DELETE */
2783 267, /* (386) nmnum ::= DEFAULT */
2784 269, /* (387) plus_num ::= INTEGER|FLOAT */
2785 274, /* (388) foreach_clause ::= */
2786 274, /* (389) foreach_clause ::= FOR EACH ROW */
2787 277, /* (390) trnm ::= nm */
2788 278, /* (391) tridxby ::= */
2789 280, /* (392) database_kw_opt ::= DATABASE */
2790 280, /* (393) database_kw_opt ::= */
2791 283, /* (394) kwcolumn_opt ::= */
2792 283, /* (395) kwcolumn_opt ::= COLUMNKW */
2793 286, /* (396) vtabarglist ::= vtabarg */
2794 286, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
2795 287, /* (398) vtabarg ::= vtabarg vtabargtoken */
2796 290, /* (399) anylist ::= */
2797 290, /* (400) anylist ::= anylist LP anylist RP */
2798 290, /* (401) anylist ::= anylist ANY */
2799 249, /* (402) with ::= */
2800 293, /* (403) windowdefn_list ::= windowdefn */
2801 295, /* (404) window ::= frame_opt */
2802 };
2803
2804 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
2805 ** of symbols on the right-hand side of that rule. */
2806 static const signed char yyRuleInfoNRhs[] = {
2807 -1, /* (0) explain ::= EXPLAIN */
2808 -3, /* (1) explain ::= EXPLAIN QUERY PLAN */
2809 -1, /* (2) cmdx ::= cmd */
2810 -3, /* (3) cmd ::= BEGIN transtype trans_opt */
2811 0, /* (4) transtype ::= */
2812 -1, /* (5) transtype ::= DEFERRED */
2813 -1, /* (6) transtype ::= IMMEDIATE */
2814 -1, /* (7) transtype ::= EXCLUSIVE */
2815 -2, /* (8) cmd ::= COMMIT|END trans_opt */
2816 -2, /* (9) cmd ::= ROLLBACK trans_opt */
2817 -2, /* (10) cmd ::= SAVEPOINT nm */
2818 -3, /* (11) cmd ::= RELEASE savepoint_opt nm */
2819 -5, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
2820 -6, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
2821 -1, /* (14) createkw ::= CREATE */
2822 0, /* (15) ifnotexists ::= */
2823 -3, /* (16) ifnotexists ::= IF NOT EXISTS */
2824 -1, /* (17) temp ::= TEMP */
2825 0, /* (18) temp ::= */
2826 -5, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */
2827 -2, /* (20) create_table_args ::= AS select */
2828 0, /* (21) table_option_set ::= */
2829 -3, /* (22) table_option_set ::= table_option_set COMMA table_option */
2830 -2, /* (23) table_option ::= WITHOUT nm */
2831 -1, /* (24) table_option ::= nm */
2832 -2, /* (25) columnname ::= nm typetoken */
2833 0, /* (26) typetoken ::= */
2834 -4, /* (27) typetoken ::= typename LP signed RP */
2835 -6, /* (28) typetoken ::= typename LP signed COMMA signed RP */
2836 -2, /* (29) typename ::= typename ID|STRING */
2837 0, /* (30) scanpt ::= */
2838 0, /* (31) scantok ::= */
2839 -2, /* (32) ccons ::= CONSTRAINT nm */
2840 -3, /* (33) ccons ::= DEFAULT scantok term */
2841 -4, /* (34) ccons ::= DEFAULT LP expr RP */
2842 -4, /* (35) ccons ::= DEFAULT PLUS scantok term */
2843 -4, /* (36) ccons ::= DEFAULT MINUS scantok term */
2844 -3, /* (37) ccons ::= DEFAULT scantok ID|INDEXED */
2845 -3, /* (38) ccons ::= NOT NULL onconf */
2846 -5, /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */
2847 -2, /* (40) ccons ::= UNIQUE onconf */
2848 -4, /* (41) ccons ::= CHECK LP expr RP */
2849 -4, /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */
2850 -1, /* (43) ccons ::= defer_subclause */
2851 -2, /* (44) ccons ::= COLLATE ID|STRING */
2852 -3, /* (45) generated ::= LP expr RP */
2853 -4, /* (46) generated ::= LP expr RP ID */
2854 0, /* (47) autoinc ::= */
2855 -1, /* (48) autoinc ::= AUTOINCR */
2856 0, /* (49) refargs ::= */
2857 -2, /* (50) refargs ::= refargs refarg */
2858 -2, /* (51) refarg ::= MATCH nm */
2859 -3, /* (52) refarg ::= ON INSERT refact */
2860 -3, /* (53) refarg ::= ON DELETE refact */
2861 -3, /* (54) refarg ::= ON UPDATE refact */
2862 -2, /* (55) refact ::= SET NULL */
2863 -2, /* (56) refact ::= SET DEFAULT */
2864 -1, /* (57) refact ::= CASCADE */
2865 -1, /* (58) refact ::= RESTRICT */
2866 -2, /* (59) refact ::= NO ACTION */
2867 -3, /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
2868 -2, /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
2869 0, /* (62) init_deferred_pred_opt ::= */
2870 -2, /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */
2871 -2, /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
2872 0, /* (65) conslist_opt ::= */
2873 -1, /* (66) tconscomma ::= COMMA */
2874 -2, /* (67) tcons ::= CONSTRAINT nm */
2875 -7, /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
2876 -5, /* (69) tcons ::= UNIQUE LP sortlist RP onconf */
2877 -5, /* (70) tcons ::= CHECK LP expr RP onconf */
2878 -10, /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
2879 0, /* (72) defer_subclause_opt ::= */
2880 0, /* (73) onconf ::= */
2881 -3, /* (74) onconf ::= ON CONFLICT resolvetype */
2882 0, /* (75) orconf ::= */
2883 -2, /* (76) orconf ::= OR resolvetype */
2884 -1, /* (77) resolvetype ::= IGNORE */
2885 -1, /* (78) resolvetype ::= REPLACE */
2886 -4, /* (79) cmd ::= DROP TABLE ifexists fullname */
2887 -2, /* (80) ifexists ::= IF EXISTS */
2888 0, /* (81) ifexists ::= */
2889 -9, /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
2890 -4, /* (83) cmd ::= DROP VIEW ifexists fullname */
2891 -1, /* (84) cmd ::= select */
2892 -3, /* (85) select ::= WITH wqlist selectnowith */
2893 -4, /* (86) select ::= WITH RECURSIVE wqlist selectnowith */
2894 -1, /* (87) select ::= selectnowith */
2895 -3, /* (88) selectnowith ::= selectnowith multiselect_op oneselect */
2896 -1, /* (89) multiselect_op ::= UNION */
2897 -2, /* (90) multiselect_op ::= UNION ALL */
2898 -1, /* (91) multiselect_op ::= EXCEPT|INTERSECT */
2899 -9, /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
2900 -10, /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
2901 -4, /* (94) values ::= VALUES LP nexprlist RP */
2902 -5, /* (95) values ::= values COMMA LP nexprlist RP */
2903 -1, /* (96) distinct ::= DISTINCT */
2904 -1, /* (97) distinct ::= ALL */
2905 0, /* (98) distinct ::= */
2906 0, /* (99) sclp ::= */
2907 -5, /* (100) selcollist ::= sclp scanpt expr scanpt as */
2908 -3, /* (101) selcollist ::= sclp scanpt STAR */
2909 -5, /* (102) selcollist ::= sclp scanpt nm DOT STAR */
2910 -2, /* (103) as ::= AS nm */
2911 0, /* (104) as ::= */
2912 0, /* (105) from ::= */
2913 -2, /* (106) from ::= FROM seltablist */
2914 -2, /* (107) stl_prefix ::= seltablist joinop */
2915 0, /* (108) stl_prefix ::= */
2916 -5, /* (109) seltablist ::= stl_prefix nm dbnm as on_using */
2917 -6, /* (110) seltablist ::= stl_prefix nm dbnm as indexed_by on_using */
2918 -8, /* (111) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */
2919 -6, /* (112) seltablist ::= stl_prefix LP select RP as on_using */
2920 -6, /* (113) seltablist ::= stl_prefix LP seltablist RP as on_using */
2921 0, /* (114) dbnm ::= */
2922 -2, /* (115) dbnm ::= DOT nm */
2923 -1, /* (116) fullname ::= nm */
2924 -3, /* (117) fullname ::= nm DOT nm */
2925 -1, /* (118) xfullname ::= nm */
2926 -3, /* (119) xfullname ::= nm DOT nm */
2927 -5, /* (120) xfullname ::= nm DOT nm AS nm */
2928 -3, /* (121) xfullname ::= nm AS nm */
2929 -1, /* (122) joinop ::= COMMA|JOIN */
2930 -2, /* (123) joinop ::= JOIN_KW JOIN */
2931 -3, /* (124) joinop ::= JOIN_KW nm JOIN */
2932 -4, /* (125) joinop ::= JOIN_KW nm nm JOIN */
2933 -2, /* (126) on_using ::= ON expr */
2934 -4, /* (127) on_using ::= USING LP idlist RP */
2935 0, /* (128) on_using ::= */
2936 0, /* (129) indexed_opt ::= */
2937 -3, /* (130) indexed_by ::= INDEXED BY nm */
2938 -2, /* (131) indexed_by ::= NOT INDEXED */
2939 0, /* (132) orderby_opt ::= */
2940 -3, /* (133) orderby_opt ::= ORDER BY sortlist */
2941 -5, /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */
2942 -3, /* (135) sortlist ::= expr sortorder nulls */
2943 -1, /* (136) sortorder ::= ASC */
2944 -1, /* (137) sortorder ::= DESC */
2945 0, /* (138) sortorder ::= */
2946 -2, /* (139) nulls ::= NULLS FIRST */
2947 -2, /* (140) nulls ::= NULLS LAST */
2948 0, /* (141) nulls ::= */
2949 0, /* (142) groupby_opt ::= */
2950 -3, /* (143) groupby_opt ::= GROUP BY nexprlist */
2951 0, /* (144) having_opt ::= */
2952 -2, /* (145) having_opt ::= HAVING expr */
2953 0, /* (146) limit_opt ::= */
2954 -2, /* (147) limit_opt ::= LIMIT expr */
2955 -4, /* (148) limit_opt ::= LIMIT expr OFFSET expr */
2956 -4, /* (149) limit_opt ::= LIMIT expr COMMA expr */
2957 -6, /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */
2958 0, /* (151) where_opt ::= */
2959 -2, /* (152) where_opt ::= WHERE expr */
2960 0, /* (153) where_opt_ret ::= */
2961 -2, /* (154) where_opt_ret ::= WHERE expr */
2962 -2, /* (155) where_opt_ret ::= RETURNING selcollist */
2963 -4, /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */
2964 -9, /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */
2965 -5, /* (158) setlist ::= setlist COMMA nm EQ expr */
2966 -7, /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */
2967 -3, /* (160) setlist ::= nm EQ expr */
2968 -5, /* (161) setlist ::= LP idlist RP EQ expr */
2969 -7, /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
2970 -8, /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */
2971 0, /* (164) upsert ::= */
2972 -2, /* (165) upsert ::= RETURNING selcollist */
2973 -12, /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */
2974 -9, /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */
2975 -5, /* (168) upsert ::= ON CONFLICT DO NOTHING returning */
2976 -8, /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */
2977 -2, /* (170) returning ::= RETURNING selcollist */
2978 -2, /* (171) insert_cmd ::= INSERT orconf */
2979 -1, /* (172) insert_cmd ::= REPLACE */
2980 0, /* (173) idlist_opt ::= */
2981 -3, /* (174) idlist_opt ::= LP idlist RP */
2982 -3, /* (175) idlist ::= idlist COMMA nm */
2983 -1, /* (176) idlist ::= nm */
2984 -3, /* (177) expr ::= LP expr RP */
2985 -1, /* (178) expr ::= ID|INDEXED|JOIN_KW */
2986 -3, /* (179) expr ::= nm DOT nm */
2987 -5, /* (180) expr ::= nm DOT nm DOT nm */
2988 -1, /* (181) term ::= NULL|FLOAT|BLOB */
2989 -1, /* (182) term ::= STRING */
2990 -1, /* (183) term ::= INTEGER */
2991 -1, /* (184) expr ::= VARIABLE */
2992 -3, /* (185) expr ::= expr COLLATE ID|STRING */
2993 -6, /* (186) expr ::= CAST LP expr AS typetoken RP */
2994 -5, /* (187) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */
2995 -8, /* (188) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */
2996 -4, /* (189) expr ::= ID|INDEXED|JOIN_KW LP STAR RP */
2997 -6, /* (190) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */
2998 -9, /* (191) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */
2999 -5, /* (192) expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */
3000 -1, /* (193) term ::= CTIME_KW */
3001 -5, /* (194) expr ::= LP nexprlist COMMA expr RP */
3002 -3, /* (195) expr ::= expr AND expr */
3003 -3, /* (196) expr ::= expr OR expr */
3004 -3, /* (197) expr ::= expr LT|GT|GE|LE expr */
3005 -3, /* (198) expr ::= expr EQ|NE expr */
3006 -3, /* (199) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
3007 -3, /* (200) expr ::= expr PLUS|MINUS expr */
3008 -3, /* (201) expr ::= expr STAR|SLASH|REM expr */
3009 -3, /* (202) expr ::= expr CONCAT expr */
3010 -2, /* (203) likeop ::= NOT LIKE_KW|MATCH */
3011 -3, /* (204) expr ::= expr likeop expr */
3012 -5, /* (205) expr ::= expr likeop expr ESCAPE expr */
3013 -2, /* (206) expr ::= expr ISNULL|NOTNULL */
3014 -3, /* (207) expr ::= expr NOT NULL */
3015 -3, /* (208) expr ::= expr IS expr */
3016 -4, /* (209) expr ::= expr IS NOT expr */
3017 -6, /* (210) expr ::= expr IS NOT DISTINCT FROM expr */
3018 -5, /* (211) expr ::= expr IS DISTINCT FROM expr */
3019 -2, /* (212) expr ::= NOT expr */
3020 -2, /* (213) expr ::= BITNOT expr */
3021 -2, /* (214) expr ::= PLUS|MINUS expr */
3022 -3, /* (215) expr ::= expr PTR expr */
3023 -1, /* (216) between_op ::= BETWEEN */
3024 -2, /* (217) between_op ::= NOT BETWEEN */
3025 -5, /* (218) expr ::= expr between_op expr AND expr */
3026 -1, /* (219) in_op ::= IN */
3027 -2, /* (220) in_op ::= NOT IN */
3028 -5, /* (221) expr ::= expr in_op LP exprlist RP */
3029 -3, /* (222) expr ::= LP select RP */
3030 -5, /* (223) expr ::= expr in_op LP select RP */
3031 -5, /* (224) expr ::= expr in_op nm dbnm paren_exprlist */
3032 -4, /* (225) expr ::= EXISTS LP select RP */
3033 -5, /* (226) expr ::= CASE case_operand case_exprlist case_else END */
3034 -5, /* (227) case_exprlist ::= case_exprlist WHEN expr THEN expr */
3035 -4, /* (228) case_exprlist ::= WHEN expr THEN expr */
3036 -2, /* (229) case_else ::= ELSE expr */
3037 0, /* (230) case_else ::= */
3038 0, /* (231) case_operand ::= */
3039 0, /* (232) exprlist ::= */
3040 -3, /* (233) nexprlist ::= nexprlist COMMA expr */
3041 -1, /* (234) nexprlist ::= expr */
3042 0, /* (235) paren_exprlist ::= */
3043 -3, /* (236) paren_exprlist ::= LP exprlist RP */
3044 -12, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
3045 -1, /* (238) uniqueflag ::= UNIQUE */
3046 0, /* (239) uniqueflag ::= */
3047 0, /* (240) eidlist_opt ::= */
3048 -3, /* (241) eidlist_opt ::= LP eidlist RP */
3049 -5, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */
3050 -3, /* (243) eidlist ::= nm collate sortorder */
3051 0, /* (244) collate ::= */
3052 -2, /* (245) collate ::= COLLATE ID|STRING */
3053 -4, /* (246) cmd ::= DROP INDEX ifexists fullname */
3054 -2, /* (247) cmd ::= VACUUM vinto */
3055 -3, /* (248) cmd ::= VACUUM nm vinto */
3056 -2, /* (249) vinto ::= INTO expr */
3057 0, /* (250) vinto ::= */
3058 -3, /* (251) cmd ::= PRAGMA nm dbnm */
3059 -5, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */
3060 -6, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */
3061 -5, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */
3062 -6, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */
3063 -2, /* (256) plus_num ::= PLUS INTEGER|FLOAT */
3064 -2, /* (257) minus_num ::= MINUS INTEGER|FLOAT */
3065 -5, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
3066 -11, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
3067 -1, /* (260) trigger_time ::= BEFORE|AFTER */
3068 -2, /* (261) trigger_time ::= INSTEAD OF */
3069 0, /* (262) trigger_time ::= */
3070 -1, /* (263) trigger_event ::= DELETE|INSERT */
3071 -1, /* (264) trigger_event ::= UPDATE */
3072 -3, /* (265) trigger_event ::= UPDATE OF idlist */
3073 0, /* (266) when_clause ::= */
3074 -2, /* (267) when_clause ::= WHEN expr */
3075 -3, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
3076 -2, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */
3077 -3, /* (270) trnm ::= nm DOT nm */
3078 -3, /* (271) tridxby ::= INDEXED BY nm */
3079 -2, /* (272) tridxby ::= NOT INDEXED */
3080 -9, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */
3081 -8, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
3082 -6, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
3083 -3, /* (276) trigger_cmd ::= scanpt select scanpt */
3084 -4, /* (277) expr ::= RAISE LP IGNORE RP */
3085 -6, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */
3086 -1, /* (279) raisetype ::= ROLLBACK */
3087 -1, /* (280) raisetype ::= ABORT */
3088 -1, /* (281) raisetype ::= FAIL */
3089 -4, /* (282) cmd ::= DROP TRIGGER ifexists fullname */
3090 -6, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
3091 -3, /* (284) cmd ::= DETACH database_kw_opt expr */
3092 0, /* (285) key_opt ::= */
3093 -2, /* (286) key_opt ::= KEY expr */
3094 -1, /* (287) cmd ::= REINDEX */
3095 -3, /* (288) cmd ::= REINDEX nm dbnm */
3096 -1, /* (289) cmd ::= ANALYZE */
3097 -3, /* (290) cmd ::= ANALYZE nm dbnm */
3098 -6, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */
3099 -7, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
3100 -6, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
3101 -1, /* (294) add_column_fullname ::= fullname */
3102 -8, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
3103 -1, /* (296) cmd ::= create_vtab */
3104 -4, /* (297) cmd ::= create_vtab LP vtabarglist RP */
3105 -8, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
3106 0, /* (299) vtabarg ::= */
3107 -1, /* (300) vtabargtoken ::= ANY */
3108 -3, /* (301) vtabargtoken ::= lp anylist RP */
3109 -1, /* (302) lp ::= LP */
3110 -2, /* (303) with ::= WITH wqlist */
3111 -3, /* (304) with ::= WITH RECURSIVE wqlist */
3112 -1, /* (305) wqas ::= AS */
3113 -2, /* (306) wqas ::= AS MATERIALIZED */
3114 -3, /* (307) wqas ::= AS NOT MATERIALIZED */
3115 -6, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */
3116 -1, /* (309) wqlist ::= wqitem */
3117 -3, /* (310) wqlist ::= wqlist COMMA wqitem */
3118 -3, /* (311) windowdefn_list ::= windowdefn_list COMMA windowdefn */
3119 -5, /* (312) windowdefn ::= nm AS LP window RP */
3120 -5, /* (313) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
3121 -6, /* (314) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
3122 -4, /* (315) window ::= ORDER BY sortlist frame_opt */
3123 -5, /* (316) window ::= nm ORDER BY sortlist frame_opt */
3124 -2, /* (317) window ::= nm frame_opt */
3125 0, /* (318) frame_opt ::= */
3126 -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
3127 -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
3128 -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */
3129 -1, /* (322) frame_bound_s ::= frame_bound */
3130 -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */
3131 -1, /* (324) frame_bound_e ::= frame_bound */
3132 -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */
3133 -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */
3134 -2, /* (327) frame_bound ::= CURRENT ROW */
3135 0, /* (328) frame_exclude_opt ::= */
3136 -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */
3137 -2, /* (330) frame_exclude ::= NO OTHERS */
3138 -2, /* (331) frame_exclude ::= CURRENT ROW */
3139 -1, /* (332) frame_exclude ::= GROUP|TIES */
3140 -2, /* (333) window_clause ::= WINDOW windowdefn_list */
3141 -2, /* (334) filter_over ::= filter_clause over_clause */
3142 -1, /* (335) filter_over ::= over_clause */
3143 -1, /* (336) filter_over ::= filter_clause */
3144 -4, /* (337) over_clause ::= OVER LP window RP */
3145 -2, /* (338) over_clause ::= OVER nm */
3146 -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */
3147 -1, /* (340) input ::= cmdlist */
3148 -2, /* (341) cmdlist ::= cmdlist ecmd */
3149 -1, /* (342) cmdlist ::= ecmd */
3150 -1, /* (343) ecmd ::= SEMI */
3151 -2, /* (344) ecmd ::= cmdx SEMI */
3152 -3, /* (345) ecmd ::= explain cmdx SEMI */
3153 0, /* (346) trans_opt ::= */
3154 -1, /* (347) trans_opt ::= TRANSACTION */
3155 -2, /* (348) trans_opt ::= TRANSACTION nm */
3156 -1, /* (349) savepoint_opt ::= SAVEPOINT */
3157 0, /* (350) savepoint_opt ::= */
3158 -2, /* (351) cmd ::= create_table create_table_args */
3159 -1, /* (352) table_option_set ::= table_option */
3160 -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */
3161 -2, /* (354) columnlist ::= columnname carglist */
3162 -1, /* (355) nm ::= ID|INDEXED|JOIN_KW */
3163 -1, /* (356) nm ::= STRING */
3164 -1, /* (357) typetoken ::= typename */
3165 -1, /* (358) typename ::= ID|STRING */
3166 -1, /* (359) signed ::= plus_num */
3167 -1, /* (360) signed ::= minus_num */
3168 -2, /* (361) carglist ::= carglist ccons */
3169 0, /* (362) carglist ::= */
3170 -2, /* (363) ccons ::= NULL onconf */
3171 -4, /* (364) ccons ::= GENERATED ALWAYS AS generated */
3172 -2, /* (365) ccons ::= AS generated */
3173 -2, /* (366) conslist_opt ::= COMMA conslist */
3174 -3, /* (367) conslist ::= conslist tconscomma tcons */
3175 -1, /* (368) conslist ::= tcons */
3176 0, /* (369) tconscomma ::= */
3177 -1, /* (370) defer_subclause_opt ::= defer_subclause */
3178 -1, /* (371) resolvetype ::= raisetype */
3179 -1, /* (372) selectnowith ::= oneselect */
3180 -1, /* (373) oneselect ::= values */
3181 -2, /* (374) sclp ::= selcollist COMMA */
3182 -1, /* (375) as ::= ID|STRING */
3183 -1, /* (376) indexed_opt ::= indexed_by */
3184 0, /* (377) returning ::= */
3185 -1, /* (378) expr ::= term */
3186 -1, /* (379) likeop ::= LIKE_KW|MATCH */
3187 -1, /* (380) case_operand ::= expr */
3188 -1, /* (381) exprlist ::= nexprlist */
3189 -1, /* (382) nmnum ::= plus_num */
3190 -1, /* (383) nmnum ::= nm */
3191 -1, /* (384) nmnum ::= ON */
3192 -1, /* (385) nmnum ::= DELETE */
3193 -1, /* (386) nmnum ::= DEFAULT */
3194 -1, /* (387) plus_num ::= INTEGER|FLOAT */
3195 0, /* (388) foreach_clause ::= */
3196 -3, /* (389) foreach_clause ::= FOR EACH ROW */
3197 -1, /* (390) trnm ::= nm */
3198 0, /* (391) tridxby ::= */
3199 -1, /* (392) database_kw_opt ::= DATABASE */
3200 0, /* (393) database_kw_opt ::= */
3201 0, /* (394) kwcolumn_opt ::= */
3202 -1, /* (395) kwcolumn_opt ::= COLUMNKW */
3203 -1, /* (396) vtabarglist ::= vtabarg */
3204 -3, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */
3205 -2, /* (398) vtabarg ::= vtabarg vtabargtoken */
3206 0, /* (399) anylist ::= */
3207 -4, /* (400) anylist ::= anylist LP anylist RP */
3208 -2, /* (401) anylist ::= anylist ANY */
3209 0, /* (402) with ::= */
3210 -1, /* (403) windowdefn_list ::= windowdefn */
3211 -1, /* (404) window ::= frame_opt */
3212 };
3213
3214 static void yy_accept(yyParser*); /* Forward Declaration */
3215
3216 /*
3217 ** Perform a reduce action and the shift that must immediately
3218 ** follow the reduce.
3219 **
3220 ** The yyLookahead and yyLookaheadToken parameters provide reduce actions
3221 ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE
3222 ** if the lookahead token has already been consumed. As this procedure is
3223 ** only called from one place, optimizing compilers will in-line it, which
3224 ** means that the extra parameters have no performance impact.
3225 */
yy_reduce(yyParser * yypParser,unsigned int yyruleno,int yyLookahead,PerfettoSqlParserTOKENTYPE yyLookaheadToken PerfettoSqlParserCTX_PDECL)3226 static YYACTIONTYPE yy_reduce(
3227 yyParser *yypParser, /* The parser */
3228 unsigned int yyruleno, /* Number of the rule by which to reduce */
3229 int yyLookahead, /* Lookahead token, or YYNOCODE if none */
3230 PerfettoSqlParserTOKENTYPE yyLookaheadToken /* Value of the lookahead token */
3231 PerfettoSqlParserCTX_PDECL /* %extra_context */
3232 ){
3233 int yygoto; /* The next state */
3234 YYACTIONTYPE yyact; /* The next action */
3235 yyStackEntry *yymsp; /* The top of the parser's stack */
3236 int yysize; /* Amount to pop the stack */
3237 PerfettoSqlParserARG_FETCH
3238 (void)yyLookahead;
3239 (void)yyLookaheadToken;
3240 yymsp = yypParser->yytos;
3241
3242 switch( yyruleno ){
3243 /* Beginning here are the reduction cases. A typical example
3244 ** follows:
3245 ** case 0:
3246 ** #line <lineno> <grammarfile>
3247 ** { ... } // User supplied code
3248 ** #line <lineno> <thisfile>
3249 ** break;
3250 */
3251 /********** Begin reduce actions **********************************************/
3252 default:
3253 /* (0) explain ::= EXPLAIN */ yytestcase(yyruleno==0);
3254 /* (1) explain ::= EXPLAIN QUERY PLAN */ yytestcase(yyruleno==1);
3255 /* (2) cmdx ::= cmd (OPTIMIZED OUT) */ assert(yyruleno!=2);
3256 /* (3) cmd ::= BEGIN transtype trans_opt */ yytestcase(yyruleno==3);
3257 /* (4) transtype ::= */ yytestcase(yyruleno==4);
3258 /* (5) transtype ::= DEFERRED */ yytestcase(yyruleno==5);
3259 /* (6) transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
3260 /* (7) transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
3261 /* (8) cmd ::= COMMIT|END trans_opt */ yytestcase(yyruleno==8);
3262 /* (9) cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
3263 /* (10) cmd ::= SAVEPOINT nm */ yytestcase(yyruleno==10);
3264 /* (11) cmd ::= RELEASE savepoint_opt nm */ yytestcase(yyruleno==11);
3265 /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ yytestcase(yyruleno==12);
3266 /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */ yytestcase(yyruleno==13);
3267 /* (14) createkw ::= CREATE */ yytestcase(yyruleno==14);
3268 /* (15) ifnotexists ::= */ yytestcase(yyruleno==15);
3269 /* (16) ifnotexists ::= IF NOT EXISTS */ yytestcase(yyruleno==16);
3270 /* (17) temp ::= TEMP */ yytestcase(yyruleno==17);
3271 /* (18) temp ::= */ yytestcase(yyruleno==18);
3272 /* (19) create_table_args ::= LP columnlist conslist_opt RP table_option_set */ yytestcase(yyruleno==19);
3273 /* (20) create_table_args ::= AS select */ yytestcase(yyruleno==20);
3274 /* (21) table_option_set ::= */ yytestcase(yyruleno==21);
3275 /* (22) table_option_set ::= table_option_set COMMA table_option */ yytestcase(yyruleno==22);
3276 /* (23) table_option ::= WITHOUT nm */ yytestcase(yyruleno==23);
3277 /* (24) table_option ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=24);
3278 /* (25) columnname ::= nm typetoken */ yytestcase(yyruleno==25);
3279 /* (26) typetoken ::= */ yytestcase(yyruleno==26);
3280 /* (27) typetoken ::= typename LP signed RP */ yytestcase(yyruleno==27);
3281 /* (28) typetoken ::= typename LP signed COMMA signed RP */ yytestcase(yyruleno==28);
3282 /* (29) typename ::= typename ID|STRING */ yytestcase(yyruleno==29);
3283 /* (30) scanpt ::= */ yytestcase(yyruleno==30);
3284 /* (31) scantok ::= */ yytestcase(yyruleno==31);
3285 /* (32) ccons ::= CONSTRAINT nm */ yytestcase(yyruleno==32);
3286 /* (33) ccons ::= DEFAULT scantok term */ yytestcase(yyruleno==33);
3287 /* (34) ccons ::= DEFAULT LP expr RP */ yytestcase(yyruleno==34);
3288 /* (35) ccons ::= DEFAULT PLUS scantok term */ yytestcase(yyruleno==35);
3289 /* (36) ccons ::= DEFAULT MINUS scantok term */ yytestcase(yyruleno==36);
3290 /* (37) ccons ::= DEFAULT scantok ID|INDEXED */ yytestcase(yyruleno==37);
3291 /* (38) ccons ::= NOT NULL onconf */ yytestcase(yyruleno==38);
3292 /* (39) ccons ::= PRIMARY KEY sortorder onconf autoinc */ yytestcase(yyruleno==39);
3293 /* (40) ccons ::= UNIQUE onconf */ yytestcase(yyruleno==40);
3294 /* (41) ccons ::= CHECK LP expr RP */ yytestcase(yyruleno==41);
3295 /* (42) ccons ::= REFERENCES nm eidlist_opt refargs */ yytestcase(yyruleno==42);
3296 /* (43) ccons ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=43);
3297 /* (44) ccons ::= COLLATE ID|STRING */ yytestcase(yyruleno==44);
3298 /* (45) generated ::= LP expr RP */ yytestcase(yyruleno==45);
3299 /* (46) generated ::= LP expr RP ID */ yytestcase(yyruleno==46);
3300 /* (47) autoinc ::= */ yytestcase(yyruleno==47);
3301 /* (48) autoinc ::= AUTOINCR */ yytestcase(yyruleno==48);
3302 /* (49) refargs ::= */ yytestcase(yyruleno==49);
3303 /* (50) refargs ::= refargs refarg */ yytestcase(yyruleno==50);
3304 /* (51) refarg ::= MATCH nm */ yytestcase(yyruleno==51);
3305 /* (52) refarg ::= ON INSERT refact */ yytestcase(yyruleno==52);
3306 /* (53) refarg ::= ON DELETE refact */ yytestcase(yyruleno==53);
3307 /* (54) refarg ::= ON UPDATE refact */ yytestcase(yyruleno==54);
3308 /* (55) refact ::= SET NULL */ yytestcase(yyruleno==55);
3309 /* (56) refact ::= SET DEFAULT */ yytestcase(yyruleno==56);
3310 /* (57) refact ::= CASCADE */ yytestcase(yyruleno==57);
3311 /* (58) refact ::= RESTRICT */ yytestcase(yyruleno==58);
3312 /* (59) refact ::= NO ACTION */ yytestcase(yyruleno==59);
3313 /* (60) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ yytestcase(yyruleno==60);
3314 /* (61) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ yytestcase(yyruleno==61);
3315 /* (62) init_deferred_pred_opt ::= */ yytestcase(yyruleno==62);
3316 /* (63) init_deferred_pred_opt ::= INITIALLY DEFERRED */ yytestcase(yyruleno==63);
3317 /* (64) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ yytestcase(yyruleno==64);
3318 /* (65) conslist_opt ::= */ yytestcase(yyruleno==65);
3319 /* (66) tconscomma ::= COMMA */ yytestcase(yyruleno==66);
3320 /* (67) tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67);
3321 /* (68) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ yytestcase(yyruleno==68);
3322 /* (69) tcons ::= UNIQUE LP sortlist RP onconf */ yytestcase(yyruleno==69);
3323 /* (70) tcons ::= CHECK LP expr RP onconf */ yytestcase(yyruleno==70);
3324 /* (71) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ yytestcase(yyruleno==71);
3325 /* (72) defer_subclause_opt ::= */ yytestcase(yyruleno==72);
3326 /* (73) onconf ::= */ yytestcase(yyruleno==73);
3327 /* (74) onconf ::= ON CONFLICT resolvetype */ yytestcase(yyruleno==74);
3328 /* (75) orconf ::= */ yytestcase(yyruleno==75);
3329 /* (76) orconf ::= OR resolvetype */ yytestcase(yyruleno==76);
3330 /* (77) resolvetype ::= IGNORE */ yytestcase(yyruleno==77);
3331 /* (78) resolvetype ::= REPLACE */ yytestcase(yyruleno==78);
3332 /* (79) cmd ::= DROP TABLE ifexists fullname */ yytestcase(yyruleno==79);
3333 /* (80) ifexists ::= IF EXISTS */ yytestcase(yyruleno==80);
3334 /* (81) ifexists ::= */ yytestcase(yyruleno==81);
3335 /* (82) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ yytestcase(yyruleno==82);
3336 /* (83) cmd ::= DROP VIEW ifexists fullname */ yytestcase(yyruleno==83);
3337 /* (84) cmd ::= select (OPTIMIZED OUT) */ assert(yyruleno!=84);
3338 /* (85) select ::= WITH wqlist selectnowith */ yytestcase(yyruleno==85);
3339 /* (86) select ::= WITH RECURSIVE wqlist selectnowith */ yytestcase(yyruleno==86);
3340 /* (87) select ::= selectnowith */ yytestcase(yyruleno==87);
3341 /* (88) selectnowith ::= selectnowith multiselect_op oneselect */ yytestcase(yyruleno==88);
3342 /* (89) multiselect_op ::= UNION */ yytestcase(yyruleno==89);
3343 /* (90) multiselect_op ::= UNION ALL */ yytestcase(yyruleno==90);
3344 /* (91) multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91);
3345 /* (92) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ yytestcase(yyruleno==92);
3346 /* (93) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ yytestcase(yyruleno==93);
3347 /* (94) values ::= VALUES LP nexprlist RP */ yytestcase(yyruleno==94);
3348 /* (95) values ::= values COMMA LP nexprlist RP */ yytestcase(yyruleno==95);
3349 /* (96) distinct ::= DISTINCT */ yytestcase(yyruleno==96);
3350 /* (97) distinct ::= ALL */ yytestcase(yyruleno==97);
3351 /* (98) distinct ::= */ yytestcase(yyruleno==98);
3352 /* (99) sclp ::= */ yytestcase(yyruleno==99);
3353 /* (100) selcollist ::= sclp scanpt expr scanpt as */ yytestcase(yyruleno==100);
3354 /* (101) selcollist ::= sclp scanpt STAR */ yytestcase(yyruleno==101);
3355 /* (102) selcollist ::= sclp scanpt nm DOT STAR */ yytestcase(yyruleno==102);
3356 /* (103) as ::= AS nm */ yytestcase(yyruleno==103);
3357 /* (104) as ::= */ yytestcase(yyruleno==104);
3358 /* (105) from ::= */ yytestcase(yyruleno==105);
3359 /* (106) from ::= FROM seltablist */ yytestcase(yyruleno==106);
3360 /* (107) stl_prefix ::= seltablist joinop */ yytestcase(yyruleno==107);
3361 /* (108) stl_prefix ::= */ yytestcase(yyruleno==108);
3362 /* (109) seltablist ::= stl_prefix nm dbnm as on_using */ yytestcase(yyruleno==109);
3363 /* (110) seltablist ::= stl_prefix nm dbnm as indexed_by on_using */ yytestcase(yyruleno==110);
3364 /* (111) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */ yytestcase(yyruleno==111);
3365 /* (112) seltablist ::= stl_prefix LP select RP as on_using */ yytestcase(yyruleno==112);
3366 /* (113) seltablist ::= stl_prefix LP seltablist RP as on_using */ yytestcase(yyruleno==113);
3367 /* (114) dbnm ::= */ yytestcase(yyruleno==114);
3368 /* (115) dbnm ::= DOT nm */ yytestcase(yyruleno==115);
3369 /* (116) fullname ::= nm */ yytestcase(yyruleno==116);
3370 /* (117) fullname ::= nm DOT nm */ yytestcase(yyruleno==117);
3371 /* (118) xfullname ::= nm */ yytestcase(yyruleno==118);
3372 /* (119) xfullname ::= nm DOT nm */ yytestcase(yyruleno==119);
3373 /* (120) xfullname ::= nm DOT nm AS nm */ yytestcase(yyruleno==120);
3374 /* (121) xfullname ::= nm AS nm */ yytestcase(yyruleno==121);
3375 /* (122) joinop ::= COMMA|JOIN */ yytestcase(yyruleno==122);
3376 /* (123) joinop ::= JOIN_KW JOIN */ yytestcase(yyruleno==123);
3377 /* (124) joinop ::= JOIN_KW nm JOIN */ yytestcase(yyruleno==124);
3378 /* (125) joinop ::= JOIN_KW nm nm JOIN */ yytestcase(yyruleno==125);
3379 /* (126) on_using ::= ON expr */ yytestcase(yyruleno==126);
3380 /* (127) on_using ::= USING LP idlist RP */ yytestcase(yyruleno==127);
3381 /* (128) on_using ::= */ yytestcase(yyruleno==128);
3382 /* (129) indexed_opt ::= */ yytestcase(yyruleno==129);
3383 /* (130) indexed_by ::= INDEXED BY nm */ yytestcase(yyruleno==130);
3384 /* (131) indexed_by ::= NOT INDEXED */ yytestcase(yyruleno==131);
3385 /* (132) orderby_opt ::= */ yytestcase(yyruleno==132);
3386 /* (133) orderby_opt ::= ORDER BY sortlist */ yytestcase(yyruleno==133);
3387 /* (134) sortlist ::= sortlist COMMA expr sortorder nulls */ yytestcase(yyruleno==134);
3388 /* (135) sortlist ::= expr sortorder nulls */ yytestcase(yyruleno==135);
3389 /* (136) sortorder ::= ASC */ yytestcase(yyruleno==136);
3390 /* (137) sortorder ::= DESC */ yytestcase(yyruleno==137);
3391 /* (138) sortorder ::= */ yytestcase(yyruleno==138);
3392 /* (139) nulls ::= NULLS FIRST */ yytestcase(yyruleno==139);
3393 /* (140) nulls ::= NULLS LAST */ yytestcase(yyruleno==140);
3394 /* (141) nulls ::= */ yytestcase(yyruleno==141);
3395 /* (142) groupby_opt ::= */ yytestcase(yyruleno==142);
3396 /* (143) groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==143);
3397 /* (144) having_opt ::= */ yytestcase(yyruleno==144);
3398 /* (145) having_opt ::= HAVING expr */ yytestcase(yyruleno==145);
3399 /* (146) limit_opt ::= */ yytestcase(yyruleno==146);
3400 /* (147) limit_opt ::= LIMIT expr */ yytestcase(yyruleno==147);
3401 /* (148) limit_opt ::= LIMIT expr OFFSET expr */ yytestcase(yyruleno==148);
3402 /* (149) limit_opt ::= LIMIT expr COMMA expr */ yytestcase(yyruleno==149);
3403 /* (150) cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ yytestcase(yyruleno==150);
3404 /* (151) where_opt ::= */ yytestcase(yyruleno==151);
3405 /* (152) where_opt ::= WHERE expr */ yytestcase(yyruleno==152);
3406 /* (153) where_opt_ret ::= */ yytestcase(yyruleno==153);
3407 /* (154) where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154);
3408 /* (155) where_opt_ret ::= RETURNING selcollist */ yytestcase(yyruleno==155);
3409 /* (156) where_opt_ret ::= WHERE expr RETURNING selcollist */ yytestcase(yyruleno==156);
3410 /* (157) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ yytestcase(yyruleno==157);
3411 /* (158) setlist ::= setlist COMMA nm EQ expr */ yytestcase(yyruleno==158);
3412 /* (159) setlist ::= setlist COMMA LP idlist RP EQ expr */ yytestcase(yyruleno==159);
3413 /* (160) setlist ::= nm EQ expr */ yytestcase(yyruleno==160);
3414 /* (161) setlist ::= LP idlist RP EQ expr */ yytestcase(yyruleno==161);
3415 /* (162) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ yytestcase(yyruleno==162);
3416 /* (163) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */ yytestcase(yyruleno==163);
3417 /* (164) upsert ::= */ yytestcase(yyruleno==164);
3418 /* (165) upsert ::= RETURNING selcollist */ yytestcase(yyruleno==165);
3419 /* (166) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */ yytestcase(yyruleno==166);
3420 /* (167) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */ yytestcase(yyruleno==167);
3421 /* (168) upsert ::= ON CONFLICT DO NOTHING returning */ yytestcase(yyruleno==168);
3422 /* (169) upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */ yytestcase(yyruleno==169);
3423 /* (170) returning ::= RETURNING selcollist */ yytestcase(yyruleno==170);
3424 /* (171) insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171);
3425 /* (172) insert_cmd ::= REPLACE */ yytestcase(yyruleno==172);
3426 /* (173) idlist_opt ::= */ yytestcase(yyruleno==173);
3427 /* (174) idlist_opt ::= LP idlist RP */ yytestcase(yyruleno==174);
3428 /* (175) idlist ::= idlist COMMA nm */ yytestcase(yyruleno==175);
3429 /* (176) idlist ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=176);
3430 /* (177) expr ::= LP expr RP */ yytestcase(yyruleno==177);
3431 /* (178) expr ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==178);
3432 /* (179) expr ::= nm DOT nm */ yytestcase(yyruleno==179);
3433 /* (180) expr ::= nm DOT nm DOT nm */ yytestcase(yyruleno==180);
3434 /* (181) term ::= NULL|FLOAT|BLOB */ yytestcase(yyruleno==181);
3435 /* (182) term ::= STRING */ yytestcase(yyruleno==182);
3436 /* (183) term ::= INTEGER */ yytestcase(yyruleno==183);
3437 /* (184) expr ::= VARIABLE */ yytestcase(yyruleno==184);
3438 /* (185) expr ::= expr COLLATE ID|STRING */ yytestcase(yyruleno==185);
3439 /* (186) expr ::= CAST LP expr AS typetoken RP */ yytestcase(yyruleno==186);
3440 /* (187) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */ yytestcase(yyruleno==187);
3441 /* (188) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */ yytestcase(yyruleno==188);
3442 /* (189) expr ::= ID|INDEXED|JOIN_KW LP STAR RP */ yytestcase(yyruleno==189);
3443 /* (190) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */ yytestcase(yyruleno==190);
3444 /* (191) expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */ yytestcase(yyruleno==191);
3445 /* (192) expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */ yytestcase(yyruleno==192);
3446 /* (193) term ::= CTIME_KW */ yytestcase(yyruleno==193);
3447 /* (194) expr ::= LP nexprlist COMMA expr RP */ yytestcase(yyruleno==194);
3448 /* (195) expr ::= expr AND expr */ yytestcase(yyruleno==195);
3449 /* (196) expr ::= expr OR expr */ yytestcase(yyruleno==196);
3450 /* (197) expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==197);
3451 /* (198) expr ::= expr EQ|NE expr */ yytestcase(yyruleno==198);
3452 /* (199) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==199);
3453 /* (200) expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==200);
3454 /* (201) expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==201);
3455 /* (202) expr ::= expr CONCAT expr */ yytestcase(yyruleno==202);
3456 /* (203) likeop ::= NOT LIKE_KW|MATCH */ yytestcase(yyruleno==203);
3457 /* (204) expr ::= expr likeop expr */ yytestcase(yyruleno==204);
3458 /* (205) expr ::= expr likeop expr ESCAPE expr */ yytestcase(yyruleno==205);
3459 /* (206) expr ::= expr ISNULL|NOTNULL */ yytestcase(yyruleno==206);
3460 /* (207) expr ::= expr NOT NULL */ yytestcase(yyruleno==207);
3461 /* (208) expr ::= expr IS expr */ yytestcase(yyruleno==208);
3462 /* (209) expr ::= expr IS NOT expr */ yytestcase(yyruleno==209);
3463 /* (210) expr ::= expr IS NOT DISTINCT FROM expr */ yytestcase(yyruleno==210);
3464 /* (211) expr ::= expr IS DISTINCT FROM expr */ yytestcase(yyruleno==211);
3465 /* (212) expr ::= NOT expr */ yytestcase(yyruleno==212);
3466 /* (213) expr ::= BITNOT expr */ yytestcase(yyruleno==213);
3467 /* (214) expr ::= PLUS|MINUS expr */ yytestcase(yyruleno==214);
3468 /* (215) expr ::= expr PTR expr */ yytestcase(yyruleno==215);
3469 /* (216) between_op ::= BETWEEN */ yytestcase(yyruleno==216);
3470 /* (217) between_op ::= NOT BETWEEN */ yytestcase(yyruleno==217);
3471 /* (218) expr ::= expr between_op expr AND expr */ yytestcase(yyruleno==218);
3472 /* (219) in_op ::= IN */ yytestcase(yyruleno==219);
3473 /* (220) in_op ::= NOT IN */ yytestcase(yyruleno==220);
3474 /* (221) expr ::= expr in_op LP exprlist RP */ yytestcase(yyruleno==221);
3475 /* (222) expr ::= LP select RP */ yytestcase(yyruleno==222);
3476 /* (223) expr ::= expr in_op LP select RP */ yytestcase(yyruleno==223);
3477 /* (224) expr ::= expr in_op nm dbnm paren_exprlist */ yytestcase(yyruleno==224);
3478 /* (225) expr ::= EXISTS LP select RP */ yytestcase(yyruleno==225);
3479 /* (226) expr ::= CASE case_operand case_exprlist case_else END */ yytestcase(yyruleno==226);
3480 /* (227) case_exprlist ::= case_exprlist WHEN expr THEN expr */ yytestcase(yyruleno==227);
3481 /* (228) case_exprlist ::= WHEN expr THEN expr */ yytestcase(yyruleno==228);
3482 /* (229) case_else ::= ELSE expr */ yytestcase(yyruleno==229);
3483 /* (230) case_else ::= */ yytestcase(yyruleno==230);
3484 /* (231) case_operand ::= */ yytestcase(yyruleno==231);
3485 /* (232) exprlist ::= */ yytestcase(yyruleno==232);
3486 /* (233) nexprlist ::= nexprlist COMMA expr */ yytestcase(yyruleno==233);
3487 /* (234) nexprlist ::= expr */ yytestcase(yyruleno==234);
3488 /* (235) paren_exprlist ::= */ yytestcase(yyruleno==235);
3489 /* (236) paren_exprlist ::= LP exprlist RP */ yytestcase(yyruleno==236);
3490 /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ yytestcase(yyruleno==237);
3491 /* (238) uniqueflag ::= UNIQUE */ yytestcase(yyruleno==238);
3492 /* (239) uniqueflag ::= */ yytestcase(yyruleno==239);
3493 /* (240) eidlist_opt ::= */ yytestcase(yyruleno==240);
3494 /* (241) eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==241);
3495 /* (242) eidlist ::= eidlist COMMA nm collate sortorder */ yytestcase(yyruleno==242);
3496 /* (243) eidlist ::= nm collate sortorder */ yytestcase(yyruleno==243);
3497 /* (244) collate ::= */ yytestcase(yyruleno==244);
3498 /* (245) collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==245);
3499 /* (246) cmd ::= DROP INDEX ifexists fullname */ yytestcase(yyruleno==246);
3500 /* (247) cmd ::= VACUUM vinto */ yytestcase(yyruleno==247);
3501 /* (248) cmd ::= VACUUM nm vinto */ yytestcase(yyruleno==248);
3502 /* (249) vinto ::= INTO expr */ yytestcase(yyruleno==249);
3503 /* (250) vinto ::= */ yytestcase(yyruleno==250);
3504 /* (251) cmd ::= PRAGMA nm dbnm */ yytestcase(yyruleno==251);
3505 /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */ yytestcase(yyruleno==252);
3506 /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */ yytestcase(yyruleno==253);
3507 /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==254);
3508 /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==255);
3509 /* (256) plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==256);
3510 /* (257) minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==257);
3511 /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ yytestcase(yyruleno==258);
3512 /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ yytestcase(yyruleno==259);
3513 /* (260) trigger_time ::= BEFORE|AFTER */ yytestcase(yyruleno==260);
3514 /* (261) trigger_time ::= INSTEAD OF */ yytestcase(yyruleno==261);
3515 /* (262) trigger_time ::= */ yytestcase(yyruleno==262);
3516 /* (263) trigger_event ::= DELETE|INSERT */ yytestcase(yyruleno==263);
3517 /* (264) trigger_event ::= UPDATE */ yytestcase(yyruleno==264);
3518 /* (265) trigger_event ::= UPDATE OF idlist */ yytestcase(yyruleno==265);
3519 /* (266) when_clause ::= */ yytestcase(yyruleno==266);
3520 /* (267) when_clause ::= WHEN expr */ yytestcase(yyruleno==267);
3521 /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ yytestcase(yyruleno==268);
3522 /* (269) trigger_cmd_list ::= trigger_cmd SEMI */ yytestcase(yyruleno==269);
3523 /* (270) trnm ::= nm DOT nm */ yytestcase(yyruleno==270);
3524 /* (271) tridxby ::= INDEXED BY nm */ yytestcase(yyruleno==271);
3525 /* (272) tridxby ::= NOT INDEXED */ yytestcase(yyruleno==272);
3526 /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ yytestcase(yyruleno==273);
3527 /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ yytestcase(yyruleno==274);
3528 /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ yytestcase(yyruleno==275);
3529 /* (276) trigger_cmd ::= scanpt select scanpt */ yytestcase(yyruleno==276);
3530 /* (277) expr ::= RAISE LP IGNORE RP */ yytestcase(yyruleno==277);
3531 /* (278) expr ::= RAISE LP raisetype COMMA nm RP */ yytestcase(yyruleno==278);
3532 /* (279) raisetype ::= ROLLBACK */ yytestcase(yyruleno==279);
3533 /* (280) raisetype ::= ABORT */ yytestcase(yyruleno==280);
3534 /* (281) raisetype ::= FAIL */ yytestcase(yyruleno==281);
3535 /* (282) cmd ::= DROP TRIGGER ifexists fullname */ yytestcase(yyruleno==282);
3536 /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ yytestcase(yyruleno==283);
3537 /* (284) cmd ::= DETACH database_kw_opt expr */ yytestcase(yyruleno==284);
3538 /* (285) key_opt ::= */ yytestcase(yyruleno==285);
3539 /* (286) key_opt ::= KEY expr */ yytestcase(yyruleno==286);
3540 /* (287) cmd ::= REINDEX */ yytestcase(yyruleno==287);
3541 /* (288) cmd ::= REINDEX nm dbnm */ yytestcase(yyruleno==288);
3542 /* (289) cmd ::= ANALYZE */ yytestcase(yyruleno==289);
3543 /* (290) cmd ::= ANALYZE nm dbnm */ yytestcase(yyruleno==290);
3544 /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */ yytestcase(yyruleno==291);
3545 /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ yytestcase(yyruleno==292);
3546 /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ yytestcase(yyruleno==293);
3547 /* (294) add_column_fullname ::= fullname */ yytestcase(yyruleno==294);
3548 /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ yytestcase(yyruleno==295);
3549 /* (296) cmd ::= create_vtab */ yytestcase(yyruleno==296);
3550 /* (297) cmd ::= create_vtab LP vtabarglist RP */ yytestcase(yyruleno==297);
3551 /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ yytestcase(yyruleno==298);
3552 /* (299) vtabarg ::= */ yytestcase(yyruleno==299);
3553 /* (300) vtabargtoken ::= ANY */ yytestcase(yyruleno==300);
3554 /* (301) vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==301);
3555 /* (302) lp ::= LP */ yytestcase(yyruleno==302);
3556 /* (303) with ::= WITH wqlist */ yytestcase(yyruleno==303);
3557 /* (304) with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==304);
3558 /* (305) wqas ::= AS */ yytestcase(yyruleno==305);
3559 /* (306) wqas ::= AS MATERIALIZED */ yytestcase(yyruleno==306);
3560 /* (307) wqas ::= AS NOT MATERIALIZED */ yytestcase(yyruleno==307);
3561 /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */ yytestcase(yyruleno==308);
3562 /* (309) wqlist ::= wqitem (OPTIMIZED OUT) */ assert(yyruleno!=309);
3563 /* (310) wqlist ::= wqlist COMMA wqitem */ yytestcase(yyruleno==310);
3564 /* (311) windowdefn_list ::= windowdefn_list COMMA windowdefn */ yytestcase(yyruleno==311);
3565 /* (312) windowdefn ::= nm AS LP window RP */ yytestcase(yyruleno==312);
3566 /* (313) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ yytestcase(yyruleno==313);
3567 /* (314) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ yytestcase(yyruleno==314);
3568 /* (315) window ::= ORDER BY sortlist frame_opt */ yytestcase(yyruleno==315);
3569 /* (316) window ::= nm ORDER BY sortlist frame_opt */ yytestcase(yyruleno==316);
3570 /* (317) window ::= nm frame_opt */ yytestcase(yyruleno==317);
3571 /* (318) frame_opt ::= */ yytestcase(yyruleno==318);
3572 /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ yytestcase(yyruleno==319);
3573 /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ yytestcase(yyruleno==320);
3574 /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321);
3575 /* (322) frame_bound_s ::= frame_bound (OPTIMIZED OUT) */ assert(yyruleno!=322);
3576 /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */ yytestcase(yyruleno==323);
3577 /* (324) frame_bound_e ::= frame_bound (OPTIMIZED OUT) */ assert(yyruleno!=324);
3578 /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325);
3579 /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */ yytestcase(yyruleno==326);
3580 /* (327) frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327);
3581 /* (328) frame_exclude_opt ::= */ yytestcase(yyruleno==328);
3582 /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */ yytestcase(yyruleno==329);
3583 /* (330) frame_exclude ::= NO OTHERS */ yytestcase(yyruleno==330);
3584 /* (331) frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331);
3585 /* (332) frame_exclude ::= GROUP|TIES */ yytestcase(yyruleno==332);
3586 /* (333) window_clause ::= WINDOW windowdefn_list */ yytestcase(yyruleno==333);
3587 /* (334) filter_over ::= filter_clause over_clause */ yytestcase(yyruleno==334);
3588 /* (335) filter_over ::= over_clause (OPTIMIZED OUT) */ assert(yyruleno!=335);
3589 /* (336) filter_over ::= filter_clause */ yytestcase(yyruleno==336);
3590 /* (337) over_clause ::= OVER LP window RP */ yytestcase(yyruleno==337);
3591 /* (338) over_clause ::= OVER nm */ yytestcase(yyruleno==338);
3592 /* (339) filter_clause ::= FILTER LP WHERE expr RP */ yytestcase(yyruleno==339);
3593 /* (340) input ::= cmdlist */ yytestcase(yyruleno==340);
3594 /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341);
3595 /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342);
3596 /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343);
3597 /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344);
3598 /* (345) ecmd ::= explain cmdx SEMI */ yytestcase(yyruleno==345);
3599 /* (346) trans_opt ::= */ yytestcase(yyruleno==346);
3600 /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347);
3601 /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348);
3602 /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349);
3603 /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350);
3604 /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351);
3605 /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352);
3606 /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353);
3607 /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354);
3608 /* (355) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==355);
3609 /* (356) nm ::= STRING */ yytestcase(yyruleno==356);
3610 /* (357) typetoken ::= typename */ yytestcase(yyruleno==357);
3611 /* (358) typename ::= ID|STRING */ yytestcase(yyruleno==358);
3612 /* (359) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=359);
3613 /* (360) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
3614 /* (361) carglist ::= carglist ccons */ yytestcase(yyruleno==361);
3615 /* (362) carglist ::= */ yytestcase(yyruleno==362);
3616 /* (363) ccons ::= NULL onconf */ yytestcase(yyruleno==363);
3617 /* (364) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==364);
3618 /* (365) ccons ::= AS generated */ yytestcase(yyruleno==365);
3619 /* (366) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==366);
3620 /* (367) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==367);
3621 /* (368) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=368);
3622 /* (369) tconscomma ::= */ yytestcase(yyruleno==369);
3623 /* (370) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=370);
3624 /* (371) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=371);
3625 /* (372) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=372);
3626 /* (373) oneselect ::= values */ yytestcase(yyruleno==373);
3627 /* (374) sclp ::= selcollist COMMA */ yytestcase(yyruleno==374);
3628 /* (375) as ::= ID|STRING */ yytestcase(yyruleno==375);
3629 /* (376) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=376);
3630 /* (377) returning ::= */ yytestcase(yyruleno==377);
3631 /* (378) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=378);
3632 /* (379) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==379);
3633 /* (380) case_operand ::= expr */ yytestcase(yyruleno==380);
3634 /* (381) exprlist ::= nexprlist */ yytestcase(yyruleno==381);
3635 /* (382) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=382);
3636 /* (383) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=383);
3637 /* (384) nmnum ::= ON */ yytestcase(yyruleno==384);
3638 /* (385) nmnum ::= DELETE */ yytestcase(yyruleno==385);
3639 /* (386) nmnum ::= DEFAULT */ yytestcase(yyruleno==386);
3640 /* (387) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==387);
3641 /* (388) foreach_clause ::= */ yytestcase(yyruleno==388);
3642 /* (389) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==389);
3643 /* (390) trnm ::= nm */ yytestcase(yyruleno==390);
3644 /* (391) tridxby ::= */ yytestcase(yyruleno==391);
3645 /* (392) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==392);
3646 /* (393) database_kw_opt ::= */ yytestcase(yyruleno==393);
3647 /* (394) kwcolumn_opt ::= */ yytestcase(yyruleno==394);
3648 /* (395) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==395);
3649 /* (396) vtabarglist ::= vtabarg */ yytestcase(yyruleno==396);
3650 /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==397);
3651 /* (398) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==398);
3652 /* (399) anylist ::= */ yytestcase(yyruleno==399);
3653 /* (400) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==400);
3654 /* (401) anylist ::= anylist ANY */ yytestcase(yyruleno==401);
3655 /* (402) with ::= */ yytestcase(yyruleno==402);
3656 /* (403) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=403);
3657 /* (404) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=404);
3658 break;
3659 /********** End reduce actions ************************************************/
3660 };
3661 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
3662 yygoto = yyRuleInfoLhs[yyruleno];
3663 yysize = yyRuleInfoNRhs[yyruleno];
3664 yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto);
3665
3666 /* There are no SHIFTREDUCE actions on nonterminals because the table
3667 ** generator has simplified them to pure REDUCE actions. */
3668 assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) );
3669
3670 /* It is not possible for a REDUCE to be followed by an error */
3671 assert( yyact!=YY_ERROR_ACTION );
3672
3673 yymsp += yysize+1;
3674 yypParser->yytos = yymsp;
3675 yymsp->stateno = (YYACTIONTYPE)yyact;
3676 yymsp->major = (YYCODETYPE)yygoto;
3677 yyTraceShift(yypParser, yyact, "... then shift");
3678 return yyact;
3679 }
3680
3681 /*
3682 ** The following code executes when the parse fails
3683 */
3684 #ifndef YYNOERRORRECOVERY
yy_parse_failed(yyParser * yypParser)3685 static void yy_parse_failed(
3686 yyParser *yypParser /* The parser */
3687 ){
3688 PerfettoSqlParserARG_FETCH
3689 PerfettoSqlParserCTX_FETCH
3690 #ifndef NDEBUG
3691 if( yyTraceFILE ){
3692 fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3693 }
3694 #endif
3695 while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
3696 /* Here code is inserted which will be executed whenever the
3697 ** parser fails */
3698 /************ Begin %parse_failure code ***************************************/
3699 /************ End %parse_failure code *****************************************/
3700 PerfettoSqlParserARG_STORE /* Suppress warning about unused %extra_argument variable */
3701 PerfettoSqlParserCTX_STORE
3702 }
3703 #endif /* YYNOERRORRECOVERY */
3704
3705 /*
3706 ** The following code executes when a syntax error first occurs.
3707 */
yy_syntax_error(yyParser * yypParser,int yymajor,PerfettoSqlParserTOKENTYPE yyminor)3708 static void yy_syntax_error(
3709 yyParser *yypParser, /* The parser */
3710 int yymajor, /* The major type of the error token */
3711 PerfettoSqlParserTOKENTYPE yyminor /* The minor type of the error token */
3712 ){
3713 PerfettoSqlParserARG_FETCH
3714 PerfettoSqlParserCTX_FETCH
3715 #define TOKEN yyminor
3716 /************ Begin %syntax_error code ****************************************/
3717 /************ End %syntax_error code ******************************************/
3718 PerfettoSqlParserARG_STORE /* Suppress warning about unused %extra_argument variable */
3719 PerfettoSqlParserCTX_STORE
3720 }
3721
3722 /*
3723 ** The following is executed when the parser accepts
3724 */
yy_accept(yyParser * yypParser)3725 static void yy_accept(
3726 yyParser *yypParser /* The parser */
3727 ){
3728 PerfettoSqlParserARG_FETCH
3729 PerfettoSqlParserCTX_FETCH
3730 #ifndef NDEBUG
3731 if( yyTraceFILE ){
3732 fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3733 }
3734 #endif
3735 #ifndef YYNOERRORRECOVERY
3736 yypParser->yyerrcnt = -1;
3737 #endif
3738 assert( yypParser->yytos==yypParser->yystack );
3739 /* Here code is inserted which will be executed whenever the
3740 ** parser accepts */
3741 /*********** Begin %parse_accept code *****************************************/
3742 /*********** End %parse_accept code *******************************************/
3743 PerfettoSqlParserARG_STORE /* Suppress warning about unused %extra_argument variable */
3744 PerfettoSqlParserCTX_STORE
3745 }
3746
3747 /* The main parser program.
3748 ** The first argument is a pointer to a structure obtained from
3749 ** "PerfettoSqlParserAlloc" which describes the current state of the parser.
3750 ** The second argument is the major token number. The third is
3751 ** the minor token. The fourth optional argument is whatever the
3752 ** user wants (and specified in the grammar) and is available for
3753 ** use by the action routines.
3754 **
3755 ** Inputs:
3756 ** <ul>
3757 ** <li> A pointer to the parser (an opaque structure.)
3758 ** <li> The major token number.
3759 ** <li> The minor token number.
3760 ** <li> An option argument of a grammar-specified type.
3761 ** </ul>
3762 **
3763 ** Outputs:
3764 ** None.
3765 */
PerfettoSqlParser(void * yyp,int yymajor,PerfettoSqlParserTOKENTYPE yyminor PerfettoSqlParserARG_PDECL)3766 void PerfettoSqlParser(
3767 void *yyp, /* The parser */
3768 int yymajor, /* The major token code number */
3769 PerfettoSqlParserTOKENTYPE yyminor /* The value for the token */
3770 PerfettoSqlParserARG_PDECL /* Optional %extra_argument parameter */
3771 ){
3772 YYMINORTYPE yyminorunion;
3773 YYACTIONTYPE yyact; /* The parser action. */
3774 #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
3775 int yyendofinput; /* True if we are at the end of input */
3776 #endif
3777 #ifdef YYERRORSYMBOL
3778 int yyerrorhit = 0; /* True if yymajor has invoked an error */
3779 #endif
3780 yyParser *yypParser = (yyParser*)yyp; /* The parser */
3781 PerfettoSqlParserCTX_FETCH
3782 PerfettoSqlParserARG_STORE
3783
3784 assert( yypParser->yytos!=0 );
3785 #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
3786 yyendofinput = (yymajor==0);
3787 #endif
3788
3789 yyact = yypParser->yytos->stateno;
3790 #ifndef NDEBUG
3791 if( yyTraceFILE ){
3792 if( yyact < YY_MIN_REDUCE ){
3793 fprintf(yyTraceFILE,"%sInput '%s' in state %d\n",
3794 yyTracePrompt,yyTokenName[yymajor],yyact);
3795 }else{
3796 fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n",
3797 yyTracePrompt,yyTokenName[yymajor],yyact-YY_MIN_REDUCE);
3798 }
3799 }
3800 #endif
3801
3802 while(1){ /* Exit by "break" */
3803 assert( yypParser->yytos>=yypParser->yystack );
3804 assert( yyact==yypParser->yytos->stateno );
3805 yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact);
3806 if( yyact >= YY_MIN_REDUCE ){
3807 unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */
3808 #ifndef NDEBUG
3809 assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) );
3810 if( yyTraceFILE ){
3811 int yysize = yyRuleInfoNRhs[yyruleno];
3812 if( yysize ){
3813 fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n",
3814 yyTracePrompt,
3815 yyruleno, yyRuleName[yyruleno],
3816 yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action",
3817 yypParser->yytos[yysize].stateno);
3818 }else{
3819 fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n",
3820 yyTracePrompt, yyruleno, yyRuleName[yyruleno],
3821 yyruleno<YYNRULE_WITH_ACTION ? "" : " without external action");
3822 }
3823 }
3824 #endif /* NDEBUG */
3825
3826 /* Check that the stack is large enough to grow by a single entry
3827 ** if the RHS of the rule is empty. This ensures that there is room
3828 ** enough on the stack to push the LHS value */
3829 if( yyRuleInfoNRhs[yyruleno]==0 ){
3830 #ifdef YYTRACKMAXSTACKDEPTH
3831 if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
3832 yypParser->yyhwm++;
3833 assert( yypParser->yyhwm ==
3834 (int)(yypParser->yytos - yypParser->yystack));
3835 }
3836 #endif
3837 #if YYSTACKDEPTH>0
3838 if( yypParser->yytos>=yypParser->yystackEnd ){
3839 yyStackOverflow(yypParser);
3840 break;
3841 }
3842 #else
3843 if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){
3844 if( yyGrowStack(yypParser) ){
3845 yyStackOverflow(yypParser);
3846 break;
3847 }
3848 }
3849 #endif
3850 }
3851 yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor PerfettoSqlParserCTX_PARAM);
3852 }else if( yyact <= YY_MAX_SHIFTREDUCE ){
3853 yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor);
3854 #ifndef YYNOERRORRECOVERY
3855 yypParser->yyerrcnt--;
3856 #endif
3857 break;
3858 }else if( yyact==YY_ACCEPT_ACTION ){
3859 yypParser->yytos--;
3860 yy_accept(yypParser);
3861 return;
3862 }else{
3863 assert( yyact == YY_ERROR_ACTION );
3864 yyminorunion.yy0 = yyminor;
3865 #ifdef YYERRORSYMBOL
3866 int yymx;
3867 #endif
3868 #ifndef NDEBUG
3869 if( yyTraceFILE ){
3870 fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3871 }
3872 #endif
3873 #ifdef YYERRORSYMBOL
3874 /* A syntax error has occurred.
3875 ** The response to an error depends upon whether or not the
3876 ** grammar defines an error token "ERROR".
3877 **
3878 ** This is what we do if the grammar does define ERROR:
3879 **
3880 ** * Call the %syntax_error function.
3881 **
3882 ** * Begin popping the stack until we enter a state where
3883 ** it is legal to shift the error symbol, then shift
3884 ** the error symbol.
3885 **
3886 ** * Set the error count to three.
3887 **
3888 ** * Begin accepting and shifting new tokens. No new error
3889 ** processing will occur until three tokens have been
3890 ** shifted successfully.
3891 **
3892 */
3893 if( yypParser->yyerrcnt<0 ){
3894 yy_syntax_error(yypParser,yymajor,yyminor);
3895 }
3896 yymx = yypParser->yytos->major;
3897 if( yymx==YYERRORSYMBOL || yyerrorhit ){
3898 #ifndef NDEBUG
3899 if( yyTraceFILE ){
3900 fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3901 yyTracePrompt,yyTokenName[yymajor]);
3902 }
3903 #endif
3904 yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
3905 yymajor = YYNOCODE;
3906 }else{
3907 while( yypParser->yytos > yypParser->yystack ){
3908 yyact = yy_find_reduce_action(yypParser->yytos->stateno,
3909 YYERRORSYMBOL);
3910 if( yyact<=YY_MAX_SHIFTREDUCE ) break;
3911 yy_pop_parser_stack(yypParser);
3912 }
3913 if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){
3914 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3915 yy_parse_failed(yypParser);
3916 #ifndef YYNOERRORRECOVERY
3917 yypParser->yyerrcnt = -1;
3918 #endif
3919 yymajor = YYNOCODE;
3920 }else if( yymx!=YYERRORSYMBOL ){
3921 yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor);
3922 }
3923 }
3924 yypParser->yyerrcnt = 3;
3925 yyerrorhit = 1;
3926 if( yymajor==YYNOCODE ) break;
3927 yyact = yypParser->yytos->stateno;
3928 #elif defined(YYNOERRORRECOVERY)
3929 /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
3930 ** do any kind of error recovery. Instead, simply invoke the syntax
3931 ** error routine and continue going as if nothing had happened.
3932 **
3933 ** Applications can set this macro (for example inside %include) if
3934 ** they intend to abandon the parse upon the first syntax error seen.
3935 */
3936 yy_syntax_error(yypParser,yymajor, yyminor);
3937 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3938 break;
3939 #else /* YYERRORSYMBOL is not defined */
3940 /* This is what we do if the grammar does not define ERROR:
3941 **
3942 ** * Report an error message, and throw away the input token.
3943 **
3944 ** * If the input token is $, then fail the parse.
3945 **
3946 ** As before, subsequent error messages are suppressed until
3947 ** three input tokens have been successfully shifted.
3948 */
3949 if( yypParser->yyerrcnt<=0 ){
3950 yy_syntax_error(yypParser,yymajor, yyminor);
3951 }
3952 yypParser->yyerrcnt = 3;
3953 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3954 if( yyendofinput ){
3955 yy_parse_failed(yypParser);
3956 #ifndef YYNOERRORRECOVERY
3957 yypParser->yyerrcnt = -1;
3958 #endif
3959 }
3960 break;
3961 #endif
3962 }
3963 }
3964 #ifndef NDEBUG
3965 if( yyTraceFILE ){
3966 yyStackEntry *i;
3967 char cDiv = '[';
3968 fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt);
3969 for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){
3970 fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]);
3971 cDiv = ' ';
3972 }
3973 fprintf(yyTraceFILE,"]\n");
3974 }
3975 #endif
3976 return;
3977 }
3978
3979 /*
3980 ** Return the fallback token corresponding to canonical token iToken, or
3981 ** 0 if iToken has no fallback.
3982 */
PerfettoSqlParserFallback(int iToken)3983 int PerfettoSqlParserFallback(int iToken){
3984 #ifdef YYFALLBACK
3985 assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
3986 return yyFallback[iToken];
3987 #else
3988 (void)iToken;
3989 return 0;
3990 #endif
3991 }
3992