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 <stdio.h>
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 <stdio.h>
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 ** <ul>
798 ** <li> A FILE* to which trace output should be written.
799 ** If NULL, then tracing is turned off.
800 ** <li> A prefix string written at the beginning of every
801 ** line of trace output. If NULL, then tracing is
802 ** turned off.
803 ** </ul>
804 **
805 ** Outputs:
806 ** None.
807 */
sqliteParserTrace(FILE * TraceFILE,char * zTracePrompt)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 */
sqliteParserTokenName(int tokenType)1182 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 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 */
sqliteParserAlloc(void * (* mallocProc)(size_t))1206 void *sqliteParserAlloc(void *(*mallocProc)(size_t)){
1207 yyParser *pParser;
1208 pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1209 if( pParser ){
1210 pParser->yyidx = -1;
1211 }
1212 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 */
yy_destructor(YYCODETYPE yymajor,YYMINORTYPE * yypminor)1220 static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
1221 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 #line 1235 "parse.c"
1236 break;
1237 case 158:
1238 #line 533 "parse.y"
1239 {sqliteExprDelete((yypminor->yy242));}
1240 #line 1240 "parse.c"
1241 break;
1242 case 159:
1243 #line 746 "parse.y"
1244 {sqliteIdListDelete((yypminor->yy320));}
1245 #line 1245 "parse.c"
1246 break;
1247 case 167:
1248 #line 744 "parse.y"
1249 {sqliteIdListDelete((yypminor->yy320));}
1250 #line 1250 "parse.c"
1251 break;
1252 case 171:
1253 #line 288 "parse.y"
1254 {sqliteSelectDelete((yypminor->yy179));}
1255 #line 1255 "parse.c"
1256 break;
1257 case 174:
1258 #line 322 "parse.y"
1259 {sqliteExprListDelete((yypminor->yy322));}
1260 #line 1260 "parse.c"
1261 break;
1262 case 175:
1263 #line 353 "parse.y"
1264 {sqliteSrcListDelete((yypminor->yy307));}
1265 #line 1265 "parse.c"
1266 break;
1267 case 176:
1268 #line 483 "parse.y"
1269 {sqliteExprDelete((yypminor->yy242));}
1270 #line 1270 "parse.c"
1271 break;
1272 case 177:
1273 #line 459 "parse.y"
1274 {sqliteExprListDelete((yypminor->yy322));}
1275 #line 1275 "parse.c"
1276 break;
1277 case 178:
1278 #line 464 "parse.y"
1279 {sqliteExprDelete((yypminor->yy242));}
1280 #line 1280 "parse.c"
1281 break;
1282 case 179:
1283 #line 431 "parse.y"
1284 {sqliteExprListDelete((yypminor->yy322));}
1285 #line 1285 "parse.c"
1286 break;
1287 case 181:
1288 #line 324 "parse.y"
1289 {sqliteExprListDelete((yypminor->yy322));}
1290 #line 1290 "parse.c"
1291 break;
1292 case 183:
1293 #line 349 "parse.y"
1294 {sqliteSrcListDelete((yypminor->yy307));}
1295 #line 1295 "parse.c"
1296 break;
1297 case 184:
1298 #line 351 "parse.y"
1299 {sqliteSrcListDelete((yypminor->yy307));}
1300 #line 1300 "parse.c"
1301 break;
1302 case 187:
1303 #line 420 "parse.y"
1304 {sqliteExprDelete((yypminor->yy242));}
1305 #line 1305 "parse.c"
1306 break;
1307 case 188:
1308 #line 425 "parse.y"
1309 {sqliteIdListDelete((yypminor->yy320));}
1310 #line 1310 "parse.c"
1311 break;
1312 case 189:
1313 #line 400 "parse.y"
1314 {sqliteSelectDelete((yypminor->yy179));}
1315 #line 1315 "parse.c"
1316 break;
1317 case 191:
1318 #line 433 "parse.y"
1319 {sqliteExprListDelete((yypminor->yy322));}
1320 #line 1320 "parse.c"
1321 break;
1322 case 192:
1323 #line 435 "parse.y"
1324 {sqliteExprDelete((yypminor->yy242));}
1325 #line 1325 "parse.c"
1326 break;
1327 case 194:
1328 #line 719 "parse.y"
1329 {sqliteExprListDelete((yypminor->yy322));}
1330 #line 1330 "parse.c"
1331 break;
1332 case 195:
1333 #line 489 "parse.y"
1334 {sqliteExprListDelete((yypminor->yy322));}
1335 #line 1335 "parse.c"
1336 break;
1337 case 197:
1338 #line 520 "parse.y"
1339 {sqliteIdListDelete((yypminor->yy320));}
1340 #line 1340 "parse.c"
1341 break;
1342 case 198:
1343 #line 514 "parse.y"
1344 {sqliteExprListDelete((yypminor->yy322));}
1345 #line 1345 "parse.c"
1346 break;
1347 case 199:
1348 #line 522 "parse.y"
1349 {sqliteIdListDelete((yypminor->yy320));}
1350 #line 1350 "parse.c"
1351 break;
1352 case 202:
1353 #line 702 "parse.y"
1354 {sqliteExprListDelete((yypminor->yy322));}
1355 #line 1355 "parse.c"
1356 break;
1357 case 204:
1358 #line 721 "parse.y"
1359 {sqliteExprDelete((yypminor->yy242));}
1360 #line 1360 "parse.c"
1361 break;
1362 case 212:
1363 #line 828 "parse.y"
1364 {sqliteDeleteTriggerStep((yypminor->yy19));}
1365 #line 1365 "parse.c"
1366 break;
1367 case 214:
1368 #line 812 "parse.y"
1369 {sqliteIdListDelete((yypminor->yy290).b);}
1370 #line 1370 "parse.c"
1371 break;
1372 case 217:
1373 #line 836 "parse.y"
1374 {sqliteDeleteTriggerStep((yypminor->yy19));}
1375 #line 1375 "parse.c"
1376 break;
1377 default: break; /* If no destructor action specified: do nothing */
1378 }
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 */
yy_pop_parser_stack(yyParser * pParser)1389 static int yy_pop_parser_stack(yyParser *pParser){
1390 YYCODETYPE yymajor;
1391 yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
1392
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 #endif
1401 yymajor = yytos->major;
1402 yy_destructor( yymajor, &yytos->minor);
1403 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 ** <ul>
1413 ** <li> A pointer to the parser. This should be a pointer
1414 ** obtained from sqliteParserAlloc.
1415 ** <li> A pointer to a function used to reclaim memory obtained
1416 ** from malloc.
1417 ** </ul>
1418 */
sqliteParserFree(void * p,void (* freeProc)(void *))1419 void sqliteParserFree(
1420 void *p, /* The parser to be deleted */
1421 void (*freeProc)(void*) /* Function used to reclaim memory */
1422 ){
1423 yyParser *pParser = (yyParser*)p;
1424 if( pParser==0 ) return;
1425 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 */
yy_find_shift_action(yyParser * pParser,int iLookAhead)1437 static int yy_find_shift_action(
1438 yyParser *pParser, /* The parser */
1439 int iLookAhead /* The look-ahead token */
1440 ){
1441 int i;
1442 int stateno = pParser->yystack[pParser->yyidx].stateno;
1443
1444 /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */
1445 i = yy_shift_ofst[stateno];
1446 if( i==YY_SHIFT_USE_DFLT ){
1447 return yy_default[stateno];
1448 }
1449 if( iLookAhead==YYNOCODE ){
1450 return YY_NO_ACTION;
1451 }
1452 i += iLookAhead;
1453 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1454 #ifdef YYFALLBACK
1455 int iFallback; /* Fallback token */
1456 if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
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 #endif
1464 return yy_find_shift_action(pParser, iFallback);
1465 }
1466 #endif
1467 return yy_default[stateno];
1468 }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 */
yy_find_reduce_action(yyParser * pParser,int iLookAhead)1481 static int yy_find_reduce_action(
1482 yyParser *pParser, /* The parser */
1483 int iLookAhead /* The look-ahead token */
1484 ){
1485 int i;
1486 int stateno = pParser->yystack[pParser->yyidx].stateno;
1487
1488 i = yy_reduce_ofst[stateno];
1489 if( i==YY_REDUCE_USE_DFLT ){
1490 return yy_default[stateno];
1491 }
1492 if( iLookAhead==YYNOCODE ){
1493 return YY_NO_ACTION;
1494 }
1495 i += iLookAhead;
1496 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1497 return yy_default[stateno];
1498 }else{
1499 return yy_action[i];
1500 }
1501 }
1502
1503 /*
1504 ** Perform a shift action.
1505 */
yy_shift(yyParser * yypParser,int yyNewState,int yyMajor,YYMINORTYPE * yypMinor)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 yyStackEntry *yytos;
1513 yypParser->yyidx++;
1514 if( yypParser->yyidx>=YYSTACKDEPTH ){
1515 sqliteParserARG_FETCH;
1516 yypParser->yyidx--;
1517 #ifndef NDEBUG
1518 if( yyTraceFILE ){
1519 fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1520 }
1521 #endif
1522 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1523 /* Here code is inserted which will execute if the parser
1524 ** stack every overflows */
1525 sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument var */
1526 return;
1527 }
1528 yytos = &yypParser->yystack[yypParser->yyidx];
1529 yytos->stateno = yyNewState;
1530 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 */
yy_reduce(yyParser * yypParser,int yyruleno)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 int yysize; /* Amount to pop the stack */
1861 sqliteParserARG_FETCH;
1862 yymsp = &yypParser->yystack[yypParser->yyidx];
1863 #ifndef NDEBUG
1864 if( yyTraceFILE && yyruleno>=0
1865 && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
1866 fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1867 yyRuleName[yyruleno]);
1868 }
1869 #endif /* NDEBUG */
1870
1871 switch( yyruleno ){
1872 /* Beginning here are the reduction cases. A typical example
1873 ** follows:
1874 ** case 0:
1875 ** #line <lineno> <grammarfile>
1876 ** { ... } // User supplied code
1877 ** #line <lineno> <thisfile>
1878 ** break;
1879 */
1880 case 0:
1881 /* No destructor defined for cmdlist */
1882 break;
1883 case 1:
1884 /* No destructor defined for cmdlist */
1885 /* No destructor defined for ecmd */
1886 break;
1887 case 2:
1888 /* No destructor defined for ecmd */
1889 break;
1890 case 3:
1891 /* No destructor defined for explain */
1892 /* No destructor defined for cmdx */
1893 /* No destructor defined for SEMI */
1894 break;
1895 case 4:
1896 /* No destructor defined for SEMI */
1897 break;
1898 case 5:
1899 #line 72 "parse.y"
1900 { sqliteExec(pParse); }
1901 #line 1901 "parse.c"
1902 /* 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 /* No destructor defined for EXPLAIN */
1909 break;
1910 case 7:
1911 #line 74 "parse.y"
1912 { sqliteBeginParse(pParse, 0); }
1913 #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 /* No destructor defined for trans_opt */
1921 break;
1922 case 9:
1923 break;
1924 case 10:
1925 /* No destructor defined for TRANSACTION */
1926 break;
1927 case 11:
1928 /* No destructor defined for TRANSACTION */
1929 /* 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 /* 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 /* 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 /* No destructor defined for trans_opt */
1951 break;
1952 case 15:
1953 /* No destructor defined for create_table */
1954 /* 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 /* 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 /* No destructor defined for TEMP */
1969 break;
1970 case 18:
1971 #line 95 "parse.y"
1972 {yygotominor.yy372 = 0;}
1973 #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 /* 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 /* No destructor defined for AS */
1993 break;
1994 case 21:
1995 /* No destructor defined for columnlist */
1996 /* No destructor defined for COMMA */
1997 /* No destructor defined for column */
1998 break;
1999 case 22:
2000 /* No destructor defined for column */
2001 break;
2002 case 23:
2003 /* No destructor defined for columnid */
2004 /* No destructor defined for type */
2005 /* No destructor defined for carglist */
2006 break;
2007 case 24:
2008 #line 111 "parse.y"
2009 {sqliteAddColumn(pParse,&yymsp[0].minor.yy298);}
2010 #line 2010 "parse.c"
2011 break;
2012 case 25:
2013 #line 117 "parse.y"
2014 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2015 #line 2015 "parse.c"
2016 break;
2017 case 26:
2018 #line 149 "parse.y"
2019 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2020 #line 2020 "parse.c"
2021 break;
2022 case 27:
2023 #line 150 "parse.y"
2024 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2025 #line 2025 "parse.c"
2026 break;
2027 case 28:
2028 #line 155 "parse.y"
2029 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2030 #line 2030 "parse.c"
2031 break;
2032 case 29:
2033 #line 156 "parse.y"
2034 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2035 #line 2035 "parse.c"
2036 break;
2037 case 30:
2038 #line 157 "parse.y"
2039 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2040 #line 2040 "parse.c"
2041 break;
2042 case 31:
2043 break;
2044 case 32:
2045 #line 160 "parse.y"
2046 {sqliteAddColumnType(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298);}
2047 #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 /* 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 /* No destructor defined for signed */
2064 break;
2065 case 35:
2066 #line 165 "parse.y"
2067 {yygotominor.yy298 = yymsp[0].minor.yy298;}
2068 #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 /* 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 #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 /* 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 /* No destructor defined for MINUS */
2092 break;
2093 case 40:
2094 /* No destructor defined for carglist */
2095 /* No destructor defined for carg */
2096 break;
2097 case 41:
2098 break;
2099 case 42:
2100 /* No destructor defined for CONSTRAINT */
2101 /* No destructor defined for nm */
2102 /* No destructor defined for ccons */
2103 break;
2104 case 43:
2105 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for MINUS */
2158 break;
2159 case 52:
2160 /* No destructor defined for DEFAULT */
2161 /* No destructor defined for NULL */
2162 break;
2163 case 53:
2164 /* No destructor defined for NULL */
2165 /* 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 /* 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 /* 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 /* No destructor defined for UNIQUE */
2187 break;
2188 case 57:
2189 /* No destructor defined for CHECK */
2190 /* No destructor defined for LP */
2191 yy_destructor(158,&yymsp[-2].minor);
2192 /* No destructor defined for RP */
2193 /* 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 /* No destructor defined for REFERENCES */
2200 break;
2201 case 59:
2202 #line 195 "parse.y"
2203 {sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);}
2204 #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 /* No destructor defined for COLLATE */
2213 break;
2214 case 61:
2215 #line 206 "parse.y"
2216 { yygotominor.yy372 = OE_Restrict * 0x010101; }
2217 #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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for DEFERRABLE */
2290 break;
2291 case 73:
2292 #line 222 "parse.y"
2293 {yygotominor.yy372 = 0;}
2294 #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 /* 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 /* No destructor defined for IMMEDIATE */
2309 break;
2310 case 76:
2311 break;
2312 case 77:
2313 /* No destructor defined for COMMA */
2314 /* No destructor defined for conslist */
2315 break;
2316 case 78:
2317 /* No destructor defined for conslist */
2318 /* No destructor defined for COMMA */
2319 /* No destructor defined for tcons */
2320 break;
2321 case 79:
2322 /* No destructor defined for conslist */
2323 /* No destructor defined for tcons */
2324 break;
2325 case 80:
2326 /* No destructor defined for tcons */
2327 break;
2328 case 81:
2329 /* No destructor defined for CONSTRAINT */
2330 /* 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 /* 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 /* No destructor defined for RP */
2348 break;
2349 case 84:
2350 /* No destructor defined for CHECK */
2351 yy_destructor(158,&yymsp[-1].minor);
2352 /* 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 /* No destructor defined for REFERENCES */
2366 break;
2367 case 86:
2368 #line 246 "parse.y"
2369 {yygotominor.yy372 = 0;}
2370 #line 2370 "parse.c"
2371 break;
2372 case 87:
2373 #line 247 "parse.y"
2374 {yygotominor.yy372 = yymsp[0].minor.yy372;}
2375 #line 2375 "parse.c"
2376 break;
2377 case 88:
2378 #line 255 "parse.y"
2379 { yygotominor.yy372 = OE_Default; }
2380 #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 /* No destructor defined for CONFLICT */
2388 break;
2389 case 90:
2390 #line 257 "parse.y"
2391 { yygotominor.yy372 = OE_Default; }
2392 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #line 2461 "parse.c"
2462 break;
2463 case 101:
2464 #line 290 "parse.y"
2465 {yygotominor.yy179 = yymsp[0].minor.yy179;}
2466 #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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for ALL */
2523 break;
2524 case 110:
2525 #line 314 "parse.y"
2526 {yygotominor.yy372 = 0;}
2527 #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 /* No destructor defined for COMMA */
2534 break;
2535 case 112:
2536 #line 326 "parse.y"
2537 {yygotominor.yy322 = 0;}
2538 #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 #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 /* 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 /* 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 /* No destructor defined for AS */
2571 break;
2572 case 117:
2573 #line 344 "parse.y"
2574 { yygotominor.yy298 = yymsp[0].minor.yy298; }
2575 #line 2575 "parse.c"
2576 break;
2577 case 118:
2578 #line 345 "parse.y"
2579 { yygotominor.yy298.n = 0; }
2580 #line 2580 "parse.c"
2581 break;
2582 case 119:
2583 #line 357 "parse.y"
2584 {yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));}
2585 #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 /* 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 #line 2599 "parse.c"
2600 break;
2601 case 122:
2602 #line 367 "parse.y"
2603 {yygotominor.yy307 = 0;}
2604 #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 #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 /* No destructor defined for RP */
2640 break;
2641 case 125:
2642 #line 401 "parse.y"
2643 {yygotominor.yy179 = yymsp[0].minor.yy179;}
2644 #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 #line 2651 "parse.c"
2652 break;
2653 case 127:
2654 #line 407 "parse.y"
2655 {yygotominor.yy298.z=0; yygotominor.yy298.n=0;}
2656 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for ON */
2699 break;
2700 case 135:
2701 #line 422 "parse.y"
2702 {yygotominor.yy242 = 0;}
2703 #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 /* No destructor defined for RP */
2712 break;
2713 case 137:
2714 #line 427 "parse.y"
2715 {yygotominor.yy320 = 0;}
2716 #line 2716 "parse.c"
2717 break;
2718 case 138:
2719 #line 437 "parse.y"
2720 {yygotominor.yy322 = 0;}
2721 #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 /* 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 /* 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 #line 2745 "parse.c"
2746 break;
2747 case 142:
2748 #line 447 "parse.y"
2749 {yygotominor.yy242 = yymsp[0].minor.yy242;}
2750 #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 /* 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 /* No destructor defined for DESC */
2763 break;
2764 case 145:
2765 #line 454 "parse.y"
2766 {yygotominor.yy372 = SQLITE_SO_ASC;}
2767 #line 2767 "parse.c"
2768 break;
2769 case 146:
2770 #line 455 "parse.y"
2771 {yygotominor.yy372 = SQLITE_SO_UNK;}
2772 #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 /* No destructor defined for COLLATE */
2779 break;
2780 case 148:
2781 #line 460 "parse.y"
2782 {yygotominor.yy322 = 0;}
2783 #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 /* No destructor defined for BY */
2791 break;
2792 case 150:
2793 #line 465 "parse.y"
2794 {yygotominor.yy242 = 0;}
2795 #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 /* 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 #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 /* 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 /* 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 /* 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 /* No destructor defined for FROM */
2836 break;
2837 case 157:
2838 #line 485 "parse.y"
2839 {yygotominor.yy242 = 0;}
2840 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #line 2904 "parse.c"
2905 break;
2906 case 168:
2907 #line 524 "parse.y"
2908 {yygotominor.yy320 = 0;}
2909 #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 /* 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 /* 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 #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 #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 #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 #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 #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 /* 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 /* 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 #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 #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 #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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #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 /* 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 #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 /* 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 /* 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 #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 #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 #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 #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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #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 /* 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 /* 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 /* No destructor defined for ELSE */
3377 break;
3378 case 228:
3379 #line 713 "parse.y"
3380 {yygotominor.yy242 = 0;}
3381 #line 3381 "parse.c"
3382 break;
3383 case 229:
3384 #line 715 "parse.y"
3385 {yygotominor.yy242 = yymsp[0].minor.yy242;}
3386 #line 3386 "parse.c"
3387 break;
3388 case 230:
3389 #line 716 "parse.y"
3390 {yygotominor.yy242 = 0;}
3391 #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 /* 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 #line 3402 "parse.c"
3403 break;
3404 case 233:
3405 #line 726 "parse.y"
3406 {yygotominor.yy242 = yymsp[0].minor.yy242;}
3407 #line 3407 "parse.c"
3408 break;
3409 case 234:
3410 #line 727 "parse.y"
3411 {yygotominor.yy242 = 0;}
3412 #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 /* 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 /* No destructor defined for UNIQUE */
3432 break;
3433 case 237:
3434 #line 741 "parse.y"
3435 { yygotominor.yy372 = OE_None; }
3436 #line 3436 "parse.c"
3437 break;
3438 case 238:
3439 #line 749 "parse.y"
3440 {yygotominor.yy320 = 0;}
3441 #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 /* 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 /* 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 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for MINUS */
3557 break;
3558 case 256:
3559 #line 785 "parse.y"
3560 {yygotominor.yy298 = yymsp[0].minor.yy0;}
3561 #line 3561 "parse.c"
3562 break;
3563 case 257:
3564 #line 786 "parse.y"
3565 {yygotominor.yy298 = yymsp[0].minor.yy0;}
3566 #line 3566 "parse.c"
3567 break;
3568 case 258:
3569 /* No destructor defined for PLUS */
3570 break;
3571 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 /* 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 /* 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 /* 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 /* 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 /* No destructor defined for OF */
3613 break;
3614 case 265:
3615 #line 809 "parse.y"
3616 { yygotominor.yy372 = TK_BEFORE; }
3617 #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 /* 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 /* 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 /* 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 /* No destructor defined for OF */
3643 break;
3644 case 270:
3645 #line 819 "parse.y"
3646 { yygotominor.yy372 = TK_ROW; }
3647 #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 /* 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 /* No destructor defined for STATEMENT */
3664 break;
3665 case 273:
3666 #line 824 "parse.y"
3667 { yygotominor.yy182 = 0; }
3668 #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 /* 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 /* No destructor defined for SEMI */
3684 break;
3685 case 276:
3686 #line 833 "parse.y"
3687 { yygotominor.yy19 = 0; }
3688 #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 /* 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 /* 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 /* 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 /* No destructor defined for FROM */
3718 break;
3719 case 281:
3720 #line 854 "parse.y"
3721 {yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); }
3722 #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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 /* 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 #line 3799 "parse.c"
3800 break;
3801 case 290:
3802 /* No destructor defined for DATABASE */
3803 break;
3804 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 /* No destructor defined for database_kw_opt */
3814 break;
3815 };
3816 yygoto = yyRuleInfo[yyruleno].lhs;
3817 yysize = yyRuleInfo[yyruleno].nrhs;
3818 yypParser->yyidx -= yysize;
3819 yyact = yy_find_reduce_action(yypParser,yygoto);
3820 if( yyact < YYNSTATE ){
3821 yy_shift(yypParser,yyact,yygoto,&yygotominor);
3822 }else if( yyact == YYNSTATE + YYNRULE + 1 ){
3823 yy_accept(yypParser);
3824 }
3825 }
3826
3827 /*
3828 ** The following code executes when the parse fails
3829 */
yy_parse_failed(yyParser * yypParser)3830 static void yy_parse_failed(
3831 yyParser *yypParser /* The parser */
3832 ){
3833 sqliteParserARG_FETCH;
3834 #ifndef NDEBUG
3835 if( yyTraceFILE ){
3836 fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3837 }
3838 #endif
3839 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3840 /* Here code is inserted which will be executed whenever the
3841 ** parser fails */
3842 sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3843 }
3844
3845 /*
3846 ** The following code executes when a syntax error first occurs.
3847 */
yy_syntax_error(yyParser * yypParser,int yymajor,YYMINORTYPE yyminor)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 ){
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 #line 3865 "parse.c"
3866 sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3867 }
3868
3869 /*
3870 ** The following is executed when the parser accepts
3871 */
yy_accept(yyParser * yypParser)3872 static void yy_accept(
3873 yyParser *yypParser /* The parser */
3874 ){
3875 sqliteParserARG_FETCH;
3876 #ifndef NDEBUG
3877 if( yyTraceFILE ){
3878 fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3879 }
3880 #endif
3881 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3882 /* Here code is inserted which will be executed whenever the
3883 ** parser accepts */
3884 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 ** <ul>
3897 ** <li> A pointer to the parser (an opaque structure.)
3898 ** <li> The major token number.
3899 ** <li> The minor token number.
3900 ** <li> An option argument of a grammar-specified type.
3901 ** </ul>
3902 **
3903 ** Outputs:
3904 ** None.
3905 */
sqliteParser(void * yyp,int yymajor,sqliteParserTOKENTYPE yyminor sqliteParserARG_PDECL)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 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 /* (re)initialize the parser, if necessary */
3919 yypParser = (yyParser*)yyp;
3920 if( yypParser->yyidx<0 ){
3921 if( yymajor==0 ) return;
3922 yypParser->yyidx = 0;
3923 yypParser->yyerrcnt = -1;
3924 yypParser->yystack[0].stateno = 0;
3925 yypParser->yystack[0].major = 0;
3926 }
3927 yyminorunion.yy0 = yyminor;
3928 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 do{
3938 yyact = yy_find_shift_action(yypParser,yymajor);
3939 if( yyact<YYNSTATE ){
3940 yy_shift(yypParser,yyact,yymajor,&yyminorunion);
3941 yypParser->yyerrcnt--;
3942 if( yyendofinput && yypParser->yyidx>=0 ){
3943 yymajor = 0;
3944 }else{
3945 yymajor = YYNOCODE;
3946 }
3947 }else if( yyact < YYNSTATE + YYNRULE ){
3948 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 */
3976 if( yypParser->yyerrcnt<0 ){
3977 yy_syntax_error(yypParser,yymajor,yyminorunion);
3978 }
3979 yymx = yypParser->yystack[yypParser->yyidx].major;
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 #endif
3987 yy_destructor(yymajor,&yyminorunion);
3988 yymajor = YYNOCODE;
3989 }else{
3990 while(
3991 yypParser->yyidx >= 0 &&
3992 yymx != YYERRORSYMBOL &&
3993 (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
3994 ){
3995 yy_pop_parser_stack(yypParser);
3996 }
3997 if( yypParser->yyidx < 0 || yymajor==0 ){
3998 yy_destructor(yymajor,&yyminorunion);
3999 yy_parse_failed(yypParser);
4000 yymajor = YYNOCODE;
4001 }else if( yymx!=YYERRORSYMBOL ){
4002 YYMINORTYPE u2;
4003 u2.YYERRSYMDT = 0;
4004 yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
4005 }
4006 }
4007 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 }else{
4030 yy_accept(yypParser);
4031 yymajor = YYNOCODE;
4032 }
4033 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
4034 return;
4035 }
4036