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