Add support for query key extraction
[com/gs-lite.git] / src / ftacmp / fta.tab.cc
1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42
43 /* Identify Bison output.  */
44 #define YYBISON 1
45
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers.  */
53 #define YYPURE 0
54
55 /* Push parsers.  */
56 #define YYPUSH 0
57
58 /* Pull parsers.  */
59 #define YYPULL 1
60
61
62 /* Substitute the variable and function names.  */
63 #define yyparse         FtaParserparse
64 #define yylex           FtaParserlex
65 #define yyerror         FtaParsererror
66 #define yydebug         FtaParserdebug
67 #define yynerrs         FtaParsernerrs
68
69 #define yylval          FtaParserlval
70 #define yychar          FtaParserchar
71
72 /* Copy the first part of user declarations.  */
73 #line 23 "fta.y" /* yacc.c:339  */
74
75
76
77 #include <stdio.h>
78
79 /*              Some addn'l includes, necessary but not included by the
80                 bison generated code.
81 */
82
83 #include <stdlib.h>
84
85 /*              prototypes for the parser callbacks.
86 */
87
88 #include "parse_fta.h"
89 #include "parse_schema.h"
90
91
92 extern fta_parse_t *fta_parse_result;
93 extern var_defs_t *fta_parse_defines;
94
95
96 #define YYDEBUG 1
97
98
99 #line 100 "fta.tab.cc" /* yacc.c:339  */
100
101 # ifndef YY_NULLPTR
102 #  if defined __cplusplus && 201103L <= __cplusplus
103 #   define YY_NULLPTR nullptr
104 #  else
105 #   define YY_NULLPTR 0
106 #  endif
107 # endif
108
109 /* Enabling verbose error messages.  */
110 #ifdef YYERROR_VERBOSE
111 # undef YYERROR_VERBOSE
112 # define YYERROR_VERBOSE 1
113 #else
114 # define YYERROR_VERBOSE 0
115 #endif
116
117 /* In a future release of Bison, this section will be replaced
118    by #include "fta.tab.cc.h".  */
119 #ifndef YY_FTAPARSER_FTA_TAB_CC_H_INCLUDED
120 # define YY_FTAPARSER_FTA_TAB_CC_H_INCLUDED
121 /* Debug traces.  */
122 #ifndef YYDEBUG
123 # define YYDEBUG 0
124 #endif
125 #if YYDEBUG
126 extern int FtaParserdebug;
127 #endif
128
129 /* Token type.  */
130 #ifndef YYTOKENTYPE
131 # define YYTOKENTYPE
132   enum yytokentype
133   {
134     NAME = 258,
135     STRING_TOKEN = 259,
136     INTNUM = 260,
137     LONGINTNUM = 261,
138     APPROXNUM = 262,
139     OR = 263,
140     AND = 264,
141     NOT = 265,
142     COMPARISON = 266,
143     SHIFT_OP = 267,
144     UMINUS = 268,
145     SEMICOLON = 269,
146     LEFTBRACE = 270,
147     RIGHTBRACE = 271,
148     BY = 272,
149     AS = 273,
150     AGGR = 274,
151     FROM = 275,
152     INNER_JOIN = 276,
153     FILTER_JOIN = 277,
154     OUTER_JOIN = 278,
155     LEFT_OUTER_JOIN = 279,
156     RIGHT_OUTER_JOIN = 280,
157     GROUP = 281,
158     HAVING = 282,
159     IN = 283,
160     SELECT = 284,
161     WHERE = 285,
162     SUPERGROUP = 286,
163     CLEANING_WHEN = 287,
164     CLEANING_BY = 288,
165     CLOSING_WHEN = 289,
166     SUCH = 290,
167     THAT = 291,
168     CUBE = 292,
169     ROLLUP = 293,
170     GROUPING_SETS = 294,
171     TRUE_V = 295,
172     FALSE_V = 296,
173     TIMEVAL_L = 297,
174     HEX_L = 298,
175     LHEX_L = 299,
176     IP_L = 300,
177     IPV6_L = 301,
178     MERGE = 302,
179     SLACK = 303,
180     DEFINE_SEC = 304,
181     PARAM_SEC = 305,
182     PROTOCOL = 306,
183     TABLE = 307,
184     STREAM = 308,
185     FTA = 309,
186     UNPACK_FCNS = 310,
187     OPERATOR = 311,
188     OPERATOR_VIEW = 312,
189     FIELDS = 313,
190     SUBQUERIES = 314,
191     SELECTION_PUSHDOWN = 315
192   };
193 #endif
194
195 /* Value type.  */
196 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
197
198 union YYSTYPE
199 {
200 #line 52 "fta.y" /* yacc.c:355  */
201
202         int intval;
203         double floatval;
204         char *strval;
205         int subtok;
206
207         string_t *stringval;
208
209 /*                      for FTA definition.     */
210         literal_t *litval;
211         scalarexp_t *scalarval;
212         se_list_t *se_listval;
213         select_list_t *select_listval;
214         table_exp_t *tblp;
215         predicate_t *predp;
216         literal_list_t *lit_l;
217         tablevar_t *table;
218         tablevar_list_t *tbl_list;
219         colref_t *colref;
220         ifpref_t *ifpref;
221         colref_list_t *clist;
222         var_defs_t *var_defs;
223         var_pair_t *var_pair;
224         gb_t *gb_val;
225         gb_list_t *gb_list;
226         list_of_gb_list_t *list_of_gb_list;
227         extended_gb_t *extended_gb;
228         extended_gb_list_t *extended_gb_list;
229
230         query_list_t *q_list;
231
232 /*              For table definition    */
233         field_entry *field_t;
234         field_entry_list *field_list_t;
235         table_def *table_def_t;
236         table_list *table_list_schema;
237         param_list *plist_t;
238         name_vec  *namevec_t;
239         subquery_spec *subq_spec_t;
240         subqueryspec_list *subqueryspec_list_t;
241         unpack_fcn      *ufcn;
242         unpack_fcn_list *ufcnl;
243
244
245 #line 246 "fta.tab.cc" /* yacc.c:355  */
246 };
247
248 typedef union YYSTYPE YYSTYPE;
249 # define YYSTYPE_IS_TRIVIAL 1
250 # define YYSTYPE_IS_DECLARED 1
251 #endif
252
253
254 extern YYSTYPE FtaParserlval;
255
256 int FtaParserparse (void);
257
258 #endif /* !YY_FTAPARSER_FTA_TAB_CC_H_INCLUDED  */
259
260 /* Copy the second part of user declarations.  */
261
262 #line 263 "fta.tab.cc" /* yacc.c:358  */
263
264 #ifdef short
265 # undef short
266 #endif
267
268 #ifdef YYTYPE_UINT8
269 typedef YYTYPE_UINT8 yytype_uint8;
270 #else
271 typedef unsigned char yytype_uint8;
272 #endif
273
274 #ifdef YYTYPE_INT8
275 typedef YYTYPE_INT8 yytype_int8;
276 #else
277 typedef signed char yytype_int8;
278 #endif
279
280 #ifdef YYTYPE_UINT16
281 typedef YYTYPE_UINT16 yytype_uint16;
282 #else
283 typedef unsigned short int yytype_uint16;
284 #endif
285
286 #ifdef YYTYPE_INT16
287 typedef YYTYPE_INT16 yytype_int16;
288 #else
289 typedef short int yytype_int16;
290 #endif
291
292 #ifndef YYSIZE_T
293 # ifdef __SIZE_TYPE__
294 #  define YYSIZE_T __SIZE_TYPE__
295 # elif defined size_t
296 #  define YYSIZE_T size_t
297 # elif ! defined YYSIZE_T
298 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
299 #  define YYSIZE_T size_t
300 # else
301 #  define YYSIZE_T unsigned int
302 # endif
303 #endif
304
305 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
306
307 #ifndef YY_
308 # if defined YYENABLE_NLS && YYENABLE_NLS
309 #  if ENABLE_NLS
310 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
311 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
312 #  endif
313 # endif
314 # ifndef YY_
315 #  define YY_(Msgid) Msgid
316 # endif
317 #endif
318
319 #ifndef YY_ATTRIBUTE
320 # if (defined __GNUC__                                               \
321       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
322      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
323 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
324 # else
325 #  define YY_ATTRIBUTE(Spec) /* empty */
326 # endif
327 #endif
328
329 #ifndef YY_ATTRIBUTE_PURE
330 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
331 #endif
332
333 #ifndef YY_ATTRIBUTE_UNUSED
334 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
335 #endif
336
337 #if !defined _Noreturn \
338      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
339 # if defined _MSC_VER && 1200 <= _MSC_VER
340 #  define _Noreturn __declspec (noreturn)
341 # else
342 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
343 # endif
344 #endif
345
346 /* Suppress unused-variable warnings by "using" E.  */
347 #if ! defined lint || defined __GNUC__
348 # define YYUSE(E) ((void) (E))
349 #else
350 # define YYUSE(E) /* empty */
351 #endif
352
353 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
354 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
355 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
356     _Pragma ("GCC diagnostic push") \
357     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
358     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
359 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
360     _Pragma ("GCC diagnostic pop")
361 #else
362 # define YY_INITIAL_VALUE(Value) Value
363 #endif
364 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
365 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
366 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
367 #endif
368 #ifndef YY_INITIAL_VALUE
369 # define YY_INITIAL_VALUE(Value) /* Nothing. */
370 #endif
371
372
373 #if ! defined yyoverflow || YYERROR_VERBOSE
374
375 /* The parser invokes alloca or malloc; define the necessary symbols.  */
376
377 # ifdef YYSTACK_USE_ALLOCA
378 #  if YYSTACK_USE_ALLOCA
379 #   ifdef __GNUC__
380 #    define YYSTACK_ALLOC __builtin_alloca
381 #   elif defined __BUILTIN_VA_ARG_INCR
382 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
383 #   elif defined _AIX
384 #    define YYSTACK_ALLOC __alloca
385 #   elif defined _MSC_VER
386 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
387 #    define alloca _alloca
388 #   else
389 #    define YYSTACK_ALLOC alloca
390 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
391 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
392       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
393 #     ifndef EXIT_SUCCESS
394 #      define EXIT_SUCCESS 0
395 #     endif
396 #    endif
397 #   endif
398 #  endif
399 # endif
400
401 # ifdef YYSTACK_ALLOC
402    /* Pacify GCC's 'empty if-body' warning.  */
403 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
404 #  ifndef YYSTACK_ALLOC_MAXIMUM
405     /* The OS might guarantee only one guard page at the bottom of the stack,
406        and a page size can be as small as 4096 bytes.  So we cannot safely
407        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
408        to allow for a few compiler-allocated temporary stack slots.  */
409 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
410 #  endif
411 # else
412 #  define YYSTACK_ALLOC YYMALLOC
413 #  define YYSTACK_FREE YYFREE
414 #  ifndef YYSTACK_ALLOC_MAXIMUM
415 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
416 #  endif
417 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
418        && ! ((defined YYMALLOC || defined malloc) \
419              && (defined YYFREE || defined free)))
420 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
421 #   ifndef EXIT_SUCCESS
422 #    define EXIT_SUCCESS 0
423 #   endif
424 #  endif
425 #  ifndef YYMALLOC
426 #   define YYMALLOC malloc
427 #   if ! defined malloc && ! defined EXIT_SUCCESS
428 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
429 #   endif
430 #  endif
431 #  ifndef YYFREE
432 #   define YYFREE free
433 #   if ! defined free && ! defined EXIT_SUCCESS
434 void free (void *); /* INFRINGES ON USER NAME SPACE */
435 #   endif
436 #  endif
437 # endif
438 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
439
440
441 #if (! defined yyoverflow \
442      && (! defined __cplusplus \
443          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
444
445 /* A type that is properly aligned for any stack member.  */
446 union yyalloc
447 {
448   yytype_int16 yyss_alloc;
449   YYSTYPE yyvs_alloc;
450 };
451
452 /* The size of the maximum gap between one aligned stack and the next.  */
453 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
454
455 /* The size of an array large to enough to hold all stacks, each with
456    N elements.  */
457 # define YYSTACK_BYTES(N) \
458      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
459       + YYSTACK_GAP_MAXIMUM)
460
461 # define YYCOPY_NEEDED 1
462
463 /* Relocate STACK from its old location to the new one.  The
464    local variables YYSIZE and YYSTACKSIZE give the old and new number of
465    elements in the stack, and YYPTR gives the new location of the
466    stack.  Advance YYPTR to a properly aligned location for the next
467    stack.  */
468 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
469     do                                                                  \
470       {                                                                 \
471         YYSIZE_T yynewbytes;                                            \
472         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
473         Stack = &yyptr->Stack_alloc;                                    \
474         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
475         yyptr += yynewbytes / sizeof (*yyptr);                          \
476       }                                                                 \
477     while (0)
478
479 #endif
480
481 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
482 /* Copy COUNT objects from SRC to DST.  The source and destination do
483    not overlap.  */
484 # ifndef YYCOPY
485 #  if defined __GNUC__ && 1 < __GNUC__
486 #   define YYCOPY(Dst, Src, Count) \
487       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
488 #  else
489 #   define YYCOPY(Dst, Src, Count)              \
490       do                                        \
491         {                                       \
492           YYSIZE_T yyi;                         \
493           for (yyi = 0; yyi < (Count); yyi++)   \
494             (Dst)[yyi] = (Src)[yyi];            \
495         }                                       \
496       while (0)
497 #  endif
498 # endif
499 #endif /* !YYCOPY_NEEDED */
500
501 /* YYFINAL -- State number of the termination state.  */
502 #define YYFINAL  57
503 /* YYLAST -- Last index in YYTABLE.  */
504 #define YYLAST   695
505
506 /* YYNTOKENS -- Number of terminals.  */
507 #define YYNTOKENS  80
508 /* YYNNTS -- Number of nonterminals.  */
509 #define YYNNTS  59
510 /* YYNRULES -- Number of rules.  */
511 #define YYNRULES  176
512 /* YYNSTATES -- Number of states.  */
513 #define YYNSTATES  377
514
515 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
516    by yylex, with out-of-bounds checking.  */
517 #define YYUNDEFTOK  2
518 #define YYMAXUTOK   315
519
520 #define YYTRANSLATE(YYX)                                                \
521   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
522
523 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
524    as returned by yylex, without out-of-bounds checking.  */
525 static const yytype_uint8 yytranslate[] =
526 {
527        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
528        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
529        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
530        2,     2,     2,    74,     2,    77,    76,    19,    13,     2,
531       68,    70,    17,    15,    69,    16,    71,    18,     2,     2,
532        2,     2,     2,     2,     2,     2,     2,     2,    79,     2,
533        2,     2,     2,     2,    78,     2,     2,     2,     2,     2,
534        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
535        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
536        2,    72,     2,    73,     2,     2,     2,     2,     2,     2,
537        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
538        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
539        2,     2,     2,     2,    12,     2,    75,     2,     2,     2,
540        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
541        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
542        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
543        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
544        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
545        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
546        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
547        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
548        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
549        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
550        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
551        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
552        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
553        5,     6,     7,     8,     9,    10,    11,    14,    20,    21,
554       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
555       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
556       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
557       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
558       62,    63,    64,    65,    66,    67
559 };
560
561 #if YYDEBUG
562   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
563 static const yytype_uint16 yyrline[] =
564 {
565        0,   204,   204,   209,   216,   230,   235,   240,   245,   249,
566      252,   257,   262,   266,   270,   275,   276,   280,   281,   285,
567      286,   290,   291,   295,   296,   300,   304,   306,   314,   318,
568      330,   331,   332,   333,   334,   335,   339,   340,   344,   345,
569      349,   350,   351,   352,   353,   357,   358,   363,   364,   368,
570      372,   373,   377,   378,   382,   383,   387,   388,   392,   399,
571      400,   401,   402,   403,   407,   408,   409,   410,   414,   418,
572      422,   423,   429,   430,   431,   432,   433,   434,   435,   436,
573      437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
574      447,   448,   449,   450,   451,   452,   453,   458,   459,   460,
575      461,   465,   466,   470,   471,   472,   473,   474,   475,   476,
576      477,   478,   479,   480,   481,   487,   488,   492,   493,   497,
577      498,   502,   503,   504,   505,   509,   510,   514,   515,   519,
578      520,   521,   522,   533,   534,   538,   539,   540,   544,   545,
579      549,   553,   554,   569,   570,   573,   575,   577,   579,   583,
580      584,   588,   592,   593,   597,   600,   601,   605,   606,   610,
581      611,   615,   616,   617,   618,   619,   620,   621,   622,   626,
582      627,   631,   632,   636,   637,   641,   642
583 };
584 #endif
585
586 #if YYDEBUG || YYERROR_VERBOSE || 0
587 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
588    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
589 static const char *const yytname[] =
590 {
591   "$end", "error", "$undefined", "NAME", "STRING_TOKEN", "INTNUM",
592   "LONGINTNUM", "APPROXNUM", "OR", "AND", "NOT", "COMPARISON", "'|'",
593   "'&'", "SHIFT_OP", "'+'", "'-'", "'*'", "'/'", "'%'", "UMINUS",
594   "SEMICOLON", "LEFTBRACE", "RIGHTBRACE", "BY", "AS", "AGGR", "FROM",
595   "INNER_JOIN", "FILTER_JOIN", "OUTER_JOIN", "LEFT_OUTER_JOIN",
596   "RIGHT_OUTER_JOIN", "GROUP", "HAVING", "IN", "SELECT", "WHERE",
597   "SUPERGROUP", "CLEANING_WHEN", "CLEANING_BY", "CLOSING_WHEN", "SUCH",
598   "THAT", "CUBE", "ROLLUP", "GROUPING_SETS", "TRUE_V", "FALSE_V",
599   "TIMEVAL_L", "HEX_L", "LHEX_L", "IP_L", "IPV6_L", "MERGE", "SLACK",
600   "DEFINE_SEC", "PARAM_SEC", "PROTOCOL", "TABLE", "STREAM", "FTA",
601   "UNPACK_FCNS", "OPERATOR", "OPERATOR_VIEW", "FIELDS", "SUBQUERIES",
602   "SELECTION_PUSHDOWN", "'('", "','", "')'", "'.'", "'['", "']'", "'!'",
603   "'~'", "'$'", "'#'", "'@'", "':'", "$accept", "parse_result", "gsql",
604   "query_list", "params_def", "variable_def", "variable_list",
605   "variable_assign", "select_statement", "merge_statement", "selection",
606   "table_exp", "from_clause", "table_ref_commalist", "table_ref", "table",
607   "qname", "opt_where_clause", "where_clause", "opt_cleaning_when_clause",
608   "opt_cleaning_by_clause", "opt_closing_when_clause", "opt_having_clause",
609   "having_clause", "search_condition", "predicate", "comparison_predicate",
610   "in_predicate", "literal_commalist", "scalar_exp", "select_commalist",
611   "scalar_exp_commalist", "literal", "opt_group_by_clause",
612   "opt_supergroup_clause", "list_of_gb_commalist", "extended_gb",
613   "extended_gb_commalist", "gb_commalist", "gb", "ifparam", "column_ref",
614   "column_ref_list", "gb_ref", "gb_ref_list", "table_list", "table_def",
615   "unpack_func_list", "unpack_func", "subqueryspec_list", "subq_spec",
616   "field_list", "field", "opt_param_commalist", "param_commalist",
617   "opt_singleparam_commalist_bkt", "opt_singleparam_commalist",
618   "singleparam_commalist", "namevec_commalist", YY_NULLPTR
619 };
620 #endif
621
622 # ifdef YYPRINT
623 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
624    (internal) symbol number NUM (which must be that of a token).  */
625 static const yytype_uint16 yytoknum[] =
626 {
627        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
628      265,   266,   124,    38,   267,    43,    45,    42,    47,    37,
629      268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
630      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
631      288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
632      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
633      308,   309,   310,   311,   312,   313,   314,   315,    40,    44,
634       41,    46,    91,    93,    33,   126,    36,    35,    64,    58
635 };
636 # endif
637
638 #define YYPACT_NINF -277
639
640 #define yypact_value_is_default(Yystate) \
641   (!!((Yystate) == (-277)))
642
643 #define YYTABLE_NINF -138
644
645 #define yytable_value_is_error(Yytable_value) \
646   0
647
648   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
649      STATE-NUM.  */
650 static const yytype_int16 yypact[] =
651 {
652      413,   489,    37,    51,   105,   114,   120,   124,   128,   126,
653      142,  -277,   136,    72,    24,  -277,  -277,   169,  -277,   104,
654     -277,  -277,  -277,  -277,   489,   489,     0,  -277,  -277,   175,
655      189,   213,   217,   224,   489,   489,   489,   170,   229,   240,
656      338,   426,   182,  -277,  -277,  -277,   235,   230,   369,    35,
657       36,   253,  -277,     1,   169,   319,   289,  -277,    -9,    95,
658     -277,  -277,    95,  -277,  -277,  -277,   148,     8,   255,  -277,
659     -277,   242,   267,  -277,  -277,  -277,  -277,  -277,   257,  -277,
660     -277,  -277,  -277,  -277,    17,   309,   269,   312,   313,   321,
661     -277,   316,   489,   489,   489,   489,   489,   489,   489,   489,
662      347,   489,   351,    37,   489,    37,  -277,   130,  -277,    41,
663     -277,  -277,    81,   372,   305,   375,   378,   360,    83,   382,
664       62,  -277,   323,  -277,  -277,  -277,  -277,  -277,  -277,   676,
665      101,   331,   400,   281,   342,   595,   357,  -277,   348,   349,
666      410,   353,  -277,   420,   412,    17,    37,    17,    17,    17,
667      411,   395,  -277,   264,   554,   248,   143,   143,  -277,  -277,
668     -277,  -277,   533,  -277,   615,  -277,   408,   415,  -277,  -277,
669     -277,   187,   112,   378,   425,  -277,  -277,   150,   447,   429,
670      463,   319,  -277,   253,   489,  -277,   469,  -277,  -277,   165,
671     -277,  -277,   414,   603,   475,   477,   409,    17,  -277,   353,
672      421,   353,   353,   353,   308,   411,   411,   176,  -277,  -277,
673     -277,   495,   457,   445,   488,  -277,  -277,  -277,  -277,  -277,
674     -277,   513,  -277,   -37,   447,   514,  -277,   516,   107,  -277,
675     -277,  -277,  -277,   455,   676,  -277,  -277,  -277,  -277,   451,
676      412,   458,   482,  -277,   550,   450,  -277,    20,   376,   411,
677      411,   489,   449,   162,   553,   525,  -277,   199,  -277,   113,
678     -277,    11,  -277,  -277,   538,   120,   120,   120,   491,  -277,
679      -32,  -277,   565,  -277,   676,   294,    38,   494,   522,   523,
680      636,  -277,   524,  -277,  -277,   529,   530,   411,   555,  -277,
681     -277,  -277,  -277,  -277,   253,   571,   447,   412,   412,   412,
682      573,  -277,   -27,  -277,    10,   528,   528,   556,   594,   162,
683      553,   553,   176,   411,   561,   305,  -277,   115,    17,   294,
684     -277,   570,   172,  -277,   184,   528,   186,  -277,  -277,  -277,
685     -277,   176,   411,   582,   604,   560,   353,  -277,   632,   528,
686     -277,  -277,   233,   568,  -277,   176,   411,  -277,  -277,   616,
687      662,  -277,  -277,   528,   176,   634,   243,   572,    99,  -277,
688     -277,   653,   634,   590,   655,   245,  -277,   253,   253,   656,
689     -277,   637,  -277,   659,  -277,   253,  -277
690 };
691
692   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
693      Performed when YYTABLE does not specify something else to do.  Zero
694      means the default is an error.  */
695 static const yytype_uint8 yydefact[] =
696 {
697        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
698        0,    15,     2,     0,     0,     9,    14,     3,   143,   135,
699      103,   104,   105,   106,     0,     0,     0,   107,   108,     0,
700        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
701        0,    97,    28,    84,    86,    87,   135,     0,     0,     0,
702        0,   159,    45,   171,     0,     0,     0,     1,     0,     0,
703        7,    12,     0,     8,    13,   144,     0,     0,     0,    80,
704       81,     0,     0,   109,   110,   111,   112,   113,     0,    82,
705       83,    85,   114,   133,     0,     0,     0,     0,     0,     0,
706       25,    47,     0,     0,     0,     0,     0,     0,     0,     0,
707        0,     0,     0,     0,     0,     0,    26,     0,    20,     0,
708       21,    18,     0,     0,   169,     0,     0,     0,     0,     0,
709        0,   149,     0,    16,     6,    11,     5,    10,    92,   101,
710        0,   136,     0,     0,     0,     0,     0,    88,    45,     0,
711        0,    30,    36,    38,    40,     0,     0,     0,     0,     0,
712        0,   115,    48,    74,    77,    79,    72,    73,    75,    76,
713       78,    98,    99,   138,     0,   139,     0,     0,    19,    22,
714       17,   161,     0,     0,     0,    46,   173,     0,     0,     0,
715        0,     0,   148,   159,     0,    91,     0,   134,    96,     0,
716       89,    90,     0,     0,     0,     0,     0,     0,    39,    31,
717        0,    32,    34,    33,   135,     0,     0,    49,    63,    64,
718       65,     0,     0,   117,     0,    27,    24,    23,   162,   163,
719      164,     0,   160,     0,     0,     0,   172,     0,     0,   155,
720        4,   151,   150,     0,   102,   137,    95,    93,    94,    45,
721       41,     0,     0,    37,     0,     0,    61,     0,     0,     0,
722        0,     0,     0,     0,     0,    56,   100,   165,   170,     0,
723      174,   159,   146,   156,     0,     0,     0,     0,     0,    66,
724        0,    62,    59,    60,    68,     0,   129,     0,     0,     0,
725        0,   125,   116,   121,   140,     0,   118,     0,    50,    57,
726      166,   167,   168,   145,   159,     0,     0,    42,    43,    44,
727        0,    67,     0,    70,     0,     0,     0,     0,     0,     0,
728        0,     0,    58,     0,    52,   169,   158,     0,     0,     0,
729       69,   130,     0,   127,     0,     0,     0,   132,   126,   141,
730      142,    51,     0,    54,     0,     0,    35,    71,     0,     0,
731      123,   122,     0,     0,   124,    53,     0,    29,   157,     0,
732      131,   128,   119,     0,    55,     0,     0,     0,     0,   152,
733      120,     0,     0,     0,     0,     0,   153,   159,   159,     0,
734      154,     0,   175,     0,   147,   159,   176
735 };
736
737   /* YYPGOTO[NTERM-NUM].  */
738 static const yytype_int16 yypgoto[] =
739 {
740     -277,  -277,   -36,  -277,   625,   650,   614,    47,    12,    53,
741     -277,  -277,   -40,  -142,   470,  -277,    -5,  -277,  -277,  -277,
742     -277,  -277,  -277,  -277,  -188,  -277,  -277,  -277,  -277,    -1,
743     -277,  -124,  -244,  -277,  -277,  -277,   359,  -277,  -276,  -237,
744     -277,     2,  -277,    15,  -277,   612,    -7,  -277,   490,  -277,
745      307,  -209,  -216,  -181,  -277,   355,  -277,   499,  -277
746 };
747
748   /* YYDEFGOTO[NTERM-NUM].  */
749 static const yytype_int16 yydefgoto[] =
750 {
751       -1,    10,    11,    12,    13,    14,   109,   110,    15,    16,
752       40,    90,    91,   141,   142,   143,   144,   151,   152,   314,
753      333,   347,   288,   289,   207,   208,   209,   210,   302,   211,
754       42,   130,    43,   213,   255,   326,   281,   282,   322,   323,
755       44,    45,    48,   285,   286,    17,    18,   120,   121,   358,
756      359,   228,   229,   114,   172,   174,   117,   177,   365
757 };
758
759   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
760      positive, shift that token.  If negative, reduce the rule whose
761      number is the opposite.  If YYTABLE_NINF, syntax error.  */
762 static const yytype_int16 yytable[] =
763 {
764       41,    53,   233,   199,    47,   201,   202,   203,   106,   189,
765       65,   131,   263,   321,   294,   259,   283,   246,   247,   115,
766      138,   139,   123,    69,    70,    60,    63,     1,   249,   250,
767      324,   303,   225,    78,    79,    80,   258,   184,   107,   107,
768       46,   301,   319,   263,   107,     2,   320,     3,     4,   342,
769     -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   108,   111,
770        1,   272,   273,  -135,   168,   129,    61,    64,    71,   116,
771      135,   124,   283,    49,   126,   337,    72,   356,     2,   113,
772      295,     4,   179,   181,   107,   182,   132,   317,   132,   140,
773      271,   153,   154,   155,   156,   157,   158,   159,   160,   312,
774      162,   263,   351,   164,   170,   163,    66,   165,     1,   304,
775      227,    65,   125,   315,    68,   127,   227,    51,   227,     1,
776      362,   270,   363,    52,   215,   331,     2,    50,     3,    56,
777      262,     1,   129,   166,   167,   193,   293,     2,   335,     3,
778        4,     5,    57,     6,   345,     8,    54,     9,   200,     2,
779       55,    19,    20,    21,    22,    23,   169,    58,   354,   169,
780       97,    98,    99,    24,    25,   276,    20,    21,    22,    23,
781      184,   185,    66,    81,    26,    67,   336,    24,    25,    73,
782       68,   221,   222,   234,   249,   250,   371,   372,    26,   240,
783      218,   219,   220,    74,   376,    27,    28,    29,    30,    31,
784       32,    33,   290,   291,   292,   248,   277,   278,   279,    27,
785       28,    29,    30,    31,    32,    33,    34,    75,   128,   225,
786      226,    76,    35,    36,    37,    38,    39,     5,    77,     6,
787       34,     8,    82,     9,   184,   236,    35,    36,    37,    38,
788       39,   339,   340,    83,   129,    19,    20,    21,    22,    23,
789      274,   101,   280,   339,   341,   343,   344,    24,    25,   134,
790      297,   298,   299,    95,    96,    97,    98,    99,    26,    92,
791       93,    94,    95,    96,    97,    98,    99,    93,    94,    95,
792       96,    97,    98,    99,    19,    20,    21,    22,    23,    27,
793       28,    29,    30,    31,    32,    33,    24,    25,    20,    21,
794       22,    23,   339,   352,   280,   280,   102,    26,   280,   103,
795       34,   122,   339,   360,   369,   370,    35,    36,    37,    38,
796       39,   113,   119,   133,   280,   329,   330,   137,    27,    28,
797       29,    30,    31,    32,    33,   136,   145,   146,   280,   147,
798      148,    27,    28,    29,    30,    31,    32,    33,   149,    34,
799      161,   188,   280,   150,   131,    35,    36,    37,    38,    39,
800       19,    20,    21,    22,    23,    84,    85,    86,    87,    88,
801       89,    38,    24,    25,   192,   171,    66,   173,   175,    67,
802      245,   176,   178,    26,    68,   180,   183,   251,    92,    93,
803       94,    95,    96,    97,    98,    99,    84,    85,    86,    87,
804       88,    89,   186,   187,    27,    28,    29,    30,    31,    32,
805       33,   252,   190,   196,   204,    20,    21,    22,    23,   194,
806      195,   205,   197,   198,   104,    34,    24,    25,   212,   216,
807      115,    35,    36,    37,    38,    39,   217,    26,    92,    93,
808       94,    95,    96,    97,    98,    99,   137,   224,   105,     1,
809      227,   100,   230,    19,    20,    21,    22,    23,    27,    28,
810       29,    30,    31,    32,    33,    24,    25,     2,   231,     3,
811        4,     5,   235,     6,     7,     8,    26,     9,   239,   206,
812      241,   253,   242,   254,   237,    35,    36,    37,    38,    39,
813      244,   256,    19,    20,    21,    22,    23,    27,    28,    29,
814       30,    31,    32,    33,    24,    25,   251,    92,    93,    94,
815       95,    96,    97,    98,    99,    26,   257,   260,    34,   261,
816      264,   275,   265,   269,    35,    36,    37,    38,    39,   266,
817      252,   276,    20,    21,    22,    23,    27,    28,    29,    30,
818       31,    32,    33,    24,    25,    92,    93,    94,    95,    96,
819       97,    98,    99,   267,    26,   268,   284,    34,   214,   287,
820      296,   300,   305,    35,    36,    37,    38,    39,    94,    95,
821       96,    97,    98,    99,   250,    27,    28,    29,    30,    31,
822       32,    33,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,
823      306,   307,   316,   309,   313,  -136,    34,   327,   310,   311,
824      318,   332,    35,    36,    37,    38,    39,    92,    93,    94,
825       95,    96,    97,    98,    99,    92,    93,    94,    95,    96,
826       97,    98,    99,   346,   325,   348,   349,    92,    93,    94,
827       95,    96,    97,    98,    99,   350,   353,   357,   355,    62,
828      361,   338,    84,    85,    86,    87,    88,    89,    92,    93,
829       94,    95,    96,    97,    98,    99,   364,   367,   368,   373,
830      374,   308,   375,    59,   112,   191,   118,   243,   328,   366,
831      334,   232,   223,   238,  -137,  -137,  -137,  -137,  -137,  -137,
832     -137,  -137,     0,     0,     0,     0,     0,  -137,    92,    93,
833       94,    95,    96,    97,    98,    99
834 };
835
836 static const yytype_int16 yycheck[] =
837 {
838        1,     6,   183,   145,     2,   147,   148,   149,    48,   133,
839       17,     3,   228,     3,     3,   224,   253,   205,   206,    18,
840        3,     4,    58,    24,    25,    13,    14,    36,     8,     9,
841      306,   275,    69,    34,    35,    36,    73,    69,     3,     3,
842        3,    73,    69,   259,     3,    54,    73,    56,    57,   325,
843       12,    13,    14,    15,    16,    17,    18,    19,    23,    23,
844       36,   249,   250,    25,    23,    66,    13,    14,    68,    68,
845       71,    59,   309,    22,    62,   319,    76,   353,    54,    68,
846      261,    57,   118,    21,     3,    23,    78,   296,    78,    72,
847       70,    92,    93,    94,    95,    96,    97,    98,    99,   287,
848      101,   317,   339,   104,    23,   103,    68,   105,    36,    71,
849        3,   118,    59,   294,    76,    62,     3,     3,     3,    36,
850       21,   245,    23,     3,   164,   313,    54,    22,    56,     3,
851       23,    36,   133,     3,     4,   136,    23,    54,    23,    56,
852       57,    58,     0,    60,   332,    62,    22,    64,   146,    54,
853       22,     3,     4,     5,     6,     7,   109,    21,   346,   112,
854       17,    18,    19,    15,    16,     3,     4,     5,     6,     7,
855       69,    70,    68,     3,    26,    71,   318,    15,    16,     4,
856       76,    69,    70,   184,     8,     9,   367,   368,    26,   194,
857        3,     4,     5,     4,   375,    47,    48,    49,    50,    51,
858       52,    53,     3,     4,     5,   206,    44,    45,    46,    47,
859       48,    49,    50,    51,    52,    53,    68,     4,    70,    69,
860       70,     4,    74,    75,    76,    77,    78,    58,     4,    60,
861       68,    62,     3,    64,    69,    70,    74,    75,    76,    77,
862       78,    69,    70,     3,   245,     3,     4,     5,     6,     7,
863      251,    69,   253,    69,    70,    69,    70,    15,    16,    17,
864      265,   266,   267,    15,    16,    17,    18,    19,    26,    12,
865       13,    14,    15,    16,    17,    18,    19,    13,    14,    15,
866       16,    17,    18,    19,     3,     4,     5,     6,     7,    47,
867       48,    49,    50,    51,    52,    53,    15,    16,     4,     5,
868        6,     7,    69,    70,   305,   306,    71,    26,   309,    79,
869       68,    22,    69,    70,    69,    70,    74,    75,    76,    77,
870       78,    68,     3,    68,   325,   310,   311,    70,    47,    48,
871       49,    50,    51,    52,    53,    68,    27,    68,   339,    27,
872       27,    47,    48,    49,    50,    51,    52,    53,    27,    68,
873        3,    70,   353,    37,     3,    74,    75,    76,    77,    78,
874        3,     4,     5,     6,     7,    27,    28,    29,    30,    31,
875       32,    77,    15,    16,    17,     3,    68,    72,     3,    71,
876       72,     3,    22,    26,    76,     3,    63,    11,    12,    13,
877       14,    15,    16,    17,    18,    19,    27,    28,    29,    30,
878       31,    32,    71,     3,    47,    48,    49,    50,    51,    52,
879       53,    35,    70,     3,     3,     4,     5,     6,     7,    71,
880       71,    10,    69,     3,    55,    68,    15,    16,    33,    21,
881       18,    74,    75,    76,    77,    78,    21,    26,    12,    13,
882       14,    15,    16,    17,    18,    19,    70,    22,    79,    36,
883        3,    25,    23,     3,     4,     5,     6,     7,    47,    48,
884       49,    50,    51,    52,    53,    15,    16,    54,     5,    56,
885       57,    58,     3,    60,    61,    62,    26,    64,     3,    68,
886        3,    24,    73,    38,    70,    74,    75,    76,    77,    78,
887       69,     3,     3,     4,     5,     6,     7,    47,    48,    49,
888       50,    51,    52,    53,    15,    16,    11,    12,    13,    14,
889       15,    16,    17,    18,    19,    26,     3,     3,    68,     3,
890       65,    72,    71,    73,    74,    75,    76,    77,    78,    71,
891       35,     3,     4,     5,     6,     7,    47,    48,    49,    50,
892       51,    52,    53,    15,    16,    12,    13,    14,    15,    16,
893       17,    18,    19,    71,    26,     5,     3,    68,    25,    34,
894       22,    70,    68,    74,    75,    76,    77,    78,    14,    15,
895       16,    17,    18,    19,     9,    47,    48,    49,    50,    51,
896       52,    53,    12,    13,    14,    15,    16,    17,    18,    19,
897       68,    68,    21,    69,    39,    25,    68,     3,    69,    69,
898       27,    40,    74,    75,    76,    77,    78,    12,    13,    14,
899       15,    16,    17,    18,    19,    12,    13,    14,    15,    16,
900       17,    18,    19,    41,    68,    21,    66,    12,    13,    14,
901       15,    16,    17,    18,    19,     3,    68,     3,    22,    14,
902       68,    71,    27,    28,    29,    30,    31,    32,    12,    13,
903       14,    15,    16,    17,    18,    19,     3,    67,     3,     3,
904       23,    25,     3,    13,    50,    70,    54,   197,   309,   362,
905      315,   181,   173,    70,    12,    13,    14,    15,    16,    17,
906       18,    19,    -1,    -1,    -1,    -1,    -1,    25,    12,    13,
907       14,    15,    16,    17,    18,    19
908 };
909
910   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
911      symbol of state STATE-NUM.  */
912 static const yytype_uint8 yystos[] =
913 {
914        0,    36,    54,    56,    57,    58,    60,    61,    62,    64,
915       81,    82,    83,    84,    85,    88,    89,   125,   126,     3,
916        4,     5,     6,     7,    15,    16,    26,    47,    48,    49,
917       50,    51,    52,    53,    68,    74,    75,    76,    77,    78,
918       90,   109,   110,   112,   120,   121,     3,   121,   122,    22,
919       22,     3,     3,    96,    22,    22,     3,     0,    21,    85,
920       88,    89,    84,    88,    89,   126,    68,    71,    76,   109,
921      109,    68,    76,     4,     4,     4,     4,     4,   109,   109,
922      109,     3,     3,     3,    27,    28,    29,    30,    31,    32,
923       91,    92,    12,    13,    14,    15,    16,    17,    18,    19,
924       25,    69,    71,    79,    55,    79,    92,     3,    23,    86,
925       87,    23,    86,    68,   133,    18,    68,   136,   125,     3,
926      127,   128,    22,    82,    88,    89,    88,    89,    70,   109,
927      111,     3,    78,    68,    17,   109,    68,    70,     3,     4,
928       72,    93,    94,    95,    96,    27,    68,    27,    27,    27,
929       37,    97,    98,   109,   109,   109,   109,   109,   109,   109,
930      109,     3,   109,   121,   109,   121,     3,     4,    23,    87,
931       23,     3,   134,    72,   135,     3,     3,   137,    22,    82,
932        3,    21,    23,    63,    69,    70,    71,     3,    70,   111,
933       70,    70,    17,   109,    71,    71,     3,    69,     3,    93,
934      121,    93,    93,    93,     3,    10,    68,   104,   105,   106,
935      107,   109,    33,   113,    25,    92,    21,    21,     3,     4,
936        5,    69,    70,   137,    22,    69,    70,     3,   131,   132,
937       23,     5,   128,   133,   109,     3,    70,    70,    70,     3,
938       96,     3,    73,    94,    69,    72,   104,   104,   109,     8,
939        9,    11,    35,    24,    38,   114,     3,     3,    73,   131,
940        3,     3,    23,   132,    65,    71,    71,    71,     5,    73,
941      111,    70,   104,   104,   109,    72,     3,    44,    45,    46,
942      109,   116,   117,   119,     3,   123,   124,    34,   102,   103,
943        3,     4,     5,    23,     3,   133,    22,    96,    96,    96,
944       70,    73,   108,   112,    71,    68,    68,    68,    25,    69,
945       69,    69,   104,    39,    99,   133,    21,   131,    27,    69,
946       73,     3,   118,   119,   118,    68,   115,     3,   116,   123,
947      123,   104,    40,   100,   135,    23,    93,   112,    71,    69,
948       70,    70,   118,    69,    70,   104,    41,   101,    21,    66,
949        3,   119,    70,    68,   104,    22,   118,     3,   129,   130,
950       70,    68,    21,    23,     3,   138,   130,    67,     3,    69,
951       70,   133,   133,     3,    23,     3,   133
952 };
953
954   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
955 static const yytype_uint8 yyr1[] =
956 {
957        0,    80,    81,    81,    81,    82,    82,    82,    82,    82,
958       82,    82,    82,    82,    82,    83,    83,    84,    84,    85,
959       85,    86,    86,    87,    87,    88,    89,    89,    90,    91,
960       92,    92,    92,    92,    92,    92,    93,    93,    94,    94,
961       95,    95,    95,    95,    95,    96,    96,    97,    97,    98,
962       99,    99,   100,   100,   101,   101,   102,   102,   103,   104,
963      104,   104,   104,   104,   105,   105,   105,   105,   106,   107,
964      108,   108,   109,   109,   109,   109,   109,   109,   109,   109,
965      109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
966      109,   109,   109,   109,   109,   109,   109,   110,   110,   110,
967      110,   111,   111,   112,   112,   112,   112,   112,   112,   112,
968      112,   112,   112,   112,   112,   113,   113,   114,   114,   115,
969      115,   116,   116,   116,   116,   117,   117,   118,   118,   119,
970      119,   119,   119,   120,   120,   121,   121,   121,   122,   122,
971      123,   124,   124,   125,   125,   126,   126,   126,   126,   127,
972      127,   128,   129,   129,   130,   131,   131,   132,   132,   133,
973      133,   134,   134,   134,   134,   134,   134,   134,   134,   135,
974      135,   136,   136,   137,   137,   138,   138
975 };
976
977   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
978 static const yytype_uint8 yyr2[] =
979 {
980        0,     2,     1,     1,     5,     3,     3,     2,     2,     1,
981        3,     3,     2,     2,     1,     1,     3,     4,     3,     4,
982        3,     1,     2,     3,     3,     3,     3,     5,     1,     8,
983        2,     3,     3,     3,     3,     8,     1,     3,     1,     2,
984        1,     3,     5,     5,     5,     1,     3,     0,     1,     2,
985        0,     2,     0,     2,     0,     2,     0,     1,     2,     3,
986        3,     2,     3,     1,     1,     1,     3,     4,     3,     5,
987        1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
988        2,     2,     2,     2,     1,     2,     1,     1,     3,     4,
989        4,     4,     3,     5,     5,     5,     4,     1,     3,     3,
990        5,     1,     3,     1,     1,     1,     1,     1,     1,     2,
991        2,     2,     2,     2,     2,     0,     3,     0,     2,     3,
992        5,     1,     4,     4,     4,     1,     3,     1,     3,     1,
993        3,     5,     3,     2,     4,     1,     3,     5,     3,     3,
994        1,     3,     3,     1,     2,     7,     6,    16,     4,     1,
995        3,     3,     1,     3,     4,     1,     2,     6,     4,     0,
996        3,     1,     2,     2,     2,     3,     4,     4,     4,     0,
997        3,     0,     3,     1,     3,     3,     5
998 };
999
1000
1001 #define yyerrok         (yyerrstatus = 0)
1002 #define yyclearin       (yychar = YYEMPTY)
1003 #define YYEMPTY         (-2)
1004 #define YYEOF           0
1005
1006 #define YYACCEPT        goto yyacceptlab
1007 #define YYABORT         goto yyabortlab
1008 #define YYERROR         goto yyerrorlab
1009
1010
1011 #define YYRECOVERING()  (!!yyerrstatus)
1012
1013 #define YYBACKUP(Token, Value)                                  \
1014 do                                                              \
1015   if (yychar == YYEMPTY)                                        \
1016     {                                                           \
1017       yychar = (Token);                                         \
1018       yylval = (Value);                                         \
1019       YYPOPSTACK (yylen);                                       \
1020       yystate = *yyssp;                                         \
1021       goto yybackup;                                            \
1022     }                                                           \
1023   else                                                          \
1024     {                                                           \
1025       yyerror (YY_("syntax error: cannot back up")); \
1026       YYERROR;                                                  \
1027     }                                                           \
1028 while (0)
1029
1030 /* Error token number */
1031 #define YYTERROR        1
1032 #define YYERRCODE       256
1033
1034
1035
1036 /* Enable debugging if requested.  */
1037 #if YYDEBUG
1038
1039 # ifndef YYFPRINTF
1040 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1041 #  define YYFPRINTF fprintf
1042 # endif
1043
1044 # define YYDPRINTF(Args)                        \
1045 do {                                            \
1046   if (yydebug)                                  \
1047     YYFPRINTF Args;                             \
1048 } while (0)
1049
1050 /* This macro is provided for backward compatibility. */
1051 #ifndef YY_LOCATION_PRINT
1052 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1053 #endif
1054
1055
1056 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1057 do {                                                                      \
1058   if (yydebug)                                                            \
1059     {                                                                     \
1060       YYFPRINTF (stderr, "%s ", Title);                                   \
1061       yy_symbol_print (stderr,                                            \
1062                   Type, Value); \
1063       YYFPRINTF (stderr, "\n");                                           \
1064     }                                                                     \
1065 } while (0)
1066
1067
1068 /*----------------------------------------.
1069 | Print this symbol's value on YYOUTPUT.  |
1070 `----------------------------------------*/
1071
1072 static void
1073 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1074 {
1075   FILE *yyo = yyoutput;
1076   YYUSE (yyo);
1077   if (!yyvaluep)
1078     return;
1079 # ifdef YYPRINT
1080   if (yytype < YYNTOKENS)
1081     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1082 # endif
1083   YYUSE (yytype);
1084 }
1085
1086
1087 /*--------------------------------.
1088 | Print this symbol on YYOUTPUT.  |
1089 `--------------------------------*/
1090
1091 static void
1092 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1093 {
1094   YYFPRINTF (yyoutput, "%s %s (",
1095              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1096
1097   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1098   YYFPRINTF (yyoutput, ")");
1099 }
1100
1101 /*------------------------------------------------------------------.
1102 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1103 | TOP (included).                                                   |
1104 `------------------------------------------------------------------*/
1105
1106 static void
1107 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1108 {
1109   YYFPRINTF (stderr, "Stack now");
1110   for (; yybottom <= yytop; yybottom++)
1111     {
1112       int yybot = *yybottom;
1113       YYFPRINTF (stderr, " %d", yybot);
1114     }
1115   YYFPRINTF (stderr, "\n");
1116 }
1117
1118 # define YY_STACK_PRINT(Bottom, Top)                            \
1119 do {                                                            \
1120   if (yydebug)                                                  \
1121     yy_stack_print ((Bottom), (Top));                           \
1122 } while (0)
1123
1124
1125 /*------------------------------------------------.
1126 | Report that the YYRULE is going to be reduced.  |
1127 `------------------------------------------------*/
1128
1129 static void
1130 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1131 {
1132   unsigned long int yylno = yyrline[yyrule];
1133   int yynrhs = yyr2[yyrule];
1134   int yyi;
1135   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1136              yyrule - 1, yylno);
1137   /* The symbols being reduced.  */
1138   for (yyi = 0; yyi < yynrhs; yyi++)
1139     {
1140       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1141       yy_symbol_print (stderr,
1142                        yystos[yyssp[yyi + 1 - yynrhs]],
1143                        &(yyvsp[(yyi + 1) - (yynrhs)])
1144                                               );
1145       YYFPRINTF (stderr, "\n");
1146     }
1147 }
1148
1149 # define YY_REDUCE_PRINT(Rule)          \
1150 do {                                    \
1151   if (yydebug)                          \
1152     yy_reduce_print (yyssp, yyvsp, Rule); \
1153 } while (0)
1154
1155 /* Nonzero means print parse trace.  It is left uninitialized so that
1156    multiple parsers can coexist.  */
1157 int yydebug;
1158 #else /* !YYDEBUG */
1159 # define YYDPRINTF(Args)
1160 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1161 # define YY_STACK_PRINT(Bottom, Top)
1162 # define YY_REDUCE_PRINT(Rule)
1163 #endif /* !YYDEBUG */
1164
1165
1166 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1167 #ifndef YYINITDEPTH
1168 # define YYINITDEPTH 200
1169 #endif
1170
1171 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1172    if the built-in stack extension method is used).
1173
1174    Do not make this value too large; the results are undefined if
1175    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1176    evaluated with infinite-precision integer arithmetic.  */
1177
1178 #ifndef YYMAXDEPTH
1179 # define YYMAXDEPTH 10000
1180 #endif
1181
1182
1183 #if YYERROR_VERBOSE
1184
1185 # ifndef yystrlen
1186 #  if defined __GLIBC__ && defined _STRING_H
1187 #   define yystrlen strlen
1188 #  else
1189 /* Return the length of YYSTR.  */
1190 static YYSIZE_T
1191 yystrlen (const char *yystr)
1192 {
1193   YYSIZE_T yylen;
1194   for (yylen = 0; yystr[yylen]; yylen++)
1195     continue;
1196   return yylen;
1197 }
1198 #  endif
1199 # endif
1200
1201 # ifndef yystpcpy
1202 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1203 #   define yystpcpy stpcpy
1204 #  else
1205 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1206    YYDEST.  */
1207 static char *
1208 yystpcpy (char *yydest, const char *yysrc)
1209 {
1210   char *yyd = yydest;
1211   const char *yys = yysrc;
1212
1213   while ((*yyd++ = *yys++) != '\0')
1214     continue;
1215
1216   return yyd - 1;
1217 }
1218 #  endif
1219 # endif
1220
1221 # ifndef yytnamerr
1222 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1223    quotes and backslashes, so that it's suitable for yyerror.  The
1224    heuristic is that double-quoting is unnecessary unless the string
1225    contains an apostrophe, a comma, or backslash (other than
1226    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1227    null, do not copy; instead, return the length of what the result
1228    would have been.  */
1229 static YYSIZE_T
1230 yytnamerr (char *yyres, const char *yystr)
1231 {
1232   if (*yystr == '"')
1233     {
1234       YYSIZE_T yyn = 0;
1235       char const *yyp = yystr;
1236
1237       for (;;)
1238         switch (*++yyp)
1239           {
1240           case '\'':
1241           case ',':
1242             goto do_not_strip_quotes;
1243
1244           case '\\':
1245             if (*++yyp != '\\')
1246               goto do_not_strip_quotes;
1247             /* Fall through.  */
1248           default:
1249             if (yyres)
1250               yyres[yyn] = *yyp;
1251             yyn++;
1252             break;
1253
1254           case '"':
1255             if (yyres)
1256               yyres[yyn] = '\0';
1257             return yyn;
1258           }
1259     do_not_strip_quotes: ;
1260     }
1261
1262   if (! yyres)
1263     return yystrlen (yystr);
1264
1265   return yystpcpy (yyres, yystr) - yyres;
1266 }
1267 # endif
1268
1269 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1270    about the unexpected token YYTOKEN for the state stack whose top is
1271    YYSSP.
1272
1273    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1274    not large enough to hold the message.  In that case, also set
1275    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1276    required number of bytes is too large to store.  */
1277 static int
1278 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1279                 yytype_int16 *yyssp, int yytoken)
1280 {
1281   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1282   YYSIZE_T yysize = yysize0;
1283   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1284   /* Internationalized format string. */
1285   const char *yyformat = YY_NULLPTR;
1286   /* Arguments of yyformat. */
1287   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1288   /* Number of reported tokens (one for the "unexpected", one per
1289      "expected"). */
1290   int yycount = 0;
1291
1292   /* There are many possibilities here to consider:
1293      - If this state is a consistent state with a default action, then
1294        the only way this function was invoked is if the default action
1295        is an error action.  In that case, don't check for expected
1296        tokens because there are none.
1297      - The only way there can be no lookahead present (in yychar) is if
1298        this state is a consistent state with a default action.  Thus,
1299        detecting the absence of a lookahead is sufficient to determine
1300        that there is no unexpected or expected token to report.  In that
1301        case, just report a simple "syntax error".
1302      - Don't assume there isn't a lookahead just because this state is a
1303        consistent state with a default action.  There might have been a
1304        previous inconsistent state, consistent state with a non-default
1305        action, or user semantic action that manipulated yychar.
1306      - Of course, the expected token list depends on states to have
1307        correct lookahead information, and it depends on the parser not
1308        to perform extra reductions after fetching a lookahead from the
1309        scanner and before detecting a syntax error.  Thus, state merging
1310        (from LALR or IELR) and default reductions corrupt the expected
1311        token list.  However, the list is correct for canonical LR with
1312        one exception: it will still contain any token that will not be
1313        accepted due to an error action in a later state.
1314   */
1315   if (yytoken != YYEMPTY)
1316     {
1317       int yyn = yypact[*yyssp];
1318       yyarg[yycount++] = yytname[yytoken];
1319       if (!yypact_value_is_default (yyn))
1320         {
1321           /* Start YYX at -YYN if negative to avoid negative indexes in
1322              YYCHECK.  In other words, skip the first -YYN actions for
1323              this state because they are default actions.  */
1324           int yyxbegin = yyn < 0 ? -yyn : 0;
1325           /* Stay within bounds of both yycheck and yytname.  */
1326           int yychecklim = YYLAST - yyn + 1;
1327           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1328           int yyx;
1329
1330           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1331             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1332                 && !yytable_value_is_error (yytable[yyx + yyn]))
1333               {
1334                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1335                   {
1336                     yycount = 1;
1337                     yysize = yysize0;
1338                     break;
1339                   }
1340                 yyarg[yycount++] = yytname[yyx];
1341                 {
1342                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1343                   if (! (yysize <= yysize1
1344                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1345                     return 2;
1346                   yysize = yysize1;
1347                 }
1348               }
1349         }
1350     }
1351
1352   switch (yycount)
1353     {
1354 # define YYCASE_(N, S)                      \
1355       case N:                               \
1356         yyformat = S;                       \
1357       break
1358       YYCASE_(0, YY_("syntax error"));
1359       YYCASE_(1, YY_("syntax error, unexpected %s"));
1360       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1361       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1362       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1363       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1364 # undef YYCASE_
1365     }
1366
1367   {
1368     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1369     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1370       return 2;
1371     yysize = yysize1;
1372   }
1373
1374   if (*yymsg_alloc < yysize)
1375     {
1376       *yymsg_alloc = 2 * yysize;
1377       if (! (yysize <= *yymsg_alloc
1378              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1379         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1380       return 1;
1381     }
1382
1383   /* Avoid sprintf, as that infringes on the user's name space.
1384      Don't have undefined behavior even if the translation
1385      produced a string with the wrong number of "%s"s.  */
1386   {
1387     char *yyp = *yymsg;
1388     int yyi = 0;
1389     while ((*yyp = *yyformat) != '\0')
1390       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1391         {
1392           yyp += yytnamerr (yyp, yyarg[yyi++]);
1393           yyformat += 2;
1394         }
1395       else
1396         {
1397           yyp++;
1398           yyformat++;
1399         }
1400   }
1401   return 0;
1402 }
1403 #endif /* YYERROR_VERBOSE */
1404
1405 /*-----------------------------------------------.
1406 | Release the memory associated to this symbol.  |
1407 `-----------------------------------------------*/
1408
1409 static void
1410 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1411 {
1412   YYUSE (yyvaluep);
1413   if (!yymsg)
1414     yymsg = "Deleting";
1415   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1416
1417   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1418   YYUSE (yytype);
1419   YY_IGNORE_MAYBE_UNINITIALIZED_END
1420 }
1421
1422
1423
1424
1425 /* The lookahead symbol.  */
1426 int yychar;
1427
1428 /* The semantic value of the lookahead symbol.  */
1429 YYSTYPE yylval;
1430 /* Number of syntax errors so far.  */
1431 int yynerrs;
1432
1433
1434 /*----------.
1435 | yyparse.  |
1436 `----------*/
1437
1438 int
1439 yyparse (void)
1440 {
1441     int yystate;
1442     /* Number of tokens to shift before error messages enabled.  */
1443     int yyerrstatus;
1444
1445     /* The stacks and their tools:
1446        'yyss': related to states.
1447        'yyvs': related to semantic values.
1448
1449        Refer to the stacks through separate pointers, to allow yyoverflow
1450        to reallocate them elsewhere.  */
1451
1452     /* The state stack.  */
1453     yytype_int16 yyssa[YYINITDEPTH];
1454     yytype_int16 *yyss;
1455     yytype_int16 *yyssp;
1456
1457     /* The semantic value stack.  */
1458     YYSTYPE yyvsa[YYINITDEPTH];
1459     YYSTYPE *yyvs;
1460     YYSTYPE *yyvsp;
1461
1462     YYSIZE_T yystacksize;
1463
1464   int yyn;
1465   int yyresult;
1466   /* Lookahead token as an internal (translated) token number.  */
1467   int yytoken = 0;
1468   /* The variables used to return semantic value and location from the
1469      action routines.  */
1470   YYSTYPE yyval;
1471
1472 #if YYERROR_VERBOSE
1473   /* Buffer for error messages, and its allocated size.  */
1474   char yymsgbuf[128];
1475   char *yymsg = yymsgbuf;
1476   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1477 #endif
1478
1479 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1480
1481   /* The number of symbols on the RHS of the reduced rule.
1482      Keep to zero when no symbol should be popped.  */
1483   int yylen = 0;
1484
1485   yyssp = yyss = yyssa;
1486   yyvsp = yyvs = yyvsa;
1487   yystacksize = YYINITDEPTH;
1488
1489   YYDPRINTF ((stderr, "Starting parse\n"));
1490
1491   yystate = 0;
1492   yyerrstatus = 0;
1493   yynerrs = 0;
1494   yychar = YYEMPTY; /* Cause a token to be read.  */
1495   goto yysetstate;
1496
1497 /*------------------------------------------------------------.
1498 | yynewstate -- Push a new state, which is found in yystate.  |
1499 `------------------------------------------------------------*/
1500  yynewstate:
1501   /* In all cases, when you get here, the value and location stacks
1502      have just been pushed.  So pushing a state here evens the stacks.  */
1503   yyssp++;
1504
1505  yysetstate:
1506   *yyssp = yystate;
1507
1508   if (yyss + yystacksize - 1 <= yyssp)
1509     {
1510       /* Get the current used size of the three stacks, in elements.  */
1511       YYSIZE_T yysize = yyssp - yyss + 1;
1512
1513 #ifdef yyoverflow
1514       {
1515         /* Give user a chance to reallocate the stack.  Use copies of
1516            these so that the &'s don't force the real ones into
1517            memory.  */
1518         YYSTYPE *yyvs1 = yyvs;
1519         yytype_int16 *yyss1 = yyss;
1520
1521         /* Each stack pointer address is followed by the size of the
1522            data in use in that stack, in bytes.  This used to be a
1523            conditional around just the two extra args, but that might
1524            be undefined if yyoverflow is a macro.  */
1525         yyoverflow (YY_("memory exhausted"),
1526                     &yyss1, yysize * sizeof (*yyssp),
1527                     &yyvs1, yysize * sizeof (*yyvsp),
1528                     &yystacksize);
1529
1530         yyss = yyss1;
1531         yyvs = yyvs1;
1532       }
1533 #else /* no yyoverflow */
1534 # ifndef YYSTACK_RELOCATE
1535       goto yyexhaustedlab;
1536 # else
1537       /* Extend the stack our own way.  */
1538       if (YYMAXDEPTH <= yystacksize)
1539         goto yyexhaustedlab;
1540       yystacksize *= 2;
1541       if (YYMAXDEPTH < yystacksize)
1542         yystacksize = YYMAXDEPTH;
1543
1544       {
1545         yytype_int16 *yyss1 = yyss;
1546         union yyalloc *yyptr =
1547           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1548         if (! yyptr)
1549           goto yyexhaustedlab;
1550         YYSTACK_RELOCATE (yyss_alloc, yyss);
1551         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1552 #  undef YYSTACK_RELOCATE
1553         if (yyss1 != yyssa)
1554           YYSTACK_FREE (yyss1);
1555       }
1556 # endif
1557 #endif /* no yyoverflow */
1558
1559       yyssp = yyss + yysize - 1;
1560       yyvsp = yyvs + yysize - 1;
1561
1562       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1563                   (unsigned long int) yystacksize));
1564
1565       if (yyss + yystacksize - 1 <= yyssp)
1566         YYABORT;
1567     }
1568
1569   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1570
1571   if (yystate == YYFINAL)
1572     YYACCEPT;
1573
1574   goto yybackup;
1575
1576 /*-----------.
1577 | yybackup.  |
1578 `-----------*/
1579 yybackup:
1580
1581   /* Do appropriate processing given the current state.  Read a
1582      lookahead token if we need one and don't already have one.  */
1583
1584   /* First try to decide what to do without reference to lookahead token.  */
1585   yyn = yypact[yystate];
1586   if (yypact_value_is_default (yyn))
1587     goto yydefault;
1588
1589   /* Not known => get a lookahead token if don't already have one.  */
1590
1591   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1592   if (yychar == YYEMPTY)
1593     {
1594       YYDPRINTF ((stderr, "Reading a token: "));
1595       yychar = yylex ();
1596     }
1597
1598   if (yychar <= YYEOF)
1599     {
1600       yychar = yytoken = YYEOF;
1601       YYDPRINTF ((stderr, "Now at end of input.\n"));
1602     }
1603   else
1604     {
1605       yytoken = YYTRANSLATE (yychar);
1606       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1607     }
1608
1609   /* If the proper action on seeing token YYTOKEN is to reduce or to
1610      detect an error, take that action.  */
1611   yyn += yytoken;
1612   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1613     goto yydefault;
1614   yyn = yytable[yyn];
1615   if (yyn <= 0)
1616     {
1617       if (yytable_value_is_error (yyn))
1618         goto yyerrlab;
1619       yyn = -yyn;
1620       goto yyreduce;
1621     }
1622
1623   /* Count tokens shifted since error; after three, turn off error
1624      status.  */
1625   if (yyerrstatus)
1626     yyerrstatus--;
1627
1628   /* Shift the lookahead token.  */
1629   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1630
1631   /* Discard the shifted token.  */
1632   yychar = YYEMPTY;
1633
1634   yystate = yyn;
1635   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1636   *++yyvsp = yylval;
1637   YY_IGNORE_MAYBE_UNINITIALIZED_END
1638
1639   goto yynewstate;
1640
1641
1642 /*-----------------------------------------------------------.
1643 | yydefault -- do the default action for the current state.  |
1644 `-----------------------------------------------------------*/
1645 yydefault:
1646   yyn = yydefact[yystate];
1647   if (yyn == 0)
1648     goto yyerrlab;
1649   goto yyreduce;
1650
1651
1652 /*-----------------------------.
1653 | yyreduce -- Do a reduction.  |
1654 `-----------------------------*/
1655 yyreduce:
1656   /* yyn is the number of a rule to reduce with.  */
1657   yylen = yyr2[yyn];
1658
1659   /* If YYLEN is nonzero, implement the default value of the action:
1660      '$$ = $1'.
1661
1662      Otherwise, the following line sets YYVAL to garbage.
1663      This behavior is undocumented and Bison
1664      users should not rely upon it.  Assigning to YYVAL
1665      unconditionally makes the parser a bit smaller, and it avoids a
1666      GCC warning that YYVAL may be used uninitialized.  */
1667   yyval = yyvsp[1-yylen];
1668
1669
1670   YY_REDUCE_PRINT (yyn);
1671   switch (yyn)
1672     {
1673         case 2:
1674 #line 204 "fta.y" /* yacc.c:1646  */
1675     {
1676                 fta_parse_result->parse_tree_list = (yyvsp[0].q_list);
1677                 fta_parse_result->tables = NULL;
1678                 fta_parse_result->parse_type = QUERY_PARSE;
1679         }
1680 #line 1681 "fta.tab.cc" /* yacc.c:1646  */
1681     break;
1682
1683   case 3:
1684 #line 209 "fta.y" /* yacc.c:1646  */
1685     {
1686                 fta_parse_result->parse_tree_list = NULL;
1687                 fta_parse_result->fta_parse_tree = NULL;
1688                 fta_parse_result->tables = (yyvsp[0].table_list_schema);
1689                 fta_parse_result->parse_type = TABLE_PARSE;
1690         }
1691 #line 1692 "fta.tab.cc" /* yacc.c:1646  */
1692     break;
1693
1694   case 4:
1695 #line 216 "fta.y" /* yacc.c:1646  */
1696     {
1697                 fta_parse_result->parse_tree_list = NULL;
1698                 fta_parse_result->fta_parse_tree = (yyvsp[-1].tblp);
1699                 fta_parse_result->tables = (yyvsp[-2].table_list_schema);
1700                 fta_parse_result->parse_type = STREAM_PARSE;
1701         }
1702 #line 1703 "fta.tab.cc" /* yacc.c:1646  */
1703     break;
1704
1705   case 5:
1706 #line 230 "fta.y" /* yacc.c:1646  */
1707     {
1708                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-2].var_defs));                        // Memory leak : plug it.
1709                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
1710                                 (yyval.tblp) = (yyvsp[0].tblp);
1711                         }
1712 #line 1713 "fta.tab.cc" /* yacc.c:1646  */
1713     break;
1714
1715   case 6:
1716 #line 235 "fta.y" /* yacc.c:1646  */
1717     {
1718                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
1719                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-2].var_defs));          // Memory leak : plug it.
1720                                 (yyval.tblp) = (yyvsp[0].tblp);
1721                         }
1722 #line 1723 "fta.tab.cc" /* yacc.c:1646  */
1723     break;
1724
1725   case 7:
1726 #line 240 "fta.y" /* yacc.c:1646  */
1727     {
1728                                 (yyvsp[0].tblp)->add_nmap(NULL);                        // Memory leak : plug it.
1729                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
1730                                 (yyval.tblp) = (yyvsp[0].tblp);
1731                         }
1732 #line 1733 "fta.tab.cc" /* yacc.c:1646  */
1733     break;
1734
1735   case 8:
1736 #line 245 "fta.y" /* yacc.c:1646  */
1737     {
1738                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
1739                                 (yyval.tblp) = (yyvsp[0].tblp);
1740                         }
1741 #line 1742 "fta.tab.cc" /* yacc.c:1646  */
1742     break;
1743
1744   case 9:
1745 #line 249 "fta.y" /* yacc.c:1646  */
1746     {
1747                                 (yyval.tblp) = (yyvsp[0].tblp);
1748                         }
1749 #line 1750 "fta.tab.cc" /* yacc.c:1646  */
1750     break;
1751
1752   case 10:
1753 #line 252 "fta.y" /* yacc.c:1646  */
1754     {
1755                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-2].var_defs));                        // Memory leak : plug it.
1756                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
1757                                 (yyval.tblp) = (yyvsp[0].tblp);
1758                         }
1759 #line 1760 "fta.tab.cc" /* yacc.c:1646  */
1760     break;
1761
1762   case 11:
1763 #line 257 "fta.y" /* yacc.c:1646  */
1764     {
1765                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
1766                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-2].var_defs));          // Memory leak : plug it.
1767                                 (yyval.tblp) = (yyvsp[0].tblp);
1768                         }
1769 #line 1770 "fta.tab.cc" /* yacc.c:1646  */
1770     break;
1771
1772   case 12:
1773 #line 262 "fta.y" /* yacc.c:1646  */
1774     {
1775                                 (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
1776                                 (yyval.tblp) = (yyvsp[0].tblp);
1777                         }
1778 #line 1779 "fta.tab.cc" /* yacc.c:1646  */
1779     break;
1780
1781   case 13:
1782 #line 266 "fta.y" /* yacc.c:1646  */
1783     {
1784                                 (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
1785                                 (yyval.tblp) = (yyvsp[0].tblp);
1786                         }
1787 #line 1788 "fta.tab.cc" /* yacc.c:1646  */
1788     break;
1789
1790   case 14:
1791 #line 270 "fta.y" /* yacc.c:1646  */
1792     {
1793                                 (yyval.tblp) = (yyvsp[0].tblp);
1794                         }
1795 #line 1796 "fta.tab.cc" /* yacc.c:1646  */
1796     break;
1797
1798   case 15:
1799 #line 275 "fta.y" /* yacc.c:1646  */
1800     {(yyval.q_list) = new query_list_t((yyvsp[0].tblp));}
1801 #line 1802 "fta.tab.cc" /* yacc.c:1646  */
1802     break;
1803
1804   case 16:
1805 #line 276 "fta.y" /* yacc.c:1646  */
1806     {(yyval.q_list) = (yyvsp[-2].q_list)->append((yyvsp[0].tblp));}
1807 #line 1808 "fta.tab.cc" /* yacc.c:1646  */
1808     break;
1809
1810   case 17:
1811 #line 280 "fta.y" /* yacc.c:1646  */
1812     {(yyval.var_defs)=(yyvsp[-1].var_defs);}
1813 #line 1814 "fta.tab.cc" /* yacc.c:1646  */
1814     break;
1815
1816   case 18:
1817 #line 281 "fta.y" /* yacc.c:1646  */
1818     {(yyval.var_defs)=NULL;}
1819 #line 1820 "fta.tab.cc" /* yacc.c:1646  */
1820     break;
1821
1822   case 19:
1823 #line 285 "fta.y" /* yacc.c:1646  */
1824     {(yyval.var_defs)=(yyvsp[-1].var_defs);fta_parse_defines=(yyvsp[-1].var_defs);}
1825 #line 1826 "fta.tab.cc" /* yacc.c:1646  */
1826     break;
1827
1828   case 20:
1829 #line 286 "fta.y" /* yacc.c:1646  */
1830     {(yyval.var_defs)=NULL;fta_parse_defines = NULL;}
1831 #line 1832 "fta.tab.cc" /* yacc.c:1646  */
1832     break;
1833
1834   case 21:
1835 #line 290 "fta.y" /* yacc.c:1646  */
1836     {(yyval.var_defs) = new var_defs_t((yyvsp[0].var_pair));}
1837 #line 1838 "fta.tab.cc" /* yacc.c:1646  */
1838     break;
1839
1840   case 22:
1841 #line 291 "fta.y" /* yacc.c:1646  */
1842     {(yyval.var_defs) = (yyvsp[-1].var_defs)->add_var_pair((yyvsp[0].var_pair));}
1843 #line 1844 "fta.tab.cc" /* yacc.c:1646  */
1844     break;
1845
1846   case 23:
1847 #line 295 "fta.y" /* yacc.c:1646  */
1848     {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
1849 #line 1850 "fta.tab.cc" /* yacc.c:1646  */
1850     break;
1851
1852   case 24:
1853 #line 296 "fta.y" /* yacc.c:1646  */
1854     {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
1855 #line 1856 "fta.tab.cc" /* yacc.c:1646  */
1856     break;
1857
1858   case 25:
1859 #line 300 "fta.y" /* yacc.c:1646  */
1860     {(yyval.tblp) = (yyvsp[0].tblp)->add_selection((yyvsp[-1].select_listval));}
1861 #line 1862 "fta.tab.cc" /* yacc.c:1646  */
1862     break;
1863
1864   case 26:
1865 #line 305 "fta.y" /* yacc.c:1646  */
1866     {(yyval.tblp) = new table_exp_t((yyvsp[-1].clist),(yyvsp[0].tbl_list));}
1867 #line 1868 "fta.tab.cc" /* yacc.c:1646  */
1868     break;
1869
1870   case 27:
1871 #line 307 "fta.y" /* yacc.c:1646  */
1872     {(yyval.tblp) = new table_exp_t((yyvsp[-3].clist),(yyvsp[-1].scalarval),(yyvsp[0].tbl_list));}
1873 #line 1874 "fta.tab.cc" /* yacc.c:1646  */
1874     break;
1875
1876   case 28:
1877 #line 314 "fta.y" /* yacc.c:1646  */
1878     { (yyval.select_listval) = (yyvsp[0].select_listval);}
1879 #line 1880 "fta.tab.cc" /* yacc.c:1646  */
1880     break;
1881
1882   case 29:
1883 #line 326 "fta.y" /* yacc.c:1646  */
1884     {(yyval.tblp)=new table_exp_t((yyvsp[-7].tbl_list),(yyvsp[-6].predp),(yyvsp[-5].extended_gb_list),(yyvsp[-4].clist),(yyvsp[-3].predp),(yyvsp[-2].predp),(yyvsp[-1].predp), (yyvsp[0].predp));}
1885 #line 1886 "fta.tab.cc" /* yacc.c:1646  */
1886     break;
1887
1888   case 30:
1889 #line 330 "fta.y" /* yacc.c:1646  */
1890     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(-1);}
1891 #line 1892 "fta.tab.cc" /* yacc.c:1646  */
1892     break;
1893
1894   case 31:
1895 #line 331 "fta.y" /* yacc.c:1646  */
1896     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(INNER_JOIN_PROPERTY);}
1897 #line 1898 "fta.tab.cc" /* yacc.c:1646  */
1898     break;
1899
1900   case 32:
1901 #line 332 "fta.y" /* yacc.c:1646  */
1902     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(OUTER_JOIN_PROPERTY);}
1903 #line 1904 "fta.tab.cc" /* yacc.c:1646  */
1904     break;
1905
1906   case 33:
1907 #line 333 "fta.y" /* yacc.c:1646  */
1908     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(RIGHT_OUTER_JOIN_PROPERTY);}
1909 #line 1910 "fta.tab.cc" /* yacc.c:1646  */
1910     break;
1911
1912   case 34:
1913 #line 334 "fta.y" /* yacc.c:1646  */
1914     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(LEFT_OUTER_JOIN_PROPERTY);}
1915 #line 1916 "fta.tab.cc" /* yacc.c:1646  */
1916     break;
1917
1918   case 35:
1919 #line 335 "fta.y" /* yacc.c:1646  */
1920     {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(FILTER_JOIN_PROPERTY); (yyval.tbl_list)->set_colref((yyvsp[-5].colref)); (yyval.tbl_list)->set_temporal_range((yyvsp[-3].strval));}
1921 #line 1922 "fta.tab.cc" /* yacc.c:1646  */
1922     break;
1923
1924   case 36:
1925 #line 339 "fta.y" /* yacc.c:1646  */
1926     {(yyval.tbl_list) = new tablevar_list_t((yyvsp[0].table));}
1927 #line 1928 "fta.tab.cc" /* yacc.c:1646  */
1928     break;
1929
1930   case 37:
1931 #line 340 "fta.y" /* yacc.c:1646  */
1932     {(yyval.tbl_list)= (yyvsp[-2].tbl_list)->append_table((yyvsp[0].table));}
1933 #line 1934 "fta.tab.cc" /* yacc.c:1646  */
1934     break;
1935
1936   case 38:
1937 #line 344 "fta.y" /* yacc.c:1646  */
1938     { (yyval.table) = (yyvsp[0].table);}
1939 #line 1940 "fta.tab.cc" /* yacc.c:1646  */
1940     break;
1941
1942   case 39:
1943 #line 345 "fta.y" /* yacc.c:1646  */
1944     { (yyval.table)= (yyvsp[-1].table)->set_range_var((yyvsp[0].strval));}
1945 #line 1946 "fta.tab.cc" /* yacc.c:1646  */
1946     break;
1947
1948   case 40:
1949 #line 349 "fta.y" /* yacc.c:1646  */
1950     {(yyval.table) = new tablevar_t((yyvsp[0].stringval)->c_str());}
1951 #line 1952 "fta.tab.cc" /* yacc.c:1646  */
1952     break;
1953
1954   case 41:
1955 #line 350 "fta.y" /* yacc.c:1646  */
1956     {(yyval.table) = new tablevar_t((yyvsp[-2].strval),(yyvsp[0].stringval)->c_str(),0);}
1957 #line 1958 "fta.tab.cc" /* yacc.c:1646  */
1958     break;
1959
1960   case 42:
1961 #line 351 "fta.y" /* yacc.c:1646  */
1962     {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
1963 #line 1964 "fta.tab.cc" /* yacc.c:1646  */
1964     break;
1965
1966   case 43:
1967 #line 352 "fta.y" /* yacc.c:1646  */
1968     {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
1969 #line 1970 "fta.tab.cc" /* yacc.c:1646  */
1970     break;
1971
1972   case 44:
1973 #line 353 "fta.y" /* yacc.c:1646  */
1974     {(yyval.table) = new tablevar_t((yyvsp[-3].strval),(yyvsp[0].stringval)->c_str(),1);}
1975 #line 1976 "fta.tab.cc" /* yacc.c:1646  */
1976     break;
1977
1978   case 45:
1979 #line 357 "fta.y" /* yacc.c:1646  */
1980     {(yyval.stringval) = new string_t((yyvsp[0].strval));}
1981 #line 1982 "fta.tab.cc" /* yacc.c:1646  */
1982     break;
1983
1984   case 46:
1985 #line 358 "fta.y" /* yacc.c:1646  */
1986     {(yyval.stringval) = (yyval.stringval)->append("/",(yyvsp[0].strval));}
1987 #line 1988 "fta.tab.cc" /* yacc.c:1646  */
1988     break;
1989
1990   case 47:
1991 #line 363 "fta.y" /* yacc.c:1646  */
1992     {(yyval.predp)=NULL;}
1993 #line 1994 "fta.tab.cc" /* yacc.c:1646  */
1994     break;
1995
1996   case 48:
1997 #line 364 "fta.y" /* yacc.c:1646  */
1998     {(yyval.predp)=(yyvsp[0].predp);}
1999 #line 2000 "fta.tab.cc" /* yacc.c:1646  */
2000     break;
2001
2002   case 49:
2003 #line 368 "fta.y" /* yacc.c:1646  */
2004     {(yyval.predp) = (yyvsp[0].predp);}
2005 #line 2006 "fta.tab.cc" /* yacc.c:1646  */
2006     break;
2007
2008   case 50:
2009 #line 372 "fta.y" /* yacc.c:1646  */
2010     {(yyval.predp)=NULL;}
2011 #line 2012 "fta.tab.cc" /* yacc.c:1646  */
2012     break;
2013
2014   case 51:
2015 #line 373 "fta.y" /* yacc.c:1646  */
2016     {(yyval.predp)=(yyvsp[0].predp); }
2017 #line 2018 "fta.tab.cc" /* yacc.c:1646  */
2018     break;
2019
2020   case 52:
2021 #line 377 "fta.y" /* yacc.c:1646  */
2022     {(yyval.predp)=NULL;}
2023 #line 2024 "fta.tab.cc" /* yacc.c:1646  */
2024     break;
2025
2026   case 53:
2027 #line 378 "fta.y" /* yacc.c:1646  */
2028     {(yyval.predp)=(yyvsp[0].predp); }
2029 #line 2030 "fta.tab.cc" /* yacc.c:1646  */
2030     break;
2031
2032   case 54:
2033 #line 382 "fta.y" /* yacc.c:1646  */
2034     {(yyval.predp)=NULL;}
2035 #line 2036 "fta.tab.cc" /* yacc.c:1646  */
2036     break;
2037
2038   case 55:
2039 #line 383 "fta.y" /* yacc.c:1646  */
2040     {(yyval.predp)=(yyvsp[0].predp); }
2041 #line 2042 "fta.tab.cc" /* yacc.c:1646  */
2042     break;
2043
2044   case 56:
2045 #line 387 "fta.y" /* yacc.c:1646  */
2046     {(yyval.predp)=NULL;}
2047 #line 2048 "fta.tab.cc" /* yacc.c:1646  */
2048     break;
2049
2050   case 57:
2051 #line 388 "fta.y" /* yacc.c:1646  */
2052     {(yyval.predp)=(yyvsp[0].predp);}
2053 #line 2054 "fta.tab.cc" /* yacc.c:1646  */
2054     break;
2055
2056   case 58:
2057 #line 392 "fta.y" /* yacc.c:1646  */
2058     {(yyval.predp) = (yyvsp[0].predp);}
2059 #line 2060 "fta.tab.cc" /* yacc.c:1646  */
2060     break;
2061
2062   case 59:
2063 #line 399 "fta.y" /* yacc.c:1646  */
2064     {(yyval.predp)=new predicate_t("OR",(yyvsp[-2].predp),(yyvsp[0].predp));}
2065 #line 2066 "fta.tab.cc" /* yacc.c:1646  */
2066     break;
2067
2068   case 60:
2069 #line 400 "fta.y" /* yacc.c:1646  */
2070     {(yyval.predp)=new predicate_t("AND",(yyvsp[-2].predp),(yyvsp[0].predp));}
2071 #line 2072 "fta.tab.cc" /* yacc.c:1646  */
2072     break;
2073
2074   case 61:
2075 #line 401 "fta.y" /* yacc.c:1646  */
2076     {(yyval.predp) = new predicate_t("NOT", (yyvsp[0].predp) );}
2077 #line 2078 "fta.tab.cc" /* yacc.c:1646  */
2078     break;
2079
2080   case 62:
2081 #line 402 "fta.y" /* yacc.c:1646  */
2082     {(yyval.predp) = (yyvsp[-1].predp);}
2083 #line 2084 "fta.tab.cc" /* yacc.c:1646  */
2084     break;
2085
2086   case 63:
2087 #line 403 "fta.y" /* yacc.c:1646  */
2088     {(yyval.predp) = (yyvsp[0].predp);}
2089 #line 2090 "fta.tab.cc" /* yacc.c:1646  */
2090     break;
2091
2092   case 64:
2093 #line 407 "fta.y" /* yacc.c:1646  */
2094     { (yyval.predp)=(yyvsp[0].predp);}
2095 #line 2096 "fta.tab.cc" /* yacc.c:1646  */
2096     break;
2097
2098   case 65:
2099 #line 408 "fta.y" /* yacc.c:1646  */
2100     { (yyval.predp) = (yyvsp[0].predp);}
2101 #line 2102 "fta.tab.cc" /* yacc.c:1646  */
2102     break;
2103
2104   case 66:
2105 #line 409 "fta.y" /* yacc.c:1646  */
2106     {(yyval.predp) = predicate_t::make_paramless_fcn_predicate((yyvsp[-2].strval)); }
2107 #line 2108 "fta.tab.cc" /* yacc.c:1646  */
2108     break;
2109
2110   case 67:
2111 #line 410 "fta.y" /* yacc.c:1646  */
2112     {(yyval.predp) = new predicate_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
2113 #line 2114 "fta.tab.cc" /* yacc.c:1646  */
2114     break;
2115
2116   case 68:
2117 #line 414 "fta.y" /* yacc.c:1646  */
2118     {(yyval.predp) = new predicate_t((yyvsp[-2].scalarval),(yyvsp[-1].strval),(yyvsp[0].scalarval));}
2119 #line 2120 "fta.tab.cc" /* yacc.c:1646  */
2120     break;
2121
2122   case 69:
2123 #line 418 "fta.y" /* yacc.c:1646  */
2124     { (yyval.predp) = new predicate_t((yyvsp[-4].scalarval),(yyvsp[-1].lit_l)); }
2125 #line 2126 "fta.tab.cc" /* yacc.c:1646  */
2126     break;
2127
2128   case 70:
2129 #line 422 "fta.y" /* yacc.c:1646  */
2130     {(yyval.lit_l) = new literal_list_t((yyvsp[0].litval));}
2131 #line 2132 "fta.tab.cc" /* yacc.c:1646  */
2132     break;
2133
2134   case 71:
2135 #line 423 "fta.y" /* yacc.c:1646  */
2136     {(yyval.lit_l) = (yyvsp[-2].lit_l)->append_literal((yyvsp[0].litval));}
2137 #line 2138 "fta.tab.cc" /* yacc.c:1646  */
2138     break;
2139
2140   case 72:
2141 #line 429 "fta.y" /* yacc.c:1646  */
2142     { (yyval.scalarval)=new scalarexp_t("+",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2143 #line 2144 "fta.tab.cc" /* yacc.c:1646  */
2144     break;
2145
2146   case 73:
2147 #line 430 "fta.y" /* yacc.c:1646  */
2148     { (yyval.scalarval)=new scalarexp_t("-",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2149 #line 2150 "fta.tab.cc" /* yacc.c:1646  */
2150     break;
2151
2152   case 74:
2153 #line 431 "fta.y" /* yacc.c:1646  */
2154     { (yyval.scalarval)=new scalarexp_t("|",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2155 #line 2156 "fta.tab.cc" /* yacc.c:1646  */
2156     break;
2157
2158   case 75:
2159 #line 432 "fta.y" /* yacc.c:1646  */
2160     { (yyval.scalarval)=new scalarexp_t("*",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2161 #line 2162 "fta.tab.cc" /* yacc.c:1646  */
2162     break;
2163
2164   case 76:
2165 #line 433 "fta.y" /* yacc.c:1646  */
2166     { (yyval.scalarval)=new scalarexp_t("/",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2167 #line 2168 "fta.tab.cc" /* yacc.c:1646  */
2168     break;
2169
2170   case 77:
2171 #line 434 "fta.y" /* yacc.c:1646  */
2172     { (yyval.scalarval)=new scalarexp_t("&",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2173 #line 2174 "fta.tab.cc" /* yacc.c:1646  */
2174     break;
2175
2176   case 78:
2177 #line 435 "fta.y" /* yacc.c:1646  */
2178     { (yyval.scalarval)=new scalarexp_t("%",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2179 #line 2180 "fta.tab.cc" /* yacc.c:1646  */
2180     break;
2181
2182   case 79:
2183 #line 436 "fta.y" /* yacc.c:1646  */
2184     { (yyval.scalarval)=new scalarexp_t((yyvsp[-1].strval),(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
2185 #line 2186 "fta.tab.cc" /* yacc.c:1646  */
2186     break;
2187
2188   case 80:
2189 #line 437 "fta.y" /* yacc.c:1646  */
2190     { (yyval.scalarval) = new scalarexp_t("+",(yyvsp[0].scalarval));}
2191 #line 2192 "fta.tab.cc" /* yacc.c:1646  */
2192     break;
2193
2194   case 81:
2195 #line 438 "fta.y" /* yacc.c:1646  */
2196     { (yyval.scalarval) = new scalarexp_t("-",(yyvsp[0].scalarval));}
2197 #line 2198 "fta.tab.cc" /* yacc.c:1646  */
2198     break;
2199
2200   case 82:
2201 #line 439 "fta.y" /* yacc.c:1646  */
2202     { (yyval.scalarval) = new scalarexp_t("!",(yyvsp[0].scalarval));}
2203 #line 2204 "fta.tab.cc" /* yacc.c:1646  */
2204     break;
2205
2206   case 83:
2207 #line 440 "fta.y" /* yacc.c:1646  */
2208     { (yyval.scalarval) = new scalarexp_t("~",(yyvsp[0].scalarval));}
2209 #line 2210 "fta.tab.cc" /* yacc.c:1646  */
2210     break;
2211
2212   case 84:
2213 #line 441 "fta.y" /* yacc.c:1646  */
2214     { (yyval.scalarval)= new scalarexp_t((yyvsp[0].litval));}
2215 #line 2216 "fta.tab.cc" /* yacc.c:1646  */
2216     break;
2217
2218   case 85:
2219 #line 442 "fta.y" /* yacc.c:1646  */
2220     {(yyval.scalarval) = scalarexp_t::make_param_reference((yyvsp[0].strval));}
2221 #line 2222 "fta.tab.cc" /* yacc.c:1646  */
2222     break;
2223
2224   case 86:
2225 #line 443 "fta.y" /* yacc.c:1646  */
2226     {(yyval.scalarval) = scalarexp_t::make_iface_param_reference((yyvsp[0].ifpref));}
2227 #line 2228 "fta.tab.cc" /* yacc.c:1646  */
2228     break;
2229
2230   case 87:
2231 #line 444 "fta.y" /* yacc.c:1646  */
2232     { (yyval.scalarval) = new scalarexp_t((yyvsp[0].colref));}
2233 #line 2234 "fta.tab.cc" /* yacc.c:1646  */
2234     break;
2235
2236   case 88:
2237 #line 445 "fta.y" /* yacc.c:1646  */
2238     {(yyval.scalarval) = (yyvsp[-1].scalarval);}
2239 #line 2240 "fta.tab.cc" /* yacc.c:1646  */
2240     break;
2241
2242   case 89:
2243 #line 446 "fta.y" /* yacc.c:1646  */
2244     { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-3].strval)); }
2245 #line 2246 "fta.tab.cc" /* yacc.c:1646  */
2246     break;
2247
2248   case 90:
2249 #line 447 "fta.y" /* yacc.c:1646  */
2250     { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-3].strval),(yyvsp[-1].scalarval)); }
2251 #line 2252 "fta.tab.cc" /* yacc.c:1646  */
2252     break;
2253
2254   case 91:
2255 #line 448 "fta.y" /* yacc.c:1646  */
2256     {(yyval.scalarval) = new scalarexp_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
2257 #line 2258 "fta.tab.cc" /* yacc.c:1646  */
2258     break;
2259
2260   case 92:
2261 #line 449 "fta.y" /* yacc.c:1646  */
2262     {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-2].strval)); }
2263 #line 2264 "fta.tab.cc" /* yacc.c:1646  */
2264     break;
2265
2266   case 93:
2267 #line 450 "fta.y" /* yacc.c:1646  */
2268     { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-4].strval)); (yyval.scalarval)->set_superaggr(true); }
2269 #line 2270 "fta.tab.cc" /* yacc.c:1646  */
2270     break;
2271
2272   case 94:
2273 #line 451 "fta.y" /* yacc.c:1646  */
2274     { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-4].strval),(yyvsp[-1].scalarval)); (yyval.scalarval)->set_superaggr(true); }
2275 #line 2276 "fta.tab.cc" /* yacc.c:1646  */
2276     break;
2277
2278   case 95:
2279 #line 452 "fta.y" /* yacc.c:1646  */
2280     {(yyval.scalarval) = new scalarexp_t((yyvsp[-4].strval), (yyvsp[-1].se_listval)->get_se_list()); (yyval.scalarval)->set_superaggr(true); }
2281 #line 2282 "fta.tab.cc" /* yacc.c:1646  */
2282     break;
2283
2284   case 96:
2285 #line 453 "fta.y" /* yacc.c:1646  */
2286     {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-3].strval)); (yyval.scalarval)->set_superaggr(true); }
2287 #line 2288 "fta.tab.cc" /* yacc.c:1646  */
2288     break;
2289
2290   case 97:
2291 #line 458 "fta.y" /* yacc.c:1646  */
2292     {   (yyval.select_listval)= new select_list_t((yyvsp[0].scalarval)); }
2293 #line 2294 "fta.tab.cc" /* yacc.c:1646  */
2294     break;
2295
2296   case 98:
2297 #line 459 "fta.y" /* yacc.c:1646  */
2298     {   (yyval.select_listval)= new select_list_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
2299 #line 2300 "fta.tab.cc" /* yacc.c:1646  */
2300     break;
2301
2302   case 99:
2303 #line 460 "fta.y" /* yacc.c:1646  */
2304     { (yyval.select_listval)=(yyvsp[-2].select_listval)->append((yyvsp[0].scalarval)); }
2305 #line 2306 "fta.tab.cc" /* yacc.c:1646  */
2306     break;
2307
2308   case 100:
2309 #line 461 "fta.y" /* yacc.c:1646  */
2310     { (yyval.select_listval)=(yyvsp[-4].select_listval)->append((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
2311 #line 2312 "fta.tab.cc" /* yacc.c:1646  */
2312     break;
2313
2314   case 101:
2315 #line 465 "fta.y" /* yacc.c:1646  */
2316     {   (yyval.se_listval)= new se_list_t((yyvsp[0].scalarval)); }
2317 #line 2318 "fta.tab.cc" /* yacc.c:1646  */
2318     break;
2319
2320   case 102:
2321 #line 466 "fta.y" /* yacc.c:1646  */
2322     { (yyval.se_listval)=(yyvsp[-2].se_listval)->append((yyvsp[0].scalarval)); }
2323 #line 2324 "fta.tab.cc" /* yacc.c:1646  */
2324     break;
2325
2326   case 103:
2327 #line 470 "fta.y" /* yacc.c:1646  */
2328     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_STRING);}
2329 #line 2330 "fta.tab.cc" /* yacc.c:1646  */
2330     break;
2331
2332   case 104:
2333 #line 471 "fta.y" /* yacc.c:1646  */
2334     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_INT);}
2335 #line 2336 "fta.tab.cc" /* yacc.c:1646  */
2336     break;
2337
2338   case 105:
2339 #line 472 "fta.y" /* yacc.c:1646  */
2340     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGINT);}
2341 #line 2342 "fta.tab.cc" /* yacc.c:1646  */
2342     break;
2343
2344   case 106:
2345 #line 473 "fta.y" /* yacc.c:1646  */
2346     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_FLOAT);}
2347 #line 2348 "fta.tab.cc" /* yacc.c:1646  */
2348     break;
2349
2350   case 107:
2351 #line 474 "fta.y" /* yacc.c:1646  */
2352     {(yyval.litval) = new literal_t("TRUE",LITERAL_BOOL);}
2353 #line 2354 "fta.tab.cc" /* yacc.c:1646  */
2354     break;
2355
2356   case 108:
2357 #line 475 "fta.y" /* yacc.c:1646  */
2358     {(yyval.litval) = new literal_t("FALSE",LITERAL_BOOL);}
2359 #line 2360 "fta.tab.cc" /* yacc.c:1646  */
2360     break;
2361
2362   case 109:
2363 #line 476 "fta.y" /* yacc.c:1646  */
2364     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_TIMEVAL);}
2365 #line 2366 "fta.tab.cc" /* yacc.c:1646  */
2366     break;
2367
2368   case 110:
2369 #line 477 "fta.y" /* yacc.c:1646  */
2370     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_HEX);}
2371 #line 2372 "fta.tab.cc" /* yacc.c:1646  */
2372     break;
2373
2374   case 111:
2375 #line 478 "fta.y" /* yacc.c:1646  */
2376     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGHEX);}
2377 #line 2378 "fta.tab.cc" /* yacc.c:1646  */
2378     break;
2379
2380   case 112:
2381 #line 479 "fta.y" /* yacc.c:1646  */
2382     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IP);}
2383 #line 2384 "fta.tab.cc" /* yacc.c:1646  */
2384     break;
2385
2386   case 113:
2387 #line 480 "fta.y" /* yacc.c:1646  */
2388     {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IPV6);}
2389 #line 2390 "fta.tab.cc" /* yacc.c:1646  */
2390     break;
2391
2392   case 114:
2393 #line 481 "fta.y" /* yacc.c:1646  */
2394     {(yyval.litval) = literal_t::make_define_literal((yyvsp[0].strval),fta_parse_defines);}
2395 #line 2396 "fta.tab.cc" /* yacc.c:1646  */
2396     break;
2397
2398   case 115:
2399 #line 487 "fta.y" /* yacc.c:1646  */
2400     {(yyval.extended_gb_list) = NULL;}
2401 #line 2402 "fta.tab.cc" /* yacc.c:1646  */
2402     break;
2403
2404   case 116:
2405 #line 488 "fta.y" /* yacc.c:1646  */
2406     {(yyval.extended_gb_list) = (yyvsp[0].extended_gb_list);}
2407 #line 2408 "fta.tab.cc" /* yacc.c:1646  */
2408     break;
2409
2410   case 117:
2411 #line 492 "fta.y" /* yacc.c:1646  */
2412     {(yyval.clist) = NULL;}
2413 #line 2414 "fta.tab.cc" /* yacc.c:1646  */
2414     break;
2415
2416   case 118:
2417 #line 493 "fta.y" /* yacc.c:1646  */
2418     {(yyval.clist) = (yyvsp[0].clist);}
2419 #line 2420 "fta.tab.cc" /* yacc.c:1646  */
2420     break;
2421
2422   case 119:
2423 #line 497 "fta.y" /* yacc.c:1646  */
2424     { (yyval.list_of_gb_list) = new list_of_gb_list_t((yyvsp[-1].gb_list));}
2425 #line 2426 "fta.tab.cc" /* yacc.c:1646  */
2426     break;
2427
2428   case 120:
2429 #line 498 "fta.y" /* yacc.c:1646  */
2430     {(yyval.list_of_gb_list) = (yyvsp[-4].list_of_gb_list)->append((yyvsp[-1].gb_list));}
2431 #line 2432 "fta.tab.cc" /* yacc.c:1646  */
2432     break;
2433
2434   case 121:
2435 #line 502 "fta.y" /* yacc.c:1646  */
2436     {(yyval.extended_gb) = extended_gb_t::create_from_gb((yyvsp[0].gb_val));}
2437 #line 2438 "fta.tab.cc" /* yacc.c:1646  */
2438     break;
2439
2440   case 122:
2441 #line 503 "fta.y" /* yacc.c:1646  */
2442     {(yyval.extended_gb) = extended_gb_t::extended_create_from_rollup((yyvsp[-1].gb_list));}
2443 #line 2444 "fta.tab.cc" /* yacc.c:1646  */
2444     break;
2445
2446   case 123:
2447 #line 504 "fta.y" /* yacc.c:1646  */
2448     {(yyval.extended_gb) = extended_gb_t::extended_create_from_cube((yyvsp[-1].gb_list));}
2449 #line 2450 "fta.tab.cc" /* yacc.c:1646  */
2450     break;
2451
2452   case 124:
2453 #line 505 "fta.y" /* yacc.c:1646  */
2454     {(yyval.extended_gb) = extended_gb_t::extended_create_from_gsets((yyvsp[-1].list_of_gb_list));}
2455 #line 2456 "fta.tab.cc" /* yacc.c:1646  */
2456     break;
2457
2458   case 125:
2459 #line 509 "fta.y" /* yacc.c:1646  */
2460     { (yyval.extended_gb_list) = new extended_gb_list_t((yyvsp[0].extended_gb));}
2461 #line 2462 "fta.tab.cc" /* yacc.c:1646  */
2462     break;
2463
2464   case 126:
2465 #line 510 "fta.y" /* yacc.c:1646  */
2466     { (yyval.extended_gb_list)=(yyvsp[-2].extended_gb_list)->append((yyvsp[0].extended_gb));}
2467 #line 2468 "fta.tab.cc" /* yacc.c:1646  */
2468     break;
2469
2470   case 127:
2471 #line 514 "fta.y" /* yacc.c:1646  */
2472     { (yyval.gb_list) = new gb_list_t((yyvsp[0].gb_val));}
2473 #line 2474 "fta.tab.cc" /* yacc.c:1646  */
2474     break;
2475
2476   case 128:
2477 #line 515 "fta.y" /* yacc.c:1646  */
2478     { (yyval.gb_list)=(yyvsp[-2].gb_list)->append((yyvsp[0].gb_val));}
2479 #line 2480 "fta.tab.cc" /* yacc.c:1646  */
2480     break;
2481
2482   case 129:
2483 #line 519 "fta.y" /* yacc.c:1646  */
2484     {(yyval.gb_val) = new gb_t((yyvsp[0].strval)); }
2485 #line 2486 "fta.tab.cc" /* yacc.c:1646  */
2486     break;
2487
2488   case 130:
2489 #line 520 "fta.y" /* yacc.c:1646  */
2490     {(yyval.gb_val) = new gb_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
2491 #line 2492 "fta.tab.cc" /* yacc.c:1646  */
2492     break;
2493
2494   case 131:
2495 #line 521 "fta.y" /* yacc.c:1646  */
2496     {(yyval.gb_val) = new gb_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
2497 #line 2498 "fta.tab.cc" /* yacc.c:1646  */
2498     break;
2499
2500   case 132:
2501 #line 522 "fta.y" /* yacc.c:1646  */
2502     {(yyval.gb_val) = new gb_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
2503 #line 2504 "fta.tab.cc" /* yacc.c:1646  */
2504     break;
2505
2506   case 133:
2507 #line 533 "fta.y" /* yacc.c:1646  */
2508     {(yyval.ifpref) = new ifpref_t((yyvsp[0].strval));}
2509 #line 2510 "fta.tab.cc" /* yacc.c:1646  */
2510     break;
2511
2512   case 134:
2513 #line 534 "fta.y" /* yacc.c:1646  */
2514     {(yyval.ifpref) = new ifpref_t((yyvsp[-3].strval), (yyvsp[0].strval));}
2515 #line 2516 "fta.tab.cc" /* yacc.c:1646  */
2516     break;
2517
2518   case 135:
2519 #line 538 "fta.y" /* yacc.c:1646  */
2520     {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
2521 #line 2522 "fta.tab.cc" /* yacc.c:1646  */
2522     break;
2523
2524   case 136:
2525 #line 539 "fta.y" /* yacc.c:1646  */
2526     {(yyval.colref) = new colref_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
2527 #line 2528 "fta.tab.cc" /* yacc.c:1646  */
2528     break;
2529
2530   case 137:
2531 #line 540 "fta.y" /* yacc.c:1646  */
2532     {(yyval.colref) = new colref_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
2533 #line 2534 "fta.tab.cc" /* yacc.c:1646  */
2534     break;
2535
2536   case 138:
2537 #line 544 "fta.y" /* yacc.c:1646  */
2538     {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
2539 #line 2540 "fta.tab.cc" /* yacc.c:1646  */
2540     break;
2541
2542   case 139:
2543 #line 545 "fta.y" /* yacc.c:1646  */
2544     {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
2545 #line 2546 "fta.tab.cc" /* yacc.c:1646  */
2546     break;
2547
2548   case 140:
2549 #line 549 "fta.y" /* yacc.c:1646  */
2550     {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
2551 #line 2552 "fta.tab.cc" /* yacc.c:1646  */
2552     break;
2553
2554   case 141:
2555 #line 553 "fta.y" /* yacc.c:1646  */
2556     {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
2557 #line 2558 "fta.tab.cc" /* yacc.c:1646  */
2558     break;
2559
2560   case 142:
2561 #line 554 "fta.y" /* yacc.c:1646  */
2562     {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
2563 #line 2564 "fta.tab.cc" /* yacc.c:1646  */
2564     break;
2565
2566   case 143:
2567 #line 569 "fta.y" /* yacc.c:1646  */
2568     {(yyval.table_list_schema) = new table_list((yyvsp[0].table_def_t));}
2569 #line 2570 "fta.tab.cc" /* yacc.c:1646  */
2570     break;
2571
2572   case 144:
2573 #line 570 "fta.y" /* yacc.c:1646  */
2574     {(yyval.table_list_schema) = (yyvsp[-1].table_list_schema)->append_table((yyvsp[0].table_def_t));}
2575 #line 2576 "fta.tab.cc" /* yacc.c:1646  */
2576     break;
2577
2578   case 145:
2579 #line 573 "fta.y" /* yacc.c:1646  */
2580     {
2581                                         (yyval.table_def_t)=new table_def((yyvsp[-5].strval),(yyvsp[-4].plist_t),(yyvsp[-3].plist_t), (yyvsp[-1].field_list_t), PROTOCOL_SCHEMA); delete (yyvsp[-4].plist_t); delete (yyvsp[-1].field_list_t);}
2582 #line 2583 "fta.tab.cc" /* yacc.c:1646  */
2583     break;
2584
2585   case 146:
2586 #line 575 "fta.y" /* yacc.c:1646  */
2587     {
2588                                         (yyval.table_def_t)=new table_def((yyvsp[-4].stringval)->c_str(),(yyvsp[-3].plist_t),NULL,(yyvsp[-1].field_list_t), STREAM_SCHEMA); delete (yyvsp[-1].field_list_t);}
2589 #line 2590 "fta.tab.cc" /* yacc.c:1646  */
2590     break;
2591
2592   case 147:
2593 #line 577 "fta.y" /* yacc.c:1646  */
2594     {
2595                                 (yyval.table_def_t) = new table_def((yyvsp[-14].strval), (yyvsp[-11].plist_t), (yyvsp[-8].field_list_t), (yyvsp[-4].subqueryspec_list_t), (yyvsp[-1].plist_t)); }
2596 #line 2597 "fta.tab.cc" /* yacc.c:1646  */
2597     break;
2598
2599   case 148:
2600 #line 579 "fta.y" /* yacc.c:1646  */
2601     { (yyval.table_def_t) = new table_def((yyvsp[-1].ufcnl)); }
2602 #line 2603 "fta.tab.cc" /* yacc.c:1646  */
2603     break;
2604
2605   case 149:
2606 #line 583 "fta.y" /* yacc.c:1646  */
2607     {(yyval.ufcnl) = new unpack_fcn_list((yyvsp[0].ufcn));}
2608 #line 2609 "fta.tab.cc" /* yacc.c:1646  */
2609     break;
2610
2611   case 150:
2612 #line 584 "fta.y" /* yacc.c:1646  */
2613     {(yyval.ufcnl) = (yyvsp[-2].ufcnl) -> append((yyvsp[0].ufcn));}
2614 #line 2615 "fta.tab.cc" /* yacc.c:1646  */
2615     break;
2616
2617   case 151:
2618 #line 588 "fta.y" /* yacc.c:1646  */
2619     {(yyval.ufcn) = new unpack_fcn((yyvsp[-2].strval),(yyvsp[-1].strval),(yyvsp[0].strval));}
2620 #line 2621 "fta.tab.cc" /* yacc.c:1646  */
2621     break;
2622
2623   case 152:
2624 #line 592 "fta.y" /* yacc.c:1646  */
2625     {(yyval.subqueryspec_list_t) = new subqueryspec_list((yyvsp[0].subq_spec_t));}
2626 #line 2627 "fta.tab.cc" /* yacc.c:1646  */
2627     break;
2628
2629   case 153:
2630 #line 593 "fta.y" /* yacc.c:1646  */
2631     {(yyval.subqueryspec_list_t) = (yyvsp[-2].subqueryspec_list_t)->append((yyvsp[0].subq_spec_t));}
2632 #line 2633 "fta.tab.cc" /* yacc.c:1646  */
2633     break;
2634
2635   case 154:
2636 #line 597 "fta.y" /* yacc.c:1646  */
2637     {(yyval.subq_spec_t)=new subquery_spec((yyvsp[-3].strval), (yyvsp[-1].namevec_t)); delete (yyvsp[-1].namevec_t);}
2638 #line 2639 "fta.tab.cc" /* yacc.c:1646  */
2639     break;
2640
2641   case 155:
2642 #line 600 "fta.y" /* yacc.c:1646  */
2643     {(yyval.field_list_t) = new field_entry_list((yyvsp[0].field_t));}
2644 #line 2645 "fta.tab.cc" /* yacc.c:1646  */
2645     break;
2646
2647   case 156:
2648 #line 601 "fta.y" /* yacc.c:1646  */
2649     {(yyval.field_list_t) = (yyvsp[-1].field_list_t)->append_field((yyvsp[0].field_t));}
2650 #line 2651 "fta.tab.cc" /* yacc.c:1646  */
2651     break;
2652
2653   case 157:
2654 #line 605 "fta.y" /* yacc.c:1646  */
2655     {(yyval.field_t) = new field_entry((yyvsp[-5].strval),(yyvsp[-4].strval),(yyvsp[-3].strval),(yyvsp[-2].plist_t),(yyvsp[-1].plist_t));}
2656 #line 2657 "fta.tab.cc" /* yacc.c:1646  */
2657     break;
2658
2659   case 158:
2660 #line 606 "fta.y" /* yacc.c:1646  */
2661     {(yyval.field_t) = new field_entry((yyvsp[-3].strval),(yyvsp[-2].strval),"",(yyvsp[-1].plist_t),NULL);}
2662 #line 2663 "fta.tab.cc" /* yacc.c:1646  */
2663     break;
2664
2665   case 159:
2666 #line 610 "fta.y" /* yacc.c:1646  */
2667     {(yyval.plist_t) = NULL;}
2668 #line 2669 "fta.tab.cc" /* yacc.c:1646  */
2669     break;
2670
2671   case 160:
2672 #line 611 "fta.y" /* yacc.c:1646  */
2673     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
2674 #line 2675 "fta.tab.cc" /* yacc.c:1646  */
2675     break;
2676
2677   case 161:
2678 #line 615 "fta.y" /* yacc.c:1646  */
2679     {(yyval.plist_t) = new param_list((yyvsp[0].strval));}
2680 #line 2681 "fta.tab.cc" /* yacc.c:1646  */
2681     break;
2682
2683   case 162:
2684 #line 616 "fta.y" /* yacc.c:1646  */
2685     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
2686 #line 2687 "fta.tab.cc" /* yacc.c:1646  */
2687     break;
2688
2689   case 163:
2690 #line 617 "fta.y" /* yacc.c:1646  */
2691     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
2692 #line 2693 "fta.tab.cc" /* yacc.c:1646  */
2693     break;
2694
2695   case 164:
2696 #line 618 "fta.y" /* yacc.c:1646  */
2697     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
2698 #line 2699 "fta.tab.cc" /* yacc.c:1646  */
2699     break;
2700
2701   case 165:
2702 #line 619 "fta.y" /* yacc.c:1646  */
2703     {(yyval.plist_t) = (yyvsp[-2].plist_t)->append((yyvsp[0].strval));}
2704 #line 2705 "fta.tab.cc" /* yacc.c:1646  */
2705     break;
2706
2707   case 166:
2708 #line 620 "fta.y" /* yacc.c:1646  */
2709     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
2710 #line 2711 "fta.tab.cc" /* yacc.c:1646  */
2711     break;
2712
2713   case 167:
2714 #line 621 "fta.y" /* yacc.c:1646  */
2715     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
2716 #line 2717 "fta.tab.cc" /* yacc.c:1646  */
2717     break;
2718
2719   case 168:
2720 #line 622 "fta.y" /* yacc.c:1646  */
2721     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
2722 #line 2723 "fta.tab.cc" /* yacc.c:1646  */
2723     break;
2724
2725   case 169:
2726 #line 626 "fta.y" /* yacc.c:1646  */
2727     {(yyval.plist_t) = NULL;}
2728 #line 2729 "fta.tab.cc" /* yacc.c:1646  */
2729     break;
2730
2731   case 170:
2732 #line 627 "fta.y" /* yacc.c:1646  */
2733     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
2734 #line 2735 "fta.tab.cc" /* yacc.c:1646  */
2735     break;
2736
2737   case 171:
2738 #line 631 "fta.y" /* yacc.c:1646  */
2739     {(yyval.plist_t) = NULL;}
2740 #line 2741 "fta.tab.cc" /* yacc.c:1646  */
2741     break;
2742
2743   case 172:
2744 #line 632 "fta.y" /* yacc.c:1646  */
2745     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
2746 #line 2747 "fta.tab.cc" /* yacc.c:1646  */
2747     break;
2748
2749   case 173:
2750 #line 636 "fta.y" /* yacc.c:1646  */
2751     {(yyval.plist_t) = new param_list((yyvsp[0].strval));}
2752 #line 2753 "fta.tab.cc" /* yacc.c:1646  */
2753     break;
2754
2755   case 174:
2756 #line 637 "fta.y" /* yacc.c:1646  */
2757     {(yyval.plist_t) = (yyvsp[-2].plist_t)->append((yyvsp[0].strval));}
2758 #line 2759 "fta.tab.cc" /* yacc.c:1646  */
2759     break;
2760
2761   case 175:
2762 #line 641 "fta.y" /* yacc.c:1646  */
2763     {(yyval.namevec_t) = new name_vec((yyvsp[-2].strval),(yyvsp[-1].strval),(yyvsp[0].plist_t));}
2764 #line 2765 "fta.tab.cc" /* yacc.c:1646  */
2765     break;
2766
2767   case 176:
2768 #line 642 "fta.y" /* yacc.c:1646  */
2769     {(yyval.namevec_t) = (yyvsp[-4].namevec_t)->append((yyvsp[-2].strval),(yyvsp[-1].strval), (yyvsp[0].plist_t));}
2770 #line 2771 "fta.tab.cc" /* yacc.c:1646  */
2771     break;
2772
2773
2774 #line 2775 "fta.tab.cc" /* yacc.c:1646  */
2775       default: break;
2776     }
2777   /* User semantic actions sometimes alter yychar, and that requires
2778      that yytoken be updated with the new translation.  We take the
2779      approach of translating immediately before every use of yytoken.
2780      One alternative is translating here after every semantic action,
2781      but that translation would be missed if the semantic action invokes
2782      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2783      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
2784      incorrect destructor might then be invoked immediately.  In the
2785      case of YYERROR or YYBACKUP, subsequent parser actions might lead
2786      to an incorrect destructor call or verbose syntax error message
2787      before the lookahead is translated.  */
2788   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2789
2790   YYPOPSTACK (yylen);
2791   yylen = 0;
2792   YY_STACK_PRINT (yyss, yyssp);
2793
2794   *++yyvsp = yyval;
2795
2796   /* Now 'shift' the result of the reduction.  Determine what state
2797      that goes to, based on the state we popped back to and the rule
2798      number reduced by.  */
2799
2800   yyn = yyr1[yyn];
2801
2802   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2803   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2804     yystate = yytable[yystate];
2805   else
2806     yystate = yydefgoto[yyn - YYNTOKENS];
2807
2808   goto yynewstate;
2809
2810
2811 /*--------------------------------------.
2812 | yyerrlab -- here on detecting error.  |
2813 `--------------------------------------*/
2814 yyerrlab:
2815   /* Make sure we have latest lookahead translation.  See comments at
2816      user semantic actions for why this is necessary.  */
2817   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
2818
2819   /* If not already recovering from an error, report this error.  */
2820   if (!yyerrstatus)
2821     {
2822       ++yynerrs;
2823 #if ! YYERROR_VERBOSE
2824       yyerror (YY_("syntax error"));
2825 #else
2826 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2827                                         yyssp, yytoken)
2828       {
2829         char const *yymsgp = YY_("syntax error");
2830         int yysyntax_error_status;
2831         yysyntax_error_status = YYSYNTAX_ERROR;
2832         if (yysyntax_error_status == 0)
2833           yymsgp = yymsg;
2834         else if (yysyntax_error_status == 1)
2835           {
2836             if (yymsg != yymsgbuf)
2837               YYSTACK_FREE (yymsg);
2838             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2839             if (!yymsg)
2840               {
2841                 yymsg = yymsgbuf;
2842                 yymsg_alloc = sizeof yymsgbuf;
2843                 yysyntax_error_status = 2;
2844               }
2845             else
2846               {
2847                 yysyntax_error_status = YYSYNTAX_ERROR;
2848                 yymsgp = yymsg;
2849               }
2850           }
2851         yyerror (yymsgp);
2852         if (yysyntax_error_status == 2)
2853           goto yyexhaustedlab;
2854       }
2855 # undef YYSYNTAX_ERROR
2856 #endif
2857     }
2858
2859
2860
2861   if (yyerrstatus == 3)
2862     {
2863       /* If just tried and failed to reuse lookahead token after an
2864          error, discard it.  */
2865
2866       if (yychar <= YYEOF)
2867         {
2868           /* Return failure if at end of input.  */
2869           if (yychar == YYEOF)
2870             YYABORT;
2871         }
2872       else
2873         {
2874           yydestruct ("Error: discarding",
2875                       yytoken, &yylval);
2876           yychar = YYEMPTY;
2877         }
2878     }
2879
2880   /* Else will try to reuse lookahead token after shifting the error
2881      token.  */
2882   goto yyerrlab1;
2883
2884
2885 /*---------------------------------------------------.
2886 | yyerrorlab -- error raised explicitly by YYERROR.  |
2887 `---------------------------------------------------*/
2888 yyerrorlab:
2889
2890   /* Pacify compilers like GCC when the user code never invokes
2891      YYERROR and the label yyerrorlab therefore never appears in user
2892      code.  */
2893   if (/*CONSTCOND*/ 0)
2894      goto yyerrorlab;
2895
2896   /* Do not reclaim the symbols of the rule whose action triggered
2897      this YYERROR.  */
2898   YYPOPSTACK (yylen);
2899   yylen = 0;
2900   YY_STACK_PRINT (yyss, yyssp);
2901   yystate = *yyssp;
2902   goto yyerrlab1;
2903
2904
2905 /*-------------------------------------------------------------.
2906 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2907 `-------------------------------------------------------------*/
2908 yyerrlab1:
2909   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2910
2911   for (;;)
2912     {
2913       yyn = yypact[yystate];
2914       if (!yypact_value_is_default (yyn))
2915         {
2916           yyn += YYTERROR;
2917           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2918             {
2919               yyn = yytable[yyn];
2920               if (0 < yyn)
2921                 break;
2922             }
2923         }
2924
2925       /* Pop the current state because it cannot handle the error token.  */
2926       if (yyssp == yyss)
2927         YYABORT;
2928
2929
2930       yydestruct ("Error: popping",
2931                   yystos[yystate], yyvsp);
2932       YYPOPSTACK (1);
2933       yystate = *yyssp;
2934       YY_STACK_PRINT (yyss, yyssp);
2935     }
2936
2937   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2938   *++yyvsp = yylval;
2939   YY_IGNORE_MAYBE_UNINITIALIZED_END
2940
2941
2942   /* Shift the error token.  */
2943   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2944
2945   yystate = yyn;
2946   goto yynewstate;
2947
2948
2949 /*-------------------------------------.
2950 | yyacceptlab -- YYACCEPT comes here.  |
2951 `-------------------------------------*/
2952 yyacceptlab:
2953   yyresult = 0;
2954   goto yyreturn;
2955
2956 /*-----------------------------------.
2957 | yyabortlab -- YYABORT comes here.  |
2958 `-----------------------------------*/
2959 yyabortlab:
2960   yyresult = 1;
2961   goto yyreturn;
2962
2963 #if !defined yyoverflow || YYERROR_VERBOSE
2964 /*-------------------------------------------------.
2965 | yyexhaustedlab -- memory exhaustion comes here.  |
2966 `-------------------------------------------------*/
2967 yyexhaustedlab:
2968   yyerror (YY_("memory exhausted"));
2969   yyresult = 2;
2970   /* Fall through.  */
2971 #endif
2972
2973 yyreturn:
2974   if (yychar != YYEMPTY)
2975     {
2976       /* Make sure we have latest lookahead translation.  See comments at
2977          user semantic actions for why this is necessary.  */
2978       yytoken = YYTRANSLATE (yychar);
2979       yydestruct ("Cleanup: discarding lookahead",
2980                   yytoken, &yylval);
2981     }
2982   /* Do not reclaim the symbols of the rule whose action triggered
2983      this YYABORT or YYACCEPT.  */
2984   YYPOPSTACK (yylen);
2985   YY_STACK_PRINT (yyss, yyssp);
2986   while (yyssp != yyss)
2987     {
2988       yydestruct ("Cleanup: popping",
2989                   yystos[*yyssp], yyvsp);
2990       YYPOPSTACK (1);
2991     }
2992 #ifndef yyoverflow
2993   if (yyss != yyssa)
2994     YYSTACK_FREE (yyss);
2995 #endif
2996 #if YYERROR_VERBOSE
2997   if (yymsg != yymsgbuf)
2998     YYSTACK_FREE (yymsg);
2999 #endif
3000   return yyresult;
3001 }
3002 #line 645 "fta.y" /* yacc.c:1906  */
3003
3004