1 /* A Bison parser, made by GNU Bison 1.875. */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
20
21 /* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
26 /* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36 /* Identify Bison output. */
37 #define YYBISON 1
38
39 /* Skeleton name. */
40 #define YYSKELETON_NAME "yacc.c"
41
42 /* Pure parsers. */
43 #define YYPURE 1
44
45 /* Using locations. */
46 #define YYLSP_NEEDED 0
47
48
49
50 /* Tokens. */
51 #ifndef YYTOKENTYPE
52 # define YYTOKENTYPE
53 /* Put the tokens into the symbol table, so that GDB and other debuggers
54 know about them. */
55 enum yytokentype {
56 TOK_IDENT = 258,
57 TOK_ATIDENT = 259,
58 TOK_CONST_INT = 260,
59 TOK_CONST_FLOAT = 261,
60 TOK_CONST_MVA = 262,
61 TOK_QUOTED_STRING = 263,
62 TOK_USERVAR = 264,
63 TOK_SYSVAR = 265,
64 TOK_CONST_STRINGS = 266,
65 TOK_BAD_NUMERIC = 267,
66 TOK_AS = 268,
67 TOK_ASC = 269,
68 TOK_ATTACH = 270,
69 TOK_AVG = 271,
70 TOK_BEGIN = 272,
71 TOK_BETWEEN = 273,
72 TOK_BIGINT = 274,
73 TOK_BY = 275,
74 TOK_CALL = 276,
75 TOK_COLLATION = 277,
76 TOK_COMMIT = 278,
77 TOK_COMMITTED = 279,
78 TOK_COUNT = 280,
79 TOK_CREATE = 281,
80 TOK_DELETE = 282,
81 TOK_DESC = 283,
82 TOK_DESCRIBE = 284,
83 TOK_DISTINCT = 285,
84 TOK_DIV = 286,
85 TOK_DROP = 287,
86 TOK_FALSE = 288,
87 TOK_FLOAT = 289,
88 TOK_FLUSH = 290,
89 TOK_FROM = 291,
90 TOK_FUNCTION = 292,
91 TOK_GLOBAL = 293,
92 TOK_GROUP = 294,
93 TOK_ID = 295,
94 TOK_IN = 296,
95 TOK_INDEX = 297,
96 TOK_INSERT = 298,
97 TOK_INT = 299,
98 TOK_INTO = 300,
99 TOK_ISOLATION = 301,
100 TOK_LEVEL = 302,
101 TOK_LIMIT = 303,
102 TOK_MATCH = 304,
103 TOK_MAX = 305,
104 TOK_META = 306,
105 TOK_MIN = 307,
106 TOK_MOD = 308,
107 TOK_NAMES = 309,
108 TOK_NULL = 310,
109 TOK_OPTION = 311,
110 TOK_ORDER = 312,
111 TOK_RAND = 313,
112 TOK_READ = 314,
113 TOK_REPEATABLE = 315,
114 TOK_REPLACE = 316,
115 TOK_RETURNS = 317,
116 TOK_ROLLBACK = 318,
117 TOK_RTINDEX = 319,
118 TOK_SELECT = 320,
119 TOK_SERIALIZABLE = 321,
120 TOK_SET = 322,
121 TOK_SESSION = 323,
122 TOK_SHOW = 324,
123 TOK_SONAME = 325,
124 TOK_START = 326,
125 TOK_STATUS = 327,
126 TOK_SUM = 328,
127 TOK_TABLES = 329,
128 TOK_TO = 330,
129 TOK_TRANSACTION = 331,
130 TOK_TRUE = 332,
131 TOK_UNCOMMITTED = 333,
132 TOK_UPDATE = 334,
133 TOK_VALUES = 335,
134 TOK_VARIABLES = 336,
135 TOK_WARNINGS = 337,
136 TOK_WEIGHT = 338,
137 TOK_WHERE = 339,
138 TOK_WITHIN = 340,
139 TOK_OR = 341,
140 TOK_AND = 342,
141 TOK_NE = 343,
142 TOK_GTE = 344,
143 TOK_LTE = 345,
144 TOK_NOT = 346,
145 TOK_NEG = 347
146 };
147 #endif
148 #define TOK_IDENT 258
149 #define TOK_ATIDENT 259
150 #define TOK_CONST_INT 260
151 #define TOK_CONST_FLOAT 261
152 #define TOK_CONST_MVA 262
153 #define TOK_QUOTED_STRING 263
154 #define TOK_USERVAR 264
155 #define TOK_SYSVAR 265
156 #define TOK_CONST_STRINGS 266
157 #define TOK_BAD_NUMERIC 267
158 #define TOK_AS 268
159 #define TOK_ASC 269
160 #define TOK_ATTACH 270
161 #define TOK_AVG 271
162 #define TOK_BEGIN 272
163 #define TOK_BETWEEN 273
164 #define TOK_BIGINT 274
165 #define TOK_BY 275
166 #define TOK_CALL 276
167 #define TOK_COLLATION 277
168 #define TOK_COMMIT 278
169 #define TOK_COMMITTED 279
170 #define TOK_COUNT 280
171 #define TOK_CREATE 281
172 #define TOK_DELETE 282
173 #define TOK_DESC 283
174 #define TOK_DESCRIBE 284
175 #define TOK_DISTINCT 285
176 #define TOK_DIV 286
177 #define TOK_DROP 287
178 #define TOK_FALSE 288
179 #define TOK_FLOAT 289
180 #define TOK_FLUSH 290
181 #define TOK_FROM 291
182 #define TOK_FUNCTION 292
183 #define TOK_GLOBAL 293
184 #define TOK_GROUP 294
185 #define TOK_ID 295
186 #define TOK_IN 296
187 #define TOK_INDEX 297
188 #define TOK_INSERT 298
189 #define TOK_INT 299
190 #define TOK_INTO 300
191 #define TOK_ISOLATION 301
192 #define TOK_LEVEL 302
193 #define TOK_LIMIT 303
194 #define TOK_MATCH 304
195 #define TOK_MAX 305
196 #define TOK_META 306
197 #define TOK_MIN 307
198 #define TOK_MOD 308
199 #define TOK_NAMES 309
200 #define TOK_NULL 310
201 #define TOK_OPTION 311
202 #define TOK_ORDER 312
203 #define TOK_RAND 313
204 #define TOK_READ 314
205 #define TOK_REPEATABLE 315
206 #define TOK_REPLACE 316
207 #define TOK_RETURNS 317
208 #define TOK_ROLLBACK 318
209 #define TOK_RTINDEX 319
210 #define TOK_SELECT 320
211 #define TOK_SERIALIZABLE 321
212 #define TOK_SET 322
213 #define TOK_SESSION 323
214 #define TOK_SHOW 324
215 #define TOK_SONAME 325
216 #define TOK_START 326
217 #define TOK_STATUS 327
218 #define TOK_SUM 328
219 #define TOK_TABLES 329
220 #define TOK_TO 330
221 #define TOK_TRANSACTION 331
222 #define TOK_TRUE 332
223 #define TOK_UNCOMMITTED 333
224 #define TOK_UPDATE 334
225 #define TOK_VALUES 335
226 #define TOK_VARIABLES 336
227 #define TOK_WARNINGS 337
228 #define TOK_WEIGHT 338
229 #define TOK_WHERE 339
230 #define TOK_WITHIN 340
231 #define TOK_OR 341
232 #define TOK_AND 342
233 #define TOK_NE 343
234 #define TOK_GTE 344
235 #define TOK_LTE 345
236 #define TOK_NOT 346
237 #define TOK_NEG 347
238
239
240
241
242 /* Copy the first part of user declarations. */
243
244
245 #if USE_WINDOWS
246 #pragma warning(push,1)
247 #pragma warning(disable:4702) // unreachable code
248 #endif
249
250
251 // some helpers
252 #include <float.h> // for FLT_MAX
253
254
255
256 /* Enabling traces. */
257 #ifndef YYDEBUG
258 # define YYDEBUG 0
259 #endif
260
261 /* Enabling verbose error messages. */
262 #ifdef YYERROR_VERBOSE
263 # undef YYERROR_VERBOSE
264 # define YYERROR_VERBOSE 1
265 #else
266 # define YYERROR_VERBOSE 1
267 #endif
268
269 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
270 typedef int YYSTYPE;
271 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
272 # define YYSTYPE_IS_DECLARED 1
273 # define YYSTYPE_IS_TRIVIAL 1
274 #endif
275
276
277
278 /* Copy the second part of user declarations. */
279
280
281 /* Line 214 of yacc.c. */
282
283
284 #if ! defined (yyoverflow) || YYERROR_VERBOSE
285
286 /* The parser invokes alloca or malloc; define the necessary symbols. */
287
288 # if YYSTACK_USE_ALLOCA
289 # define YYSTACK_ALLOC alloca
290 # else
291 # ifndef YYSTACK_USE_ALLOCA
292 # if defined (alloca) || defined (_ALLOCA_H)
293 # define YYSTACK_ALLOC alloca
294 # else
295 # ifdef __GNUC__
296 # define YYSTACK_ALLOC __builtin_alloca
297 # endif
298 # endif
299 # endif
300 # endif
301
302 # ifdef YYSTACK_ALLOC
303 /* Pacify GCC's `empty if-body' warning. */
304 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
305 # else
306 # if defined (__STDC__) || defined (__cplusplus)
307 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
308 # define YYSIZE_T size_t
309 # endif
310 # define YYSTACK_ALLOC malloc
311 # define YYSTACK_FREE free
312 # endif
313 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
314
315
316 #if (! defined (yyoverflow) \
317 && (! defined (__cplusplus) \
318 || (YYSTYPE_IS_TRIVIAL)))
319
320 /* A type that is properly aligned for any stack member. */
321 union yyalloc
322 {
323 short yyss;
324 YYSTYPE yyvs;
325 };
326
327 /* The size of the maximum gap between one aligned stack and the next. */
328 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
329
330 /* The size of an array large to enough to hold all stacks, each with
331 N elements. */
332 # define YYSTACK_BYTES(N) \
333 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
334 + YYSTACK_GAP_MAXIMUM)
335
336 /* Copy COUNT objects from FROM to TO. The source and destination do
337 not overlap. */
338 # ifndef YYCOPY
339 # if 1 < __GNUC__
340 # define YYCOPY(To, From, Count) \
341 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
342 # else
343 # define YYCOPY(To, From, Count) \
344 do \
345 { \
346 register YYSIZE_T yyi; \
347 for (yyi = 0; yyi < (Count); yyi++) \
348 (To)[yyi] = (From)[yyi]; \
349 } \
350 while (0)
351 # endif
352 # endif
353
354 /* Relocate STACK from its old location to the new one. The
355 local variables YYSIZE and YYSTACKSIZE give the old and new number of
356 elements in the stack, and YYPTR gives the new location of the
357 stack. Advance YYPTR to a properly aligned location for the next
358 stack. */
359 # define YYSTACK_RELOCATE(Stack) \
360 do \
361 { \
362 YYSIZE_T yynewbytes; \
363 YYCOPY (&yyptr->Stack, Stack, yysize); \
364 Stack = &yyptr->Stack; \
365 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
366 yyptr += yynewbytes / sizeof (*yyptr); \
367 } \
368 while (0)
369
370 #endif
371
372 #if defined (__STDC__) || defined (__cplusplus)
373 typedef signed char yysigned_char;
374 #else
375 typedef short yysigned_char;
376 #endif
377
378 /* YYFINAL -- State number of the termination state. */
379 #define YYFINAL 92
380 /* YYLAST -- Last index in YYTABLE. */
381 #define YYLAST 807
382
383 /* YYNTOKENS -- Number of terminals. */
384 #define YYNTOKENS 107
385 /* YYNNTS -- Number of nonterminals. */
386 #define YYNNTS 89
387 /* YYNRULES -- Number of rules. */
388 #define YYNRULES 249
389 /* YYNRULES -- Number of states. */
390 #define YYNSTATES 461
391
392 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
393 #define YYUNDEFTOK 2
394 #define YYMAXUTOK 347
395
396 #define YYTRANSLATE(YYX) \
397 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
398
399 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
400 static const unsigned char yytranslate[] =
401 {
402 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
405 2, 2, 2, 2, 2, 2, 2, 100, 89, 2,
406 105, 106, 98, 96, 104, 97, 2, 99, 2, 2,
407 2, 2, 2, 2, 2, 2, 2, 2, 2, 103,
408 92, 90, 93, 2, 2, 2, 2, 2, 2, 2,
409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
414 2, 2, 2, 2, 88, 2, 2, 2, 2, 2,
415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
417 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
427 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
428 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
429 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
430 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
431 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
432 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
433 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
434 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
435 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
436 85, 86, 87, 91, 94, 95, 101, 102
437 };
438
439 #if YYDEBUG
440 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
441 YYRHS. */
442 static const unsigned short yyprhs[] =
443 {
444 0, 0, 3, 5, 7, 10, 12, 14, 16, 18,
445 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
446 40, 42, 44, 46, 50, 52, 54, 65, 67, 71,
447 73, 76, 77, 79, 82, 84, 89, 94, 99, 104,
448 109, 113, 119, 121, 125, 126, 128, 131, 133, 137,
449 141, 145, 149, 153, 157, 162, 166, 170, 176, 183,
450 187, 192, 198, 202, 206, 210, 214, 216, 222, 228,
451 234, 238, 242, 244, 246, 251, 255, 257, 259, 262,
452 264, 267, 269, 273, 274, 276, 280, 281, 283, 289,
453 290, 292, 296, 302, 304, 308, 310, 313, 316, 317,
454 319, 322, 327, 328, 330, 333, 335, 339, 343, 347,
455 353, 360, 364, 366, 370, 374, 376, 378, 380, 382,
456 384, 386, 389, 392, 396, 400, 404, 408, 412, 416,
457 420, 424, 428, 432, 436, 440, 444, 448, 452, 456,
458 460, 464, 466, 471, 476, 481, 485, 492, 499, 501,
459 505, 507, 509, 512, 514, 516, 518, 520, 522, 524,
460 526, 528, 530, 534, 539, 544, 549, 553, 558, 566,
461 572, 574, 576, 578, 580, 582, 584, 586, 588, 590,
462 593, 600, 602, 604, 605, 609, 611, 615, 617, 621,
463 625, 627, 631, 633, 635, 637, 641, 644, 652, 662,
464 669, 671, 675, 677, 681, 683, 687, 688, 691, 693,
465 697, 701, 702, 704, 706, 708, 711, 713, 715, 718,
466 724, 726, 730, 734, 738, 744, 749, 754, 755, 757,
467 760, 762, 766, 770, 773, 780, 781, 783, 785, 788,
468 791, 794, 796, 804, 806, 808, 810, 814, 821, 825
469 };
470
471 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
472 static const short yyrhs[] =
473 {
474 108, 0, -1, 109, -1, 110, -1, 110, 103, -1,
475 157, -1, 165, -1, 151, -1, 152, -1, 155, -1,
476 166, -1, 175, -1, 177, -1, 178, -1, 181, -1,
477 186, -1, 190, -1, 192, -1, 193, -1, 194, -1,
478 187, -1, 195, -1, 111, -1, 110, 103, 111, -1,
479 112, -1, 147, -1, 65, 113, 36, 117, 118, 127,
480 129, 131, 135, 137, -1, 114, -1, 113, 104, 114,
481 -1, 98, -1, 116, 115, -1, -1, 3, -1, 13,
482 3, -1, 143, -1, 16, 105, 143, 106, -1, 50,
483 105, 143, 106, -1, 52, 105, 143, 106, -1, 73,
484 105, 143, 106, -1, 25, 105, 98, 106, -1, 83,
485 105, 106, -1, 25, 105, 30, 3, 106, -1, 3,
486 -1, 117, 104, 3, -1, -1, 119, -1, 84, 120,
487 -1, 122, -1, 120, 87, 120, -1, 105, 120, 106,
488 -1, 123, 90, 125, -1, 123, 91, 125, -1, 123,
489 93, 125, -1, 123, 92, 125, -1, 49, 105, 8,
490 106, -1, 123, 90, 124, -1, 123, 91, 124, -1,
491 123, 41, 105, 126, 106, -1, 123, 101, 41, 105,
492 126, 106, -1, 123, 41, 9, -1, 123, 101, 41,
493 9, -1, 123, 18, 124, 87, 124, -1, 123, 93,
494 124, -1, 123, 92, 124, -1, 123, 94, 124, -1,
495 123, 95, 124, -1, 121, -1, 123, 18, 125, 87,
496 125, -1, 123, 18, 124, 87, 125, -1, 123, 18,
497 125, 87, 124, -1, 123, 94, 125, -1, 123, 95,
498 125, -1, 3, -1, 4, -1, 25, 105, 98, 106,
499 -1, 83, 105, 106, -1, 40, -1, 5, -1, 97,
500 5, -1, 6, -1, 97, 6, -1, 124, -1, 126,
501 104, 124, -1, -1, 128, -1, 39, 20, 123, -1,
502 -1, 130, -1, 85, 39, 57, 20, 133, -1, -1,
503 132, -1, 57, 20, 133, -1, 57, 20, 58, 105,
504 106, -1, 134, -1, 133, 104, 134, -1, 123, -1,
505 123, 14, -1, 123, 28, -1, -1, 136, -1, 48,
506 5, -1, 48, 5, 104, 5, -1, -1, 138, -1,
507 56, 139, -1, 140, -1, 139, 104, 140, -1, 3,
508 90, 3, -1, 3, 90, 5, -1, 3, 90, 105,
509 141, 106, -1, 3, 90, 3, 105, 8, 106, -1,
510 3, 90, 8, -1, 142, -1, 141, 104, 142, -1,
511 3, 90, 124, -1, 3, -1, 4, -1, 40, -1,
512 5, -1, 6, -1, 9, -1, 97, 143, -1, 101,
513 143, -1, 143, 96, 143, -1, 143, 97, 143, -1,
514 143, 98, 143, -1, 143, 99, 143, -1, 143, 92,
515 143, -1, 143, 93, 143, -1, 143, 89, 143, -1,
516 143, 88, 143, -1, 143, 100, 143, -1, 143, 31,
517 143, -1, 143, 53, 143, -1, 143, 95, 143, -1,
518 143, 94, 143, -1, 143, 90, 143, -1, 143, 91,
519 143, -1, 143, 87, 143, -1, 143, 86, 143, -1,
520 105, 143, 106, -1, 144, -1, 3, 105, 145, 106,
521 -1, 41, 105, 145, 106, -1, 19, 105, 145, 106,
522 -1, 3, 105, 106, -1, 52, 105, 143, 104, 143,
523 106, -1, 50, 105, 143, 104, 143, 106, -1, 146,
524 -1, 145, 104, 146, -1, 143, -1, 8, -1, 69,
525 148, -1, 82, -1, 72, -1, 51, -1, 3, -1,
526 55, -1, 8, -1, 5, -1, 6, -1, 149, -1,
527 150, 97, 149, -1, 67, 3, 90, 154, -1, 67,
528 3, 90, 153, -1, 67, 3, 90, 55, -1, 67,
529 54, 150, -1, 67, 10, 90, 150, -1, 67, 38,
530 9, 90, 105, 126, 106, -1, 67, 38, 3, 90,
531 153, -1, 3, -1, 8, -1, 77, -1, 33, -1,
532 124, -1, 23, -1, 63, -1, 156, -1, 17, -1,
533 71, 76, -1, 158, 45, 3, 159, 80, 161, -1,
534 43, -1, 61, -1, -1, 105, 160, 106, -1, 123,
535 -1, 160, 104, 123, -1, 162, -1, 161, 104, 162,
536 -1, 105, 163, 106, -1, 164, -1, 163, 104, 164,
537 -1, 124, -1, 125, -1, 8, -1, 105, 126, 106,
538 -1, 105, 106, -1, 27, 36, 3, 84, 40, 90,
539 124, -1, 27, 36, 3, 84, 40, 41, 105, 126,
540 106, -1, 21, 3, 105, 167, 170, 106, -1, 168,
541 -1, 167, 104, 168, -1, 164, -1, 105, 169, 106,
542 -1, 8, -1, 169, 104, 8, -1, -1, 104, 171,
543 -1, 172, -1, 171, 104, 172, -1, 164, 173, 174,
544 -1, -1, 13, -1, 3, -1, 48, -1, 176, 3,
545 -1, 29, -1, 28, -1, 69, 74, -1, 79, 117,
546 67, 179, 119, -1, 180, -1, 179, 104, 180, -1,
547 3, 90, 124, -1, 3, 90, 125, -1, 3, 90,
548 105, 126, 106, -1, 3, 90, 105, 106, -1, 69,
549 188, 81, 182, -1, -1, 183, -1, 84, 184, -1,
550 185, -1, 184, 86, 185, -1, 3, 90, 8, -1,
551 69, 22, -1, 67, 188, 76, 46, 47, 189, -1,
552 -1, 38, -1, 68, -1, 59, 78, -1, 59, 24,
553 -1, 60, 59, -1, 66, -1, 26, 37, 3, 62,
554 191, 70, 8, -1, 44, -1, 19, -1, 34, -1,
555 32, 37, 3, -1, 15, 42, 3, 75, 64, 3,
556 -1, 35, 64, 3, -1, 65, 10, 135, -1
557 };
558
559 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
560 static const unsigned short yyrline[] =
561 {
562 0, 121, 121, 122, 123, 127, 128, 129, 130, 131,
563 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
564 142, 143, 149, 150, 154, 155, 159, 174, 175, 179,
565 180, 183, 185, 186, 190, 191, 192, 193, 194, 195,
566 196, 197, 201, 202, 205, 207, 211, 215, 216, 217,
567 221, 222, 223, 224, 228, 233, 240, 248, 256, 265,
568 270, 275, 280, 285, 290, 295, 300, 305, 310, 315,
569 320, 325, 333, 334, 339, 345, 351, 360, 361, 372,
570 373, 377, 383, 389, 391, 395, 401, 403, 407, 413,
571 415, 419, 423, 430, 431, 435, 436, 437, 440, 442,
572 446, 451, 458, 460, 464, 468, 469, 473, 478, 483,
573 489, 494, 502, 507, 514, 524, 525, 526, 527, 528,
574 529, 530, 531, 532, 533, 534, 535, 536, 537, 538,
575 539, 540, 541, 542, 543, 544, 545, 546, 547, 548,
576 549, 550, 554, 555, 556, 557, 558, 559, 563, 564,
577 568, 569, 575, 579, 580, 581, 587, 588, 589, 590,
578 591, 595, 596, 600, 605, 610, 615, 616, 620, 625,
579 633, 634, 638, 639, 640, 654, 655, 656, 660, 661,
580 667, 675, 676, 679, 681, 685, 686, 690, 691, 695,
581 699, 700, 704, 705, 706, 707, 708, 714, 720, 732,
582 740, 744, 751, 752, 759, 769, 775, 777, 781, 786,
583 790, 797, 799, 803, 804, 810, 818, 819, 825, 831,
584 839, 840, 844, 848, 852, 856, 866, 872, 873, 877,
585 881, 882, 886, 890, 897, 903, 904, 905, 909, 910,
586 911, 912, 918, 929, 930, 931, 935, 946, 958, 969
587 };
588 #endif
589
590 #if YYDEBUG || YYERROR_VERBOSE
591 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
592 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
593 static const char *const yytname[] =
594 {
595 "$end", "error", "$undefined", "TOK_IDENT", "TOK_ATIDENT",
596 "TOK_CONST_INT", "TOK_CONST_FLOAT", "TOK_CONST_MVA",
597 "TOK_QUOTED_STRING", "TOK_USERVAR", "TOK_SYSVAR", "TOK_CONST_STRINGS",
598 "TOK_BAD_NUMERIC", "TOK_AS", "TOK_ASC", "TOK_ATTACH", "TOK_AVG",
599 "TOK_BEGIN", "TOK_BETWEEN", "TOK_BIGINT", "TOK_BY", "TOK_CALL",
600 "TOK_COLLATION", "TOK_COMMIT", "TOK_COMMITTED", "TOK_COUNT",
601 "TOK_CREATE", "TOK_DELETE", "TOK_DESC", "TOK_DESCRIBE", "TOK_DISTINCT",
602 "TOK_DIV", "TOK_DROP", "TOK_FALSE", "TOK_FLOAT", "TOK_FLUSH",
603 "TOK_FROM", "TOK_FUNCTION", "TOK_GLOBAL", "TOK_GROUP", "TOK_ID",
604 "TOK_IN", "TOK_INDEX", "TOK_INSERT", "TOK_INT", "TOK_INTO",
605 "TOK_ISOLATION", "TOK_LEVEL", "TOK_LIMIT", "TOK_MATCH", "TOK_MAX",
606 "TOK_META", "TOK_MIN", "TOK_MOD", "TOK_NAMES", "TOK_NULL", "TOK_OPTION",
607 "TOK_ORDER", "TOK_RAND", "TOK_READ", "TOK_REPEATABLE", "TOK_REPLACE",
608 "TOK_RETURNS", "TOK_ROLLBACK", "TOK_RTINDEX", "TOK_SELECT",
609 "TOK_SERIALIZABLE", "TOK_SET", "TOK_SESSION", "TOK_SHOW", "TOK_SONAME",
610 "TOK_START", "TOK_STATUS", "TOK_SUM", "TOK_TABLES", "TOK_TO",
611 "TOK_TRANSACTION", "TOK_TRUE", "TOK_UNCOMMITTED", "TOK_UPDATE",
612 "TOK_VALUES", "TOK_VARIABLES", "TOK_WARNINGS", "TOK_WEIGHT",
613 "TOK_WHERE", "TOK_WITHIN", "TOK_OR", "TOK_AND", "'|'", "'&'", "'='",
614 "TOK_NE", "'<'", "'>'", "TOK_GTE", "TOK_LTE", "'+'", "'-'", "'*'",
615 "'/'", "'%'", "TOK_NOT", "TOK_NEG", "';'", "','", "'('", "')'",
616 "$accept", "request", "statement", "multi_stmt_list", "multi_stmt",
617 "select_from", "select_items_list", "select_item", "opt_alias",
618 "select_expr", "ident_list", "opt_where_clause", "where_clause",
619 "where_expr", "expr_float_unhandled", "where_item", "expr_ident",
620 "const_int", "const_float", "const_list", "opt_group_clause",
621 "group_clause", "opt_group_order_clause", "group_order_clause",
622 "opt_order_clause", "order_clause", "order_items_list", "order_item",
623 "opt_limit_clause", "limit_clause", "opt_option_clause",
624 "option_clause", "option_list", "option_item", "named_const_list",
625 "named_const", "expr", "function", "arglist", "arg", "show_stmt",
626 "show_what", "simple_set_value", "set_value", "set_stmt",
627 "set_global_stmt", "set_string_value", "boolean_value", "transact_op",
628 "start_transaction", "insert_into", "insert_or_replace",
629 "opt_column_list", "column_list", "insert_rows_list", "insert_row",
630 "insert_vals_list", "insert_val", "delete_from", "call_proc",
631 "call_args_list", "call_arg", "const_string_list", "opt_call_opts_list",
632 "call_opts_list", "call_opt", "opt_as", "call_opt_name", "describe",
633 "describe_tok", "show_tables", "update", "update_items_list",
634 "update_item", "show_variables", "opt_show_variables_where",
635 "show_variables_where", "show_variables_where_list",
636 "show_variables_where_entry", "show_collation", "set_transaction",
637 "opt_scope", "isolation_level", "create_function", "udf_type",
638 "drop_function", "attach_index", "flush_rtindex", "select_sysvar", 0
639 };
640 #endif
641
642 # ifdef YYPRINT
643 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
644 token YYLEX-NUM. */
645 static const unsigned short yytoknum[] =
646 {
647 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
648 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
649 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
650 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
651 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
652 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
653 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
654 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
655 335, 336, 337, 338, 339, 340, 341, 342, 124, 38,
656 61, 343, 60, 62, 344, 345, 43, 45, 42, 47,
657 37, 346, 347, 59, 44, 40, 41
658 };
659 # endif
660
661 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
662 static const unsigned char yyr1[] =
663 {
664 0, 107, 108, 108, 108, 109, 109, 109, 109, 109,
665 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
666 109, 109, 110, 110, 111, 111, 112, 113, 113, 114,
667 114, 115, 115, 115, 116, 116, 116, 116, 116, 116,
668 116, 116, 117, 117, 118, 118, 119, 120, 120, 120,
669 121, 121, 121, 121, 122, 122, 122, 122, 122, 122,
670 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
671 122, 122, 123, 123, 123, 123, 123, 124, 124, 125,
672 125, 126, 126, 127, 127, 128, 129, 129, 130, 131,
673 131, 132, 132, 133, 133, 134, 134, 134, 135, 135,
674 136, 136, 137, 137, 138, 139, 139, 140, 140, 140,
675 140, 140, 141, 141, 142, 143, 143, 143, 143, 143,
676 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
677 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
678 143, 143, 144, 144, 144, 144, 144, 144, 145, 145,
679 146, 146, 147, 148, 148, 148, 149, 149, 149, 149,
680 149, 150, 150, 151, 151, 151, 151, 151, 152, 152,
681 153, 153, 154, 154, 154, 155, 155, 155, 156, 156,
682 157, 158, 158, 159, 159, 160, 160, 161, 161, 162,
683 163, 163, 164, 164, 164, 164, 164, 165, 165, 166,
684 167, 167, 168, 168, 169, 169, 170, 170, 171, 171,
685 172, 173, 173, 174, 174, 175, 176, 176, 177, 178,
686 179, 179, 180, 180, 180, 180, 181, 182, 182, 183,
687 184, 184, 185, 186, 187, 188, 188, 188, 189, 189,
688 189, 189, 190, 191, 191, 191, 192, 193, 194, 195
689 };
690
691 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
692 static const unsigned char yyr2[] =
693 {
694 0, 2, 1, 1, 2, 1, 1, 1, 1, 1,
695 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
696 1, 1, 1, 3, 1, 1, 10, 1, 3, 1,
697 2, 0, 1, 2, 1, 4, 4, 4, 4, 4,
698 3, 5, 1, 3, 0, 1, 2, 1, 3, 3,
699 3, 3, 3, 3, 4, 3, 3, 5, 6, 3,
700 4, 5, 3, 3, 3, 3, 1, 5, 5, 5,
701 3, 3, 1, 1, 4, 3, 1, 1, 2, 1,
702 2, 1, 3, 0, 1, 3, 0, 1, 5, 0,
703 1, 3, 5, 1, 3, 1, 2, 2, 0, 1,
704 2, 4, 0, 1, 2, 1, 3, 3, 3, 5,
705 6, 3, 1, 3, 3, 1, 1, 1, 1, 1,
706 1, 2, 2, 3, 3, 3, 3, 3, 3, 3,
707 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
708 3, 1, 4, 4, 4, 3, 6, 6, 1, 3,
709 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
710 1, 1, 3, 4, 4, 4, 3, 4, 7, 5,
711 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
712 6, 1, 1, 0, 3, 1, 3, 1, 3, 3,
713 1, 3, 1, 1, 1, 3, 2, 7, 9, 6,
714 1, 3, 1, 3, 1, 3, 0, 2, 1, 3,
715 3, 0, 1, 1, 1, 2, 1, 1, 2, 5,
716 1, 3, 3, 3, 5, 4, 4, 0, 1, 2,
717 1, 3, 3, 2, 6, 0, 1, 1, 2, 2,
718 2, 1, 7, 1, 1, 1, 3, 6, 3, 3
719 };
720
721 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
722 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
723 means the default is an error. */
724 static const unsigned char yydefact[] =
725 {
726 0, 0, 178, 0, 175, 0, 0, 217, 216, 0,
727 0, 181, 182, 176, 0, 235, 235, 0, 0, 0,
728 2, 3, 22, 24, 25, 7, 8, 9, 177, 5,
729 0, 6, 10, 11, 0, 12, 13, 14, 15, 20,
730 16, 17, 18, 19, 21, 0, 0, 0, 0, 0,
731 0, 115, 116, 118, 119, 120, 98, 0, 0, 0,
732 117, 0, 0, 0, 0, 0, 0, 29, 0, 0,
733 0, 27, 31, 34, 141, 0, 0, 236, 0, 237,
734 0, 233, 236, 155, 154, 218, 153, 152, 0, 179,
735 42, 0, 1, 4, 0, 215, 0, 0, 0, 0,
736 246, 248, 0, 0, 249, 99, 0, 0, 0, 0,
737 0, 0, 0, 0, 0, 0, 121, 122, 0, 0,
738 0, 32, 0, 30, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
740 0, 0, 0, 0, 0, 156, 159, 160, 158, 157,
741 161, 166, 0, 227, 0, 0, 0, 0, 23, 183,
742 0, 77, 79, 194, 0, 0, 192, 193, 202, 206,
743 200, 0, 0, 151, 145, 150, 0, 148, 100, 0,
744 0, 0, 0, 0, 0, 0, 0, 40, 0, 0,
745 140, 44, 28, 33, 132, 133, 139, 138, 130, 129,
746 136, 137, 127, 128, 135, 134, 123, 124, 125, 126,
747 131, 170, 171, 173, 165, 172, 0, 174, 164, 163,
748 167, 0, 0, 0, 0, 0, 226, 228, 0, 0,
749 220, 43, 0, 0, 0, 78, 80, 204, 196, 81,
750 0, 0, 0, 0, 244, 245, 243, 0, 0, 0,
751 142, 0, 35, 144, 0, 39, 143, 0, 36, 0,
752 37, 38, 0, 0, 0, 83, 45, 169, 0, 162,
753 0, 0, 229, 230, 0, 0, 219, 72, 73, 0,
754 76, 0, 185, 0, 0, 247, 0, 195, 0, 203,
755 202, 201, 207, 208, 199, 0, 0, 0, 149, 101,
756 41, 0, 0, 0, 0, 46, 66, 47, 0, 0,
757 86, 84, 0, 0, 0, 241, 234, 0, 0, 0,
758 222, 223, 221, 0, 0, 0, 184, 0, 180, 187,
759 82, 205, 212, 0, 0, 242, 0, 197, 147, 146,
760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 0, 89, 87, 168, 239, 238, 240,
762 232, 231, 225, 0, 0, 75, 186, 0, 0, 190,
763 0, 213, 214, 210, 211, 209, 0, 0, 49, 48,
764 0, 0, 59, 0, 55, 50, 56, 51, 63, 53,
765 62, 52, 64, 70, 65, 71, 0, 85, 0, 0,
766 98, 90, 224, 74, 0, 189, 188, 198, 54, 0,
767 0, 0, 60, 0, 0, 0, 102, 191, 61, 68,
768 69, 67, 57, 0, 0, 0, 95, 91, 93, 0,
769 26, 103, 58, 88, 0, 96, 97, 0, 0, 104,
770 105, 92, 94, 0, 0, 107, 108, 111, 0, 106,
771 0, 0, 0, 112, 0, 0, 0, 109, 110, 114,
772 113
773 };
774
775 /* YYDEFGOTO[NTERM-NUM]. */
776 static const short yydefgoto[] =
777 {
778 -1, 19, 20, 21, 22, 23, 70, 71, 123, 72,
779 91, 265, 266, 305, 306, 307, 308, 239, 167, 240,
780 310, 311, 354, 355, 400, 401, 427, 428, 104, 105,
781 430, 431, 439, 440, 452, 453, 175, 74, 176, 177,
782 24, 87, 150, 151, 25, 26, 218, 219, 27, 28,
783 29, 30, 233, 283, 328, 329, 368, 168, 31, 32,
784 169, 170, 241, 243, 292, 293, 333, 373, 33, 34,
785 35, 36, 229, 230, 37, 226, 227, 272, 273, 38,
786 39, 80, 316, 40, 247, 41, 42, 43, 44
787 };
788
789 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
790 STATE-NUM. */
791 #define YYPACT_NINF -276
792 static const short yypact[] =
793 {
794 728, -11, -276, 53, -276, 35, 79, -276, -276, 125,
795 25, -276, -276, -276, 188, 173, 13, 85, 170, 174,
796 -276, 92, -276, -276, -276, -276, -276, -276, -276, -276,
797 164, -276, -276, -276, 218, -276, -276, -276, -276, -276,
798 -276, -276, -276, -276, -276, 219, 121, 233, 239, 244,
799 266, 178, -276, -276, -276, -276, 227, 179, 182, 186,
800 -276, 187, 203, 204, 205, 206, 320, -276, 320, 320,
801 -30, -276, 40, 545, -276, 224, 225, 93, 33, -276,
802 255, -276, -276, -276, -276, -276, -276, -276, 249, -276,
803 -276, -34, -276, 87, 317, -276, 258, 15, 273, 252,
804 -276, -276, 138, 333, -276, -276, 320, 313, -8, 313,
805 320, 320, 320, 251, 257, 259, -276, -276, 373, 170,
806 254, -276, 363, -276, 320, 320, 320, 320, 320, 320,
807 320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
808 320, 200, 33, 277, 278, -276, -276, -276, -276, -276,
809 -276, 272, 325, 289, 371, 372, 254, 124, -276, 271,
810 321, -276, -276, -276, 42, 0, -276, -276, -276, 280,
811 -276, 136, 346, -276, -276, 545, 65, -276, 283, 400,
812 78, 403, 302, 108, 303, 352, 423, -276, 320, 320,
813 -276, -54, -276, -276, -276, -276, 568, 594, 617, 250,
814 642, 642, 119, 119, 119, 119, -16, -16, -276, -276,
815 -276, -276, -276, -276, -276, -276, 406, -276, -276, -276,
816 272, 97, 307, 33, 366, 412, -276, -276, 326, -52,
817 -276, -276, 21, 339, 417, -276, -276, -276, -276, -276,
818 128, 158, 15, 316, -276, -276, -276, 353, 1, 313,
819 -276, 419, -276, -276, 322, -276, -276, 320, -276, 320,
820 -276, -276, 497, 520, 9, 388, -276, -276, 2, -276,
821 165, 340, 343, -276, 63, 371, -276, -276, -276, 327,
822 -276, 328, -276, 161, 329, -276, 2, -276, 427, -276,
823 151, -276, 332, -276, -276, 429, 350, 2, -276, -276,
824 -276, 449, 472, 369, 9, 370, -276, -276, 287, 455,
825 392, -276, 168, 16, 422, -276, -276, 470, 412, 4,
826 -276, -276, -276, 384, 377, 21, -276, 54, 380, -276,
827 -276, -276, -276, 7, 54, -276, 2, -276, -276, -276,
828 477, -61, 9, 22, -7, 22, 22, 22, 22, 22,
829 22, 460, 21, 465, 448, -276, -276, -276, -276, -276,
830 -276, -276, -276, 172, 401, -276, -276, 52, 176, -276,
831 329, -276, -276, -276, 495, -276, 184, 418, -276, -276,
832 439, 440, -276, 2, -276, -276, -276, -276, -276, -276,
833 -276, -276, -276, -276, -276, -276, 8, -276, 473, 511,
834 227, -276, -276, -276, 54, -276, -276, -276, -276, 22,
835 22, 192, -276, 2, 512, 162, 478, -276, -276, -276,
836 -276, -276, -276, 195, 21, 428, 153, 450, -276, 549,
837 -276, -276, -276, 450, 447, -276, -276, 21, 466, 453,
838 -276, -276, -276, 11, 549, 469, -276, -276, 572, -276,
839 569, 489, 196, -276, 474, 2, 572, -276, -276, -276,
840 -276
841 };
842
843 /* YYPGOTO[NTERM-NUM]. */
844 static const short yypgoto[] =
845 {
846 -276, -276, -276, -276, 488, -276, -276, 462, -276, -276,
847 481, -276, 374, -275, -276, -276, -214, -97, -270, -265,
848 -276, -276, -276, -276, -276, -276, 180, 185, 202, -276,
849 -276, -276, -276, 183, -276, 149, -3, -276, 159, 379,
850 -276, -276, 407, 484, -276, -276, 402, -276, -276, -276,
851 -276, -276, -276, -276, -276, 276, -276, -241, -276, -276,
852 -276, 387, -276, -276, -276, 315, -276, -276, -276, -276,
853 -276, -276, -276, 375, -276, -276, -276, -276, 334, -276,
854 -276, 635, -276, -276, -276, -276, -276, -276, -276
855 };
856
857 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
858 positive, shift that token. If negative, reduce the rule which
859 number is the opposite. If zero, do what YYDEFACT says.
860 If YYTABLE_NINF, syntax error. */
861 #define YYTABLE_NINF -212
862 static const short yytable[] =
863 {
864 166, 290, 382, 312, 321, 161, 119, 161, 237, 161,
865 371, 73, 277, 278, 445, 124, 446, 412, 282, 447,
866 161, 162, 181, 163, 277, 278, 342, 161, 162, 341,
867 264, 45, 264, 154, 279, 81, 145, 125, 146, 147,
868 357, 148, 296, 121, 217, 378, 279, 235, 236, 280,
869 155, 82, 275, 122, 363, 372, 46, 161, 303, 161,
870 162, 280, 163, 116, 83, 117, 118, 379, 161, 162,
871 155, 376, 47, 381, 120, 385, 387, 389, 391, 393,
872 395, 79, 138, 139, 140, 84, 369, 85, 149, 50,
873 182, 297, 281, 374, 358, 86, 143, 216, 383, 216,
874 211, 216, 144, 179, 281, 212, 238, 184, 185, 186,
875 362, 366, 164, 413, 304, 48, 448, 73, 411, 164,
876 165, 194, 195, 196, 197, 198, 199, 200, 201, 202,
877 203, 204, 205, 206, 207, 208, 209, 210, 397, 419,
878 421, 51, 52, 53, 54, 166, 173, 55, 423, 216,
879 124, 164, 156, 73, -211, 244, 157, 58, 238, 367,
880 164, 89, 49, 417, 332, 277, 278, 435, 319, 249,
881 245, 250, 125, 90, 92, 83, 75, 320, 60, 61,
882 246, 436, 249, 76, 253, 262, 263, 279, 114, 330,
883 115, 51, 52, 53, 54, 93, 84, 55, 56, -211,
884 337, 426, 280, 211, 57, 161, 86, 58, 212, 94,
885 426, 77, 249, 59, 256, 136, 137, 138, 139, 140,
886 425, 95, 96, 426, 313, 314, 97, 78, 60, 61,
887 166, 315, 286, 213, 287, 66, 98, 166, 62, 68,
888 63, 79, 99, 69, 174, 281, 380, 100, 384, 386,
889 388, 390, 392, 394, 301, 214, 302, 51, 52, 53,
890 54, 64, 288, 55, 289, 325, 180, 326, 183, 101,
891 57, 65, 286, 58, 356, 103, 286, 215, 402, 59,
892 404, 124, 405, 102, 106, 66, 67, 107, 286, 68,
893 407, 108, 109, 69, 60, 61, 286, 216, 422, 286,
894 456, 432, 457, 125, 62, 343, 63, 166, 110, 111,
895 112, 113, 418, 420, 141, 142, 51, 52, 53, 54,
896 159, 173, 55, 51, 52, 53, 54, 64, 344, 55,
897 153, 152, 58, 160, 124, 171, 172, 65, 178, 58,
898 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
899 140, 66, 67, 60, 61, 68, 125, 187, 459, 69,
900 60, 61, 188, 114, 189, 115, 193, 221, 222, 223,
901 114, 224, 115, 225, 228, 231, 232, 345, 346, 347,
902 348, 349, 350, 124, 242, 234, 248, 251, 351, 126,
903 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
904 137, 138, 139, 140, 124, 125, 254, 257, 255, 258,
905 66, 235, 268, 270, 68, 271, 274, 66, 69, 284,
906 285, 68, 294, 295, 299, 69, 125, 309, 300, 318,
907 317, 124, 323, 324, 327, 331, 334, 335, 126, 127,
908 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
909 138, 139, 140, 125, 124, 336, 259, 342, 260, 126,
910 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
911 137, 138, 139, 140, 340, 352, 125, 353, 360, 190,
912 124, 359, 364, 365, 370, 377, 126, 127, 128, 129,
913 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
914 140, 396, 125, 124, 398, 399, 252, 403, 332, 126,
915 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
916 137, 138, 139, 140, 408, 125, 409, 410, 124, 261,
917 414, 415, 424, 434, 429, 126, 127, 128, 129, 130,
918 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
919 125, 124, 438, 441, 437, 338, 443, 444, 126, 127,
920 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
921 138, 139, 140, 125, 450, 451, 124, 454, 339, 455,
922 458, 158, 192, 126, 127, 128, 129, 130, 131, 132,
923 133, 134, 135, 136, 137, 138, 139, 140, 125, 124,
924 191, 257, 416, 276, 433, 460, 126, 127, 128, 129,
925 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
926 140, 125, 442, 267, 259, 124, 220, 449, 298, 291,
927 269, 126, 127, 128, 129, 130, 131, 132, 133, 134,
928 135, 136, 137, 138, 139, 140, 406, 125, 124, 375,
929 322, 88, 361, 0, 0, 127, 128, 129, 130, 131,
930 132, 133, 134, 135, 136, 137, 138, 139, 140, 0,
931 125, 0, 0, 124, 0, 0, 0, 0, 0, 0,
932 0, 0, 128, 129, 130, 131, 132, 133, 134, 135,
933 136, 137, 138, 139, 140, 125, 0, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 129, 130, 131, 132,
935 133, 134, 135, 136, 137, 138, 139, 140, 0, 0,
936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
937 0, 0, 0, 0, 132, 133, 134, 135, 136, 137,
938 138, 139, 140, 1, 0, 2, 0, 0, 0, 3,
939 0, 4, 0, 0, 5, 6, 7, 8, 0, 0,
940 9, 0, 0, 10, 0, 0, 0, 0, 0, 0,
941 0, 11, 0, 0, 0, 0, 0, 0, 0, 0,
942 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
943 0, 13, 0, 14, 0, 15, 0, 16, 0, 17,
944 0, 0, 0, 0, 0, 0, 0, 18
945 };
946
947 static const short yycheck[] =
948 {
949 97, 242, 9, 268, 274, 5, 36, 5, 8, 5,
950 3, 14, 3, 4, 3, 31, 5, 9, 232, 8,
951 5, 6, 30, 8, 3, 4, 87, 5, 6, 304,
952 84, 42, 84, 67, 25, 22, 3, 53, 5, 6,
953 24, 8, 41, 3, 141, 106, 25, 5, 6, 40,
954 104, 38, 104, 13, 319, 48, 3, 5, 49, 5,
955 6, 40, 8, 66, 51, 68, 69, 342, 5, 6,
956 104, 336, 37, 343, 104, 345, 346, 347, 348, 349,
957 350, 68, 98, 99, 100, 72, 327, 74, 55, 64,
958 98, 90, 83, 334, 78, 82, 3, 97, 105, 97,
959 3, 97, 9, 106, 83, 8, 106, 110, 111, 112,
960 106, 325, 97, 105, 105, 36, 105, 120, 383, 97,
961 105, 124, 125, 126, 127, 128, 129, 130, 131, 132,
962 133, 134, 135, 136, 137, 138, 139, 140, 352, 409,
963 410, 3, 4, 5, 6, 242, 8, 9, 413, 97,
964 31, 97, 65, 156, 3, 19, 69, 19, 106, 105,
965 97, 76, 37, 404, 13, 3, 4, 14, 105, 104,
966 34, 106, 53, 3, 0, 51, 3, 274, 40, 41,
967 44, 28, 104, 10, 106, 188, 189, 25, 50, 286,
968 52, 3, 4, 5, 6, 103, 72, 9, 10, 48,
969 297, 415, 40, 3, 16, 5, 82, 19, 8, 45,
970 424, 38, 104, 25, 106, 96, 97, 98, 99, 100,
971 58, 3, 3, 437, 59, 60, 105, 54, 40, 41,
972 327, 66, 104, 33, 106, 97, 3, 334, 50, 101,
973 52, 68, 3, 105, 106, 83, 343, 3, 345, 346,
974 347, 348, 349, 350, 257, 55, 259, 3, 4, 5,
975 6, 73, 104, 9, 106, 104, 107, 106, 109, 3,
976 16, 83, 104, 19, 106, 48, 104, 77, 106, 25,
977 104, 31, 106, 105, 105, 97, 98, 105, 104, 101,
978 106, 105, 105, 105, 40, 41, 104, 97, 106, 104,
979 104, 106, 106, 53, 50, 18, 52, 404, 105, 105,
980 105, 105, 409, 410, 90, 90, 3, 4, 5, 6,
981 3, 8, 9, 3, 4, 5, 6, 73, 41, 9,
982 81, 76, 19, 75, 31, 62, 84, 83, 5, 19,
983 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
984 100, 97, 98, 40, 41, 101, 53, 106, 455, 105,
985 40, 41, 105, 50, 105, 52, 3, 90, 90, 97,
986 50, 46, 52, 84, 3, 3, 105, 90, 91, 92,
987 93, 94, 95, 31, 104, 64, 40, 104, 101, 86,
988 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
989 97, 98, 99, 100, 31, 53, 3, 104, 106, 106,
990 97, 5, 105, 47, 101, 3, 90, 97, 105, 80,
991 3, 101, 106, 70, 5, 105, 53, 39, 106, 86,
992 90, 31, 105, 105, 105, 8, 104, 8, 86, 87,
993 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
994 98, 99, 100, 53, 31, 105, 104, 87, 106, 86,
995 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
996 97, 98, 99, 100, 105, 20, 53, 85, 8, 106,
997 31, 59, 98, 106, 104, 8, 86, 87, 88, 89,
998 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
999 100, 41, 53, 31, 39, 57, 106, 106, 13, 86,
1000 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1001 97, 98, 99, 100, 106, 53, 87, 87, 31, 106,
1002 57, 20, 20, 105, 56, 86, 87, 88, 89, 90,
1003 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1004 53, 31, 3, 106, 104, 106, 90, 104, 86, 87,
1005 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1006 98, 99, 100, 53, 105, 3, 31, 8, 106, 90,
1007 106, 93, 120, 86, 87, 88, 89, 90, 91, 92,
1008 93, 94, 95, 96, 97, 98, 99, 100, 53, 31,
1009 119, 104, 400, 229, 424, 456, 86, 87, 88, 89,
1010 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1011 100, 53, 437, 221, 104, 31, 142, 444, 249, 242,
1012 223, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1013 95, 96, 97, 98, 99, 100, 370, 53, 31, 334,
1014 275, 16, 318, -1, -1, 87, 88, 89, 90, 91,
1015 92, 93, 94, 95, 96, 97, 98, 99, 100, -1,
1016 53, -1, -1, 31, -1, -1, -1, -1, -1, -1,
1017 -1, -1, 88, 89, 90, 91, 92, 93, 94, 95,
1018 96, 97, 98, 99, 100, 53, -1, -1, -1, -1,
1019 -1, -1, -1, -1, -1, -1, 89, 90, 91, 92,
1020 93, 94, 95, 96, 97, 98, 99, 100, -1, -1,
1021 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1022 -1, -1, -1, -1, 92, 93, 94, 95, 96, 97,
1023 98, 99, 100, 15, -1, 17, -1, -1, -1, 21,
1024 -1, 23, -1, -1, 26, 27, 28, 29, -1, -1,
1025 32, -1, -1, 35, -1, -1, -1, -1, -1, -1,
1026 -1, 43, -1, -1, -1, -1, -1, -1, -1, -1,
1027 -1, -1, -1, -1, -1, -1, -1, -1, -1, 61,
1028 -1, 63, -1, 65, -1, 67, -1, 69, -1, 71,
1029 -1, -1, -1, -1, -1, -1, -1, 79
1030 };
1031
1032 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1033 symbol of state STATE-NUM. */
1034 static const unsigned char yystos[] =
1035 {
1036 0, 15, 17, 21, 23, 26, 27, 28, 29, 32,
1037 35, 43, 61, 63, 65, 67, 69, 71, 79, 108,
1038 109, 110, 111, 112, 147, 151, 152, 155, 156, 157,
1039 158, 165, 166, 175, 176, 177, 178, 181, 186, 187,
1040 190, 192, 193, 194, 195, 42, 3, 37, 36, 37,
1041 64, 3, 4, 5, 6, 9, 10, 16, 19, 25,
1042 40, 41, 50, 52, 73, 83, 97, 98, 101, 105,
1043 113, 114, 116, 143, 144, 3, 10, 38, 54, 68,
1044 188, 22, 38, 51, 72, 74, 82, 148, 188, 76,
1045 3, 117, 0, 103, 45, 3, 3, 105, 3, 3,
1046 3, 3, 105, 48, 135, 136, 105, 105, 105, 105,
1047 105, 105, 105, 105, 50, 52, 143, 143, 143, 36,
1048 104, 3, 13, 115, 31, 53, 86, 87, 88, 89,
1049 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1050 100, 90, 90, 3, 9, 3, 5, 6, 8, 55,
1051 149, 150, 76, 81, 67, 104, 65, 69, 111, 3,
1052 75, 5, 6, 8, 97, 105, 124, 125, 164, 167,
1053 168, 62, 84, 8, 106, 143, 145, 146, 5, 143,
1054 145, 30, 98, 145, 143, 143, 143, 106, 105, 105,
1055 106, 117, 114, 3, 143, 143, 143, 143, 143, 143,
1056 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1057 143, 3, 8, 33, 55, 77, 97, 124, 153, 154,
1058 150, 90, 90, 97, 46, 84, 182, 183, 3, 179,
1059 180, 3, 105, 159, 64, 5, 6, 8, 106, 124,
1060 126, 169, 104, 170, 19, 34, 44, 191, 40, 104,
1061 106, 104, 106, 106, 3, 106, 106, 104, 106, 104,
1062 106, 106, 143, 143, 84, 118, 119, 153, 105, 149,
1063 47, 3, 184, 185, 90, 104, 119, 3, 4, 25,
1064 40, 83, 123, 160, 80, 3, 104, 106, 104, 106,
1065 164, 168, 171, 172, 106, 70, 41, 90, 146, 5,
1066 106, 143, 143, 49, 105, 120, 121, 122, 123, 39,
1067 127, 128, 126, 59, 60, 66, 189, 90, 86, 105,
1068 124, 125, 180, 105, 105, 104, 106, 105, 161, 162,
1069 124, 8, 13, 173, 104, 8, 105, 124, 106, 106,
1070 105, 120, 87, 18, 41, 90, 91, 92, 93, 94,
1071 95, 101, 20, 85, 129, 130, 106, 24, 78, 59,
1072 8, 185, 106, 126, 98, 106, 123, 105, 163, 164,
1073 104, 3, 48, 174, 164, 172, 126, 8, 106, 120,
1074 124, 125, 9, 105, 124, 125, 124, 125, 124, 125,
1075 124, 125, 124, 125, 124, 125, 41, 123, 39, 57,
1076 131, 132, 106, 106, 104, 106, 162, 106, 106, 87,
1077 87, 126, 9, 105, 57, 20, 135, 164, 124, 125,
1078 124, 125, 106, 126, 20, 58, 123, 133, 134, 56,
1079 137, 138, 106, 133, 105, 14, 28, 104, 3, 139,
1080 140, 106, 134, 90, 104, 3, 5, 8, 105, 140,
1081 105, 3, 141, 142, 8, 90, 104, 106, 106, 124,
1082 142
1083 };
1084
1085 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1086 # define YYSIZE_T __SIZE_TYPE__
1087 #endif
1088 #if ! defined (YYSIZE_T) && defined (size_t)
1089 # define YYSIZE_T size_t
1090 #endif
1091 #if ! defined (YYSIZE_T)
1092 # if defined (__STDC__) || defined (__cplusplus)
1093 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1094 # define YYSIZE_T size_t
1095 # endif
1096 #endif
1097 #if ! defined (YYSIZE_T)
1098 # define YYSIZE_T unsigned int
1099 #endif
1100
1101 #define yyerrok (yyerrstatus = 0)
1102 #define yyclearin (yychar = YYEMPTY)
1103 #define YYEMPTY (-2)
1104 #define YYEOF 0
1105
1106 #define YYACCEPT goto yyacceptlab
1107 #define YYABORT goto yyabortlab
1108 #define YYERROR goto yyerrlab1
1109
1110 /* Like YYERROR except do call yyerror. This remains here temporarily
1111 to ease the transition to the new meaning of YYERROR, for GCC.
1112 Once GCC version 2 has supplanted version 1, this can go. */
1113
1114 #define YYFAIL goto yyerrlab
1115
1116 #define YYRECOVERING() (!!yyerrstatus)
1117
1118 #define YYBACKUP(Token, Value) \
1119 do \
1120 if (yychar == YYEMPTY && yylen == 1) \
1121 { \
1122 yychar = (Token); \
1123 yylval = (Value); \
1124 yytoken = YYTRANSLATE (yychar); \
1125 YYPOPSTACK; \
1126 goto yybackup; \
1127 } \
1128 else \
1129 { \
1130 yyerror (pParser, "syntax error: cannot back up");\
1131 YYERROR; \
1132 } \
1133 while (0)
1134
1135 #define YYTERROR 1
1136 #define YYERRCODE 256
1137
1138 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
1139 are run). */
1140
1141 #ifndef YYLLOC_DEFAULT
1142 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1143 Current.first_line = Rhs[1].first_line; \
1144 Current.first_column = Rhs[1].first_column; \
1145 Current.last_line = Rhs[N].last_line; \
1146 Current.last_column = Rhs[N].last_column;
1147 #endif
1148
1149 /* YYLEX -- calling `yylex' with the right arguments. */
1150
1151 #ifdef YYLEX_PARAM
1152 # define YYLEX yylex (&yylval, YYLEX_PARAM)
1153 #else
1154 # define YYLEX yylex (&yylval, pParser)
1155 #endif
1156
1157 /* Enable debugging if requested. */
1158 #if YYDEBUG
1159
1160 # ifndef YYFPRINTF
1161 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1162 # define YYFPRINTF fprintf
1163 # endif
1164
1165 # define YYDPRINTF(Args) \
1166 do { \
1167 if (yydebug) \
1168 YYFPRINTF Args; \
1169 } while (0)
1170
1171 # define YYDSYMPRINT(Args) \
1172 do { \
1173 if (yydebug) \
1174 yysymprint Args; \
1175 } while (0)
1176
1177 # define YYDSYMPRINTF(Title, Token, Value, Location) \
1178 do { \
1179 if (yydebug) \
1180 { \
1181 YYFPRINTF (stderr, "%s ", Title); \
1182 yysymprint (stderr, \
1183 Token, Value); \
1184 YYFPRINTF (stderr, "\n"); \
1185 } \
1186 } while (0)
1187
1188 /*------------------------------------------------------------------.
1189 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1190 | TOP (cinluded). |
1191 `------------------------------------------------------------------*/
1192
1193 #if defined (__STDC__) || defined (__cplusplus)
1194 static void
yy_stack_print(short * bottom,short * top)1195 yy_stack_print (short *bottom, short *top)
1196 #else
1197 static void
1198 yy_stack_print (bottom, top)
1199 short *bottom;
1200 short *top;
1201 #endif
1202 {
1203 YYFPRINTF (stderr, "Stack now");
1204 for (/* Nothing. */; bottom <= top; ++bottom)
1205 YYFPRINTF (stderr, " %d", *bottom);
1206 YYFPRINTF (stderr, "\n");
1207 }
1208
1209 # define YY_STACK_PRINT(Bottom, Top) \
1210 do { \
1211 if (yydebug) \
1212 yy_stack_print ((Bottom), (Top)); \
1213 } while (0)
1214
1215
1216 /*------------------------------------------------.
1217 | Report that the YYRULE is going to be reduced. |
1218 `------------------------------------------------*/
1219
1220 #if defined (__STDC__) || defined (__cplusplus)
1221 static void
yy_reduce_print(int yyrule)1222 yy_reduce_print (int yyrule)
1223 #else
1224 static void
1225 yy_reduce_print (yyrule)
1226 int yyrule;
1227 #endif
1228 {
1229 int yyi;
1230 unsigned int yylineno = yyrline[yyrule];
1231 YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1232 yyrule - 1, yylineno);
1233 /* Print the symbols being reduced, and their result. */
1234 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1235 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1236 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1237 }
1238
1239 # define YY_REDUCE_PRINT(Rule) \
1240 do { \
1241 if (yydebug) \
1242 yy_reduce_print (Rule); \
1243 } while (0)
1244
1245 /* Nonzero means print parse trace. It is left uninitialized so that
1246 multiple parsers can coexist. */
1247 int yydebug;
1248 #else /* !YYDEBUG */
1249 # define YYDPRINTF(Args)
1250 # define YYDSYMPRINT(Args)
1251 # define YYDSYMPRINTF(Title, Token, Value, Location)
1252 # define YY_STACK_PRINT(Bottom, Top)
1253 # define YY_REDUCE_PRINT(Rule)
1254 #endif /* !YYDEBUG */
1255
1256
1257 /* YYINITDEPTH -- initial size of the parser's stacks. */
1258 #ifndef YYINITDEPTH
1259 # define YYINITDEPTH 200
1260 #endif
1261
1262 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1263 if the built-in stack extension method is used).
1264
1265 Do not make this value too large; the results are undefined if
1266 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1267 evaluated with infinite-precision integer arithmetic. */
1268
1269 #if YYMAXDEPTH == 0
1270 # undef YYMAXDEPTH
1271 #endif
1272
1273 #ifndef YYMAXDEPTH
1274 # define YYMAXDEPTH 10000
1275 #endif
1276
1277
1278
1279 #if YYERROR_VERBOSE
1280
1281 # ifndef yystrlen
1282 # if defined (__GLIBC__) && defined (_STRING_H)
1283 # define yystrlen strlen
1284 # else
1285 /* Return the length of YYSTR. */
1286 static YYSIZE_T
1287 # if defined (__STDC__) || defined (__cplusplus)
yystrlen(const char * yystr)1288 yystrlen (const char *yystr)
1289 # else
1290 yystrlen (yystr)
1291 const char *yystr;
1292 # endif
1293 {
1294 register const char *yys = yystr;
1295
1296 while (*yys++ != '\0')
1297 continue;
1298
1299 return yys - yystr - 1;
1300 }
1301 # endif
1302 # endif
1303
1304 # ifndef yystpcpy
1305 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1306 # define yystpcpy stpcpy
1307 # else
1308 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1309 YYDEST. */
1310 static char *
1311 # if defined (__STDC__) || defined (__cplusplus)
yystpcpy(char * yydest,const char * yysrc)1312 yystpcpy (char *yydest, const char *yysrc)
1313 # else
1314 yystpcpy (yydest, yysrc)
1315 char *yydest;
1316 const char *yysrc;
1317 # endif
1318 {
1319 register char *yyd = yydest;
1320 register const char *yys = yysrc;
1321
1322 while ((*yyd++ = *yys++) != '\0')
1323 continue;
1324
1325 return yyd - 1;
1326 }
1327 # endif
1328 # endif
1329
1330 #endif /* !YYERROR_VERBOSE */
1331
1332
1333
1334 #if YYDEBUG
1335 /*--------------------------------.
1336 | Print this symbol on YYOUTPUT. |
1337 `--------------------------------*/
1338
1339 #if defined (__STDC__) || defined (__cplusplus)
1340 static void
yysymprint(FILE * yyoutput,int yytype,YYSTYPE * yyvaluep)1341 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1342 #else
1343 static void
1344 yysymprint (yyoutput, yytype, yyvaluep)
1345 FILE *yyoutput;
1346 int yytype;
1347 YYSTYPE *yyvaluep;
1348 #endif
1349 {
1350 /* Pacify ``unused variable'' warnings. */
1351 (void) yyvaluep;
1352
1353 if (yytype < YYNTOKENS)
1354 {
1355 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1356 # ifdef YYPRINT
1357 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1358 # endif
1359 }
1360 else
1361 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1362
1363 switch (yytype)
1364 {
1365 default:
1366 break;
1367 }
1368 YYFPRINTF (yyoutput, ")");
1369 }
1370
1371 #endif /* ! YYDEBUG */
1372 /*-----------------------------------------------.
1373 | Release the memory associated to this symbol. |
1374 `-----------------------------------------------*/
1375
1376 #if defined (__STDC__) || defined (__cplusplus)
1377 static void
yydestruct(int yytype,YYSTYPE * yyvaluep)1378 yydestruct (int yytype, YYSTYPE *yyvaluep)
1379 #else
1380 static void
1381 yydestruct (yytype, yyvaluep)
1382 int yytype;
1383 YYSTYPE *yyvaluep;
1384 #endif
1385 {
1386 /* Pacify ``unused variable'' warnings. */
1387 (void) yyvaluep;
1388
1389 switch (yytype)
1390 {
1391
1392 default:
1393 break;
1394 }
1395 }
1396
1397
1398 /* Prevent warnings from -Wmissing-prototypes. */
1399
1400 #ifdef YYPARSE_PARAM
1401 # if defined (__STDC__) || defined (__cplusplus)
1402 int yyparse (void *YYPARSE_PARAM);
1403 # else
1404 int yyparse ();
1405 # endif
1406 #else /* ! YYPARSE_PARAM */
1407 #if defined (__STDC__) || defined (__cplusplus)
1408 int yyparse ( SqlParser_c * pParser );
1409 #else
1410 int yyparse ();
1411 #endif
1412 #endif /* ! YYPARSE_PARAM */
1413
1414
1415
1416
1417
1418
1419 /*----------.
1420 | yyparse. |
1421 `----------*/
1422
1423 #ifdef YYPARSE_PARAM
1424 # if defined (__STDC__) || defined (__cplusplus)
yyparse(void * YYPARSE_PARAM)1425 int yyparse (void *YYPARSE_PARAM)
1426 # else
1427 int yyparse (YYPARSE_PARAM)
1428 void *YYPARSE_PARAM;
1429 # endif
1430 #else /* ! YYPARSE_PARAM */
1431 #if defined (__STDC__) || defined (__cplusplus)
1432 int
1433 yyparse ( SqlParser_c * pParser )
1434 #else
1435 int
1436 yyparse (pParser)
1437 SqlParser_c * pParser ;
1438 #endif
1439 #endif
1440 {
1441 /* The lookahead symbol. */
1442 int yychar;
1443
1444 /* The semantic value of the lookahead symbol. */
1445 YYSTYPE yylval;
1446
1447 /* Number of syntax errors so far. */
1448 int yynerrs;
1449
1450 register int yystate;
1451 register int yyn;
1452 int yyresult;
1453 /* Number of tokens to shift before error messages enabled. */
1454 int yyerrstatus;
1455 /* Lookahead token as an internal (translated) token number. */
1456 int yytoken = 0;
1457
1458 /* Three stacks and their tools:
1459 `yyss': related to states,
1460 `yyvs': related to semantic values,
1461 `yyls': related to locations.
1462
1463 Refer to the stacks thru separate pointers, to allow yyoverflow
1464 to reallocate them elsewhere. */
1465
1466 /* The state stack. */
1467 short yyssa[YYINITDEPTH];
1468 short *yyss = yyssa;
1469 register short *yyssp;
1470
1471 /* The semantic value stack. */
1472 YYSTYPE yyvsa[YYINITDEPTH];
1473 YYSTYPE *yyvs = yyvsa;
1474 register YYSTYPE *yyvsp;
1475
1476
1477
1478 #define YYPOPSTACK (yyvsp--, yyssp--)
1479
1480 YYSIZE_T yystacksize = YYINITDEPTH;
1481
1482 /* The variables used to return semantic value and location from the
1483 action routines. */
1484 YYSTYPE yyval;
1485
1486
1487 /* When reducing, the number of symbols on the RHS of the reduced
1488 rule. */
1489 int yylen;
1490
1491 YYDPRINTF ((stderr, "Starting parse\n"));
1492
1493 yystate = 0;
1494 yyerrstatus = 0;
1495 yynerrs = 0;
1496 yychar = YYEMPTY; /* Cause a token to be read. */
1497
1498 /* Initialize stack pointers.
1499 Waste one element of value and location stack
1500 so that they stay on the same level as the state stack.
1501 The wasted elements are never initialized. */
1502
1503 yyssp = yyss;
1504 yyvsp = yyvs;
1505
1506 goto yysetstate;
1507
1508 /*------------------------------------------------------------.
1509 | yynewstate -- Push a new state, which is found in yystate. |
1510 `------------------------------------------------------------*/
1511 yynewstate:
1512 /* In all cases, when you get here, the value and location stacks
1513 have just been pushed. so pushing a state here evens the stacks.
1514 */
1515 yyssp++;
1516
1517 yysetstate:
1518 *yyssp = yystate;
1519
1520 if (yyss + yystacksize - 1 <= yyssp)
1521 {
1522 /* Get the current used size of the three stacks, in elements. */
1523 YYSIZE_T yysize = yyssp - yyss + 1;
1524
1525 #ifdef yyoverflow
1526 {
1527 /* Give user a chance to reallocate the stack. Use copies of
1528 these so that the &'s don't force the real ones into
1529 memory. */
1530 YYSTYPE *yyvs1 = yyvs;
1531 short *yyss1 = yyss;
1532
1533
1534 /* Each stack pointer address is followed by the size of the
1535 data in use in that stack, in bytes. This used to be a
1536 conditional around just the two extra args, but that might
1537 be undefined if yyoverflow is a macro. */
1538 yyoverflow ("parser stack overflow",
1539 &yyss1, yysize * sizeof (*yyssp),
1540 &yyvs1, yysize * sizeof (*yyvsp),
1541
1542 &yystacksize);
1543
1544 yyss = yyss1;
1545 yyvs = yyvs1;
1546 }
1547 #else /* no yyoverflow */
1548 # ifndef YYSTACK_RELOCATE
1549 goto yyoverflowlab;
1550 # else
1551 /* Extend the stack our own way. */
1552 if (YYMAXDEPTH <= yystacksize)
1553 goto yyoverflowlab;
1554 yystacksize *= 2;
1555 if (YYMAXDEPTH < yystacksize)
1556 yystacksize = YYMAXDEPTH;
1557
1558 {
1559 short *yyss1 = yyss;
1560 union yyalloc *yyptr =
1561 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1562 if (! yyptr)
1563 goto yyoverflowlab;
1564 YYSTACK_RELOCATE (yyss);
1565 YYSTACK_RELOCATE (yyvs);
1566
1567 # undef YYSTACK_RELOCATE
1568 if (yyss1 != yyssa)
1569 YYSTACK_FREE (yyss1);
1570 }
1571 # endif
1572 #endif /* no yyoverflow */
1573
1574 yyssp = yyss + yysize - 1;
1575 yyvsp = yyvs + yysize - 1;
1576
1577
1578 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1579 (unsigned long int) yystacksize));
1580
1581 if (yyss + yystacksize - 1 <= yyssp)
1582 YYABORT;
1583 }
1584
1585 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1586
1587 goto yybackup;
1588
1589 /*-----------.
1590 | yybackup. |
1591 `-----------*/
1592 yybackup:
1593
1594 /* Do appropriate processing given the current state. */
1595 /* Read a lookahead token if we need one and don't already have one. */
1596 /* yyresume: */
1597
1598 /* First try to decide what to do without reference to lookahead token. */
1599
1600 yyn = yypact[yystate];
1601 if (yyn == YYPACT_NINF)
1602 goto yydefault;
1603
1604 /* Not known => get a lookahead token if don't already have one. */
1605
1606 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1607 if (yychar == YYEMPTY)
1608 {
1609 YYDPRINTF ((stderr, "Reading a token: "));
1610 yychar = YYLEX;
1611 }
1612
1613 if (yychar <= YYEOF)
1614 {
1615 yychar = yytoken = YYEOF;
1616 YYDPRINTF ((stderr, "Now at end of input.\n"));
1617 }
1618 else
1619 {
1620 yytoken = YYTRANSLATE (yychar);
1621 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1622 }
1623
1624 /* If the proper action on seeing token YYTOKEN is to reduce or to
1625 detect an error, take that action. */
1626 yyn += yytoken;
1627 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1628 goto yydefault;
1629 yyn = yytable[yyn];
1630 if (yyn <= 0)
1631 {
1632 if (yyn == 0 || yyn == YYTABLE_NINF)
1633 goto yyerrlab;
1634 yyn = -yyn;
1635 goto yyreduce;
1636 }
1637
1638 if (yyn == YYFINAL)
1639 YYACCEPT;
1640
1641 /* Shift the lookahead token. */
1642 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1643
1644 /* Discard the token being shifted unless it is eof. */
1645 if (yychar != YYEOF)
1646 yychar = YYEMPTY;
1647
1648 *++yyvsp = yylval;
1649
1650
1651 /* Count tokens shifted since error; after three, turn off error
1652 status. */
1653 if (yyerrstatus)
1654 yyerrstatus--;
1655
1656 yystate = yyn;
1657 goto yynewstate;
1658
1659
1660 /*-----------------------------------------------------------.
1661 | yydefault -- do the default action for the current state. |
1662 `-----------------------------------------------------------*/
1663 yydefault:
1664 yyn = yydefact[yystate];
1665 if (yyn == 0)
1666 goto yyerrlab;
1667 goto yyreduce;
1668
1669
1670 /*-----------------------------.
1671 | yyreduce -- Do a reduction. |
1672 `-----------------------------*/
1673 yyreduce:
1674 /* yyn is the number of a rule to reduce with. */
1675 yylen = yyr2[yyn];
1676
1677 /* If YYLEN is nonzero, implement the default value of the action:
1678 `$$ = $1'.
1679
1680 Otherwise, the following line sets YYVAL to garbage.
1681 This behavior is undocumented and Bison
1682 users should not rely upon it. Assigning to YYVAL
1683 unconditionally makes the parser a bit smaller, and it avoids a
1684 GCC warning that YYVAL may be used uninitialized. */
1685 yyval = yyvsp[1-yylen];
1686
1687
1688 YY_REDUCE_PRINT (yyn);
1689 switch (yyn)
1690 {
1691 case 2:
1692
1693 { pParser->PushQuery(); ;}
1694 break;
1695
1696 case 22:
1697
1698 { pParser->PushQuery(); ;}
1699 break;
1700
1701 case 23:
1702
1703 { pParser->PushQuery(); ;}
1704 break;
1705
1706 case 26:
1707
1708 {
1709 pParser->m_pStmt->m_eStmt = STMT_SELECT;
1710 pParser->m_pQuery->m_sIndexes.SetBinary ( pParser->m_pBuf+yyvsp[-6].m_iStart, yyvsp[-6].m_iEnd-yyvsp[-6].m_iStart );
1711 ;}
1712 break;
1713
1714 case 29:
1715
1716 { pParser->AddItem ( &yyvsp[0] ); ;}
1717 break;
1718
1719 case 32:
1720
1721 { pParser->AliasLastItem ( &yyvsp[0] ); ;}
1722 break;
1723
1724 case 33:
1725
1726 { pParser->AliasLastItem ( &yyvsp[0] ); ;}
1727 break;
1728
1729 case 34:
1730
1731 { pParser->AddItem ( &yyvsp[0] ); ;}
1732 break;
1733
1734 case 35:
1735
1736 { pParser->AddItem ( &yyvsp[-1], SPH_AGGR_AVG, &yyvsp[-3], &yyvsp[0] ); ;}
1737 break;
1738
1739 case 36:
1740
1741 { pParser->AddItem ( &yyvsp[-1], SPH_AGGR_MAX, &yyvsp[-3], &yyvsp[0] ); ;}
1742 break;
1743
1744 case 37:
1745
1746 { pParser->AddItem ( &yyvsp[-1], SPH_AGGR_MIN, &yyvsp[-3], &yyvsp[0] ); ;}
1747 break;
1748
1749 case 38:
1750
1751 { pParser->AddItem ( &yyvsp[-1], SPH_AGGR_SUM, &yyvsp[-3], &yyvsp[0] ); ;}
1752 break;
1753
1754 case 39:
1755
1756 { if ( !pParser->AddItem ( "count(*)", &yyvsp[-3], &yyvsp[0] ) ) YYERROR; ;}
1757 break;
1758
1759 case 40:
1760
1761 { if ( !pParser->AddItem ( "weight()", &yyvsp[-2], &yyvsp[0] ) ) YYERROR; ;}
1762 break;
1763
1764 case 41:
1765
1766 { if ( !pParser->AddDistinct ( &yyvsp[-1], &yyvsp[-4], &yyvsp[0] ) ) YYERROR; ;}
1767 break;
1768
1769 case 43:
1770
1771 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
1772 break;
1773
1774 case 54:
1775
1776 {
1777 if ( !pParser->SetMatch(yyvsp[-1]) )
1778 YYERROR;
1779 ;}
1780 break;
1781
1782 case 55:
1783
1784 {
1785 CSphFilterSettings * pFilter = pParser->AddValuesFilter ( yyvsp[-2] );
1786 if ( !pFilter )
1787 YYERROR;
1788 pFilter->m_dValues.Add ( yyvsp[0].m_iValue );
1789 ;}
1790 break;
1791
1792 case 56:
1793
1794 {
1795 CSphFilterSettings * pFilter = pParser->AddValuesFilter ( yyvsp[-2] );
1796 if ( !pFilter )
1797 YYERROR;
1798 pFilter->m_dValues.Add ( yyvsp[0].m_iValue );
1799 pFilter->m_bExclude = true;
1800 ;}
1801 break;
1802
1803 case 57:
1804
1805 {
1806 CSphFilterSettings * pFilter = pParser->AddValuesFilter ( yyvsp[-4] );
1807 if ( !pFilter )
1808 YYERROR;
1809 pFilter->m_dValues = *yyvsp[-1].m_pValues.Ptr();
1810 pFilter->m_dValues.Uniq();
1811 ;}
1812 break;
1813
1814 case 58:
1815
1816 {
1817 CSphFilterSettings * pFilter = pParser->AddValuesFilter ( yyvsp[-5] );
1818 if ( !pFilter )
1819 YYERROR;
1820 pFilter->m_dValues = *yyvsp[-1].m_pValues.Ptr();
1821 pFilter->m_bExclude = true;
1822 pFilter->m_dValues.Uniq();
1823 ;}
1824 break;
1825
1826 case 59:
1827
1828 {
1829 if ( !pParser->AddUservarFilter ( yyvsp[-2].m_sValue, yyvsp[0].m_sValue, false ) )
1830 YYERROR;
1831 ;}
1832 break;
1833
1834 case 60:
1835
1836 {
1837 if ( !pParser->AddUservarFilter ( yyvsp[-3].m_sValue, yyvsp[0].m_sValue, true ) )
1838 YYERROR;
1839 ;}
1840 break;
1841
1842 case 61:
1843
1844 {
1845 if ( !pParser->AddIntRangeFilter ( yyvsp[-4].m_sValue, yyvsp[-2].m_iValue, yyvsp[0].m_iValue ) )
1846 YYERROR;
1847 ;}
1848 break;
1849
1850 case 62:
1851
1852 {
1853 if ( !pParser->AddIntFilterGTE ( yyvsp[-2].m_sValue, yyvsp[0].m_iValue+1 ) )
1854 YYERROR;
1855 ;}
1856 break;
1857
1858 case 63:
1859
1860 {
1861 if ( !pParser->AddIntFilterLTE ( yyvsp[-2].m_sValue, yyvsp[0].m_iValue-1 ) )
1862 YYERROR;
1863 ;}
1864 break;
1865
1866 case 64:
1867
1868 {
1869 if ( !pParser->AddIntFilterGTE ( yyvsp[-2].m_sValue, yyvsp[0].m_iValue ) )
1870 YYERROR;
1871 ;}
1872 break;
1873
1874 case 65:
1875
1876 {
1877 if ( !pParser->AddIntFilterLTE ( yyvsp[-2].m_sValue, yyvsp[0].m_iValue ) )
1878 YYERROR;
1879 ;}
1880 break;
1881
1882 case 66:
1883
1884 {
1885 yyerror ( pParser, "only >=, <=, and BETWEEN floating-point filter types are supported in this version" );
1886 YYERROR;
1887 ;}
1888 break;
1889
1890 case 67:
1891
1892 {
1893 if ( !pParser->AddFloatRangeFilter ( yyvsp[-4].m_sValue, yyvsp[-2].m_fValue, yyvsp[0].m_fValue ) )
1894 YYERROR;
1895 ;}
1896 break;
1897
1898 case 68:
1899
1900 {
1901 if ( !pParser->AddFloatRangeFilter ( yyvsp[-4].m_sValue, yyvsp[-2].m_iValue, yyvsp[0].m_fValue ) )
1902 YYERROR;
1903 ;}
1904 break;
1905
1906 case 69:
1907
1908 {
1909 if ( !pParser->AddFloatRangeFilter ( yyvsp[-4].m_sValue, yyvsp[-2].m_fValue, yyvsp[0].m_iValue ) )
1910 YYERROR;
1911 ;}
1912 break;
1913
1914 case 70:
1915
1916 {
1917 if ( !pParser->AddFloatRangeFilter ( yyvsp[-2].m_sValue, yyvsp[0].m_fValue, FLT_MAX ) )
1918 YYERROR;
1919 ;}
1920 break;
1921
1922 case 71:
1923
1924 {
1925 if ( !pParser->AddFloatRangeFilter ( yyvsp[-2].m_sValue, -FLT_MAX, yyvsp[0].m_fValue ) )
1926 YYERROR;
1927 ;}
1928 break;
1929
1930 case 73:
1931
1932 {
1933 if ( !pParser->SetOldSyntax() )
1934 YYERROR;
1935 ;}
1936 break;
1937
1938 case 74:
1939
1940 {
1941 yyval.m_sValue = "@count";
1942 if ( !pParser->SetNewSyntax() )
1943 YYERROR;
1944 ;}
1945 break;
1946
1947 case 75:
1948
1949 {
1950 yyval.m_sValue = "@weight";
1951 if ( !pParser->SetNewSyntax() )
1952 YYERROR;
1953 ;}
1954 break;
1955
1956 case 76:
1957
1958 {
1959 yyval.m_sValue = "@id";
1960 if ( !pParser->SetNewSyntax() )
1961 YYERROR;
1962 ;}
1963 break;
1964
1965 case 77:
1966
1967 { yyval.m_iInstype = TOK_CONST_INT; yyval.m_iValue = yyvsp[0].m_iValue; ;}
1968 break;
1969
1970 case 78:
1971
1972 {
1973 yyval.m_iInstype = TOK_CONST_INT;
1974 if ( (uint64_t)yyvsp[0].m_iValue > (uint64_t)LLONG_MAX )
1975 yyval.m_iValue = LLONG_MIN;
1976 else
1977 yyval.m_iValue = -yyvsp[0].m_iValue;
1978 ;}
1979 break;
1980
1981 case 79:
1982
1983 { yyval.m_iInstype = TOK_CONST_FLOAT; yyval.m_fValue = yyvsp[0].m_fValue; ;}
1984 break;
1985
1986 case 80:
1987
1988 { yyval.m_iInstype = TOK_CONST_FLOAT; yyval.m_fValue = -yyvsp[0].m_fValue; ;}
1989 break;
1990
1991 case 81:
1992
1993 {
1994 assert ( !yyval.m_pValues.Ptr() );
1995 yyval.m_pValues = new RefcountedVector_c<SphAttr_t> ();
1996 yyval.m_pValues->Add ( yyvsp[0].m_iValue );
1997 ;}
1998 break;
1999
2000 case 82:
2001
2002 {
2003 yyval.m_pValues->Add ( yyvsp[0].m_iValue );
2004 ;}
2005 break;
2006
2007 case 85:
2008
2009 {
2010 pParser->SetGroupBy ( yyvsp[0].m_sValue );
2011 ;}
2012 break;
2013
2014 case 88:
2015
2016 {
2017 pParser->m_pQuery->m_sSortBy.SetBinary ( pParser->m_pBuf+yyvsp[0].m_iStart, yyvsp[0].m_iEnd-yyvsp[0].m_iStart );
2018 ;}
2019 break;
2020
2021 case 91:
2022
2023 {
2024 pParser->m_pQuery->m_sOrderBy.SetBinary ( pParser->m_pBuf+yyvsp[0].m_iStart, yyvsp[0].m_iEnd-yyvsp[0].m_iStart );
2025 ;}
2026 break;
2027
2028 case 92:
2029
2030 {
2031 pParser->m_pQuery->m_sOrderBy = "@random";
2032 ;}
2033 break;
2034
2035 case 94:
2036
2037 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2038 break;
2039
2040 case 96:
2041
2042 { yyval = yyvsp[-1]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2043 break;
2044
2045 case 97:
2046
2047 { yyval = yyvsp[-1]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2048 break;
2049
2050 case 100:
2051
2052 {
2053 pParser->m_pQuery->m_iOffset = 0;
2054 pParser->m_pQuery->m_iLimit = yyvsp[0].m_iValue;
2055 ;}
2056 break;
2057
2058 case 101:
2059
2060 {
2061 pParser->m_pQuery->m_iOffset = yyvsp[-2].m_iValue;
2062 pParser->m_pQuery->m_iLimit = yyvsp[0].m_iValue;
2063 ;}
2064 break;
2065
2066 case 107:
2067
2068 {
2069 if ( !pParser->AddOption ( yyvsp[-2], yyvsp[0] ) )
2070 YYERROR;
2071 ;}
2072 break;
2073
2074 case 108:
2075
2076 {
2077 if ( !pParser->AddOption ( yyvsp[-2], yyvsp[0] ) )
2078 YYERROR;
2079 ;}
2080 break;
2081
2082 case 109:
2083
2084 {
2085 if ( !pParser->AddOption ( yyvsp[-4], pParser->GetNamedVec ( yyvsp[-1].m_iValue ) ) )
2086 YYERROR;
2087 pParser->FreeNamedVec ( yyvsp[-1].m_iValue );
2088 ;}
2089 break;
2090
2091 case 110:
2092
2093 {
2094 if ( !pParser->AddOption ( yyvsp[-5], yyvsp[-2], yyvsp[-1].m_sValue ) )
2095 YYERROR;
2096 ;}
2097 break;
2098
2099 case 111:
2100
2101 {
2102 if ( !pParser->AddOption ( yyvsp[-2], yyvsp[0] ) )
2103 YYERROR;
2104 ;}
2105 break;
2106
2107 case 112:
2108
2109 {
2110 yyval.m_iValue = pParser->AllocNamedVec ();
2111 pParser->AddConst ( yyval.m_iValue, yyvsp[0] );
2112 ;}
2113 break;
2114
2115 case 113:
2116
2117 {
2118 pParser->AddConst( yyval.m_iValue, yyvsp[0] );
2119 ;}
2120 break;
2121
2122 case 114:
2123
2124 {
2125 yyval.m_sValue = yyvsp[-2].m_sValue;
2126 yyval.m_iValue = yyvsp[0].m_iValue;
2127 ;}
2128 break;
2129
2130 case 116:
2131
2132 { if ( !pParser->SetOldSyntax() ) YYERROR; ;}
2133 break;
2134
2135 case 117:
2136
2137 { if ( !pParser->SetNewSyntax() ) YYERROR; ;}
2138 break;
2139
2140 case 121:
2141
2142 { yyval = yyvsp[-1]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2143 break;
2144
2145 case 122:
2146
2147 { yyval = yyvsp[-1]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2148 break;
2149
2150 case 123:
2151
2152 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2153 break;
2154
2155 case 124:
2156
2157 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2158 break;
2159
2160 case 125:
2161
2162 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2163 break;
2164
2165 case 126:
2166
2167 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2168 break;
2169
2170 case 127:
2171
2172 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2173 break;
2174
2175 case 128:
2176
2177 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2178 break;
2179
2180 case 129:
2181
2182 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2183 break;
2184
2185 case 130:
2186
2187 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2188 break;
2189
2190 case 131:
2191
2192 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2193 break;
2194
2195 case 132:
2196
2197 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2198 break;
2199
2200 case 133:
2201
2202 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2203 break;
2204
2205 case 134:
2206
2207 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2208 break;
2209
2210 case 135:
2211
2212 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2213 break;
2214
2215 case 136:
2216
2217 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2218 break;
2219
2220 case 137:
2221
2222 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2223 break;
2224
2225 case 138:
2226
2227 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2228 break;
2229
2230 case 139:
2231
2232 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2233 break;
2234
2235 case 140:
2236
2237 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2238 break;
2239
2240 case 142:
2241
2242 { yyval = yyvsp[-3]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2243 break;
2244
2245 case 143:
2246
2247 { yyval = yyvsp[-3]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2248 break;
2249
2250 case 144:
2251
2252 { yyval = yyvsp[-3]; yyval.m_iEnd = yyvsp[0].m_iEnd; ;}
2253 break;
2254
2255 case 145:
2256
2257 { yyval = yyvsp[-2]; yyval.m_iEnd = yyvsp[0].m_iEnd ;}
2258 break;
2259
2260 case 146:
2261
2262 { yyval = yyvsp[-5]; yyval.m_iEnd = yyvsp[0].m_iEnd ;}
2263 break;
2264
2265 case 147:
2266
2267 { yyval = yyvsp[-5]; yyval.m_iEnd = yyvsp[0].m_iEnd ;}
2268 break;
2269
2270 case 153:
2271
2272 { pParser->m_pStmt->m_eStmt = STMT_SHOW_WARNINGS; ;}
2273 break;
2274
2275 case 154:
2276
2277 { pParser->m_pStmt->m_eStmt = STMT_SHOW_STATUS; ;}
2278 break;
2279
2280 case 155:
2281
2282 { pParser->m_pStmt->m_eStmt = STMT_SHOW_META; ;}
2283 break;
2284
2285 case 163:
2286
2287 {
2288 pParser->SetStatement ( yyvsp[-2], SET_LOCAL );
2289 pParser->m_pStmt->m_iSetValue = yyvsp[0].m_iValue;
2290 ;}
2291 break;
2292
2293 case 164:
2294
2295 {
2296 pParser->SetStatement ( yyvsp[-2], SET_LOCAL );
2297 pParser->m_pStmt->m_sSetValue = yyvsp[0].m_sValue;
2298 ;}
2299 break;
2300
2301 case 165:
2302
2303 {
2304 pParser->SetStatement ( yyvsp[-2], SET_LOCAL );
2305 pParser->m_pStmt->m_bSetNull = true;
2306 ;}
2307 break;
2308
2309 case 166:
2310
2311 { pParser->m_pStmt->m_eStmt = STMT_DUMMY; ;}
2312 break;
2313
2314 case 167:
2315
2316 { pParser->m_pStmt->m_eStmt = STMT_DUMMY; ;}
2317 break;
2318
2319 case 168:
2320
2321 {
2322 pParser->SetStatement ( yyvsp[-4], SET_GLOBAL_UVAR );
2323 pParser->m_pStmt->m_dSetValues = *yyvsp[-1].m_pValues.Ptr();
2324 ;}
2325 break;
2326
2327 case 169:
2328
2329 {
2330 pParser->SetStatement ( yyvsp[-2], SET_GLOBAL_SVAR );
2331 pParser->m_pStmt->m_sSetValue = yyvsp[0].m_sValue;
2332 ;}
2333 break;
2334
2335 case 172:
2336
2337 { yyval.m_iValue = 1; ;}
2338 break;
2339
2340 case 173:
2341
2342 { yyval.m_iValue = 0; ;}
2343 break;
2344
2345 case 174:
2346
2347 {
2348 yyval.m_iValue = yyvsp[0].m_iValue;
2349 if ( yyval.m_iValue!=0 && yyval.m_iValue!=1 )
2350 {
2351 yyerror ( pParser, "only 0 and 1 could be used as boolean values" );
2352 YYERROR;
2353 }
2354 ;}
2355 break;
2356
2357 case 175:
2358
2359 { pParser->m_pStmt->m_eStmt = STMT_COMMIT; ;}
2360 break;
2361
2362 case 176:
2363
2364 { pParser->m_pStmt->m_eStmt = STMT_ROLLBACK; ;}
2365 break;
2366
2367 case 177:
2368
2369 { pParser->m_pStmt->m_eStmt = STMT_BEGIN; ;}
2370 break;
2371
2372 case 180:
2373
2374 {
2375 // everything else is pushed directly into parser within the rules
2376 pParser->m_pStmt->m_sIndex = yyvsp[-3].m_sValue;
2377 ;}
2378 break;
2379
2380 case 181:
2381
2382 { pParser->m_pStmt->m_eStmt = STMT_INSERT; ;}
2383 break;
2384
2385 case 182:
2386
2387 { pParser->m_pStmt->m_eStmt = STMT_REPLACE; ;}
2388 break;
2389
2390 case 185:
2391
2392 { if ( !pParser->AddSchemaItem ( &yyvsp[0] ) ) { yyerror ( pParser, "unknown field" ); YYERROR; } ;}
2393 break;
2394
2395 case 186:
2396
2397 { if ( !pParser->AddSchemaItem ( &yyvsp[0] ) ) { yyerror ( pParser, "unknown field" ); YYERROR; } ;}
2398 break;
2399
2400 case 189:
2401
2402 { if ( !pParser->m_pStmt->CheckInsertIntegrity() ) { yyerror ( pParser, "wrong number of values here" ); YYERROR; } ;}
2403 break;
2404
2405 case 190:
2406
2407 { AddInsval ( pParser->m_pStmt->m_dInsertValues, yyvsp[0] ); ;}
2408 break;
2409
2410 case 191:
2411
2412 { AddInsval ( pParser->m_pStmt->m_dInsertValues, yyvsp[0] ); ;}
2413 break;
2414
2415 case 192:
2416
2417 { yyval.m_iInstype = TOK_CONST_INT; yyval.m_iValue = yyvsp[0].m_iValue; ;}
2418 break;
2419
2420 case 193:
2421
2422 { yyval.m_iInstype = TOK_CONST_FLOAT; yyval.m_fValue = yyvsp[0].m_fValue; ;}
2423 break;
2424
2425 case 194:
2426
2427 { yyval.m_iInstype = TOK_QUOTED_STRING; yyval.m_sValue = yyvsp[0].m_sValue; ;}
2428 break;
2429
2430 case 195:
2431
2432 { yyval.m_iInstype = TOK_CONST_MVA; yyval.m_pValues = yyvsp[-1].m_pValues; ;}
2433 break;
2434
2435 case 196:
2436
2437 { yyval.m_iInstype = TOK_CONST_MVA; ;}
2438 break;
2439
2440 case 197:
2441
2442 {
2443 pParser->m_pStmt->m_eStmt = STMT_DELETE;
2444 pParser->m_pStmt->m_sIndex = yyvsp[-4].m_sValue;
2445 pParser->m_pStmt->m_dDeleteIds.Add ( yyvsp[0].m_iValue );
2446 ;}
2447 break;
2448
2449 case 198:
2450
2451 {
2452 pParser->m_pStmt->m_eStmt = STMT_DELETE;
2453 pParser->m_pStmt->m_sIndex = yyvsp[-6].m_sValue;
2454 for ( int i=0; i<yyvsp[-1].m_pValues.Ptr()->GetLength(); i++ )
2455 pParser->m_pStmt->m_dDeleteIds.Add ( (*yyvsp[-1].m_pValues.Ptr())[i] );
2456 ;}
2457 break;
2458
2459 case 199:
2460
2461 {
2462 pParser->m_pStmt->m_eStmt = STMT_CALL;
2463 pParser->m_pStmt->m_sCallProc = yyvsp[-4].m_sValue;
2464 ;}
2465 break;
2466
2467 case 200:
2468
2469 {
2470 AddInsval ( pParser->m_pStmt->m_dInsertValues, yyvsp[0] );
2471 ;}
2472 break;
2473
2474 case 201:
2475
2476 {
2477 AddInsval ( pParser->m_pStmt->m_dInsertValues, yyvsp[0] );
2478 ;}
2479 break;
2480
2481 case 203:
2482
2483 {
2484 yyval.m_iInstype = TOK_CONST_STRINGS;
2485 ;}
2486 break;
2487
2488 case 204:
2489
2490 {
2491 // FIXME? for now, one such array per CALL statement, tops
2492 if ( pParser->m_pStmt->m_dCallStrings.GetLength() )
2493 {
2494 yyerror ( pParser, "unexpected constant string list" );
2495 YYERROR;
2496 }
2497 pParser->m_pStmt->m_dCallStrings.Add ( yyvsp[0].m_sValue );
2498 ;}
2499 break;
2500
2501 case 205:
2502
2503 {
2504 pParser->m_pStmt->m_dCallStrings.Add ( yyvsp[0].m_sValue );
2505 ;}
2506 break;
2507
2508 case 208:
2509
2510 {
2511 assert ( pParser->m_pStmt->m_dCallOptNames.GetLength()==1 );
2512 assert ( pParser->m_pStmt->m_dCallOptValues.GetLength()==1 );
2513 ;}
2514 break;
2515
2516 case 210:
2517
2518 {
2519 pParser->m_pStmt->m_dCallOptNames.Add ( yyvsp[0].m_sValue );
2520 AddInsval ( pParser->m_pStmt->m_dCallOptValues, yyvsp[-2] );
2521 ;}
2522 break;
2523
2524 case 214:
2525
2526 { yyval.m_sValue = "limit"; ;}
2527 break;
2528
2529 case 215:
2530
2531 {
2532 pParser->m_pStmt->m_eStmt = STMT_DESC;
2533 pParser->m_pStmt->m_sIndex = yyvsp[0].m_sValue;
2534 ;}
2535 break;
2536
2537 case 218:
2538
2539 { pParser->m_pStmt->m_eStmt = STMT_SHOW_TABLES; ;}
2540 break;
2541
2542 case 219:
2543
2544 {
2545 if ( !pParser->UpdateStatement ( &yyvsp[-3] ) )
2546 YYERROR;
2547 ;}
2548 break;
2549
2550 case 222:
2551
2552 {
2553 pParser->UpdateAttr ( yyvsp[-2].m_sValue, &yyvsp[0] );
2554 ;}
2555 break;
2556
2557 case 223:
2558
2559 {
2560 pParser->UpdateAttr ( yyvsp[-2].m_sValue, &yyvsp[0], SPH_ATTR_FLOAT);
2561 ;}
2562 break;
2563
2564 case 224:
2565
2566 {
2567 pParser->UpdateMVAAttr ( yyvsp[-4].m_sValue, yyvsp[-1] );
2568 ;}
2569 break;
2570
2571 case 225:
2572
2573 {
2574 SqlNode_t tNoValues;
2575 pParser->UpdateMVAAttr ( yyvsp[-3].m_sValue, tNoValues );
2576 ;}
2577 break;
2578
2579 case 226:
2580
2581 {
2582 pParser->m_pStmt->m_eStmt = STMT_SHOW_VARIABLES;
2583 ;}
2584 break;
2585
2586 case 233:
2587
2588 {
2589 pParser->m_pStmt->m_eStmt = STMT_DUMMY;
2590 ;}
2591 break;
2592
2593 case 234:
2594
2595 {
2596 pParser->m_pStmt->m_eStmt = STMT_DUMMY;
2597 ;}
2598 break;
2599
2600 case 242:
2601
2602 {
2603 SqlStmt_t & tStmt = *pParser->m_pStmt;
2604 tStmt.m_eStmt = STMT_CREATE_FUNC;
2605 tStmt.m_sUdfName = yyvsp[-4].m_sValue;
2606 tStmt.m_sUdfLib = yyvsp[0].m_sValue;
2607 tStmt.m_eUdfType = (ESphAttr) yyvsp[-2].m_iValue;
2608 ;}
2609 break;
2610
2611 case 243:
2612
2613 { yyval.m_iValue = SPH_ATTR_INTEGER; ;}
2614 break;
2615
2616 case 244:
2617
2618 { yyval.m_iValue = SPH_ATTR_BIGINT; ;}
2619 break;
2620
2621 case 245:
2622
2623 { yyval.m_iValue = SPH_ATTR_FLOAT; ;}
2624 break;
2625
2626 case 246:
2627
2628 {
2629 SqlStmt_t & tStmt = *pParser->m_pStmt;
2630 tStmt.m_eStmt = STMT_DROP_FUNC;
2631 tStmt.m_sUdfName = yyvsp[0].m_sValue;
2632 ;}
2633 break;
2634
2635 case 247:
2636
2637 {
2638 SqlStmt_t & tStmt = *pParser->m_pStmt;
2639 tStmt.m_eStmt = STMT_ATTACH_INDEX;
2640 tStmt.m_sIndex = yyvsp[-3].m_sValue;
2641 tStmt.m_sSetName = yyvsp[0].m_sValue;
2642 ;}
2643 break;
2644
2645 case 248:
2646
2647 {
2648 SqlStmt_t & tStmt = *pParser->m_pStmt;
2649 tStmt.m_eStmt = STMT_FLUSH_RTINDEX;
2650 tStmt.m_sIndex = yyvsp[0].m_sValue;
2651 ;}
2652 break;
2653
2654 case 249:
2655
2656 {
2657 pParser->m_pStmt->m_eStmt = STMT_DUMMY;
2658 ;}
2659 break;
2660
2661
2662 }
2663
2664 /* Line 991 of yacc.c. */
2665
2666
2667 yyvsp -= yylen;
2668 yyssp -= yylen;
2669
2670
2671 YY_STACK_PRINT (yyss, yyssp);
2672
2673 *++yyvsp = yyval;
2674
2675
2676 /* Now `shift' the result of the reduction. Determine what state
2677 that goes to, based on the state we popped back to and the rule
2678 number reduced by. */
2679
2680 yyn = yyr1[yyn];
2681
2682 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2683 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2684 yystate = yytable[yystate];
2685 else
2686 yystate = yydefgoto[yyn - YYNTOKENS];
2687
2688 goto yynewstate;
2689
2690
2691 /*------------------------------------.
2692 | yyerrlab -- here on detecting error |
2693 `------------------------------------*/
2694 yyerrlab:
2695 /* If not already recovering from an error, report this error. */
2696 if (!yyerrstatus)
2697 {
2698 ++yynerrs;
2699 #if YYERROR_VERBOSE
2700 yyn = yypact[yystate];
2701
2702 if (YYPACT_NINF < yyn && yyn < YYLAST)
2703 {
2704 YYSIZE_T yysize = 0;
2705 int yytype = YYTRANSLATE (yychar);
2706 char *yymsg;
2707 int yyx, yycount;
2708
2709 yycount = 0;
2710 /* Start YYX at -YYN if negative to avoid negative indexes in
2711 YYCHECK. */
2712 for (yyx = yyn < 0 ? -yyn : 0;
2713 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
2714 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2715 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
2716 yysize += yystrlen ("syntax error, unexpected ") + 1;
2717 yysize += yystrlen (yytname[yytype]);
2718 yymsg = (char *) YYSTACK_ALLOC (yysize);
2719 if (yymsg != 0)
2720 {
2721 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2722 yyp = yystpcpy (yyp, yytname[yytype]);
2723
2724 if (yycount < 4)
2725 {
2726 yycount = 0;
2727 for (yyx = yyn < 0 ? -yyn : 0;
2728 yyx < (int) (sizeof (yytname) / sizeof (char *));
2729 yyx++)
2730 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2731 {
2732 const char *yyq = ! yycount ? ", expecting " : " or ";
2733 yyp = yystpcpy (yyp, yyq);
2734 yyp = yystpcpy (yyp, yytname[yyx]);
2735 yycount++;
2736 }
2737 }
2738 else
2739 {
2740 for (yyx = yyn < 0 ? -yyn : 0;
2741 yyx < (int) (sizeof (yytname) / sizeof (char *));
2742 yyx++)
2743 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2744 {
2745 snprintf (yyp, (int)(yysize - (yyp - yymsg)), ", expecting %s (or %d other tokens)", yytname[yyx], yycount - 1);
2746 while (*yyp++);
2747 break;
2748 }
2749 }
2750
2751 yyerror (pParser, yymsg);
2752 YYSTACK_FREE (yymsg);
2753 }
2754 else
2755 yyerror (pParser, "syntax error; also virtual memory exhausted");
2756 }
2757 else
2758 #endif /* YYERROR_VERBOSE */
2759 yyerror (pParser, "syntax error");
2760 }
2761
2762
2763
2764 if (yyerrstatus == 3)
2765 {
2766 /* If just tried and failed to reuse lookahead token after an
2767 error, discard it. */
2768
2769 /* Return failure if at end of input. */
2770 if (yychar == YYEOF)
2771 {
2772 /* Pop the error token. */
2773 YYPOPSTACK;
2774 /* Pop the rest of the stack. */
2775 while (yyss < yyssp)
2776 {
2777 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2778 yydestruct (yystos[*yyssp], yyvsp);
2779 YYPOPSTACK;
2780 }
2781 YYABORT;
2782 }
2783
2784 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2785 yydestruct (yytoken, &yylval);
2786 yychar = YYEMPTY;
2787
2788 }
2789
2790 /* Else will try to reuse lookahead token after shifting the error
2791 token. */
2792 goto yyerrlab2;
2793
2794
2795 /*----------------------------------------------------.
2796 | yyerrlab1 -- error raised explicitly by an action. |
2797 `----------------------------------------------------*/
2798 yyerrlab1:
2799
2800 /* Suppress GCC warning that yyerrlab1 is unused when no action
2801 invokes YYERROR. */
2802 #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
2803 // __attribute__ ((__unused__))
2804 #endif
2805
2806
2807 goto yyerrlab2;
2808
2809
2810 /*---------------------------------------------------------------.
2811 | yyerrlab2 -- pop states until the error token can be shifted. |
2812 `---------------------------------------------------------------*/
2813 yyerrlab2:
2814 yyerrstatus = 3; /* Each real token shifted decrements this. */
2815
2816 for (;;)
2817 {
2818 yyn = yypact[yystate];
2819 if (yyn != YYPACT_NINF)
2820 {
2821 yyn += YYTERROR;
2822 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2823 {
2824 yyn = yytable[yyn];
2825 if (0 < yyn)
2826 break;
2827 }
2828 }
2829
2830 /* Pop the current state because it cannot handle the error token. */
2831 if (yyssp == yyss)
2832 YYABORT;
2833
2834 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2835 yydestruct (yystos[yystate], yyvsp);
2836 yyvsp--;
2837 yystate = *--yyssp;
2838
2839 YY_STACK_PRINT (yyss, yyssp);
2840 }
2841
2842 if (yyn == YYFINAL)
2843 YYACCEPT;
2844
2845 YYDPRINTF ((stderr, "Shifting error token, "));
2846
2847 *++yyvsp = yylval;
2848
2849
2850 yystate = yyn;
2851 goto yynewstate;
2852
2853
2854 /*-------------------------------------.
2855 | yyacceptlab -- YYACCEPT comes here. |
2856 `-------------------------------------*/
2857 yyacceptlab:
2858 yyresult = 0;
2859 goto yyreturn;
2860
2861 /*-----------------------------------.
2862 | yyabortlab -- YYABORT comes here. |
2863 `-----------------------------------*/
2864 yyabortlab:
2865 yyresult = 1;
2866 goto yyreturn;
2867
2868 #ifndef yyoverflow
2869 /*----------------------------------------------.
2870 | yyoverflowlab -- parser overflow comes here. |
2871 `----------------------------------------------*/
2872 yyoverflowlab:
2873 yyerror (pParser, "parser stack overflow");
2874 yyresult = 2;
2875 /* Fall through. */
2876 #endif
2877
2878 yyreturn:
2879 #ifndef yyoverflow
2880 if (yyss != yyssa)
2881 YYSTACK_FREE (yyss);
2882 #endif
2883 return yyresult;
2884 }
2885
2886
2887
2888
2889
2890 #if USE_WINDOWS
2891 #pragma warning(pop)
2892 #endif
2893
2894