xref: /aosp_15_r20/external/perfetto/src/trace_processor/perfetto_sql/grammar/perfettosql_grammar.c (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
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