1
/* Driver template for the LEMON parser generator.
2
** The author disclaims copyright to this source code.
4
/* First off, code is include which follows the "include" declaration
5
** in the input file. */
13
** An instance of this structure holds information about the
14
** LIMIT clause of a SELECT statement.
17
Expr *pLimit; /* The LIMIT expression. NULL if there is no limit */
18
Expr *pOffset; /* The OFFSET expression. NULL if there is none */
22
** An instance of this structure is used to store the LIKE,
23
** GLOB, NOT LIKE, and NOT GLOB operators.
26
int opcode; /* Either TK_GLOB or TK_LIKE */
27
int not; /* True if the NOT keyword is present */
31
** An instance of the following structure describes the event of a
32
** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,
33
** TK_DELETE, or TK_INSTEAD. If the event is of the form
37
** Then the "b" IdList records the list "a,b,c".
39
struct TrigEvent { int a; IdList * b; };
42
** An instance of this structure holds the ATTACH key and the key type.
44
struct AttachKey { int type; Token key; };
47
/* Next is all token values, in a form suitable for use by makeheaders.
48
** This section will be null unless lemon is run with the -m switch.
51
** These constants (all generated automatically by the parser generator)
52
** specify the various kinds of tokens (terminals) that the parser
55
** Each symbol here is a terminal symbol in the grammar.
57
/* Make sure the INTERFACE macro is defined.
62
/* The next thing included is series of defines which control
63
** various aspects of the generated parser.
64
** YYCODETYPE is the data type used for storing terminal
65
** and nonterminal numbers. "unsigned char" is
66
** used if there are fewer than 250 terminals
67
** and nonterminals. "int" is used otherwise.
68
** YYNOCODE is a number of type YYCODETYPE which corresponds
69
** to no legal terminal or nonterminal number. This
70
** number is used to fill in empty slots of the hash
72
** YYFALLBACK If defined, this indicates that one or more tokens
73
** have fall-back values which should be used if the
74
** original value of the token will not parse.
75
** YYACTIONTYPE is the data type used for storing terminal
76
** and nonterminal numbers. "unsigned char" is
77
** used if there are fewer than 250 rules and
78
** states combined. "int" is used otherwise.
79
** sqlite3ParserTOKENTYPE is the data type used for minor tokens given
80
** directly to the parser from the tokenizer.
81
** YYMINORTYPE is the data type used for all minor tokens.
82
** This is typically a union of many types, one of
83
** which is sqlite3ParserTOKENTYPE. The entry in the union
84
** for base tokens is called "yy0".
85
** YYSTACKDEPTH is the maximum depth of the parser's stack.
86
** sqlite3ParserARG_SDECL A static variable declaration for the %extra_argument
87
** sqlite3ParserARG_PDECL A parameter declaration for the %extra_argument
88
** sqlite3ParserARG_STORE Code to store %extra_argument into yypParser
89
** sqlite3ParserARG_FETCH Code to extract %extra_argument from yypParser
90
** YYNSTATE the combined number of states.
91
** YYNRULE the number of rules in the grammar
92
** YYERRORSYMBOL is the code number of the error symbol. If not
93
** defined, then do no error processing.
95
#define YYCODETYPE unsigned char
97
#define YYACTIONTYPE unsigned short int
98
#define sqlite3ParserTOKENTYPE Token
100
sqlite3ParserTOKENTYPE yy0;
103
struct AttachKey yy92;
105
struct {int value; int mask;} yy319;
108
struct TrigEvent yy378;
109
struct LimitVal yy388;
116
#define YYSTACKDEPTH 100
117
#define sqlite3ParserARG_SDECL Parse *pParse;
118
#define sqlite3ParserARG_PDECL ,Parse *pParse
119
#define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
120
#define sqlite3ParserARG_STORE yypParser->pParse = pParse
123
#define YYERRORSYMBOL 143
124
#define YYERRSYMDT yy485
126
#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
127
#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
128
#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
130
/* Next are that tables used to determine what action to take based on the
131
** current state and lookahead token. These tables are used to implement
132
** functions that take a state number and lookahead value and return an
135
** Suppose the action integer is N. Then the action is determined as
138
** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
139
** token onto the stack and goto state N.
141
** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
143
** N == YYNSTATE+YYNRULE A syntax error has occurred.
145
** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
147
** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
148
** slots in the yy_action[] table.
150
** The action table is constructed as a single large table named yy_action[].
151
** Given state S and lookahead X, the action is computed as
153
** yy_action[ yy_shift_ofst[S] + X ]
155
** If the index value yy_shift_ofst[S]+X is out of range or if the value
156
** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
157
** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
158
** and that yy_default[S] should be used instead.
160
** The formula above is for computing the action when the lookahead is
161
** a terminal symbol. If the lookahead is a non-terminal (as occurs after
162
** a reduce action) then the yy_reduce_ofst[] array is used in place of
163
** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
164
** YY_SHIFT_USE_DFLT.
166
** The following are the tables generated in this section:
168
** yy_action[] A single table containing all actions.
169
** yy_lookahead[] A table containing the lookahead for each entry in
170
** yy_action. Used to detect hash collisions.
171
** yy_shift_ofst[] For each state, the offset into yy_action for
172
** shifting terminals.
173
** yy_reduce_ofst[] For each state, the offset into yy_action for
174
** shifting non-terminals after a reduce.
175
** yy_default[] Default action for each state.
177
static const YYACTIONTYPE yy_action[] = {
178
/* 0 */ 263, 9, 261, 154, 124, 126, 128, 130, 132, 134,
179
/* 10 */ 136, 138, 140, 142, 406, 2, 145, 646, 4, 369,
180
/* 20 */ 144, 114, 116, 112, 118, 849, 124, 126, 128, 130,
181
/* 30 */ 132, 134, 136, 138, 140, 142, 136, 138, 140, 142,
182
/* 40 */ 110, 94, 146, 157, 162, 167, 156, 161, 120, 122,
183
/* 50 */ 114, 116, 112, 118, 572, 124, 126, 128, 130, 132,
184
/* 60 */ 134, 136, 138, 140, 142, 579, 223, 533, 262, 124,
185
/* 70 */ 126, 128, 130, 132, 134, 136, 138, 140, 142, 7,
186
/* 80 */ 96, 145, 13, 535, 536, 144, 442, 78, 371, 92,
187
/* 90 */ 453, 373, 380, 385, 132, 134, 136, 138, 140, 142,
188
/* 100 */ 75, 3, 567, 388, 296, 110, 94, 146, 157, 162,
189
/* 110 */ 167, 156, 161, 120, 122, 114, 116, 112, 118, 77,
190
/* 120 */ 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
191
/* 130 */ 145, 10, 578, 13, 144, 11, 279, 569, 371, 6,
192
/* 140 */ 5, 373, 380, 385, 358, 25, 3, 567, 14, 15,
193
/* 150 */ 426, 507, 233, 388, 110, 94, 146, 157, 162, 167,
194
/* 160 */ 156, 161, 120, 122, 114, 116, 112, 118, 77, 124,
195
/* 170 */ 126, 128, 130, 132, 134, 136, 138, 140, 142, 577,
196
/* 180 */ 280, 258, 407, 77, 159, 281, 107, 106, 108, 107,
197
/* 190 */ 106, 108, 879, 1, 568, 172, 295, 4, 670, 14,
198
/* 200 */ 15, 371, 175, 145, 373, 380, 385, 144, 518, 343,
199
/* 210 */ 346, 16, 17, 18, 158, 367, 388, 415, 345, 410,
200
/* 220 */ 28, 345, 95, 402, 33, 95, 807, 110, 94, 146,
201
/* 230 */ 157, 162, 167, 156, 161, 120, 122, 114, 116, 112,
202
/* 240 */ 118, 51, 124, 126, 128, 130, 132, 134, 136, 138,
203
/* 250 */ 140, 142, 44, 45, 805, 101, 102, 103, 101, 102,
204
/* 260 */ 103, 852, 152, 222, 163, 168, 188, 261, 72, 37,
205
/* 270 */ 341, 40, 59, 67, 69, 305, 336, 145, 265, 36,
206
/* 280 */ 340, 144, 806, 338, 171, 13, 173, 174, 335, 27,
207
/* 290 */ 171, 403, 173, 174, 12, 460, 51, 313, 320, 322,
208
/* 300 */ 197, 110, 94, 146, 157, 162, 167, 156, 161, 120,
209
/* 310 */ 122, 114, 116, 112, 118, 288, 124, 126, 128, 130,
210
/* 320 */ 132, 134, 136, 138, 140, 142, 40, 59, 67, 69,
211
/* 330 */ 305, 336, 152, 262, 163, 168, 580, 263, 338, 261,
212
/* 340 */ 96, 145, 364, 362, 387, 144, 52, 170, 494, 466,
213
/* 350 */ 456, 14, 15, 645, 171, 31, 173, 174, 54, 81,
214
/* 360 */ 75, 331, 534, 601, 176, 110, 94, 146, 157, 162,
215
/* 370 */ 167, 156, 161, 120, 122, 114, 116, 112, 118, 77,
216
/* 380 */ 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
217
/* 390 */ 152, 367, 163, 168, 325, 57, 58, 48, 297, 32,
218
/* 400 */ 33, 195, 213, 207, 96, 262, 49, 96, 26, 96,
219
/* 410 */ 13, 83, 96, 13, 217, 145, 265, 50, 286, 144,
220
/* 420 */ 46, 169, 368, 401, 75, 13, 367, 75, 176, 75,
221
/* 430 */ 47, 235, 75, 235, 565, 33, 176, 332, 211, 110,
222
/* 440 */ 94, 146, 157, 162, 167, 156, 161, 120, 122, 114,
223
/* 450 */ 116, 112, 118, 266, 124, 126, 128, 130, 132, 134,
224
/* 460 */ 136, 138, 140, 142, 303, 13, 298, 229, 227, 236,
225
/* 470 */ 96, 692, 292, 48, 243, 96, 14, 15, 217, 14,
226
/* 480 */ 15, 145, 49, 822, 278, 144, 217, 455, 13, 20,
227
/* 490 */ 75, 14, 15, 50, 190, 75, 201, 13, 65, 176,
228
/* 500 */ 13, 250, 593, 253, 66, 110, 94, 146, 157, 162,
229
/* 510 */ 167, 156, 161, 120, 122, 114, 116, 112, 118, 77,
230
/* 520 */ 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
231
/* 530 */ 665, 14, 15, 693, 585, 250, 351, 356, 357, 871,
232
/* 540 */ 152, 191, 163, 168, 479, 628, 145, 327, 34, 216,
233
/* 550 */ 144, 366, 349, 22, 14, 15, 13, 331, 255, 171,
234
/* 560 */ 461, 173, 174, 14, 15, 463, 14, 15, 857, 252,
235
/* 570 */ 110, 94, 146, 157, 162, 167, 156, 161, 120, 122,
236
/* 580 */ 114, 116, 112, 118, 850, 124, 126, 128, 130, 132,
237
/* 590 */ 134, 136, 138, 140, 142, 251, 855, 273, 358, 187,
238
/* 600 */ 354, 356, 357, 252, 171, 310, 173, 174, 39, 42,
239
/* 610 */ 350, 399, 309, 145, 261, 829, 335, 144, 398, 455,
240
/* 620 */ 586, 294, 14, 15, 64, 293, 397, 667, 537, 251,
241
/* 630 */ 499, 77, 171, 328, 173, 174, 731, 110, 94, 146,
242
/* 640 */ 157, 162, 167, 156, 161, 120, 122, 114, 116, 112,
243
/* 650 */ 118, 77, 124, 126, 128, 130, 132, 134, 136, 138,
244
/* 660 */ 140, 142, 358, 312, 96, 505, 96, 501, 338, 96,
245
/* 670 */ 171, 96, 173, 174, 441, 845, 479, 24, 145, 532,
246
/* 680 */ 262, 275, 144, 331, 75, 214, 75, 215, 493, 75,
247
/* 690 */ 302, 75, 465, 493, 272, 91, 273, 463, 171, 694,
248
/* 700 */ 173, 174, 110, 94, 146, 157, 162, 167, 156, 161,
249
/* 710 */ 120, 122, 114, 116, 112, 118, 376, 124, 126, 128,
250
/* 720 */ 130, 132, 134, 136, 138, 140, 142, 587, 96, 171,
251
/* 730 */ 489, 173, 174, 96, 96, 525, 96, 246, 171, 271,
252
/* 740 */ 173, 174, 96, 145, 432, 434, 433, 144, 75, 503,
253
/* 750 */ 588, 452, 93, 75, 75, 348, 75, 109, 111, 332,
254
/* 760 */ 113, 265, 75, 342, 248, 258, 115, 110, 165, 146,
255
/* 770 */ 157, 162, 167, 156, 161, 120, 122, 114, 116, 112,
256
/* 780 */ 118, 29, 124, 126, 128, 130, 132, 134, 136, 138,
257
/* 790 */ 140, 142, 815, 96, 96, 96, 96, 299, 283, 215,
258
/* 800 */ 310, 96, 96, 96, 96, 364, 362, 219, 145, 317,
259
/* 810 */ 316, 275, 144, 75, 75, 75, 75, 117, 119, 121,
260
/* 820 */ 123, 75, 75, 75, 75, 125, 127, 129, 131, 352,
261
/* 830 */ 247, 353, 404, 94, 146, 157, 162, 167, 156, 161,
262
/* 840 */ 120, 122, 114, 116, 112, 118, 96, 124, 126, 128,
263
/* 850 */ 130, 132, 134, 136, 138, 140, 142, 96, 312, 96,
264
/* 860 */ 96, 331, 96, 331, 77, 96, 75, 96, 96, 436,
265
/* 870 */ 133, 30, 261, 96, 145, 96, 38, 75, 144, 75,
266
/* 880 */ 75, 135, 75, 137, 139, 75, 141, 75, 75, 143,
267
/* 890 */ 592, 153, 155, 75, 382, 75, 391, 164, 331, 166,
268
/* 900 */ 146, 157, 162, 167, 156, 161, 120, 122, 114, 116,
269
/* 910 */ 112, 118, 725, 124, 126, 128, 130, 132, 134, 136,
270
/* 920 */ 138, 140, 142, 76, 96, 96, 438, 71, 471, 437,
271
/* 930 */ 96, 449, 96, 96, 326, 96, 327, 332, 262, 332,
272
/* 940 */ 96, 439, 148, 42, 75, 75, 147, 35, 178, 180,
273
/* 950 */ 75, 199, 75, 75, 182, 75, 184, 196, 694, 198,
274
/* 960 */ 75, 107, 106, 108, 208, 430, 431, 177, 421, 657,
275
/* 970 */ 150, 151, 360, 361, 332, 96, 96, 548, 383, 421,
276
/* 980 */ 327, 96, 725, 318, 183, 181, 300, 96, 96, 450,
277
/* 990 */ 96, 327, 179, 73, 74, 75, 75, 95, 149, 210,
278
/* 1000 */ 212, 75, 290, 319, 96, 224, 558, 75, 75, 76,
279
/* 1010 */ 75, 240, 245, 71, 277, 275, 435, 423, 96, 96,
280
/* 1020 */ 96, 96, 75, 392, 75, 327, 287, 457, 386, 244,
281
/* 1030 */ 101, 102, 103, 104, 105, 185, 189, 199, 75, 75,
282
/* 1040 */ 75, 75, 427, 474, 478, 491, 694, 107, 106, 108,
283
/* 1050 */ 559, 219, 414, 177, 81, 484, 562, 273, 315, 486,
284
/* 1060 */ 219, 458, 45, 42, 492, 476, 490, 487, 421, 421,
285
/* 1070 */ 183, 181, 844, 483, 421, 421, 421, 421, 179, 73,
286
/* 1080 */ 74, 476, 81, 95, 77, 421, 526, 865, 490, 43,
287
/* 1090 */ 659, 77, 41, 53, 522, 523, 56, 55, 60, 244,
288
/* 1100 */ 61, 76, 81, 62, 64, 71, 500, 502, 70, 602,
289
/* 1110 */ 68, 63, 504, 506, 510, 514, 101, 102, 103, 104,
290
/* 1120 */ 105, 185, 189, 520, 546, 603, 77, 81, 470, 199,
291
/* 1130 */ 79, 80, 875, 244, 82, 239, 241, 84, 225, 107,
292
/* 1140 */ 106, 108, 85, 87, 516, 177, 86, 88, 90, 98,
293
/* 1150 */ 89, 97, 99, 100, 142, 160, 218, 671, 672, 673,
294
/* 1160 */ 186, 209, 183, 181, 194, 200, 203, 202, 192, 206,
295
/* 1170 */ 179, 73, 74, 204, 205, 95, 221, 193, 219, 220,
296
/* 1180 */ 226, 228, 232, 230, 231, 233, 242, 237, 234, 238,
297
/* 1190 */ 215, 249, 254, 76, 257, 260, 276, 71, 256, 259,
298
/* 1200 */ 264, 267, 269, 268, 270, 274, 282, 291, 101, 102,
299
/* 1210 */ 103, 104, 105, 185, 189, 808, 285, 301, 304, 306,
300
/* 1220 */ 284, 199, 324, 311, 355, 330, 307, 374, 308, 329,
301
/* 1230 */ 375, 107, 106, 108, 333, 309, 337, 177, 314, 334,
302
/* 1240 */ 372, 321, 344, 323, 378, 347, 381, 379, 365, 359,
303
/* 1250 */ 339, 389, 377, 400, 183, 181, 289, 384, 363, 390,
304
/* 1260 */ 370, 393, 179, 73, 74, 394, 395, 95, 54, 396,
305
/* 1270 */ 408, 409, 411, 412, 413, 416, 420, 417, 422, 76,
306
/* 1280 */ 428, 837, 429, 71, 443, 440, 444, 842, 843, 445,
307
/* 1290 */ 446, 447, 451, 448, 813, 454, 814, 459, 462, 732,
308
/* 1300 */ 101, 102, 103, 104, 105, 185, 189, 199, 836, 464,
309
/* 1310 */ 851, 457, 467, 418, 468, 733, 469, 107, 106, 108,
310
/* 1320 */ 424, 419, 475, 177, 473, 853, 472, 477, 425, 480,
311
/* 1330 */ 481, 482, 488, 485, 854, 495, 497, 856, 496, 664,
312
/* 1340 */ 183, 181, 666, 821, 863, 509, 511, 724, 179, 73,
313
/* 1350 */ 74, 513, 727, 95, 517, 515, 519, 730, 521, 524,
314
/* 1360 */ 8, 823, 528, 530, 824, 19, 21, 23, 405, 531,
315
/* 1370 */ 825, 826, 827, 539, 538, 828, 549, 542, 543, 540,
316
/* 1380 */ 541, 864, 544, 547, 866, 550, 101, 102, 103, 104,
317
/* 1390 */ 105, 185, 189, 545, 867, 552, 870, 872, 529, 557,
318
/* 1400 */ 460, 551, 555, 560, 554, 527, 873, 553, 561, 563,
319
/* 1410 */ 564, 566, 556, 874, 553, 553, 553, 553, 553, 553,
320
/* 1420 */ 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
321
/* 1430 */ 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
322
/* 1440 */ 553, 553, 553, 553, 553, 553, 553, 553, 553, 553,
323
/* 1450 */ 553, 553, 553, 508, 512, 456, 553, 553, 553, 498,
324
/* 1460 */ 553, 553, 553, 553, 81,
326
static const YYCODETYPE yy_lookahead[] = {
327
/* 0 */ 24, 150, 26, 78, 79, 80, 81, 82, 83, 84,
328
/* 10 */ 85, 86, 87, 88, 155, 146, 40, 23, 149, 25,
329
/* 20 */ 44, 74, 75, 76, 77, 11, 79, 80, 81, 82,
330
/* 30 */ 83, 84, 85, 86, 87, 88, 85, 86, 87, 88,
331
/* 40 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
332
/* 50 */ 74, 75, 76, 77, 9, 79, 80, 81, 82, 83,
333
/* 60 */ 84, 85, 86, 87, 88, 9, 25, 152, 92, 79,
334
/* 70 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 9,
335
/* 80 */ 152, 40, 26, 168, 169, 44, 227, 159, 94, 48,
336
/* 90 */ 231, 97, 98, 99, 83, 84, 85, 86, 87, 88,
337
/* 100 */ 172, 9, 10, 109, 176, 64, 65, 66, 67, 68,
338
/* 110 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 191,
339
/* 120 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
340
/* 130 */ 40, 151, 9, 26, 44, 12, 159, 0, 94, 147,
341
/* 140 */ 148, 97, 98, 99, 229, 153, 9, 10, 92, 93,
342
/* 150 */ 136, 159, 26, 109, 64, 65, 66, 67, 68, 69,
343
/* 160 */ 70, 71, 72, 73, 74, 75, 76, 77, 191, 79,
344
/* 170 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 9,
345
/* 180 */ 203, 204, 20, 191, 66, 208, 60, 61, 62, 60,
346
/* 190 */ 61, 62, 144, 145, 146, 112, 23, 149, 115, 92,
347
/* 200 */ 93, 94, 23, 40, 97, 98, 99, 44, 216, 83,
348
/* 210 */ 84, 13, 14, 15, 96, 152, 109, 55, 92, 57,
349
/* 220 */ 157, 92, 96, 160, 161, 96, 136, 64, 65, 66,
350
/* 230 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
351
/* 240 */ 77, 66, 79, 80, 81, 82, 83, 84, 85, 86,
352
/* 250 */ 87, 88, 188, 189, 17, 129, 130, 131, 129, 130,
353
/* 260 */ 131, 17, 219, 220, 221, 222, 23, 26, 22, 94,
354
/* 270 */ 95, 96, 97, 98, 99, 100, 101, 40, 165, 170,
355
/* 280 */ 171, 44, 17, 108, 111, 26, 113, 114, 179, 22,
356
/* 290 */ 111, 24, 113, 114, 152, 51, 66, 104, 105, 106,
357
/* 300 */ 137, 64, 65, 66, 67, 68, 69, 70, 71, 72,
358
/* 310 */ 73, 74, 75, 76, 77, 202, 79, 80, 81, 82,
359
/* 320 */ 83, 84, 85, 86, 87, 88, 96, 97, 98, 99,
360
/* 330 */ 100, 101, 219, 92, 221, 222, 9, 24, 108, 26,
361
/* 340 */ 152, 40, 83, 84, 173, 44, 96, 159, 104, 105,
362
/* 350 */ 106, 92, 93, 23, 111, 25, 113, 114, 108, 115,
363
/* 360 */ 172, 152, 103, 117, 176, 64, 65, 66, 67, 68,
364
/* 370 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 191,
365
/* 380 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
366
/* 390 */ 219, 152, 221, 222, 185, 13, 14, 18, 23, 160,
367
/* 400 */ 161, 136, 214, 138, 152, 92, 27, 152, 154, 152,
368
/* 410 */ 26, 194, 152, 26, 226, 40, 165, 38, 201, 44,
369
/* 420 */ 41, 22, 183, 184, 172, 26, 152, 172, 176, 172,
370
/* 430 */ 51, 176, 172, 176, 160, 161, 176, 228, 137, 64,
371
/* 440 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
372
/* 450 */ 75, 76, 77, 202, 79, 80, 81, 82, 83, 84,
373
/* 460 */ 85, 86, 87, 88, 23, 26, 214, 212, 211, 212,
374
/* 470 */ 152, 23, 85, 18, 214, 152, 92, 93, 226, 92,
375
/* 480 */ 93, 40, 27, 9, 22, 44, 226, 159, 26, 151,
376
/* 490 */ 172, 92, 93, 38, 176, 172, 41, 26, 29, 176,
377
/* 500 */ 26, 25, 9, 119, 35, 64, 65, 66, 67, 68,
378
/* 510 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 191,
379
/* 520 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
380
/* 530 */ 9, 92, 93, 23, 9, 25, 167, 168, 169, 9,
381
/* 540 */ 219, 223, 221, 222, 216, 23, 40, 25, 162, 226,
382
/* 550 */ 44, 165, 166, 151, 92, 93, 26, 152, 119, 111,
383
/* 560 */ 232, 113, 114, 92, 93, 237, 92, 93, 9, 93,
384
/* 570 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
385
/* 580 */ 74, 75, 76, 77, 11, 79, 80, 81, 82, 83,
386
/* 590 */ 84, 85, 86, 87, 88, 119, 9, 25, 229, 159,
387
/* 600 */ 167, 168, 169, 93, 111, 45, 113, 114, 171, 103,
388
/* 610 */ 22, 179, 180, 40, 26, 9, 179, 44, 186, 159,
389
/* 620 */ 9, 112, 92, 93, 102, 116, 66, 9, 22, 119,
390
/* 630 */ 20, 191, 111, 228, 113, 114, 9, 64, 65, 66,
391
/* 640 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
392
/* 650 */ 77, 191, 79, 80, 81, 82, 83, 84, 85, 86,
393
/* 660 */ 87, 88, 229, 103, 152, 55, 152, 57, 108, 152,
394
/* 670 */ 111, 152, 113, 114, 21, 103, 216, 151, 40, 73,
395
/* 680 */ 92, 152, 44, 152, 172, 23, 172, 25, 176, 172,
396
/* 690 */ 176, 172, 232, 176, 23, 176, 25, 237, 111, 9,
397
/* 700 */ 113, 114, 64, 65, 66, 67, 68, 69, 70, 71,
398
/* 710 */ 72, 73, 74, 75, 76, 77, 185, 79, 80, 81,
399
/* 720 */ 82, 83, 84, 85, 86, 87, 88, 9, 152, 111,
400
/* 730 */ 218, 113, 114, 152, 152, 218, 152, 25, 111, 210,
401
/* 740 */ 113, 114, 152, 40, 104, 105, 106, 44, 172, 139,
402
/* 750 */ 9, 98, 176, 172, 172, 164, 172, 176, 176, 228,
403
/* 760 */ 176, 165, 172, 172, 203, 204, 176, 64, 65, 66,
404
/* 770 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
405
/* 780 */ 77, 158, 79, 80, 81, 82, 83, 84, 85, 86,
406
/* 790 */ 87, 88, 139, 152, 152, 152, 152, 23, 202, 25,
407
/* 800 */ 45, 152, 152, 152, 152, 83, 84, 117, 40, 95,
408
/* 810 */ 96, 152, 44, 172, 172, 172, 172, 176, 176, 176,
409
/* 820 */ 176, 172, 172, 172, 172, 176, 176, 176, 176, 23,
410
/* 830 */ 118, 25, 159, 65, 66, 67, 68, 69, 70, 71,
411
/* 840 */ 72, 73, 74, 75, 76, 77, 152, 79, 80, 81,
412
/* 850 */ 82, 83, 84, 85, 86, 87, 88, 152, 103, 152,
413
/* 860 */ 152, 152, 152, 152, 191, 152, 172, 152, 152, 210,
414
/* 870 */ 176, 23, 26, 152, 40, 152, 152, 172, 44, 172,
415
/* 880 */ 172, 176, 172, 176, 176, 172, 176, 172, 172, 176,
416
/* 890 */ 9, 176, 176, 172, 185, 172, 185, 176, 152, 176,
417
/* 900 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
418
/* 910 */ 76, 77, 9, 79, 80, 81, 82, 83, 84, 85,
419
/* 920 */ 86, 87, 88, 22, 152, 152, 28, 26, 25, 31,
420
/* 930 */ 152, 185, 152, 152, 23, 152, 25, 228, 92, 228,
421
/* 940 */ 152, 43, 40, 103, 172, 172, 44, 163, 176, 176,
422
/* 950 */ 172, 50, 172, 172, 176, 172, 176, 176, 24, 176,
423
/* 960 */ 172, 60, 61, 62, 176, 53, 54, 66, 152, 9,
424
/* 970 */ 68, 69, 129, 130, 228, 152, 152, 131, 23, 152,
425
/* 980 */ 25, 152, 9, 32, 83, 84, 85, 152, 152, 23,
426
/* 990 */ 152, 25, 91, 92, 93, 172, 172, 96, 96, 176,
427
/* 1000 */ 176, 172, 152, 52, 152, 176, 190, 172, 172, 22,
428
/* 1010 */ 172, 176, 176, 26, 176, 152, 47, 190, 152, 152,
429
/* 1020 */ 152, 152, 172, 23, 172, 25, 176, 64, 176, 126,
430
/* 1030 */ 129, 130, 131, 132, 133, 134, 135, 50, 172, 172,
431
/* 1040 */ 172, 172, 176, 176, 176, 176, 103, 60, 61, 62,
432
/* 1050 */ 59, 117, 159, 66, 115, 23, 240, 25, 107, 159,
433
/* 1060 */ 117, 188, 189, 103, 23, 152, 25, 128, 152, 152,
434
/* 1070 */ 83, 84, 103, 210, 152, 152, 152, 152, 91, 92,
435
/* 1080 */ 93, 152, 115, 96, 191, 152, 23, 9, 25, 33,
436
/* 1090 */ 127, 191, 173, 173, 159, 128, 42, 182, 46, 126,
437
/* 1100 */ 174, 22, 115, 173, 102, 26, 190, 190, 22, 117,
438
/* 1110 */ 173, 175, 190, 190, 190, 190, 129, 130, 131, 132,
439
/* 1120 */ 133, 134, 135, 190, 46, 117, 191, 115, 215, 50,
440
/* 1130 */ 192, 191, 141, 126, 193, 124, 123, 195, 121, 60,
441
/* 1140 */ 61, 62, 196, 198, 215, 66, 197, 199, 125, 152,
442
/* 1150 */ 200, 117, 117, 152, 88, 96, 152, 115, 115, 115,
443
/* 1160 */ 22, 136, 83, 84, 17, 22, 189, 23, 224, 23,
444
/* 1170 */ 91, 92, 93, 25, 152, 96, 156, 225, 117, 152,
445
/* 1180 */ 122, 25, 101, 213, 174, 26, 122, 213, 164, 174,
446
/* 1190 */ 25, 205, 152, 22, 119, 156, 103, 26, 152, 152,
447
/* 1200 */ 152, 206, 120, 207, 22, 152, 23, 117, 129, 130,
448
/* 1210 */ 131, 132, 133, 134, 135, 136, 207, 23, 173, 152,
449
/* 1220 */ 206, 50, 22, 152, 23, 174, 177, 46, 178, 213,
450
/* 1230 */ 22, 60, 61, 62, 213, 180, 164, 66, 181, 174,
451
/* 1240 */ 152, 181, 172, 181, 23, 172, 22, 173, 165, 230,
452
/* 1250 */ 182, 46, 175, 184, 83, 84, 85, 173, 230, 22,
453
/* 1260 */ 184, 100, 91, 92, 93, 152, 177, 96, 108, 178,
454
/* 1270 */ 152, 156, 152, 156, 24, 152, 103, 156, 156, 22,
455
/* 1280 */ 39, 11, 37, 26, 139, 47, 152, 103, 103, 156,
456
/* 1290 */ 103, 152, 173, 22, 9, 11, 139, 187, 17, 127,
457
/* 1300 */ 129, 130, 131, 132, 133, 134, 135, 50, 9, 9,
458
/* 1310 */ 17, 64, 187, 233, 152, 127, 107, 60, 61, 62,
459
/* 1320 */ 235, 234, 196, 66, 73, 9, 152, 73, 236, 127,
460
/* 1330 */ 152, 22, 22, 217, 9, 118, 196, 9, 152, 9,
461
/* 1340 */ 83, 84, 9, 9, 9, 118, 196, 9, 91, 92,
462
/* 1350 */ 93, 187, 9, 96, 196, 107, 127, 9, 217, 22,
463
/* 1360 */ 11, 9, 152, 152, 9, 16, 17, 18, 19, 156,
464
/* 1370 */ 9, 9, 9, 23, 152, 9, 34, 165, 24, 30,
465
/* 1380 */ 238, 9, 152, 165, 9, 36, 129, 130, 131, 132,
466
/* 1390 */ 133, 134, 135, 239, 9, 152, 9, 9, 49, 20,
467
/* 1400 */ 51, 238, 156, 140, 152, 56, 9, 58, 152, 141,
468
/* 1410 */ 241, 142, 63, 9, 242, 242, 242, 242, 242, 242,
469
/* 1420 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
470
/* 1430 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
471
/* 1440 */ 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
472
/* 1450 */ 242, 242, 242, 104, 105, 106, 242, 242, 242, 110,
473
/* 1460 */ 242, 242, 242, 242, 115,
475
#define YY_SHIFT_USE_DFLT (-76)
476
static const short yy_shift_ofst[] = {
477
/* 0 */ 92, 137, -76, -76, 1349, 45, 70, -76, 198, 123,
478
/* 10 */ 170, 56, 327, -76, -76, -76, -76, -76, -76, 123,
479
/* 20 */ 525, 123, 611, 123, 718, 267, 741, 471, 330, 848,
480
/* 30 */ 881, 107, -76, 241, -76, 175, -76, 471, 230, -76,
481
/* 40 */ 840, -76, 1056, 379, -76, -76, -76, -76, -76, -76,
482
/* 50 */ -76, 250, 840, -76, 1054, -76, 382, -76, -76, 1052,
483
/* 60 */ 469, 840, 1002, -76, -76, -76, -76, 840, -76, 1086,
484
/* 70 */ 1257, 246, 901, 992, 1008, -76, 987, -76, 173, 1012,
485
/* 80 */ -76, 509, -76, 712, 1007, 1013, 1011, 1017, 1023, -76,
486
/* 90 */ 1257, 41, 1257, 638, 1257, -76, 1034, 471, 1035, 471,
487
/* 100 */ -76, -76, -76, -76, -76, -76, -76, -76, -76, 834,
488
/* 110 */ 1257, 768, 1257, -10, 1257, -10, 1257, -10, 1257, -10,
489
/* 120 */ 1257, -53, 1257, -53, 1257, 11, 1257, 11, 1257, 11,
490
/* 130 */ 1257, 11, 1257, -49, 1257, -49, 1257, 1066, 1257, 1066,
491
/* 140 */ 1257, 1066, 1257, -76, -76, -76, 902, -76, -76, -76,
492
/* 150 */ -76, -76, 1257, -75, 1257, -10, -76, 118, -76, 1059,
493
/* 160 */ -76, -76, -76, 1257, 703, 1257, -53, -76, 399, 987,
494
/* 170 */ 179, 83, 1042, 1043, 1044, -76, 638, 1257, 834, 1257,
495
/* 180 */ -76, 1257, -76, 1257, -76, 1138, 1012, 243, -76, 1079,
496
/* 190 */ 90, 1025, 265, 1147, -76, 1257, 163, 1257, 638, 1143,
497
/* 200 */ 455, 1144, -76, 1148, 471, 1146, -76, 1257, 237, 1257,
498
/* 210 */ 301, 1257, 638, 662, -76, 1257, -76, -76, 1061, 471,
499
/* 220 */ -76, -76, -76, 1257, 638, 1058, 1257, 1156, 1257, 1081,
500
/* 230 */ 469, -76, 1159, -76, -76, 638, 1081, 469, -76, 1257,
501
/* 240 */ 638, 1064, 1257, 1165, 1257, 638, -76, -76, 476, -76,
502
/* 250 */ -76, -76, 384, -76, 439, -76, 1075, -76, 462, 1061,
503
/* 260 */ 313, -76, -76, 471, -76, -76, 1093, 1082, -76, 1182,
504
/* 270 */ 471, 671, -76, 471, -76, -76, 1257, 638, 1012, 448,
505
/* 280 */ 510, 1183, 313, 1093, 1082, -76, 1171, -24, -76, -76,
506
/* 290 */ 1090, 387, -76, -76, -76, -76, 375, -76, 774, -76,
507
/* 300 */ 1194, -76, 441, 840, -76, 471, 1200, -76, 755, -76,
508
/* 310 */ 471, -76, 193, 951, -76, 714, -76, -76, -76, -76,
509
/* 320 */ 951, -76, 951, -76, 471, 911, -76, 471, 1081, 469,
510
/* 330 */ -76, -76, 1081, 469, -76, -76, 1159, -76, 1054, -76,
511
/* 340 */ -76, 126, -76, 129, -76, -76, 129, -76, -76, 588,
512
/* 350 */ 722, 806, -76, 722, 1201, -76, -76, -76, 843, -76,
513
/* 360 */ -76, -76, 843, -76, -76, -76, -76, -76, -6, 44,
514
/* 370 */ -76, 471, -76, 1181, 1208, 471, 522, 1221, 840, -76,
515
/* 380 */ 1224, 471, 955, 840, -76, 1257, 506, -76, 1205, 1237,
516
/* 390 */ 471, 1000, 1161, 471, 1200, -76, 560, 1160, -76, -76,
517
/* 400 */ -76, -76, -76, 1012, 493, 653, 162, 471, 1061, -76,
518
/* 410 */ 471, 934, 1250, 1012, 521, 471, 1061, 898, 640, 1173,
519
/* 420 */ 471, 1061, -76, 1241, 14, 1270, 1257, 573, 1245, 912,
520
/* 430 */ -76, -76, 1184, 1185, 969, 471, 572, -76, -76, 1238,
521
/* 440 */ -76, -76, 1145, 471, 943, 1187, 471, 1271, 471, 966,
522
/* 450 */ 960, 1285, 1157, 1284, 244, 559, 963, 379, -76, 1172,
523
/* 460 */ 1188, 1281, 1299, 1300, 244, 1293, 1247, 471, 1209, 471,
524
/* 470 */ 903, 471, 1251, 1257, 638, 1316, 1254, 1257, 638, 1202,
525
/* 480 */ 471, 1309, 471, 1032, -76, 939, 587, 1310, 1257, 1041,
526
/* 490 */ 1257, 638, 1325, 638, 1217, 471, 973, 1328, 610, 471,
527
/* 500 */ 1330, 471, 1333, 471, 1334, 471, 1335, 618, 1227, 471,
528
/* 510 */ 973, 1338, 1247, 471, 1248, 471, 903, 1343, 1229, 471,
529
/* 520 */ 1309, 967, 627, 1337, 1257, 1063, 1348, 474, 1352, 471,
530
/* 530 */ 1061, 606, 259, 1355, 1361, 1362, 1363, 471, 1350, 1366,
531
/* 540 */ 1342, 241, 1354, 471, 1078, 1372, 846, 1375, 1385, -76,
532
/* 550 */ 1342, 471, 1387, 530, 690, 1388, 1379, 471, 991, 1263,
533
/* 560 */ 471, 1397, 1268, 1269, 471, 1404, -76, -76, -76,
535
#define YY_REDUCE_USE_DFLT (-150)
536
static const short yy_reduce_ofst[] = {
537
/* 0 */ 48, -131, -150, -150, -8, -150, -150, -150, -149, -20,
538
/* 10 */ -150, 142, -150, -150, -150, -150, -150, -150, -150, 338,
539
/* 20 */ -150, 402, -150, 526, -150, 254, -150, 63, 623, -150,
540
/* 30 */ -150, 239, -150, 386, 784, 109, -150, 724, 437, -150,
541
/* 40 */ 919, -150, -150, 64, -150, -150, -150, -150, -150, -150,
542
/* 50 */ -150, -150, 920, -150, 915, -150, -150, -150, -150, -150,
543
/* 60 */ 926, 930, 936, -150, -150, -150, -150, 937, -150, -150,
544
/* 70 */ 514, -150, 252, -150, -150, -150, -72, -150, 938, 940,
545
/* 80 */ -150, 941, 217, 942, 946, 949, 945, 948, 950, -150,
546
/* 90 */ 519, 321, 576, 321, 581, -150, -150, 997, -150, 1001,
547
/* 100 */ -150, -150, -150, -150, -150, -150, -150, -150, -150, 321,
548
/* 110 */ 582, 321, 584, 321, 590, 321, 641, 321, 642, 321,
549
/* 120 */ 643, 321, 644, 321, 649, 321, 650, 321, 651, 321,
550
/* 130 */ 652, 321, 694, 321, 705, 321, 707, 321, 708, 321,
551
/* 140 */ 710, 321, 713, 321, -150, -150, -150, -150, -150, -150,
552
/* 150 */ -150, -150, 715, 43, 716, 321, -150, -150, -150, -150,
553
/* 160 */ -150, -150, -150, 721, 321, 723, 321, -150, 1004, 188,
554
/* 170 */ 938, -150, -150, -150, -150, -150, 321, 772, 321, 773,
555
/* 180 */ 321, 778, 321, 780, 321, -150, 440, 938, -150, 318,
556
/* 190 */ 321, 944, 952, -150, -150, 781, 321, 783, 321, -150,
557
/* 200 */ 977, -150, -150, -150, 1022, -150, -150, 788, 321, 823,
558
/* 210 */ 321, 824, 321, -150, -150, 323, -150, -150, 1020, 1027,
559
/* 220 */ -150, -150, -150, 829, 321, -150, 257, -150, 255, 970,
560
/* 230 */ 1010, -150, 1024, -150, -150, 321, 974, 1015, -150, 835,
561
/* 240 */ 321, -150, 260, -150, 836, 321, -150, 561, 986, -150,
562
/* 250 */ -150, -150, 1040, -150, 1046, -150, -150, -150, 1047, 1039,
563
/* 260 */ 251, -150, -150, 1048, -150, -150, 995, 996, -150, -150,
564
/* 270 */ 529, -150, -150, 1053, -150, -150, 838, 321, -23, 938,
565
/* 280 */ 986, -150, 596, 1014, 1009, -150, 850, 113, -150, -150,
566
/* 290 */ -150, 997, -150, -150, -150, -150, 321, -150, -150, -150,
567
/* 300 */ -150, -150, 321, 1045, -150, 1067, 1049, 1050, 1055, -150,
568
/* 310 */ 1071, -150, -150, 1057, -150, -150, -150, -150, -150, -150,
569
/* 320 */ 1060, -150, 1062, -150, 209, -150, -150, 405, 1016, 1051,
570
/* 330 */ -150, -150, 1021, 1065, -150, -150, 1072, -150, 1068, -150,
571
/* 340 */ -150, 591, -150, 1070, -150, -150, 1073, -150, -150, 1083,
572
/* 350 */ 369, -150, -150, 433, -150, -150, -150, -150, 1019, -150,
573
/* 360 */ -150, -150, 1028, -150, -150, -150, -150, -150, 1069, 1076,
574
/* 370 */ -150, 1088, -150, -150, -150, 531, 1077, -150, 1074, -150,
575
/* 380 */ -150, 709, -150, 1084, -150, 852, 171, -150, -150, -150,
576
/* 390 */ 711, -150, -150, 1113, 1089, 1091, 432, -150, -150, -150,
577
/* 400 */ -150, -150, -150, 673, 938, -141, -150, 1118, 1115, -150,
578
/* 410 */ 1120, 1117, -150, 893, 938, 1123, 1121, 1080, 1087, -150,
579
/* 420 */ 827, 1122, -150, 1085, 1092, -150, 866, 321, -150, -150,
580
/* 430 */ -150, -150, -150, -150, -150, 659, -150, -150, -150, -150,
581
/* 440 */ -150, -150, -150, 1134, 1133, -150, 1139, -150, 746, -150,
582
/* 450 */ 1119, -150, -150, -150, 328, 938, 1110, 873, -150, -150,
583
/* 460 */ -150, -150, -150, -150, 460, -150, 1125, 1162, -150, 913,
584
/* 470 */ 1126, 1174, -150, 867, 321, -150, -150, 868, 321, -150,
585
/* 480 */ 1178, 1116, 863, -150, -150, 900, 938, -150, 512, -150,
586
/* 490 */ 869, 321, -150, 321, -150, 1186, 1140, -150, -150, 916,
587
/* 500 */ -150, 917, -150, 922, -150, 923, -150, 938, -150, 924,
588
/* 510 */ 1150, -150, 1164, 925, -150, 929, 1158, -150, -150, 933,
589
/* 520 */ 1141, 935, 938, -150, 517, -150, -150, 1210, -150, 1211,
590
/* 530 */ 1213, -150, -85, -150, -150, -150, -150, 1222, -150, -150,
591
/* 540 */ 1142, 1212, -150, 1230, 1154, -150, 1218, -150, -150, -150,
592
/* 550 */ 1163, 1243, -150, 1252, 1246, -150, -150, 816, -150, -150,
593
/* 560 */ 1256, -150, -150, 1169, 274, -150, -150, -150, -150,
595
static const YYACTIONTYPE yy_default[] = {
596
/* 0 */ 575, 575, 570, 573, 878, 878, 878, 574, 581, 878,
597
/* 10 */ 878, 878, 878, 601, 602, 603, 582, 583, 584, 878,
598
/* 20 */ 878, 878, 878, 878, 878, 878, 878, 878, 878, 878,
599
/* 30 */ 878, 878, 594, 604, 613, 596, 612, 878, 878, 614,
600
/* 40 */ 657, 620, 878, 878, 658, 661, 662, 663, 860, 861,
601
/* 50 */ 862, 878, 657, 621, 642, 640, 878, 643, 644, 878,
602
/* 60 */ 713, 657, 628, 622, 629, 711, 712, 657, 623, 878,
603
/* 70 */ 878, 743, 812, 749, 744, 740, 878, 668, 878, 878,
604
/* 80 */ 669, 677, 679, 686, 725, 716, 718, 706, 720, 674,
605
/* 90 */ 878, 721, 878, 722, 878, 742, 878, 878, 745, 878,
606
/* 100 */ 746, 747, 748, 750, 751, 752, 755, 756, 757, 758,
607
/* 110 */ 878, 759, 878, 760, 878, 761, 878, 762, 878, 763,
608
/* 120 */ 878, 764, 878, 765, 878, 766, 878, 767, 878, 768,
609
/* 130 */ 878, 769, 878, 770, 878, 771, 878, 772, 878, 773,
610
/* 140 */ 878, 774, 878, 775, 776, 777, 878, 778, 779, 786,
611
/* 150 */ 793, 796, 878, 781, 878, 780, 783, 878, 784, 878,
612
/* 160 */ 787, 785, 792, 878, 878, 878, 794, 795, 878, 812,
613
/* 170 */ 878, 878, 878, 878, 878, 799, 811, 878, 788, 878,
614
/* 180 */ 789, 878, 790, 878, 791, 878, 878, 878, 801, 878,
615
/* 190 */ 878, 878, 878, 878, 802, 878, 878, 878, 803, 878,
616
/* 200 */ 878, 878, 858, 878, 878, 878, 859, 878, 878, 878,
617
/* 210 */ 878, 878, 804, 878, 797, 812, 809, 810, 694, 878,
618
/* 220 */ 695, 800, 782, 878, 723, 878, 878, 707, 878, 714,
619
/* 230 */ 713, 708, 878, 598, 715, 710, 714, 713, 709, 878,
620
/* 240 */ 719, 878, 812, 717, 878, 726, 678, 689, 687, 688,
621
/* 250 */ 697, 698, 878, 699, 878, 700, 878, 701, 878, 694,
622
/* 260 */ 685, 599, 600, 878, 683, 684, 703, 705, 690, 878,
623
/* 270 */ 878, 878, 704, 878, 738, 739, 878, 702, 689, 878,
624
/* 280 */ 878, 878, 685, 703, 705, 691, 878, 685, 680, 681,
625
/* 290 */ 878, 878, 682, 675, 676, 798, 878, 741, 878, 753,
626
/* 300 */ 878, 754, 878, 657, 624, 878, 816, 630, 625, 631,
627
/* 310 */ 878, 632, 878, 878, 633, 878, 636, 637, 638, 639,
628
/* 320 */ 878, 634, 878, 635, 878, 878, 817, 878, 714, 713,
629
/* 330 */ 818, 820, 714, 713, 819, 626, 878, 627, 642, 641,
630
/* 340 */ 615, 878, 616, 878, 617, 749, 878, 618, 619, 605,
631
/* 350 */ 835, 878, 606, 835, 878, 607, 610, 611, 878, 830,
632
/* 360 */ 832, 833, 878, 831, 834, 609, 608, 597, 878, 878,
633
/* 370 */ 647, 878, 650, 878, 878, 878, 878, 878, 657, 651,
634
/* 380 */ 878, 878, 878, 657, 652, 878, 657, 653, 878, 878,
635
/* 390 */ 878, 878, 878, 878, 816, 630, 655, 878, 654, 656,
636
/* 400 */ 648, 649, 595, 878, 878, 591, 878, 878, 694, 589,
637
/* 410 */ 878, 878, 878, 878, 878, 878, 694, 841, 878, 878,
638
/* 420 */ 878, 694, 696, 846, 878, 878, 878, 878, 878, 878,
639
/* 430 */ 847, 848, 878, 878, 878, 878, 878, 838, 839, 878,
640
/* 440 */ 840, 590, 878, 878, 878, 878, 878, 878, 878, 878,
641
/* 450 */ 878, 878, 878, 878, 878, 878, 878, 878, 660, 878,
642
/* 460 */ 878, 878, 878, 878, 878, 878, 659, 878, 878, 878,
643
/* 470 */ 878, 878, 878, 878, 728, 878, 878, 878, 729, 878,
644
/* 480 */ 878, 736, 878, 878, 737, 878, 878, 878, 878, 878,
645
/* 490 */ 878, 734, 878, 735, 878, 878, 878, 878, 878, 878,
646
/* 500 */ 878, 878, 878, 878, 878, 878, 878, 878, 878, 878,
647
/* 510 */ 878, 878, 659, 878, 878, 878, 878, 878, 878, 878,
648
/* 520 */ 736, 878, 878, 878, 878, 878, 878, 878, 878, 878,
649
/* 530 */ 694, 878, 835, 878, 878, 878, 878, 878, 878, 878,
650
/* 540 */ 869, 878, 878, 878, 878, 878, 878, 878, 878, 868,
651
/* 550 */ 869, 878, 878, 878, 878, 878, 878, 878, 878, 878,
652
/* 560 */ 878, 878, 878, 876, 878, 878, 877, 576, 571,
654
#define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
656
/* The next table maps tokens into fallback tokens. If a construct
657
** like the following:
659
** %fallback ID X Y Z.
661
** appears in the grammer, then ID becomes a fallback token for X, Y,
662
** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
663
** but it does not parse, the type of the token is changed to ID and
664
** the parse is retried before an error is thrown.
667
static const YYCODETYPE yyFallback[] = {
668
0, /* $ => nothing */
669
0, /* END_OF_FILE => nothing */
670
0, /* ILLEGAL => nothing */
671
0, /* SPACE => nothing */
672
0, /* UNCLOSED_STRING => nothing */
673
0, /* COMMENT => nothing */
674
0, /* FUNCTION => nothing */
675
0, /* COLUMN => nothing */
676
0, /* AGG_FUNCTION => nothing */
677
0, /* SEMI => nothing */
678
26, /* EXPLAIN => ID */
679
26, /* BEGIN => ID */
680
0, /* TRANSACTION => nothing */
681
26, /* DEFERRED => ID */
682
26, /* IMMEDIATE => ID */
683
26, /* EXCLUSIVE => ID */
684
0, /* COMMIT => nothing */
686
0, /* ROLLBACK => nothing */
687
0, /* CREATE => nothing */
688
0, /* TABLE => nothing */
690
0, /* LP => nothing */
691
0, /* RP => nothing */
692
0, /* AS => nothing */
693
0, /* COMMA => nothing */
694
0, /* ID => nothing */
695
26, /* ABORT => ID */
696
26, /* AFTER => ID */
698
26, /* ATTACH => ID */
699
26, /* BEFORE => ID */
700
26, /* CASCADE => ID */
701
26, /* CONFLICT => ID */
702
26, /* DATABASE => ID */
704
26, /* DETACH => ID */
709
26, /* IGNORE => ID */
710
26, /* INITIALLY => ID */
711
26, /* INSTEAD => ID */
713
26, /* MATCH => ID */
716
26, /* OFFSET => ID */
717
26, /* PRAGMA => ID */
718
26, /* RAISE => ID */
719
26, /* REPLACE => ID */
720
26, /* RESTRICT => ID */
722
26, /* STATEMENT => ID */
723
26, /* TRIGGER => ID */
724
26, /* VACUUM => ID */
726
26, /* REINDEX => ID */
727
26, /* RENAME => ID */
728
26, /* CDATE => ID */
729
26, /* CTIME => ID */
730
26, /* CTIMESTAMP => ID */
731
26, /* ALTER => ID */
732
0, /* OR => nothing */
733
0, /* AND => nothing */
734
0, /* NOT => nothing */
735
0, /* IS => nothing */
736
0, /* BETWEEN => nothing */
737
0, /* IN => nothing */
738
0, /* ISNULL => nothing */
739
0, /* NOTNULL => nothing */
740
0, /* NE => nothing */
741
0, /* EQ => nothing */
742
0, /* GT => nothing */
743
0, /* LE => nothing */
744
0, /* LT => nothing */
745
0, /* GE => nothing */
746
0, /* ESCAPE => nothing */
747
0, /* BITAND => nothing */
748
0, /* BITOR => nothing */
749
0, /* LSHIFT => nothing */
750
0, /* RSHIFT => nothing */
751
0, /* PLUS => nothing */
752
0, /* MINUS => nothing */
753
0, /* STAR => nothing */
754
0, /* SLASH => nothing */
755
0, /* REM => nothing */
756
0, /* CONCAT => nothing */
757
0, /* UMINUS => nothing */
758
0, /* UPLUS => nothing */
759
0, /* BITNOT => nothing */
760
0, /* STRING => nothing */
761
0, /* JOIN_KW => nothing */
762
0, /* CONSTRAINT => nothing */
763
0, /* DEFAULT => nothing */
764
0, /* NULL => nothing */
765
0, /* PRIMARY => nothing */
766
0, /* UNIQUE => nothing */
767
0, /* CHECK => nothing */
768
0, /* REFERENCES => nothing */
769
0, /* COLLATE => nothing */
770
0, /* AUTOINCR => nothing */
771
0, /* ON => nothing */
772
0, /* DELETE => nothing */
773
0, /* UPDATE => nothing */
774
0, /* INSERT => nothing */
775
0, /* SET => nothing */
776
0, /* DEFERRABLE => nothing */
777
0, /* FOREIGN => nothing */
778
0, /* DROP => nothing */
779
0, /* UNION => nothing */
780
0, /* ALL => nothing */
781
0, /* INTERSECT => nothing */
782
0, /* EXCEPT => nothing */
783
0, /* SELECT => nothing */
784
0, /* DISTINCT => nothing */
785
0, /* DOT => nothing */
786
0, /* FROM => nothing */
787
0, /* JOIN => nothing */
788
0, /* USING => nothing */
789
0, /* ORDER => nothing */
790
0, /* BY => nothing */
791
0, /* GROUP => nothing */
792
0, /* HAVING => nothing */
793
0, /* LIMIT => nothing */
794
0, /* WHERE => nothing */
795
0, /* INTO => nothing */
796
0, /* VALUES => nothing */
797
0, /* INTEGER => nothing */
798
0, /* FLOAT => nothing */
799
0, /* BLOB => nothing */
800
0, /* REGISTER => nothing */
801
0, /* VARIABLE => nothing */
802
0, /* EXISTS => nothing */
803
0, /* CASE => nothing */
804
0, /* WHEN => nothing */
805
0, /* THEN => nothing */
806
0, /* ELSE => nothing */
807
0, /* INDEX => nothing */
808
0, /* TO => nothing */
809
0, /* ADD => nothing */
810
0, /* COLUMNKW => nothing */
812
#endif /* YYFALLBACK */
814
/* The following structure represents a single element of the
815
** parser's stack. Information stored includes:
817
** + The state number for the parser at this level of the stack.
819
** + The value of the token stored at this level of the stack.
820
** (In other words, the "major" token.)
822
** + The semantic value stored at this level of the stack. This is
823
** the information used by the action routines in the grammar.
824
** It is sometimes called the "minor" token.
826
struct yyStackEntry {
827
int stateno; /* The state-number */
828
int major; /* The major token value. This is the code
829
** number for the token at this stack level */
830
YYMINORTYPE minor; /* The user-supplied minor token value. This
831
** is the value of the token */
833
typedef struct yyStackEntry yyStackEntry;
835
/* The state of the parser is completely contained in an instance of
836
** the following structure */
838
int yyidx; /* Index of top element in stack */
839
int yyerrcnt; /* Shifts left before out of the error */
840
sqlite3ParserARG_SDECL /* A place to hold %extra_argument */
841
yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
843
typedef struct yyParser yyParser;
847
static FILE *yyTraceFILE = 0;
848
static char *yyTracePrompt = 0;
853
** Turn parser tracing on by giving a stream to which to write the trace
854
** and a prompt to preface each trace message. Tracing is turned off
855
** by making either argument NULL
859
** <li> A FILE* to which trace output should be written.
860
** If NULL, then tracing is turned off.
861
** <li> A prefix string written at the beginning of every
862
** line of trace output. If NULL, then tracing is
869
void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){
870
yyTraceFILE = TraceFILE;
871
yyTracePrompt = zTracePrompt;
872
if( yyTraceFILE==0 ) yyTracePrompt = 0;
873
else if( yyTracePrompt==0 ) yyTraceFILE = 0;
878
/* For tracing shifts, the names of all terminals and nonterminals
879
** are required. The following table supplies these names */
880
static const char *const yyTokenName[] = {
881
"$", "END_OF_FILE", "ILLEGAL", "SPACE",
882
"UNCLOSED_STRING", "COMMENT", "FUNCTION", "COLUMN",
883
"AGG_FUNCTION", "SEMI", "EXPLAIN", "BEGIN",
884
"TRANSACTION", "DEFERRED", "IMMEDIATE", "EXCLUSIVE",
885
"COMMIT", "END", "ROLLBACK", "CREATE",
886
"TABLE", "TEMP", "LP", "RP",
887
"AS", "COMMA", "ID", "ABORT",
888
"AFTER", "ASC", "ATTACH", "BEFORE",
889
"CASCADE", "CONFLICT", "DATABASE", "DESC",
890
"DETACH", "EACH", "FAIL", "FOR",
891
"GLOB", "IGNORE", "INITIALLY", "INSTEAD",
892
"LIKE", "MATCH", "KEY", "OF",
893
"OFFSET", "PRAGMA", "RAISE", "REPLACE",
894
"RESTRICT", "ROW", "STATEMENT", "TRIGGER",
895
"VACUUM", "VIEW", "REINDEX", "RENAME",
896
"CDATE", "CTIME", "CTIMESTAMP", "ALTER",
897
"OR", "AND", "NOT", "IS",
898
"BETWEEN", "IN", "ISNULL", "NOTNULL",
899
"NE", "EQ", "GT", "LE",
900
"LT", "GE", "ESCAPE", "BITAND",
901
"BITOR", "LSHIFT", "RSHIFT", "PLUS",
902
"MINUS", "STAR", "SLASH", "REM",
903
"CONCAT", "UMINUS", "UPLUS", "BITNOT",
904
"STRING", "JOIN_KW", "CONSTRAINT", "DEFAULT",
905
"NULL", "PRIMARY", "UNIQUE", "CHECK",
906
"REFERENCES", "COLLATE", "AUTOINCR", "ON",
907
"DELETE", "UPDATE", "INSERT", "SET",
908
"DEFERRABLE", "FOREIGN", "DROP", "UNION",
909
"ALL", "INTERSECT", "EXCEPT", "SELECT",
910
"DISTINCT", "DOT", "FROM", "JOIN",
911
"USING", "ORDER", "BY", "GROUP",
912
"HAVING", "LIMIT", "WHERE", "INTO",
913
"VALUES", "INTEGER", "FLOAT", "BLOB",
914
"REGISTER", "VARIABLE", "EXISTS", "CASE",
915
"WHEN", "THEN", "ELSE", "INDEX",
916
"TO", "ADD", "COLUMNKW", "error",
917
"input", "cmdlist", "ecmd", "cmdx",
918
"cmd", "explain", "transtype", "trans_opt",
919
"nm", "create_table", "create_table_args", "temp",
920
"dbnm", "columnlist", "conslist_opt", "select",
921
"column", "columnid", "type", "carglist",
922
"id", "ids", "typename", "signed",
923
"plus_num", "minus_num", "carg", "ccons",
924
"term", "onconf", "sortorder", "autoinc",
925
"expr", "idxlist_opt", "refargs", "defer_subclause",
926
"refarg", "refact", "init_deferred_pred_opt", "conslist",
927
"tcons", "idxlist", "defer_subclause_opt", "orconf",
928
"resolvetype", "raisetype", "fullname", "oneselect",
929
"multiselect_op", "distinct", "selcollist", "from",
930
"where_opt", "groupby_opt", "having_opt", "orderby_opt",
931
"limit_opt", "sclp", "as", "seltablist",
932
"stl_prefix", "joinop", "on_opt", "using_opt",
933
"seltablist_paren", "joinop2", "inscollist", "sortlist",
934
"sortitem", "collate", "exprlist", "setlist",
935
"insert_cmd", "inscollist_opt", "itemlist", "likeop",
936
"escape", "between_op", "in_op", "case_operand",
937
"case_exprlist", "case_else", "expritem", "uniqueflag",
938
"idxitem", "plus_opt", "number", "trigger_decl",
939
"trigger_cmd_list", "trigger_time", "trigger_event", "foreach_clause",
940
"when_clause", "trigger_cmd", "database_kw_opt", "key_opt",
941
"add_column_fullname", "kwcolumn_opt",
946
/* For tracing reduce actions, the names of all rules are required.
948
static const char *const yyRuleName[] = {
949
/* 0 */ "input ::= cmdlist",
950
/* 1 */ "cmdlist ::= cmdlist ecmd",
951
/* 2 */ "cmdlist ::= ecmd",
952
/* 3 */ "cmdx ::= cmd",
953
/* 4 */ "ecmd ::= SEMI",
954
/* 5 */ "ecmd ::= explain cmdx SEMI",
955
/* 6 */ "explain ::=",
956
/* 7 */ "explain ::= EXPLAIN",
957
/* 8 */ "cmd ::= BEGIN transtype trans_opt",
958
/* 9 */ "trans_opt ::=",
959
/* 10 */ "trans_opt ::= TRANSACTION",
960
/* 11 */ "trans_opt ::= TRANSACTION nm",
961
/* 12 */ "transtype ::=",
962
/* 13 */ "transtype ::= DEFERRED",
963
/* 14 */ "transtype ::= IMMEDIATE",
964
/* 15 */ "transtype ::= EXCLUSIVE",
965
/* 16 */ "cmd ::= COMMIT trans_opt",
966
/* 17 */ "cmd ::= END trans_opt",
967
/* 18 */ "cmd ::= ROLLBACK trans_opt",
968
/* 19 */ "cmd ::= create_table create_table_args",
969
/* 20 */ "create_table ::= CREATE temp TABLE nm dbnm",
970
/* 21 */ "temp ::= TEMP",
972
/* 23 */ "create_table_args ::= LP columnlist conslist_opt RP",
973
/* 24 */ "create_table_args ::= AS select",
974
/* 25 */ "columnlist ::= columnlist COMMA column",
975
/* 26 */ "columnlist ::= column",
976
/* 27 */ "column ::= columnid type carglist",
977
/* 28 */ "columnid ::= nm",
978
/* 29 */ "id ::= ID",
979
/* 30 */ "ids ::= ID",
980
/* 31 */ "ids ::= STRING",
981
/* 32 */ "nm ::= ID",
982
/* 33 */ "nm ::= STRING",
983
/* 34 */ "nm ::= JOIN_KW",
985
/* 36 */ "type ::= typename",
986
/* 37 */ "type ::= typename LP signed RP",
987
/* 38 */ "type ::= typename LP signed COMMA signed RP",
988
/* 39 */ "typename ::= ids",
989
/* 40 */ "typename ::= typename ids",
990
/* 41 */ "signed ::= plus_num",
991
/* 42 */ "signed ::= minus_num",
992
/* 43 */ "carglist ::= carglist carg",
993
/* 44 */ "carglist ::=",
994
/* 45 */ "carg ::= CONSTRAINT nm ccons",
995
/* 46 */ "carg ::= ccons",
996
/* 47 */ "carg ::= DEFAULT term",
997
/* 48 */ "carg ::= DEFAULT PLUS term",
998
/* 49 */ "carg ::= DEFAULT MINUS term",
999
/* 50 */ "carg ::= DEFAULT id",
1000
/* 51 */ "ccons ::= NULL onconf",
1001
/* 52 */ "ccons ::= NOT NULL onconf",
1002
/* 53 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
1003
/* 54 */ "ccons ::= UNIQUE onconf",
1004
/* 55 */ "ccons ::= CHECK LP expr RP onconf",
1005
/* 56 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
1006
/* 57 */ "ccons ::= defer_subclause",
1007
/* 58 */ "ccons ::= COLLATE id",
1008
/* 59 */ "autoinc ::=",
1009
/* 60 */ "autoinc ::= AUTOINCR",
1010
/* 61 */ "refargs ::=",
1011
/* 62 */ "refargs ::= refargs refarg",
1012
/* 63 */ "refarg ::= MATCH nm",
1013
/* 64 */ "refarg ::= ON DELETE refact",
1014
/* 65 */ "refarg ::= ON UPDATE refact",
1015
/* 66 */ "refarg ::= ON INSERT refact",
1016
/* 67 */ "refact ::= SET NULL",
1017
/* 68 */ "refact ::= SET DEFAULT",
1018
/* 69 */ "refact ::= CASCADE",
1019
/* 70 */ "refact ::= RESTRICT",
1020
/* 71 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
1021
/* 72 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
1022
/* 73 */ "init_deferred_pred_opt ::=",
1023
/* 74 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
1024
/* 75 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
1025
/* 76 */ "conslist_opt ::=",
1026
/* 77 */ "conslist_opt ::= COMMA conslist",
1027
/* 78 */ "conslist ::= conslist COMMA tcons",
1028
/* 79 */ "conslist ::= conslist tcons",
1029
/* 80 */ "conslist ::= tcons",
1030
/* 81 */ "tcons ::= CONSTRAINT nm",
1031
/* 82 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
1032
/* 83 */ "tcons ::= UNIQUE LP idxlist RP onconf",
1033
/* 84 */ "tcons ::= CHECK expr onconf",
1034
/* 85 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
1035
/* 86 */ "defer_subclause_opt ::=",
1036
/* 87 */ "defer_subclause_opt ::= defer_subclause",
1037
/* 88 */ "onconf ::=",
1038
/* 89 */ "onconf ::= ON CONFLICT resolvetype",
1039
/* 90 */ "orconf ::=",
1040
/* 91 */ "orconf ::= OR resolvetype",
1041
/* 92 */ "resolvetype ::= raisetype",
1042
/* 93 */ "resolvetype ::= IGNORE",
1043
/* 94 */ "resolvetype ::= REPLACE",
1044
/* 95 */ "cmd ::= DROP TABLE fullname",
1045
/* 96 */ "cmd ::= CREATE temp VIEW nm dbnm AS select",
1046
/* 97 */ "cmd ::= DROP VIEW fullname",
1047
/* 98 */ "cmd ::= select",
1048
/* 99 */ "select ::= oneselect",
1049
/* 100 */ "select ::= select multiselect_op oneselect",
1050
/* 101 */ "multiselect_op ::= UNION",
1051
/* 102 */ "multiselect_op ::= UNION ALL",
1052
/* 103 */ "multiselect_op ::= INTERSECT",
1053
/* 104 */ "multiselect_op ::= EXCEPT",
1054
/* 105 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
1055
/* 106 */ "distinct ::= DISTINCT",
1056
/* 107 */ "distinct ::= ALL",
1057
/* 108 */ "distinct ::=",
1058
/* 109 */ "sclp ::= selcollist COMMA",
1059
/* 110 */ "sclp ::=",
1060
/* 111 */ "selcollist ::= sclp expr as",
1061
/* 112 */ "selcollist ::= sclp STAR",
1062
/* 113 */ "selcollist ::= sclp nm DOT STAR",
1063
/* 114 */ "as ::= AS nm",
1064
/* 115 */ "as ::= ids",
1066
/* 117 */ "from ::=",
1067
/* 118 */ "from ::= FROM seltablist",
1068
/* 119 */ "stl_prefix ::= seltablist joinop",
1069
/* 120 */ "stl_prefix ::=",
1070
/* 121 */ "seltablist ::= stl_prefix nm dbnm as on_opt using_opt",
1071
/* 122 */ "seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt",
1072
/* 123 */ "seltablist_paren ::= select",
1073
/* 124 */ "seltablist_paren ::= seltablist",
1074
/* 125 */ "dbnm ::=",
1075
/* 126 */ "dbnm ::= DOT nm",
1076
/* 127 */ "fullname ::= nm dbnm",
1077
/* 128 */ "joinop ::= COMMA",
1078
/* 129 */ "joinop ::= JOIN",
1079
/* 130 */ "joinop ::= JOIN_KW JOIN",
1080
/* 131 */ "joinop ::= JOIN_KW nm JOIN",
1081
/* 132 */ "joinop ::= JOIN_KW nm nm JOIN",
1082
/* 133 */ "on_opt ::= ON expr",
1083
/* 134 */ "on_opt ::=",
1084
/* 135 */ "using_opt ::= USING LP inscollist RP",
1085
/* 136 */ "using_opt ::=",
1086
/* 137 */ "orderby_opt ::=",
1087
/* 138 */ "orderby_opt ::= ORDER BY sortlist",
1088
/* 139 */ "sortlist ::= sortlist COMMA sortitem collate sortorder",
1089
/* 140 */ "sortlist ::= sortitem collate sortorder",
1090
/* 141 */ "sortitem ::= expr",
1091
/* 142 */ "sortorder ::= ASC",
1092
/* 143 */ "sortorder ::= DESC",
1093
/* 144 */ "sortorder ::=",
1094
/* 145 */ "collate ::=",
1095
/* 146 */ "collate ::= COLLATE id",
1096
/* 147 */ "groupby_opt ::=",
1097
/* 148 */ "groupby_opt ::= GROUP BY exprlist",
1098
/* 149 */ "having_opt ::=",
1099
/* 150 */ "having_opt ::= HAVING expr",
1100
/* 151 */ "limit_opt ::=",
1101
/* 152 */ "limit_opt ::= LIMIT expr",
1102
/* 153 */ "limit_opt ::= LIMIT expr OFFSET expr",
1103
/* 154 */ "limit_opt ::= LIMIT expr COMMA expr",
1104
/* 155 */ "cmd ::= DELETE FROM fullname where_opt",
1105
/* 156 */ "where_opt ::=",
1106
/* 157 */ "where_opt ::= WHERE expr",
1107
/* 158 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
1108
/* 159 */ "setlist ::= setlist COMMA nm EQ expr",
1109
/* 160 */ "setlist ::= nm EQ expr",
1110
/* 161 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
1111
/* 162 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
1112
/* 163 */ "insert_cmd ::= INSERT orconf",
1113
/* 164 */ "insert_cmd ::= REPLACE",
1114
/* 165 */ "itemlist ::= itemlist COMMA expr",
1115
/* 166 */ "itemlist ::= expr",
1116
/* 167 */ "inscollist_opt ::=",
1117
/* 168 */ "inscollist_opt ::= LP inscollist RP",
1118
/* 169 */ "inscollist ::= inscollist COMMA nm",
1119
/* 170 */ "inscollist ::= nm",
1120
/* 171 */ "expr ::= term",
1121
/* 172 */ "expr ::= LP expr RP",
1122
/* 173 */ "term ::= NULL",
1123
/* 174 */ "expr ::= ID",
1124
/* 175 */ "expr ::= JOIN_KW",
1125
/* 176 */ "expr ::= nm DOT nm",
1126
/* 177 */ "expr ::= nm DOT nm DOT nm",
1127
/* 178 */ "term ::= INTEGER",
1128
/* 179 */ "term ::= FLOAT",
1129
/* 180 */ "term ::= STRING",
1130
/* 181 */ "term ::= BLOB",
1131
/* 182 */ "expr ::= REGISTER",
1132
/* 183 */ "expr ::= VARIABLE",
1133
/* 184 */ "expr ::= ID LP exprlist RP",
1134
/* 185 */ "expr ::= ID LP STAR RP",
1135
/* 186 */ "term ::= CTIME",
1136
/* 187 */ "term ::= CDATE",
1137
/* 188 */ "term ::= CTIMESTAMP",
1138
/* 189 */ "expr ::= expr AND expr",
1139
/* 190 */ "expr ::= expr OR expr",
1140
/* 191 */ "expr ::= expr LT expr",
1141
/* 192 */ "expr ::= expr GT expr",
1142
/* 193 */ "expr ::= expr LE expr",
1143
/* 194 */ "expr ::= expr GE expr",
1144
/* 195 */ "expr ::= expr NE expr",
1145
/* 196 */ "expr ::= expr EQ expr",
1146
/* 197 */ "expr ::= expr BITAND expr",
1147
/* 198 */ "expr ::= expr BITOR expr",
1148
/* 199 */ "expr ::= expr LSHIFT expr",
1149
/* 200 */ "expr ::= expr RSHIFT expr",
1150
/* 201 */ "expr ::= expr PLUS expr",
1151
/* 202 */ "expr ::= expr MINUS expr",
1152
/* 203 */ "expr ::= expr STAR expr",
1153
/* 204 */ "expr ::= expr SLASH expr",
1154
/* 205 */ "expr ::= expr REM expr",
1155
/* 206 */ "expr ::= expr CONCAT expr",
1156
/* 207 */ "likeop ::= LIKE",
1157
/* 208 */ "likeop ::= GLOB",
1158
/* 209 */ "likeop ::= NOT LIKE",
1159
/* 210 */ "likeop ::= NOT GLOB",
1160
/* 211 */ "escape ::= ESCAPE expr",
1161
/* 212 */ "escape ::=",
1162
/* 213 */ "expr ::= expr likeop expr escape",
1163
/* 214 */ "expr ::= expr ISNULL",
1164
/* 215 */ "expr ::= expr IS NULL",
1165
/* 216 */ "expr ::= expr NOTNULL",
1166
/* 217 */ "expr ::= expr NOT NULL",
1167
/* 218 */ "expr ::= expr IS NOT NULL",
1168
/* 219 */ "expr ::= NOT expr",
1169
/* 220 */ "expr ::= BITNOT expr",
1170
/* 221 */ "expr ::= MINUS expr",
1171
/* 222 */ "expr ::= PLUS expr",
1172
/* 223 */ "between_op ::= BETWEEN",
1173
/* 224 */ "between_op ::= NOT BETWEEN",
1174
/* 225 */ "expr ::= expr between_op expr AND expr",
1175
/* 226 */ "in_op ::= IN",
1176
/* 227 */ "in_op ::= NOT IN",
1177
/* 228 */ "expr ::= expr in_op LP exprlist RP",
1178
/* 229 */ "expr ::= LP select RP",
1179
/* 230 */ "expr ::= expr in_op LP select RP",
1180
/* 231 */ "expr ::= expr in_op nm dbnm",
1181
/* 232 */ "expr ::= EXISTS LP select RP",
1182
/* 233 */ "expr ::= CASE case_operand case_exprlist case_else END",
1183
/* 234 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1184
/* 235 */ "case_exprlist ::= WHEN expr THEN expr",
1185
/* 236 */ "case_else ::= ELSE expr",
1186
/* 237 */ "case_else ::=",
1187
/* 238 */ "case_operand ::= expr",
1188
/* 239 */ "case_operand ::=",
1189
/* 240 */ "exprlist ::= exprlist COMMA expritem",
1190
/* 241 */ "exprlist ::= expritem",
1191
/* 242 */ "expritem ::= expr",
1192
/* 243 */ "expritem ::=",
1193
/* 244 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON nm LP idxlist RP onconf",
1194
/* 245 */ "uniqueflag ::= UNIQUE",
1195
/* 246 */ "uniqueflag ::=",
1196
/* 247 */ "idxlist_opt ::=",
1197
/* 248 */ "idxlist_opt ::= LP idxlist RP",
1198
/* 249 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
1199
/* 250 */ "idxlist ::= idxitem collate sortorder",
1200
/* 251 */ "idxitem ::= nm",
1201
/* 252 */ "cmd ::= DROP INDEX fullname",
1202
/* 253 */ "cmd ::= VACUUM",
1203
/* 254 */ "cmd ::= VACUUM nm",
1204
/* 255 */ "cmd ::= PRAGMA nm dbnm EQ nm",
1205
/* 256 */ "cmd ::= PRAGMA nm dbnm EQ ON",
1206
/* 257 */ "cmd ::= PRAGMA nm dbnm EQ plus_num",
1207
/* 258 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
1208
/* 259 */ "cmd ::= PRAGMA nm dbnm LP nm RP",
1209
/* 260 */ "cmd ::= PRAGMA nm dbnm",
1210
/* 261 */ "plus_num ::= plus_opt number",
1211
/* 262 */ "minus_num ::= MINUS number",
1212
/* 263 */ "number ::= INTEGER",
1213
/* 264 */ "number ::= FLOAT",
1214
/* 265 */ "plus_opt ::= PLUS",
1215
/* 266 */ "plus_opt ::=",
1216
/* 267 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
1217
/* 268 */ "trigger_decl ::= temp TRIGGER nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
1218
/* 269 */ "trigger_time ::= BEFORE",
1219
/* 270 */ "trigger_time ::= AFTER",
1220
/* 271 */ "trigger_time ::= INSTEAD OF",
1221
/* 272 */ "trigger_time ::=",
1222
/* 273 */ "trigger_event ::= DELETE",
1223
/* 274 */ "trigger_event ::= INSERT",
1224
/* 275 */ "trigger_event ::= UPDATE",
1225
/* 276 */ "trigger_event ::= UPDATE OF inscollist",
1226
/* 277 */ "foreach_clause ::=",
1227
/* 278 */ "foreach_clause ::= FOR EACH ROW",
1228
/* 279 */ "foreach_clause ::= FOR EACH STATEMENT",
1229
/* 280 */ "when_clause ::=",
1230
/* 281 */ "when_clause ::= WHEN expr",
1231
/* 282 */ "trigger_cmd_list ::= trigger_cmd SEMI trigger_cmd_list",
1232
/* 283 */ "trigger_cmd_list ::=",
1233
/* 284 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
1234
/* 285 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
1235
/* 286 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
1236
/* 287 */ "trigger_cmd ::= DELETE FROM nm where_opt",
1237
/* 288 */ "trigger_cmd ::= select",
1238
/* 289 */ "expr ::= RAISE LP IGNORE RP",
1239
/* 290 */ "expr ::= RAISE LP raisetype COMMA nm RP",
1240
/* 291 */ "raisetype ::= ROLLBACK",
1241
/* 292 */ "raisetype ::= ABORT",
1242
/* 293 */ "raisetype ::= FAIL",
1243
/* 294 */ "cmd ::= DROP TRIGGER fullname",
1244
/* 295 */ "cmd ::= ATTACH database_kw_opt ids AS nm key_opt",
1245
/* 296 */ "key_opt ::=",
1246
/* 297 */ "key_opt ::= KEY ids",
1247
/* 298 */ "key_opt ::= KEY BLOB",
1248
/* 299 */ "database_kw_opt ::= DATABASE",
1249
/* 300 */ "database_kw_opt ::=",
1250
/* 301 */ "cmd ::= DETACH database_kw_opt nm",
1251
/* 302 */ "cmd ::= REINDEX",
1252
/* 303 */ "cmd ::= REINDEX nm dbnm",
1253
/* 304 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
1254
/* 305 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
1255
/* 306 */ "add_column_fullname ::= fullname",
1256
/* 307 */ "kwcolumn_opt ::=",
1257
/* 308 */ "kwcolumn_opt ::= COLUMNKW",
1262
** This function returns the symbolic name associated with a token
1265
const char *sqlite3ParserTokenName(int tokenType){
1267
if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
1268
return yyTokenName[tokenType];
1278
** This function allocates a new parser.
1279
** The only argument is a pointer to a function which works like
1283
** A pointer to the function used to allocate memory.
1286
** A pointer to a parser. This pointer is used in subsequent calls
1287
** to sqlite3Parser and sqlite3ParserFree.
1289
void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){
1291
pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1293
pParser->yyidx = -1;
1298
/* The following function deletes the value associated with a
1299
** symbol. The symbol can be either a terminal or nonterminal.
1300
** "yymajor" is the symbol code, and "yypminor" is a pointer to
1303
static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
1305
/* Here is inserted the actions which take place when a
1306
** terminal or non-terminal is destroyed. This can happen
1307
** when the symbol is popped from the stack during a
1308
** reduce or during error processing or when a parser is
1309
** being destroyed before it is finished parsing.
1311
** Note: during a reduce, the only symbols destroyed are those
1312
** which appear on the RHS of the rule, but which are not used
1313
** inside the C code.
1319
{sqlite3SelectDelete((yypminor->yy91));}
1320
#line 1322 "parse.c"
1330
{sqlite3ExprDelete((yypminor->yy418));}
1331
#line 1333 "parse.c"
1345
{sqlite3ExprListDelete((yypminor->yy322));}
1346
#line 1348 "parse.c"
1353
{sqlite3SrcListDelete((yypminor->yy439));}
1354
#line 1356 "parse.c"
1359
sqlite3ExprDelete((yypminor->yy388).pLimit);
1360
sqlite3ExprDelete((yypminor->yy388).pOffset);
1362
#line 1364 "parse.c"
1368
{sqlite3IdListDelete((yypminor->yy232));}
1369
#line 1371 "parse.c"
1374
{sqlite3DeleteTriggerStep((yypminor->yy451));}
1375
#line 1377 "parse.c"
1379
{sqlite3IdListDelete((yypminor->yy378).b);}
1380
#line 1382 "parse.c"
1382
default: break; /* If no destructor action specified: do nothing */
1387
** Pop the parser's stack once.
1389
** If there is a destructor routine associated with the token which
1390
** is popped from the stack, then call it.
1392
** Return the major token number for the symbol popped.
1394
static int yy_pop_parser_stack(yyParser *pParser){
1396
yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
1398
if( pParser->yyidx<0 ) return 0;
1400
if( yyTraceFILE && pParser->yyidx>=0 ){
1401
fprintf(yyTraceFILE,"%sPopping %s\n",
1403
yyTokenName[yytos->major]);
1406
yymajor = yytos->major;
1407
yy_destructor( yymajor, &yytos->minor);
1413
** Deallocate and destroy a parser. Destructors are all called for
1414
** all stack elements before shutting the parser down.
1418
** <li> A pointer to the parser. This should be a pointer
1419
** obtained from sqlite3ParserAlloc.
1420
** <li> A pointer to a function used to reclaim memory obtained
1424
void sqlite3ParserFree(
1425
void *p, /* The parser to be deleted */
1426
void (*freeProc)(void*) /* Function used to reclaim memory */
1428
yyParser *pParser = (yyParser*)p;
1429
if( pParser==0 ) return;
1430
while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
1431
(*freeProc)((void*)pParser);
1435
** Find the appropriate action for a parser given the terminal
1436
** look-ahead token iLookAhead.
1438
** If the look-ahead token is YYNOCODE, then check to see if the action is
1439
** independent of the look-ahead. If it is, return the action, otherwise
1440
** return YY_NO_ACTION.
1442
static int yy_find_shift_action(
1443
yyParser *pParser, /* The parser */
1444
int iLookAhead /* The look-ahead token */
1447
int stateno = pParser->yystack[pParser->yyidx].stateno;
1449
/* if( pParser->yyidx<0 ) return YY_NO_ACTION; */
1450
i = yy_shift_ofst[stateno];
1451
if( i==YY_SHIFT_USE_DFLT ){
1452
return yy_default[stateno];
1454
if( iLookAhead==YYNOCODE ){
1455
return YY_NO_ACTION;
1458
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1460
int iFallback; /* Fallback token */
1461
if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
1462
&& (iFallback = yyFallback[iLookAhead])!=0 ){
1465
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
1466
yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
1469
return yy_find_shift_action(pParser, iFallback);
1472
return yy_default[stateno];
1474
return yy_action[i];
1479
** Find the appropriate action for a parser given the non-terminal
1480
** look-ahead token iLookAhead.
1482
** If the look-ahead token is YYNOCODE, then check to see if the action is
1483
** independent of the look-ahead. If it is, return the action, otherwise
1484
** return YY_NO_ACTION.
1486
static int yy_find_reduce_action(
1487
int stateno, /* Current state number */
1488
int iLookAhead /* The look-ahead token */
1491
/* int stateno = pParser->yystack[pParser->yyidx].stateno; */
1493
i = yy_reduce_ofst[stateno];
1494
if( i==YY_REDUCE_USE_DFLT ){
1495
return yy_default[stateno];
1497
if( iLookAhead==YYNOCODE ){
1498
return YY_NO_ACTION;
1501
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1502
return yy_default[stateno];
1504
return yy_action[i];
1509
** Perform a shift action.
1511
static void yy_shift(
1512
yyParser *yypParser, /* The parser to be shifted */
1513
int yyNewState, /* The new state to shift in */
1514
int yyMajor, /* The major token to shift in */
1515
YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */
1517
yyStackEntry *yytos;
1519
if( yypParser->yyidx>=YYSTACKDEPTH ){
1520
sqlite3ParserARG_FETCH;
1524
fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1527
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1528
/* Here code is inserted which will execute if the parser
1529
** stack every overflows */
1530
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */
1533
yytos = &yypParser->yystack[yypParser->yyidx];
1534
yytos->stateno = yyNewState;
1535
yytos->major = yyMajor;
1536
yytos->minor = *yypMinor;
1538
if( yyTraceFILE && yypParser->yyidx>0 ){
1540
fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
1541
fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
1542
for(i=1; i<=yypParser->yyidx; i++)
1543
fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
1544
fprintf(yyTraceFILE,"\n");
1549
/* The following table contains information about every rule that
1550
** is used during the reduce.
1552
static const struct {
1553
YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
1554
unsigned char nrhs; /* Number of right-hand side symbols in the rule */
1867
static void yy_accept(yyParser*); /* Forward Declaration */
1870
** Perform a reduce action and the shift that must immediately
1871
** follow the reduce.
1873
static void yy_reduce(
1874
yyParser *yypParser, /* The parser */
1875
int yyruleno /* Number of the rule by which to reduce */
1877
int yygoto; /* The next state */
1878
int yyact; /* The next action */
1879
YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
1880
yyStackEntry *yymsp; /* The top of the parser's stack */
1881
int yysize; /* Amount to pop the stack */
1882
sqlite3ParserARG_FETCH;
1883
yymsp = &yypParser->yystack[yypParser->yyidx];
1885
if( yyTraceFILE && yyruleno>=0
1886
&& yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
1887
fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1888
yyRuleName[yyruleno]);
1893
/* Silence complaints from purify about yygotominor being uninitialized
1894
** in some cases when it is copied into the stack after the following
1895
** switch. yygotominor is uninitialized when a rule reduces that does
1896
** not set the value of its left-hand side nonterminal. Leaving the
1897
** value of the nonterminal uninitialized is utterly harmless as long
1898
** as the value is never used. So really the only thing this code
1899
** accomplishes is to quieten purify.
1901
memset(&yygotominor, 0, sizeof(yygotominor));
1905
/* Beginning here are the reduction cases. A typical example
1908
** #line <lineno> <grammarfile>
1909
** { ... } // User supplied code
1910
** #line <lineno> <thisfile>
1915
{ sqlite3FinishCoding(pParse); }
1916
#line 1918 "parse.c"
1920
{ sqlite3BeginParse(pParse, 0); }
1921
#line 1923 "parse.c"
1925
{ sqlite3BeginParse(pParse, 1); }
1926
#line 1928 "parse.c"
1930
{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy328);}
1931
#line 1933 "parse.c"
1935
{yygotominor.yy328 = TK_DEFERRED;}
1936
#line 1938 "parse.c"
1945
{yygotominor.yy328 = yymsp[0].major;}
1946
#line 1948 "parse.c"
1951
{sqlite3CommitTransaction(pParse);}
1952
#line 1954 "parse.c"
1956
{sqlite3RollbackTransaction(pParse);}
1957
#line 1959 "parse.c"
1962
sqlite3StartTable(pParse,&yymsp[-4].minor.yy0,&yymsp[-1].minor.yy430,&yymsp[0].minor.yy430,yymsp[-3].minor.yy328,0);
1964
#line 1966 "parse.c"
1973
{yygotominor.yy328 = 1;}
1974
#line 1976 "parse.c"
1986
{yygotominor.yy328 = 0;}
1987
#line 1989 "parse.c"
1992
sqlite3EndTable(pParse,&yymsp[-1].minor.yy430,&yymsp[0].minor.yy0,0);
1994
#line 1996 "parse.c"
1999
sqlite3EndTable(pParse,0,0,yymsp[0].minor.yy91);
2000
sqlite3SelectDelete(yymsp[0].minor.yy91);
2002
#line 2004 "parse.c"
2007
yygotominor.yy430.z = yymsp[-2].minor.yy430.z;
2008
yygotominor.yy430.n = (pParse->sLastToken.z-yymsp[-2].minor.yy430.z) + pParse->sLastToken.n;
2010
#line 2012 "parse.c"
2015
sqlite3AddColumn(pParse,&yymsp[0].minor.yy430);
2016
yygotominor.yy430 = yymsp[0].minor.yy430;
2018
#line 2020 "parse.c"
2029
{yygotominor.yy430 = yymsp[0].minor.yy0;}
2030
#line 2032 "parse.c"
2034
{sqlite3AddColumnType(pParse,&yymsp[0].minor.yy430,&yymsp[0].minor.yy430);}
2035
#line 2037 "parse.c"
2039
{sqlite3AddColumnType(pParse,&yymsp[-3].minor.yy430,&yymsp[0].minor.yy0);}
2040
#line 2042 "parse.c"
2044
{sqlite3AddColumnType(pParse,&yymsp[-5].minor.yy430,&yymsp[0].minor.yy0);}
2045
#line 2047 "parse.c"
2056
{yygotominor.yy430 = yymsp[0].minor.yy430;}
2057
#line 2059 "parse.c"
2061
{yygotominor.yy430.z=yymsp[-1].minor.yy430.z; yygotominor.yy430.n=yymsp[0].minor.yy430.n+(yymsp[0].minor.yy430.z-yymsp[-1].minor.yy430.z);}
2062
#line 2064 "parse.c"
2066
{ yygotominor.yy328 = atoi(yymsp[0].minor.yy430.z); }
2067
#line 2069 "parse.c"
2071
{ yygotominor.yy328 = -atoi(yymsp[0].minor.yy430.z); }
2072
#line 2074 "parse.c"
2077
{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy418);}
2078
#line 2080 "parse.c"
2083
Expr *p = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy418, 0, 0);
2084
sqlite3AddDefaultValue(pParse,p);
2086
#line 2088 "parse.c"
2091
Expr *p = sqlite3Expr(TK_STRING, 0, 0, &yymsp[0].minor.yy430);
2092
sqlite3AddDefaultValue(pParse,p);
2094
#line 2096 "parse.c"
2098
{sqlite3AddNotNull(pParse, yymsp[0].minor.yy328);}
2099
#line 2101 "parse.c"
2103
{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy328,yymsp[0].minor.yy328);}
2104
#line 2106 "parse.c"
2108
{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy328,0,0);}
2109
#line 2111 "parse.c"
2113
{sqlite3ExprDelete(yymsp[-2].minor.yy418);}
2114
#line 2116 "parse.c"
2118
{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy430,yymsp[-1].minor.yy322,yymsp[0].minor.yy328);}
2119
#line 2121 "parse.c"
2123
{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy328);}
2124
#line 2126 "parse.c"
2128
{sqlite3AddCollateType(pParse, yymsp[0].minor.yy430.z, yymsp[0].minor.yy430.n);}
2129
#line 2131 "parse.c"
2133
{ yygotominor.yy328 = OE_Restrict * 0x010101; }
2134
#line 2136 "parse.c"
2138
{ yygotominor.yy328 = (yymsp[-1].minor.yy328 & yymsp[0].minor.yy319.mask) | yymsp[0].minor.yy319.value; }
2139
#line 2141 "parse.c"
2143
{ yygotominor.yy319.value = 0; yygotominor.yy319.mask = 0x000000; }
2144
#line 2146 "parse.c"
2148
{ yygotominor.yy319.value = yymsp[0].minor.yy328; yygotominor.yy319.mask = 0x0000ff; }
2149
#line 2151 "parse.c"
2153
{ yygotominor.yy319.value = yymsp[0].minor.yy328<<8; yygotominor.yy319.mask = 0x00ff00; }
2154
#line 2156 "parse.c"
2158
{ yygotominor.yy319.value = yymsp[0].minor.yy328<<16; yygotominor.yy319.mask = 0xff0000; }
2159
#line 2161 "parse.c"
2163
{ yygotominor.yy328 = OE_SetNull; }
2164
#line 2166 "parse.c"
2168
{ yygotominor.yy328 = OE_SetDflt; }
2169
#line 2171 "parse.c"
2173
{ yygotominor.yy328 = OE_Cascade; }
2174
#line 2176 "parse.c"
2178
{ yygotominor.yy328 = OE_Restrict; }
2179
#line 2181 "parse.c"
2189
{yygotominor.yy328 = yymsp[0].minor.yy328;}
2190
#line 2192 "parse.c"
2194
{yygotominor.yy430.n = 0; yygotominor.yy430.z = 0;}
2195
#line 2197 "parse.c"
2199
{yygotominor.yy430 = yymsp[-1].minor.yy0;}
2200
#line 2202 "parse.c"
2204
{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy322,yymsp[0].minor.yy328,yymsp[-2].minor.yy328);}
2205
#line 2207 "parse.c"
2209
{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy322,yymsp[0].minor.yy328,0,0);}
2210
#line 2212 "parse.c"
2215
sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy322, &yymsp[-3].minor.yy430, yymsp[-2].minor.yy322, yymsp[-1].minor.yy328);
2216
sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy328);
2218
#line 2220 "parse.c"
2223
{yygotominor.yy328 = OE_Default;}
2224
#line 2226 "parse.c"
2228
{yygotominor.yy328 = OE_Ignore;}
2229
#line 2231 "parse.c"
2234
{yygotominor.yy328 = OE_Replace;}
2235
#line 2237 "parse.c"
2240
sqlite3DropTable(pParse, yymsp[0].minor.yy439, 0);
2242
#line 2244 "parse.c"
2247
sqlite3CreateView(pParse, &yymsp[-6].minor.yy0, &yymsp[-3].minor.yy430, &yymsp[-2].minor.yy430, yymsp[0].minor.yy91, yymsp[-5].minor.yy328);
2249
#line 2251 "parse.c"
2254
sqlite3DropTable(pParse, yymsp[0].minor.yy439, 1);
2256
#line 2258 "parse.c"
2261
sqlite3Select(pParse, yymsp[0].minor.yy91, SRT_Callback, 0, 0, 0, 0, 0);
2262
sqlite3SelectDelete(yymsp[0].minor.yy91);
2264
#line 2266 "parse.c"
2269
{yygotominor.yy91 = yymsp[0].minor.yy91;}
2270
#line 2272 "parse.c"
2275
if( yymsp[0].minor.yy91 ){
2276
yymsp[0].minor.yy91->op = yymsp[-1].minor.yy328;
2277
yymsp[0].minor.yy91->pPrior = yymsp[-2].minor.yy91;
2279
yygotominor.yy91 = yymsp[0].minor.yy91;
2281
#line 2283 "parse.c"
2285
{yygotominor.yy328 = TK_ALL;}
2286
#line 2288 "parse.c"
2291
yygotominor.yy91 = sqlite3SelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy439,yymsp[-4].minor.yy418,yymsp[-3].minor.yy322,yymsp[-2].minor.yy418,yymsp[-1].minor.yy322,yymsp[-7].minor.yy328,yymsp[0].minor.yy388.pLimit,yymsp[0].minor.yy388.pOffset);
2293
#line 2295 "parse.c"
2298
{yygotominor.yy322 = yymsp[-1].minor.yy322;}
2299
#line 2301 "parse.c"
2306
{yygotominor.yy322 = 0;}
2307
#line 2309 "parse.c"
2312
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy418,yymsp[0].minor.yy430.n?&yymsp[0].minor.yy430:0);
2314
#line 2316 "parse.c"
2319
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-1].minor.yy322, sqlite3Expr(TK_ALL, 0, 0, 0), 0);
2321
#line 2323 "parse.c"
2326
Expr *pRight = sqlite3Expr(TK_ALL, 0, 0, 0);
2327
Expr *pLeft = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy430);
2328
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-3].minor.yy322, sqlite3Expr(TK_DOT, pLeft, pRight, 0), 0);
2330
#line 2332 "parse.c"
2334
{yygotominor.yy430.n = 0;}
2335
#line 2337 "parse.c"
2339
{yygotominor.yy439 = sqliteMalloc(sizeof(*yygotominor.yy439));}
2340
#line 2342 "parse.c"
2344
{yygotominor.yy439 = yymsp[0].minor.yy439;}
2345
#line 2347 "parse.c"
2350
yygotominor.yy439 = yymsp[-1].minor.yy439;
2351
if( yygotominor.yy439 && yygotominor.yy439->nSrc>0 ) yygotominor.yy439->a[yygotominor.yy439->nSrc-1].jointype = yymsp[0].minor.yy328;
2353
#line 2355 "parse.c"
2357
{yygotominor.yy439 = 0;}
2358
#line 2360 "parse.c"
2363
yygotominor.yy439 = sqlite3SrcListAppend(yymsp[-5].minor.yy439,&yymsp[-4].minor.yy430,&yymsp[-3].minor.yy430);
2364
if( yymsp[-2].minor.yy430.n ) sqlite3SrcListAddAlias(yygotominor.yy439,&yymsp[-2].minor.yy430);
2365
if( yymsp[-1].minor.yy418 ){
2366
if( yygotominor.yy439 && yygotominor.yy439->nSrc>1 ){ yygotominor.yy439->a[yygotominor.yy439->nSrc-2].pOn = yymsp[-1].minor.yy418; }
2367
else { sqlite3ExprDelete(yymsp[-1].minor.yy418); }
2369
if( yymsp[0].minor.yy232 ){
2370
if( yygotominor.yy439 && yygotominor.yy439->nSrc>1 ){ yygotominor.yy439->a[yygotominor.yy439->nSrc-2].pUsing = yymsp[0].minor.yy232; }
2371
else { sqlite3IdListDelete(yymsp[0].minor.yy232); }
2374
#line 2376 "parse.c"
2379
yygotominor.yy439 = sqlite3SrcListAppend(yymsp[-6].minor.yy439,0,0);
2380
yygotominor.yy439->a[yygotominor.yy439->nSrc-1].pSelect = yymsp[-4].minor.yy91;
2381
if( yymsp[-2].minor.yy430.n ) sqlite3SrcListAddAlias(yygotominor.yy439,&yymsp[-2].minor.yy430);
2382
if( yymsp[-1].minor.yy418 ){
2383
if( yygotominor.yy439 && yygotominor.yy439->nSrc>1 ){ yygotominor.yy439->a[yygotominor.yy439->nSrc-2].pOn = yymsp[-1].minor.yy418; }
2384
else { sqlite3ExprDelete(yymsp[-1].minor.yy418); }
2386
if( yymsp[0].minor.yy232 ){
2387
if( yygotominor.yy439 && yygotominor.yy439->nSrc>1 ){ yygotominor.yy439->a[yygotominor.yy439->nSrc-2].pUsing = yymsp[0].minor.yy232; }
2388
else { sqlite3IdListDelete(yymsp[0].minor.yy232); }
2391
#line 2393 "parse.c"
2396
yygotominor.yy91 = sqlite3SelectNew(0,yymsp[0].minor.yy439,0,0,0,0,0,0,0);
2398
#line 2400 "parse.c"
2402
{yygotominor.yy430.z=0; yygotominor.yy430.n=0;}
2403
#line 2405 "parse.c"
2407
{yygotominor.yy439 = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy430,&yymsp[0].minor.yy430);}
2408
#line 2410 "parse.c"
2413
{ yygotominor.yy328 = JT_INNER; }
2414
#line 2416 "parse.c"
2418
{ yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
2419
#line 2421 "parse.c"
2423
{ yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy430,0); }
2424
#line 2426 "parse.c"
2428
{ yygotominor.yy328 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy430,&yymsp[-1].minor.yy430); }
2429
#line 2431 "parse.c"
2441
{yygotominor.yy418 = yymsp[0].minor.yy418;}
2442
#line 2444 "parse.c"
2452
{yygotominor.yy418 = 0;}
2453
#line 2455 "parse.c"
2458
{yygotominor.yy232 = yymsp[-1].minor.yy232;}
2459
#line 2461 "parse.c"
2464
{yygotominor.yy232 = 0;}
2465
#line 2467 "parse.c"
2470
{yygotominor.yy322 = yymsp[0].minor.yy322;}
2471
#line 2473 "parse.c"
2476
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy418,yymsp[-1].minor.yy430.n>0?&yymsp[-1].minor.yy430:0);
2477
if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[0].minor.yy328;
2479
#line 2481 "parse.c"
2484
yygotominor.yy322 = sqlite3ExprListAppend(0,yymsp[-2].minor.yy418,yymsp[-1].minor.yy430.n>0?&yymsp[-1].minor.yy430:0);
2485
if( yygotominor.yy322 && yygotominor.yy322->a ) yygotominor.yy322->a[0].sortOrder = yymsp[0].minor.yy328;
2487
#line 2489 "parse.c"
2492
{yygotominor.yy328 = SQLITE_SO_ASC;}
2493
#line 2495 "parse.c"
2497
{yygotominor.yy328 = SQLITE_SO_DESC;}
2498
#line 2500 "parse.c"
2502
{yygotominor.yy430.z = 0; yygotominor.yy430.n = 0;}
2503
#line 2505 "parse.c"
2507
{yygotominor.yy388.pLimit = 0; yygotominor.yy388.pOffset = 0;}
2508
#line 2510 "parse.c"
2512
{yygotominor.yy388.pLimit = yymsp[0].minor.yy418; yygotominor.yy388.pOffset = 0;}
2513
#line 2515 "parse.c"
2517
{yygotominor.yy388.pLimit = yymsp[-2].minor.yy418; yygotominor.yy388.pOffset = yymsp[0].minor.yy418;}
2518
#line 2520 "parse.c"
2522
{yygotominor.yy388.pOffset = yymsp[-2].minor.yy418; yygotominor.yy388.pLimit = yymsp[0].minor.yy418;}
2523
#line 2525 "parse.c"
2527
{sqlite3DeleteFrom(pParse,yymsp[-1].minor.yy439,yymsp[0].minor.yy418);}
2528
#line 2530 "parse.c"
2532
{sqlite3Update(pParse,yymsp[-3].minor.yy439,yymsp[-1].minor.yy322,yymsp[0].minor.yy418,yymsp[-4].minor.yy328);}
2533
#line 2535 "parse.c"
2537
{yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy418,&yymsp[-2].minor.yy430);}
2538
#line 2540 "parse.c"
2542
{yygotominor.yy322 = sqlite3ExprListAppend(0,yymsp[0].minor.yy418,&yymsp[-2].minor.yy430);}
2543
#line 2545 "parse.c"
2547
{sqlite3Insert(pParse, yymsp[-5].minor.yy439, yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy232, yymsp[-7].minor.yy328);}
2548
#line 2550 "parse.c"
2552
{sqlite3Insert(pParse, yymsp[-2].minor.yy439, 0, yymsp[0].minor.yy91, yymsp[-1].minor.yy232, yymsp[-4].minor.yy328);}
2553
#line 2555 "parse.c"
2558
{yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy418,0);}
2559
#line 2561 "parse.c"
2564
{yygotominor.yy322 = sqlite3ExprListAppend(0,yymsp[0].minor.yy418,0);}
2565
#line 2567 "parse.c"
2569
{yygotominor.yy232 = sqlite3IdListAppend(yymsp[-2].minor.yy232,&yymsp[0].minor.yy430);}
2570
#line 2572 "parse.c"
2574
{yygotominor.yy232 = sqlite3IdListAppend(0,&yymsp[0].minor.yy430);}
2575
#line 2577 "parse.c"
2579
{yygotominor.yy418 = yymsp[-1].minor.yy418; sqlite3ExprSpan(yygotominor.yy418,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
2580
#line 2582 "parse.c"
2588
{yygotominor.yy418 = sqlite3Expr(yymsp[0].major, 0, 0, &yymsp[0].minor.yy0);}
2589
#line 2591 "parse.c"
2594
{yygotominor.yy418 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
2595
#line 2597 "parse.c"
2600
Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy430);
2601
Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy430);
2602
yygotominor.yy418 = sqlite3Expr(TK_DOT, temp1, temp2, 0);
2604
#line 2606 "parse.c"
2609
Expr *temp1 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-4].minor.yy430);
2610
Expr *temp2 = sqlite3Expr(TK_ID, 0, 0, &yymsp[-2].minor.yy430);
2611
Expr *temp3 = sqlite3Expr(TK_ID, 0, 0, &yymsp[0].minor.yy430);
2612
Expr *temp4 = sqlite3Expr(TK_DOT, temp2, temp3, 0);
2613
yygotominor.yy418 = sqlite3Expr(TK_DOT, temp1, temp4, 0);
2615
#line 2617 "parse.c"
2619
{yygotominor.yy418 = sqlite3RegisterExpr(pParse, &yymsp[0].minor.yy0);}
2620
#line 2622 "parse.c"
2625
Token *pToken = &yymsp[0].minor.yy0;
2626
Expr *pExpr = yygotominor.yy418 = sqlite3Expr(TK_VARIABLE, 0, 0, pToken);
2627
sqlite3ExprAssignVarNumber(pParse, pExpr);
2629
#line 2631 "parse.c"
2634
yygotominor.yy418 = sqlite3ExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0);
2635
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2637
#line 2639 "parse.c"
2642
yygotominor.yy418 = sqlite3ExprFunction(0, &yymsp[-3].minor.yy0);
2643
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2645
#line 2647 "parse.c"
2651
{yygotominor.yy418 = sqlite3Expr(yymsp[0].major,0,0,0);}
2652
#line 2654 "parse.c"
2673
{yygotominor.yy418 = sqlite3Expr(yymsp[-1].major, yymsp[-2].minor.yy418, yymsp[0].minor.yy418, 0);}
2674
#line 2676 "parse.c"
2678
{yygotominor.yy30.opcode = TK_LIKE; yygotominor.yy30.not = 0;}
2679
#line 2681 "parse.c"
2683
{yygotominor.yy30.opcode = TK_GLOB; yygotominor.yy30.not = 0;}
2684
#line 2686 "parse.c"
2688
{yygotominor.yy30.opcode = TK_LIKE; yygotominor.yy30.not = 1;}
2689
#line 2691 "parse.c"
2693
{yygotominor.yy30.opcode = TK_GLOB; yygotominor.yy30.not = 1;}
2694
#line 2696 "parse.c"
2699
ExprList *pList = sqlite3ExprListAppend(0, yymsp[-1].minor.yy418, 0);
2700
pList = sqlite3ExprListAppend(pList, yymsp[-3].minor.yy418, 0);
2701
if( yymsp[0].minor.yy418 ){
2702
pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy418, 0);
2704
yygotominor.yy418 = sqlite3ExprFunction(pList, 0);
2705
if( yygotominor.yy418 ) yygotominor.yy418->op = yymsp[-2].minor.yy30.opcode;
2706
if( yymsp[-2].minor.yy30.not ) yygotominor.yy418 = sqlite3Expr(TK_NOT, yygotominor.yy418, 0, 0);
2707
sqlite3ExprSpan(yygotominor.yy418, &yymsp[-3].minor.yy418->span, &yymsp[-1].minor.yy418->span);
2709
#line 2711 "parse.c"
2714
yygotominor.yy418 = sqlite3Expr(TK_ISNULL, yymsp[-1].minor.yy418, 0, 0);
2715
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-1].minor.yy418->span,&yymsp[0].minor.yy0);
2717
#line 2719 "parse.c"
2722
yygotominor.yy418 = sqlite3Expr(TK_ISNULL, yymsp[-2].minor.yy418, 0, 0);
2723
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-2].minor.yy418->span,&yymsp[0].minor.yy0);
2725
#line 2727 "parse.c"
2730
yygotominor.yy418 = sqlite3Expr(TK_NOTNULL, yymsp[-1].minor.yy418, 0, 0);
2731
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-1].minor.yy418->span,&yymsp[0].minor.yy0);
2733
#line 2735 "parse.c"
2738
yygotominor.yy418 = sqlite3Expr(TK_NOTNULL, yymsp[-2].minor.yy418, 0, 0);
2739
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-2].minor.yy418->span,&yymsp[0].minor.yy0);
2741
#line 2743 "parse.c"
2746
yygotominor.yy418 = sqlite3Expr(TK_NOTNULL, yymsp[-3].minor.yy418, 0, 0);
2747
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-3].minor.yy418->span,&yymsp[0].minor.yy0);
2749
#line 2751 "parse.c"
2755
yygotominor.yy418 = sqlite3Expr(yymsp[-1].major, yymsp[0].minor.yy418, 0, 0);
2756
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy418->span);
2758
#line 2760 "parse.c"
2763
yygotominor.yy418 = sqlite3Expr(TK_UMINUS, yymsp[0].minor.yy418, 0, 0);
2764
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy418->span);
2766
#line 2768 "parse.c"
2771
yygotominor.yy418 = sqlite3Expr(TK_UPLUS, yymsp[0].minor.yy418, 0, 0);
2772
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy418->span);
2774
#line 2776 "parse.c"
2779
ExprList *pList = sqlite3ExprListAppend(0, yymsp[-2].minor.yy418, 0);
2780
pList = sqlite3ExprListAppend(pList, yymsp[0].minor.yy418, 0);
2781
yygotominor.yy418 = sqlite3Expr(TK_BETWEEN, yymsp[-4].minor.yy418, 0, 0);
2782
if( yygotominor.yy418 ) yygotominor.yy418->pList = pList;
2783
if( yymsp[-3].minor.yy328 ) yygotominor.yy418 = sqlite3Expr(TK_NOT, yygotominor.yy418, 0, 0);
2784
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-4].minor.yy418->span,&yymsp[0].minor.yy418->span);
2786
#line 2788 "parse.c"
2791
yygotominor.yy418 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy418, 0, 0);
2792
if( yygotominor.yy418 ){
2793
yygotominor.yy418->pList = yymsp[-1].minor.yy322;
2795
sqlite3ExprListDelete(yymsp[-1].minor.yy322);
2797
if( yymsp[-3].minor.yy328 ) yygotominor.yy418 = sqlite3Expr(TK_NOT, yygotominor.yy418, 0, 0);
2798
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-4].minor.yy418->span,&yymsp[0].minor.yy0);
2800
#line 2802 "parse.c"
2805
yygotominor.yy418 = sqlite3Expr(TK_SELECT, 0, 0, 0);
2806
if( yygotominor.yy418 ) yygotominor.yy418->pSelect = yymsp[-1].minor.yy91;
2807
if( !yygotominor.yy418 ) sqlite3SelectDelete(yymsp[-1].minor.yy91);
2808
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
2810
#line 2812 "parse.c"
2815
yygotominor.yy418 = sqlite3Expr(TK_IN, yymsp[-4].minor.yy418, 0, 0);
2816
if( yygotominor.yy418 ) yygotominor.yy418->pSelect = yymsp[-1].minor.yy91;
2817
if( !yygotominor.yy418 ) sqlite3SelectDelete(yymsp[-1].minor.yy91);
2818
if( yymsp[-3].minor.yy328 ) yygotominor.yy418 = sqlite3Expr(TK_NOT, yygotominor.yy418, 0, 0);
2819
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-4].minor.yy418->span,&yymsp[0].minor.yy0);
2821
#line 2823 "parse.c"
2826
SrcList *pSrc = sqlite3SrcListAppend(0,&yymsp[-1].minor.yy430,&yymsp[0].minor.yy430);
2827
yygotominor.yy418 = sqlite3Expr(TK_IN, yymsp[-3].minor.yy418, 0, 0);
2828
if( yygotominor.yy418 ) yygotominor.yy418->pSelect = sqlite3SelectNew(0,pSrc,0,0,0,0,0,0,0);
2829
if( yymsp[-2].minor.yy328 ) yygotominor.yy418 = sqlite3Expr(TK_NOT, yygotominor.yy418, 0, 0);
2830
sqlite3ExprSpan(yygotominor.yy418,&yymsp[-3].minor.yy418->span,yymsp[0].minor.yy430.z?&yymsp[0].minor.yy430:&yymsp[-1].minor.yy430);
2832
#line 2834 "parse.c"
2837
Expr *p = yygotominor.yy418 = sqlite3Expr(TK_EXISTS, 0, 0, 0);
2839
p->pSelect = yymsp[-1].minor.yy91;
2840
sqlite3ExprSpan(p,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
2842
if( !p ) sqlite3SelectDelete(yymsp[-1].minor.yy91);
2844
#line 2846 "parse.c"
2849
yygotominor.yy418 = sqlite3Expr(TK_CASE, yymsp[-3].minor.yy418, yymsp[-1].minor.yy418, 0);
2850
if( yygotominor.yy418 ) yygotominor.yy418->pList = yymsp[-2].minor.yy322;
2851
sqlite3ExprSpan(yygotominor.yy418, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
2853
#line 2855 "parse.c"
2858
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy418, 0);
2859
yygotominor.yy322 = sqlite3ExprListAppend(yygotominor.yy322, yymsp[0].minor.yy418, 0);
2861
#line 2863 "parse.c"
2866
yygotominor.yy322 = sqlite3ExprListAppend(0, yymsp[-2].minor.yy418, 0);
2867
yygotominor.yy322 = sqlite3ExprListAppend(yygotominor.yy322, yymsp[0].minor.yy418, 0);
2869
#line 2871 "parse.c"
2874
if( yymsp[-9].minor.yy328!=OE_None ) yymsp[-9].minor.yy328 = yymsp[0].minor.yy328;
2875
if( yymsp[-9].minor.yy328==OE_Default) yymsp[-9].minor.yy328 = OE_Abort;
2876
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy430, &yymsp[-6].minor.yy430, sqlite3SrcListAppend(0,&yymsp[-4].minor.yy430,0),yymsp[-2].minor.yy322,yymsp[-9].minor.yy328, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
2878
#line 2880 "parse.c"
2883
{yygotominor.yy328 = OE_Abort;}
2884
#line 2886 "parse.c"
2888
{yygotominor.yy328 = OE_None;}
2889
#line 2891 "parse.c"
2895
if( yymsp[-1].minor.yy430.n>0 ){
2896
p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
2897
if( p ) p->pColl = sqlite3LocateCollSeq(pParse, yymsp[-1].minor.yy430.z, yymsp[-1].minor.yy430.n);
2899
yygotominor.yy322 = sqlite3ExprListAppend(yymsp[-4].minor.yy322, p, &yymsp[-2].minor.yy430);
2901
#line 2903 "parse.c"
2907
if( yymsp[-1].minor.yy430.n>0 ){
2908
p = sqlite3Expr(TK_COLUMN, 0, 0, 0);
2909
if( p ) p->pColl = sqlite3LocateCollSeq(pParse, yymsp[-1].minor.yy430.z, yymsp[-1].minor.yy430.n);
2911
yygotominor.yy322 = sqlite3ExprListAppend(0, p, &yymsp[-2].minor.yy430);
2913
#line 2915 "parse.c"
2917
{sqlite3DropIndex(pParse, yymsp[0].minor.yy439);}
2918
#line 2920 "parse.c"
2923
{sqlite3Vacuum(pParse,0);}
2924
#line 2926 "parse.c"
2929
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy430,&yymsp[-2].minor.yy430,&yymsp[0].minor.yy430,0);}
2930
#line 2932 "parse.c"
2934
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy430,&yymsp[-2].minor.yy430,&yymsp[0].minor.yy0,0);}
2935
#line 2937 "parse.c"
2940
sqlite3Pragma(pParse,&yymsp[-3].minor.yy430,&yymsp[-2].minor.yy430,&yymsp[0].minor.yy430,1);
2942
#line 2944 "parse.c"
2946
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy430,&yymsp[-3].minor.yy430,&yymsp[-1].minor.yy430,0);}
2947
#line 2949 "parse.c"
2951
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy430,&yymsp[0].minor.yy430,0,0);}
2952
#line 2954 "parse.c"
2958
all.z = yymsp[-3].minor.yy430.z;
2959
all.n = (yymsp[0].minor.yy0.z - yymsp[-3].minor.yy430.z) + yymsp[0].minor.yy0.n;
2960
sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy451, &all);
2962
#line 2964 "parse.c"
2967
sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy430, &yymsp[-6].minor.yy430, yymsp[-5].minor.yy328, yymsp[-4].minor.yy378.a, yymsp[-4].minor.yy378.b, yymsp[-2].minor.yy439, yymsp[-1].minor.yy328, yymsp[0].minor.yy418, yymsp[-9].minor.yy328);
2968
yygotominor.yy430 = (yymsp[-6].minor.yy430.n==0?yymsp[-7].minor.yy430:yymsp[-6].minor.yy430);
2970
#line 2972 "parse.c"
2975
{ yygotominor.yy328 = TK_BEFORE; }
2976
#line 2978 "parse.c"
2980
{ yygotominor.yy328 = TK_AFTER; }
2981
#line 2983 "parse.c"
2985
{ yygotominor.yy328 = TK_INSTEAD;}
2986
#line 2988 "parse.c"
2992
{yygotominor.yy378.a = yymsp[0].major; yygotominor.yy378.b = 0;}
2993
#line 2995 "parse.c"
2997
{yygotominor.yy378.a = TK_UPDATE; yygotominor.yy378.b = yymsp[0].minor.yy232;}
2998
#line 3000 "parse.c"
3003
{ yygotominor.yy328 = TK_ROW; }
3004
#line 3006 "parse.c"
3008
{ yygotominor.yy328 = TK_STATEMENT; }
3009
#line 3011 "parse.c"
3013
{ yygotominor.yy418 = 0; }
3014
#line 3016 "parse.c"
3018
{ yygotominor.yy418 = yymsp[0].minor.yy418; }
3019
#line 3021 "parse.c"
3024
yymsp[-2].minor.yy451->pNext = yymsp[0].minor.yy451;
3025
yygotominor.yy451 = yymsp[-2].minor.yy451;
3027
#line 3029 "parse.c"
3031
{ yygotominor.yy451 = 0; }
3032
#line 3034 "parse.c"
3036
{ yygotominor.yy451 = sqlite3TriggerUpdateStep(&yymsp[-3].minor.yy430, yymsp[-1].minor.yy322, yymsp[0].minor.yy418, yymsp[-4].minor.yy328); }
3037
#line 3039 "parse.c"
3041
{yygotominor.yy451 = sqlite3TriggerInsertStep(&yymsp[-5].minor.yy430, yymsp[-4].minor.yy232, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy328);}
3042
#line 3044 "parse.c"
3046
{yygotominor.yy451 = sqlite3TriggerInsertStep(&yymsp[-2].minor.yy430, yymsp[-1].minor.yy232, 0, yymsp[0].minor.yy91, yymsp[-4].minor.yy328);}
3047
#line 3049 "parse.c"
3051
{yygotominor.yy451 = sqlite3TriggerDeleteStep(&yymsp[-1].minor.yy430, yymsp[0].minor.yy418);}
3052
#line 3054 "parse.c"
3056
{yygotominor.yy451 = sqlite3TriggerSelectStep(yymsp[0].minor.yy91); }
3057
#line 3059 "parse.c"
3062
yygotominor.yy418 = sqlite3Expr(TK_RAISE, 0, 0, 0);
3063
yygotominor.yy418->iColumn = OE_Ignore;
3064
sqlite3ExprSpan(yygotominor.yy418, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
3066
#line 3068 "parse.c"
3071
yygotominor.yy418 = sqlite3Expr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy430);
3072
yygotominor.yy418->iColumn = yymsp[-3].minor.yy328;
3073
sqlite3ExprSpan(yygotominor.yy418, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
3075
#line 3077 "parse.c"
3079
{yygotominor.yy328 = OE_Rollback;}
3080
#line 3082 "parse.c"
3084
{yygotominor.yy328 = OE_Fail;}
3085
#line 3087 "parse.c"
3090
sqlite3DropTrigger(pParse,yymsp[0].minor.yy439);
3092
#line 3094 "parse.c"
3097
sqlite3Attach(pParse, &yymsp[-3].minor.yy430, &yymsp[-1].minor.yy430, yymsp[0].minor.yy92.type, &yymsp[0].minor.yy92.key);
3099
#line 3101 "parse.c"
3103
{ yygotominor.yy92.type = 0; }
3104
#line 3106 "parse.c"
3108
{ yygotominor.yy92.type=1; yygotominor.yy92.key = yymsp[0].minor.yy430; }
3109
#line 3111 "parse.c"
3113
{ yygotominor.yy92.type=2; yygotominor.yy92.key = yymsp[0].minor.yy0; }
3114
#line 3116 "parse.c"
3119
sqlite3Detach(pParse, &yymsp[0].minor.yy430);
3121
#line 3123 "parse.c"
3125
{sqlite3Reindex(pParse, 0, 0);}
3126
#line 3128 "parse.c"
3130
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy430, &yymsp[0].minor.yy430);}
3131
#line 3133 "parse.c"
3136
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy439,&yymsp[0].minor.yy430);
3138
#line 3140 "parse.c"
3143
sqlite3AlterFinishAddColumn(pParse, &yymsp[0].minor.yy430);
3145
#line 3147 "parse.c"
3150
sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy439);
3152
#line 3154 "parse.c"
3155
yygoto = yyRuleInfo[yyruleno].lhs;
3156
yysize = yyRuleInfo[yyruleno].nrhs;
3157
yypParser->yyidx -= yysize;
3158
yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
3159
if( yyact < YYNSTATE ){
3161
/* If we are not debugging and the reduce action popped at least
3162
** one element off the stack, then we can push the new element back
3163
** onto the stack here, and skip the stack overflow test in yy_shift().
3164
** That gives a significant speed improvement. */
3168
yymsp->stateno = yyact;
3169
yymsp->major = yygoto;
3170
yymsp->minor = yygotominor;
3174
yy_shift(yypParser,yyact,yygoto,&yygotominor);
3176
}else if( yyact == YYNSTATE + YYNRULE + 1 ){
3177
yy_accept(yypParser);
3182
** The following code executes when the parse fails
3184
static void yy_parse_failed(
3185
yyParser *yypParser /* The parser */
3187
sqlite3ParserARG_FETCH;
3190
fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3193
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3194
/* Here code is inserted which will be executed whenever the
3196
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3200
** The following code executes when a syntax error first occurs.
3202
static void yy_syntax_error(
3203
yyParser *yypParser, /* The parser */
3204
int yymajor, /* The major type of the error token */
3205
YYMINORTYPE yyminor /* The minor type of the error token */
3207
sqlite3ParserARG_FETCH;
3208
#define TOKEN (yyminor.yy0)
3211
if( pParse->zErrMsg==0 ){
3213
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
3215
sqlite3ErrorMsg(pParse, "incomplete SQL statement");
3218
#line 3221 "parse.c"
3219
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3223
** The following is executed when the parser accepts
3225
static void yy_accept(
3226
yyParser *yypParser /* The parser */
3228
sqlite3ParserARG_FETCH;
3231
fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3234
while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3235
/* Here code is inserted which will be executed whenever the
3236
** parser accepts */
3237
sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3240
/* The main parser program.
3241
** The first argument is a pointer to a structure obtained from
3242
** "sqlite3ParserAlloc" which describes the current state of the parser.
3243
** The second argument is the major token number. The third is
3244
** the minor token. The fourth optional argument is whatever the
3245
** user wants (and specified in the grammar) and is available for
3246
** use by the action routines.
3250
** <li> A pointer to the parser (an opaque structure.)
3251
** <li> The major token number.
3252
** <li> The minor token number.
3253
** <li> An option argument of a grammar-specified type.
3260
void *yyp, /* The parser */
3261
int yymajor, /* The major token code number */
3262
sqlite3ParserTOKENTYPE yyminor /* The value for the token */
3263
sqlite3ParserARG_PDECL /* Optional %extra_argument parameter */
3265
YYMINORTYPE yyminorunion;
3266
int yyact; /* The parser action. */
3267
int yyendofinput; /* True if we are at the end of input */
3268
int yyerrorhit = 0; /* True if yymajor has invoked an error */
3269
yyParser *yypParser; /* The parser */
3271
/* (re)initialize the parser, if necessary */
3272
yypParser = (yyParser*)yyp;
3273
if( yypParser->yyidx<0 ){
3274
if( yymajor==0 ) return;
3275
yypParser->yyidx = 0;
3276
yypParser->yyerrcnt = -1;
3277
yypParser->yystack[0].stateno = 0;
3278
yypParser->yystack[0].major = 0;
3280
yyminorunion.yy0 = yyminor;
3281
yyendofinput = (yymajor==0);
3282
sqlite3ParserARG_STORE;
3286
fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
3291
yyact = yy_find_shift_action(yypParser,yymajor);
3292
if( yyact<YYNSTATE ){
3293
yy_shift(yypParser,yyact,yymajor,&yyminorunion);
3294
yypParser->yyerrcnt--;
3295
if( yyendofinput && yypParser->yyidx>=0 ){
3300
}else if( yyact < YYNSTATE + YYNRULE ){
3301
yy_reduce(yypParser,yyact-YYNSTATE);
3302
}else if( yyact == YY_ERROR_ACTION ){
3306
fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3309
#ifdef YYERRORSYMBOL
3310
/* A syntax error has occurred.
3311
** The response to an error depends upon whether or not the
3312
** grammar defines an error token "ERROR".
3314
** This is what we do if the grammar does define ERROR:
3316
** * Call the %syntax_error function.
3318
** * Begin popping the stack until we enter a state where
3319
** it is legal to shift the error symbol, then shift
3320
** the error symbol.
3322
** * Set the error count to three.
3324
** * Begin accepting and shifting new tokens. No new error
3325
** processing will occur until three tokens have been
3326
** shifted successfully.
3329
if( yypParser->yyerrcnt<0 ){
3330
yy_syntax_error(yypParser,yymajor,yyminorunion);
3332
yymx = yypParser->yystack[yypParser->yyidx].major;
3333
if( yymx==YYERRORSYMBOL || yyerrorhit ){
3336
fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3337
yyTracePrompt,yyTokenName[yymajor]);
3340
yy_destructor(yymajor,&yyminorunion);
3344
yypParser->yyidx >= 0 &&
3345
yymx != YYERRORSYMBOL &&
3346
(yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
3348
yy_pop_parser_stack(yypParser);
3350
if( yypParser->yyidx < 0 || yymajor==0 ){
3351
yy_destructor(yymajor,&yyminorunion);
3352
yy_parse_failed(yypParser);
3354
}else if( yymx!=YYERRORSYMBOL ){
3357
yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
3360
yypParser->yyerrcnt = 3;
3362
#else /* YYERRORSYMBOL is not defined */
3363
/* This is what we do if the grammar does not define ERROR:
3365
** * Report an error message, and throw away the input token.
3367
** * If the input token is $, then fail the parse.
3369
** As before, subsequent error messages are suppressed until
3370
** three input tokens have been successfully shifted.
3372
if( yypParser->yyerrcnt<=0 ){
3373
yy_syntax_error(yypParser,yymajor,yyminorunion);
3375
yypParser->yyerrcnt = 3;
3376
yy_destructor(yymajor,&yyminorunion);
3378
yy_parse_failed(yypParser);
3383
yy_accept(yypParser);
3386
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );