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