File Coverage

parse.c
Criterion Covered Total %
statement 225 456 49.3
branch 51 80 63.7
condition n/a
subroutine n/a
pod n/a
total 276 536 51.4


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