Added watchlist support
[com/gs-lite.git] / src / ftacmp / fta.tab.cc
index 30b1938..8bd2ab0 100644 (file)
@@ -154,41 +154,43 @@ extern int FtaParserdebug;
     OUTER_JOIN = 278,
     LEFT_OUTER_JOIN = 279,
     RIGHT_OUTER_JOIN = 280,
-    GROUP = 281,
-    HAVING = 282,
-    IN = 283,
-    SELECT = 284,
-    WHERE = 285,
-    SUPERGROUP = 286,
-    CLEANING_WHEN = 287,
-    CLEANING_BY = 288,
-    CLOSING_WHEN = 289,
-    SUCH = 290,
-    THAT = 291,
-    CUBE = 292,
-    ROLLUP = 293,
-    GROUPING_SETS = 294,
-    TRUE_V = 295,
-    FALSE_V = 296,
-    TIMEVAL_L = 297,
-    HEX_L = 298,
-    LHEX_L = 299,
-    IP_L = 300,
-    IPV6_L = 301,
-    MERGE = 302,
-    SLACK = 303,
-    DEFINE_SEC = 304,
-    PARAM_SEC = 305,
-    PROTOCOL = 306,
-    TABLE = 307,
-    STREAM = 308,
-    FTA = 309,
-    UNPACK_FCNS = 310,
-    OPERATOR = 311,
-    OPERATOR_VIEW = 312,
-    FIELDS = 313,
-    SUBQUERIES = 314,
-    SELECTION_PUSHDOWN = 315
+    WATCHLIST_JOIN = 281,
+    GROUP = 282,
+    HAVING = 283,
+    IN = 284,
+    SELECT = 285,
+    WATCHLIST = 286,
+    WHERE = 287,
+    SUPERGROUP = 288,
+    CLEANING_WHEN = 289,
+    CLEANING_BY = 290,
+    CLOSING_WHEN = 291,
+    SUCH = 292,
+    THAT = 293,
+    CUBE = 294,
+    ROLLUP = 295,
+    GROUPING_SETS = 296,
+    TRUE_V = 297,
+    FALSE_V = 298,
+    TIMEVAL_L = 299,
+    HEX_L = 300,
+    LHEX_L = 301,
+    IP_L = 302,
+    IPV6_L = 303,
+    MERGE = 304,
+    SLACK = 305,
+    DEFINE_SEC = 306,
+    PARAM_SEC = 307,
+    PROTOCOL = 308,
+    TABLE = 309,
+    STREAM = 310,
+    FTA = 311,
+    UNPACK_FCNS = 312,
+    OPERATOR = 313,
+    OPERATOR_VIEW = 314,
+    FIELDS = 315,
+    SUBQUERIES = 316,
+    SELECTION_PUSHDOWN = 317
   };
 #endif
 
@@ -242,7 +244,7 @@ union YYSTYPE
        unpack_fcn_list *ufcnl;
 
 
-#line 246 "fta.tab.cc" /* yacc.c:355  */
+#line 248 "fta.tab.cc" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -259,7 +261,7 @@ int FtaParserparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 263 "fta.tab.cc" /* yacc.c:358  */
+#line 265 "fta.tab.cc" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -499,23 +501,23 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  57
+#define YYFINAL  60
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   695
+#define YYLAST   738
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  80
+#define YYNTOKENS  82
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  59
+#define YYNNTS  60
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  176
+#define YYNRULES  183
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  377
+#define YYNSTATES  390
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   315
+#define YYMAXUTOK   317
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -527,16 +529,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    74,     2,    77,    76,    19,    13,     2,
-      68,    70,    17,    15,    69,    16,    71,    18,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    79,     2,
-       2,     2,     2,     2,    78,     2,     2,     2,     2,     2,
+       2,     2,     2,    76,     2,    79,    78,    19,    13,     2,
+      70,    72,    17,    15,    71,    16,    73,    18,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    81,     2,
+       2,     2,     2,     2,    80,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    72,     2,    73,     2,     2,     2,     2,     2,     2,
+       2,    74,     2,    75,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    12,     2,    75,     2,     2,     2,
+       2,     2,     2,     2,    12,     2,    77,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -555,31 +557,32 @@ static const yytype_uint8 yytranslate[] =
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67
+      62,    63,    64,    65,    66,    67,    68,    69
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   204,   204,   209,   216,   230,   235,   240,   245,   249,
-     252,   257,   262,   266,   270,   275,   276,   280,   281,   285,
-     286,   290,   291,   295,   296,   300,   304,   306,   314,   318,
-     330,   331,   332,   333,   334,   335,   339,   340,   344,   345,
-     349,   350,   351,   352,   353,   357,   358,   363,   364,   368,
-     372,   373,   377,   378,   382,   383,   387,   388,   392,   399,
-     400,   401,   402,   403,   407,   408,   409,   410,   414,   418,
-     422,   423,   429,   430,   431,   432,   433,   434,   435,   436,
-     437,   438,   439,   440,   441,   442,   443,   444,   445,   446,
-     447,   448,   449,   450,   451,   452,   453,   458,   459,   460,
-     461,   465,   466,   470,   471,   472,   473,   474,   475,   476,
-     477,   478,   479,   480,   481,   487,   488,   492,   493,   497,
-     498,   502,   503,   504,   505,   509,   510,   514,   515,   519,
-     520,   521,   522,   533,   534,   538,   539,   540,   544,   545,
-     549,   553,   554,   569,   570,   573,   575,   577,   579,   583,
-     584,   588,   592,   593,   597,   600,   601,   605,   606,   610,
-     611,   615,   616,   617,   618,   619,   620,   621,   622,   626,
-     627,   631,   632,   636,   637,   641,   642
+       0,   206,   206,   211,   218,   232,   237,   242,   247,   251,
+     254,   259,   264,   268,   272,   275,   280,   285,   289,   293,
+     298,   299,   303,   304,   308,   309,   313,   314,   318,   319,
+     323,   327,   329,   334,   342,   346,   358,   359,   360,   361,
+     362,   363,   364,   368,   369,   373,   374,   378,   379,   380,
+     381,   382,   386,   387,   392,   393,   397,   401,   402,   406,
+     407,   411,   412,   416,   417,   421,   428,   429,   430,   431,
+     432,   436,   437,   438,   439,   443,   447,   451,   452,   458,
+     459,   460,   461,   462,   463,   464,   465,   466,   467,   468,
+     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
+     479,   480,   481,   482,   487,   488,   489,   490,   494,   495,
+     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
+     509,   510,   516,   517,   521,   522,   526,   527,   531,   532,
+     533,   534,   538,   539,   543,   544,   548,   549,   550,   551,
+     562,   563,   567,   568,   569,   573,   574,   578,   582,   583,
+     598,   599,   602,   604,   606,   608,   612,   613,   617,   621,
+     622,   626,   629,   630,   634,   635,   639,   640,   644,   645,
+     646,   647,   648,   649,   650,   651,   655,   656,   660,   661,
+     665,   666,   670,   671
 };
 #endif
 
@@ -593,18 +596,19 @@ static const char *const yytname[] =
   "'&'", "SHIFT_OP", "'+'", "'-'", "'*'", "'/'", "'%'", "UMINUS",
   "SEMICOLON", "LEFTBRACE", "RIGHTBRACE", "BY", "AS", "AGGR", "FROM",
   "INNER_JOIN", "FILTER_JOIN", "OUTER_JOIN", "LEFT_OUTER_JOIN",
-  "RIGHT_OUTER_JOIN", "GROUP", "HAVING", "IN", "SELECT", "WHERE",
-  "SUPERGROUP", "CLEANING_WHEN", "CLEANING_BY", "CLOSING_WHEN", "SUCH",
-  "THAT", "CUBE", "ROLLUP", "GROUPING_SETS", "TRUE_V", "FALSE_V",
-  "TIMEVAL_L", "HEX_L", "LHEX_L", "IP_L", "IPV6_L", "MERGE", "SLACK",
-  "DEFINE_SEC", "PARAM_SEC", "PROTOCOL", "TABLE", "STREAM", "FTA",
-  "UNPACK_FCNS", "OPERATOR", "OPERATOR_VIEW", "FIELDS", "SUBQUERIES",
-  "SELECTION_PUSHDOWN", "'('", "','", "')'", "'.'", "'['", "']'", "'!'",
-  "'~'", "'$'", "'#'", "'@'", "':'", "$accept", "parse_result", "gsql",
-  "query_list", "params_def", "variable_def", "variable_list",
-  "variable_assign", "select_statement", "merge_statement", "selection",
-  "table_exp", "from_clause", "table_ref_commalist", "table_ref", "table",
-  "qname", "opt_where_clause", "where_clause", "opt_cleaning_when_clause",
+  "RIGHT_OUTER_JOIN", "WATCHLIST_JOIN", "GROUP", "HAVING", "IN", "SELECT",
+  "WATCHLIST", "WHERE", "SUPERGROUP", "CLEANING_WHEN", "CLEANING_BY",
+  "CLOSING_WHEN", "SUCH", "THAT", "CUBE", "ROLLUP", "GROUPING_SETS",
+  "TRUE_V", "FALSE_V", "TIMEVAL_L", "HEX_L", "LHEX_L", "IP_L", "IPV6_L",
+  "MERGE", "SLACK", "DEFINE_SEC", "PARAM_SEC", "PROTOCOL", "TABLE",
+  "STREAM", "FTA", "UNPACK_FCNS", "OPERATOR", "OPERATOR_VIEW", "FIELDS",
+  "SUBQUERIES", "SELECTION_PUSHDOWN", "'('", "','", "')'", "'.'", "'['",
+  "']'", "'!'", "'~'", "'$'", "'#'", "'@'", "':'", "$accept",
+  "parse_result", "gsql", "query_list", "params_def", "variable_def",
+  "variable_list", "variable_assign", "select_statement",
+  "merge_statement", "watchlist_statement", "selection", "table_exp",
+  "from_clause", "table_ref_commalist", "table_ref", "table", "qname",
+  "opt_where_clause", "where_clause", "opt_cleaning_when_clause",
   "opt_cleaning_by_clause", "opt_closing_when_clause", "opt_having_clause",
   "having_clause", "search_condition", "predicate", "comparison_predicate",
   "in_predicate", "literal_commalist", "scalar_exp", "select_commalist",
@@ -630,17 +634,18 @@ static const yytype_uint16 yytoknum[] =
      278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
      288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,    40,    44,
-      41,    46,    91,    93,    33,   126,    36,    35,    64,    58
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+      40,    44,    41,    46,    91,    93,    33,   126,    36,    35,
+      64,    58
 };
 # endif
 
-#define YYPACT_NINF -277
+#define YYPACT_NINF -290
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-277)))
+  (!!((Yystate) == (-290)))
 
-#define YYTABLE_NINF -138
+#define YYTABLE_NINF -145
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -649,44 +654,45 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     413,   489,    37,    51,   105,   114,   120,   124,   128,   126,
-     142,  -277,   136,    72,    24,  -277,  -277,   169,  -277,   104,
-    -277,  -277,  -277,  -277,   489,   489,     0,  -277,  -277,   175,
-     189,   213,   217,   224,   489,   489,   489,   170,   229,   240,
-     338,   426,   182,  -277,  -277,  -277,   235,   230,   369,    35,
-      36,   253,  -277,     1,   169,   319,   289,  -277,    -9,    95,
-    -277,  -277,    95,  -277,  -277,  -277,   148,     8,   255,  -277,
-    -277,   242,   267,  -277,  -277,  -277,  -277,  -277,   257,  -277,
-    -277,  -277,  -277,  -277,    17,   309,   269,   312,   313,   321,
-    -277,   316,   489,   489,   489,   489,   489,   489,   489,   489,
-     347,   489,   351,    37,   489,    37,  -277,   130,  -277,    41,
-    -277,  -277,    81,   372,   305,   375,   378,   360,    83,   382,
-      62,  -277,   323,  -277,  -277,  -277,  -277,  -277,  -277,   676,
-     101,   331,   400,   281,   342,   595,   357,  -277,   348,   349,
-     410,   353,  -277,   420,   412,    17,    37,    17,    17,    17,
-     411,   395,  -277,   264,   554,   248,   143,   143,  -277,  -277,
-    -277,  -277,   533,  -277,   615,  -277,   408,   415,  -277,  -277,
-    -277,   187,   112,   378,   425,  -277,  -277,   150,   447,   429,
-     463,   319,  -277,   253,   489,  -277,   469,  -277,  -277,   165,
-    -277,  -277,   414,   603,   475,   477,   409,    17,  -277,   353,
-     421,   353,   353,   353,   308,   411,   411,   176,  -277,  -277,
-    -277,   495,   457,   445,   488,  -277,  -277,  -277,  -277,  -277,
-    -277,   513,  -277,   -37,   447,   514,  -277,   516,   107,  -277,
-    -277,  -277,  -277,   455,   676,  -277,  -277,  -277,  -277,   451,
-     412,   458,   482,  -277,   550,   450,  -277,    20,   376,   411,
-     411,   489,   449,   162,   553,   525,  -277,   199,  -277,   113,
-    -277,    11,  -277,  -277,   538,   120,   120,   120,   491,  -277,
-     -32,  -277,   565,  -277,   676,   294,    38,   494,   522,   523,
-     636,  -277,   524,  -277,  -277,   529,   530,   411,   555,  -277,
-    -277,  -277,  -277,  -277,   253,   571,   447,   412,   412,   412,
-     573,  -277,   -27,  -277,    10,   528,   528,   556,   594,   162,
-     553,   553,   176,   411,   561,   305,  -277,   115,    17,   294,
-    -277,   570,   172,  -277,   184,   528,   186,  -277,  -277,  -277,
-    -277,   176,   411,   582,   604,   560,   353,  -277,   632,   528,
-    -277,  -277,   233,   568,  -277,   176,   411,  -277,  -277,   616,
-     662,  -277,  -277,   528,   176,   634,   243,   572,    99,  -277,
-    -277,   653,   634,   590,   655,   245,  -277,   253,   253,   656,
-    -277,   637,  -277,   659,  -277,   253,  -277
+      87,   519,   -34,    49,    60,    70,    66,   108,   104,   112,
+     137,   161,  -290,   157,    16,    98,  -290,  -290,  -290,   277,
+    -290,    45,  -290,  -290,  -290,  -290,   519,   519,   -12,  -290,
+    -290,   184,   198,   220,   256,   295,   519,   519,   519,   196,
+     226,   308,   500,   315,   265,  -290,  -290,  -290,   320,   280,
+     285,   141,    20,    28,   306,  -290,     6,   277,   374,   358,
+    -290,   -10,    92,  -290,  -290,  -290,    92,  -290,  -290,  -290,
+    -290,   228,    13,   311,  -290,  -290,   309,   312,  -290,  -290,
+    -290,  -290,  -290,   356,  -290,  -290,  -290,  -290,  -290,    17,
+     351,   313,   357,   370,   371,   372,  -290,   361,   519,   519,
+     519,   519,   519,   519,   519,   519,   398,   519,   404,   405,
+      49,   519,    49,  -290,   152,  -290,    44,  -290,  -290,   119,
+     406,   336,   409,   419,   401,   121,   421,   116,  -290,   362,
+    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,   719,   170,
+     353,   426,   341,   359,   446,   399,  -290,   360,   366,   427,
+     369,  -290,   429,   424,    17,    49,    17,    17,    17,    17,
+     431,   410,  -290,   618,   481,   176,   209,   209,  -290,  -290,
+    -290,  -290,   674,   440,   181,  -290,  -290,   652,  -290,   434,
+     435,  -290,  -290,  -290,   252,   192,   419,   423,  -290,  -290,
+     213,   404,   443,   462,   374,  -290,   306,   519,  -290,   465,
+    -290,  -290,   215,  -290,  -290,   400,   644,   467,   468,   412,
+      17,  -290,   369,   402,   369,   369,   369,   369,   188,   431,
+     431,   260,  -290,  -290,  -290,   234,   450,   448,   486,    26,
+    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,   501,  -290,
+     -41,   404,   502,  -290,   197,  -290,  -290,  -290,   439,   719,
+    -290,  -290,  -290,  -290,   441,   424,   442,   444,  -290,   507,
+     487,  -290,    36,   602,   431,   431,   519,   445,   160,   513,
+     485,  -290,   306,   522,   268,  -290,   200,  -290,  -290,   499,
+     108,   108,   108,   472,  -290,   -16,  -290,   545,  -290,   719,
+      35,   534,   488,   490,   491,   688,  -290,   484,  -290,  -290,
+     504,   505,   431,   515,  -290,   336,  -290,  -290,  -290,  -290,
+    -290,   404,   424,   424,   424,   550,  -290,   146,  -290,    15,
+     575,   575,   514,   580,   160,   513,   513,   260,   431,   543,
+     565,   202,    17,    35,  -290,   276,   225,  -290,   231,   575,
+     238,  -290,  -290,  -290,  -290,   260,   431,   544,  -290,   520,
+     369,  -290,   589,   575,  -290,  -290,   246,   523,  -290,   260,
+     431,  -290,   572,   705,  -290,  -290,   575,   260,   597,   250,
+     532,   195,  -290,  -290,   600,   597,   536,   603,   279,  -290,
+     306,   306,   605,  -290,   586,  -290,   607,  -290,   306,  -290
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -695,65 +701,66 @@ static const yytype_int16 yypact[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    15,     2,     0,     0,     9,    14,     3,   143,   135,
-     103,   104,   105,   106,     0,     0,     0,   107,   108,     0,
+       0,     0,    20,     2,     0,     0,     9,    14,    19,     3,
+     150,   142,   110,   111,   112,   113,     0,     0,     0,   114,
+     115,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   104,    34,    91,    93,    94,     0,   142,
+       0,     0,     0,     0,   166,    52,   178,     0,     0,     0,
+       1,     0,     0,     7,    12,    17,     0,     8,    13,    18,
+     151,     0,     0,     0,    87,    88,     0,     0,   116,   117,
+     118,   119,   120,     0,    89,    90,    92,   121,   140,     0,
+       0,     0,     0,     0,     0,     0,    30,    54,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    97,    28,    84,    86,    87,   135,     0,     0,     0,
-       0,   159,    45,   171,     0,     0,     0,     1,     0,     0,
-       7,    12,     0,     8,    13,   144,     0,     0,     0,    80,
-      81,     0,     0,   109,   110,   111,   112,   113,     0,    82,
-      83,    85,   114,   133,     0,     0,     0,     0,     0,     0,
-      25,    47,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    26,     0,    20,     0,
-      21,    18,     0,     0,   169,     0,     0,     0,     0,     0,
-       0,   149,     0,    16,     6,    11,     5,    10,    92,   101,
-       0,   136,     0,     0,     0,     0,     0,    88,    45,     0,
-       0,    30,    36,    38,    40,     0,     0,     0,     0,     0,
-       0,   115,    48,    74,    77,    79,    72,    73,    75,    76,
-      78,    98,    99,   138,     0,   139,     0,     0,    19,    22,
-      17,   161,     0,     0,     0,    46,   173,     0,     0,     0,
-       0,     0,   148,   159,     0,    91,     0,   134,    96,     0,
-      89,    90,     0,     0,     0,     0,     0,     0,    39,    31,
-       0,    32,    34,    33,   135,     0,     0,    49,    63,    64,
-      65,     0,     0,   117,     0,    27,    24,    23,   162,   163,
-     164,     0,   160,     0,     0,     0,   172,     0,     0,   155,
-       4,   151,   150,     0,   102,   137,    95,    93,    94,    45,
-      41,     0,     0,    37,     0,     0,    61,     0,     0,     0,
-       0,     0,     0,     0,     0,    56,   100,   165,   170,     0,
-     174,   159,   146,   156,     0,     0,     0,     0,     0,    66,
-       0,    62,    59,    60,    68,     0,   129,     0,     0,     0,
-       0,   125,   116,   121,   140,     0,   118,     0,    50,    57,
-     166,   167,   168,   145,   159,     0,     0,    42,    43,    44,
-       0,    67,     0,    70,     0,     0,     0,     0,     0,     0,
-       0,     0,    58,     0,    52,   169,   158,     0,     0,     0,
-      69,   130,     0,   127,     0,     0,     0,   132,   126,   141,
-     142,    51,     0,    54,     0,     0,    35,    71,     0,     0,
-     123,   122,     0,     0,   124,    53,     0,    29,   157,     0,
-     131,   128,   119,     0,    55,     0,     0,     0,     0,   152,
-     120,     0,     0,     0,     0,     0,   153,   159,   159,     0,
-     154,     0,   175,     0,   147,   159,   176
+       0,     0,     0,    31,     0,    25,     0,    26,    23,     0,
+       0,   176,     0,     0,     0,     0,     0,     0,   156,     0,
+      21,     6,    11,    16,     5,    10,    15,    99,   108,     0,
+     143,     0,     0,     0,     0,     0,    95,    52,     0,     0,
+      36,    43,    45,    47,     0,     0,     0,     0,     0,     0,
+       0,   122,    55,    81,    84,    86,    79,    80,    82,    83,
+      85,   105,   106,     0,     0,   162,   145,     0,   146,     0,
+       0,    24,    27,    22,   168,     0,     0,     0,    53,   180,
+       0,     0,     0,     0,     0,   155,   166,     0,    98,     0,
+     141,   103,     0,    96,    97,     0,     0,     0,     0,     0,
+       0,    46,    37,     0,    38,    40,    39,    41,   142,     0,
+       0,    56,    70,    71,    72,     0,     0,   124,     0,   166,
+      33,   163,    32,    29,    28,   169,   170,   171,     0,   167,
+       0,     0,     0,   179,     0,     4,   158,   157,     0,   109,
+     144,   102,   100,   101,    52,    48,     0,     0,    44,     0,
+       0,    68,     0,     0,     0,     0,     0,     0,     0,     0,
+      63,   107,   166,     0,   172,   177,     0,   181,   153,     0,
+       0,     0,     0,     0,    73,     0,    69,    66,    67,    75,
+       0,   136,     0,     0,     0,     0,   132,   123,   128,   147,
+       0,   125,     0,    57,    64,   176,   165,   173,   174,   175,
+     152,     0,    49,    50,    51,     0,    74,     0,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,    65,     0,    59,
+       0,     0,     0,     0,    76,   137,     0,   134,     0,     0,
+       0,   139,   133,   148,   149,    58,     0,    61,   164,     0,
+      42,    78,     0,     0,   130,   129,     0,     0,   131,    60,
+       0,    35,     0,   138,   135,   126,     0,    62,     0,     0,
+       0,     0,   159,   127,     0,     0,     0,     0,     0,   160,
+     166,   166,     0,   161,     0,   182,     0,   154,   166,   183
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -277,  -277,   -36,  -277,   625,   650,   614,    47,    12,    53,
-    -277,  -277,   -40,  -142,   470,  -277,    -5,  -277,  -277,  -277,
-    -277,  -277,  -277,  -277,  -188,  -277,  -277,  -277,  -277,    -1,
-    -277,  -124,  -244,  -277,  -277,  -277,   359,  -277,  -276,  -237,
-    -277,     2,  -277,    15,  -277,   612,    -7,  -277,   490,  -277,
-     307,  -209,  -216,  -181,  -277,   355,  -277,   499,  -277
+    -290,  -290,   -42,  -290,   596,   608,   570,   -48,    47,    50,
+      65,  -290,  -290,   -49,  -150,   430,  -290,    -6,  -290,  -290,
+    -290,  -290,  -290,  -290,  -290,  -208,  -290,  -290,  -290,  -290,
+      -1,  -290,  -128,  -273,  -290,  -290,  -290,   317,  -290,  -289,
+    -246,  -290,     7,  -290,    29,  -290,   582,    -4,  -290,   449,
+    -290,   267,  -178,  -171,  -191,  -290,   339,  -290,   460,  -290
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    10,    11,    12,    13,    14,   109,   110,    15,    16,
-      40,    90,    91,   141,   142,   143,   144,   151,   152,   314,
-     333,   347,   288,   289,   207,   208,   209,   210,   302,   211,
-      42,   130,    43,   213,   255,   326,   281,   282,   322,   323,
-      44,    45,    48,   285,   286,    17,    18,   120,   121,   358,
-     359,   228,   229,   114,   172,   174,   117,   177,   365
+      -1,    11,    12,    13,    14,    15,   116,   117,    16,    17,
+      18,    42,    96,    97,   150,   151,   152,   153,   161,   162,
+     329,   347,   361,   303,   304,   221,   222,   223,   224,   317,
+     225,    44,   139,    45,   227,   270,   340,   296,   297,   336,
+     337,    46,    47,    51,   300,   301,    19,    20,   127,   128,
+     371,   372,   174,   175,   121,   185,   187,   124,   190,   378
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -761,240 +768,251 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      41,    53,   233,   199,    47,   201,   202,   203,   106,   189,
-      65,   131,   263,   321,   294,   259,   283,   246,   247,   115,
-     138,   139,   123,    69,    70,    60,    63,     1,   249,   250,
-     324,   303,   225,    78,    79,    80,   258,   184,   107,   107,
-      46,   301,   319,   263,   107,     2,   320,     3,     4,   342,
-    -135,  -135,  -135,  -135,  -135,  -135,  -135,  -135,   108,   111,
-       1,   272,   273,  -135,   168,   129,    61,    64,    71,   116,
-     135,   124,   283,    49,   126,   337,    72,   356,     2,   113,
-     295,     4,   179,   181,   107,   182,   132,   317,   132,   140,
-     271,   153,   154,   155,   156,   157,   158,   159,   160,   312,
-     162,   263,   351,   164,   170,   163,    66,   165,     1,   304,
-     227,    65,   125,   315,    68,   127,   227,    51,   227,     1,
-     362,   270,   363,    52,   215,   331,     2,    50,     3,    56,
-     262,     1,   129,   166,   167,   193,   293,     2,   335,     3,
-       4,     5,    57,     6,   345,     8,    54,     9,   200,     2,
-      55,    19,    20,    21,    22,    23,   169,    58,   354,   169,
-      97,    98,    99,    24,    25,   276,    20,    21,    22,    23,
-     184,   185,    66,    81,    26,    67,   336,    24,    25,    73,
-      68,   221,   222,   234,   249,   250,   371,   372,    26,   240,
-     218,   219,   220,    74,   376,    27,    28,    29,    30,    31,
-      32,    33,   290,   291,   292,   248,   277,   278,   279,    27,
-      28,    29,    30,    31,    32,    33,    34,    75,   128,   225,
-     226,    76,    35,    36,    37,    38,    39,     5,    77,     6,
-      34,     8,    82,     9,   184,   236,    35,    36,    37,    38,
-      39,   339,   340,    83,   129,    19,    20,    21,    22,    23,
-     274,   101,   280,   339,   341,   343,   344,    24,    25,   134,
-     297,   298,   299,    95,    96,    97,    98,    99,    26,    92,
-      93,    94,    95,    96,    97,    98,    99,    93,    94,    95,
-      96,    97,    98,    99,    19,    20,    21,    22,    23,    27,
-      28,    29,    30,    31,    32,    33,    24,    25,    20,    21,
-      22,    23,   339,   352,   280,   280,   102,    26,   280,   103,
-      34,   122,   339,   360,   369,   370,    35,    36,    37,    38,
-      39,   113,   119,   133,   280,   329,   330,   137,    27,    28,
-      29,    30,    31,    32,    33,   136,   145,   146,   280,   147,
-     148,    27,    28,    29,    30,    31,    32,    33,   149,    34,
-     161,   188,   280,   150,   131,    35,    36,    37,    38,    39,
-      19,    20,    21,    22,    23,    84,    85,    86,    87,    88,
-      89,    38,    24,    25,   192,   171,    66,   173,   175,    67,
-     245,   176,   178,    26,    68,   180,   183,   251,    92,    93,
-      94,    95,    96,    97,    98,    99,    84,    85,    86,    87,
-      88,    89,   186,   187,    27,    28,    29,    30,    31,    32,
-      33,   252,   190,   196,   204,    20,    21,    22,    23,   194,
-     195,   205,   197,   198,   104,    34,    24,    25,   212,   216,
-     115,    35,    36,    37,    38,    39,   217,    26,    92,    93,
-      94,    95,    96,    97,    98,    99,   137,   224,   105,     1,
-     227,   100,   230,    19,    20,    21,    22,    23,    27,    28,
-      29,    30,    31,    32,    33,    24,    25,     2,   231,     3,
-       4,     5,   235,     6,     7,     8,    26,     9,   239,   206,
-     241,   253,   242,   254,   237,    35,    36,    37,    38,    39,
-     244,   256,    19,    20,    21,    22,    23,    27,    28,    29,
-      30,    31,    32,    33,    24,    25,   251,    92,    93,    94,
-      95,    96,    97,    98,    99,    26,   257,   260,    34,   261,
-     264,   275,   265,   269,    35,    36,    37,    38,    39,   266,
-     252,   276,    20,    21,    22,    23,    27,    28,    29,    30,
-      31,    32,    33,    24,    25,    92,    93,    94,    95,    96,
-      97,    98,    99,   267,    26,   268,   284,    34,   214,   287,
-     296,   300,   305,    35,    36,    37,    38,    39,    94,    95,
-      96,    97,    98,    99,   250,    27,    28,    29,    30,    31,
-      32,    33,  -136,  -136,  -136,  -136,  -136,  -136,  -136,  -136,
-     306,   307,   316,   309,   313,  -136,    34,   327,   310,   311,
-     318,   332,    35,    36,    37,    38,    39,    92,    93,    94,
-      95,    96,    97,    98,    99,    92,    93,    94,    95,    96,
-      97,    98,    99,   346,   325,   348,   349,    92,    93,    94,
-      95,    96,    97,    98,    99,   350,   353,   357,   355,    62,
-     361,   338,    84,    85,    86,    87,    88,    89,    92,    93,
-      94,    95,    96,    97,    98,    99,   364,   367,   368,   373,
-     374,   308,   375,    59,   112,   191,   118,   243,   328,   366,
-     334,   232,   223,   238,  -137,  -137,  -137,  -137,  -137,  -137,
-    -137,  -137,     0,     0,     0,     0,     0,  -137,    92,    93,
-      94,    95,    96,    97,    98,    99
+      43,    56,   113,   231,   212,   248,   214,   215,   216,   217,
+      50,   261,   262,   244,   202,    70,   140,   318,   335,   130,
+     147,   148,   298,   114,   122,    74,    75,     1,     2,   272,
+     242,   114,   338,    48,   275,    83,    84,    85,   273,    22,
+      23,    24,    25,   115,   264,   265,     3,   114,     4,     5,
+     356,   118,    49,     1,     2,   197,   287,   288,    76,   316,
+     351,    63,    67,   276,    64,    68,    77,   181,   182,    54,
+     138,   182,     3,   231,     4,   144,   123,   369,   298,    65,
+      69,   305,    52,   192,    29,    30,    31,    32,    33,    34,
+      35,   149,    53,   141,   327,   141,   120,   163,   164,   165,
+     166,   167,   168,   169,   170,   231,   172,   364,   286,   131,
+     177,    55,   132,   134,    40,    71,   135,   176,    72,   178,
+     345,    70,   114,    73,     1,     2,    57,   133,   232,     1,
+       2,   136,   285,   331,    58,     1,     2,   194,   359,   195,
+      59,   138,   183,     3,   206,     4,     5,     6,     3,     7,
+       8,     9,   367,    10,     3,   179,   180,     5,     1,     2,
+     231,    60,   213,   291,    22,    23,    24,    25,    89,    90,
+      91,    92,    93,    94,    95,    26,    27,     3,    61,     4,
+       5,     6,   350,     7,   173,     9,    28,    10,    78,   384,
+     385,   101,   102,   103,   104,   105,   249,   389,   111,    86,
+     173,   255,    79,   173,   230,   173,   292,   293,   294,    29,
+      30,    31,    32,    33,    34,    35,   375,   333,   376,   263,
+     278,   334,   112,   310,    80,   349,   103,   104,   105,    87,
+      36,    21,    22,    23,    24,    25,    37,    38,    39,    40,
+      41,   197,   198,    26,    27,   266,    98,    99,   100,   101,
+     102,   103,   104,   105,    28,   235,   236,   237,    71,   138,
+      81,    72,   260,   238,   239,   289,    73,   295,   264,   265,
+     267,   307,   308,   309,   312,   313,   314,    29,    30,    31,
+      32,    33,    34,    35,   242,   243,   197,   251,  -143,  -143,
+    -143,  -143,  -143,  -143,  -143,  -143,   353,   354,    36,    82,
+     137,  -143,   353,   355,    37,    38,    39,    40,    41,   357,
+     358,    88,    21,    22,    23,    24,    25,   353,   365,   295,
+     295,   353,   373,   295,    26,    27,   143,    98,    99,   100,
+     101,   102,   103,   104,   105,    28,   107,     6,   295,     7,
+     106,     9,   108,    10,    21,    22,    23,    24,    25,   352,
+     382,   383,   295,   109,   343,   344,    26,    27,    29,    30,
+      31,    32,    33,    34,    35,   295,   110,    28,    98,    99,
+     100,   101,   102,   103,   104,   105,   120,   126,   154,    36,
+     129,   142,   145,   155,   156,    37,    38,    39,    40,    41,
+      29,    30,    31,    32,    33,    34,    35,   157,   158,   159,
+     160,   171,    21,    22,    23,    24,    25,   173,   140,   184,
+     186,    36,   188,   201,    26,    27,   205,    37,    38,    39,
+      40,    41,   189,   191,   193,    28,   199,   196,   146,   200,
+     209,   203,   211,   207,   218,    22,    23,    24,    25,   208,
+     210,   219,   122,   229,   226,   241,    26,    27,    29,    30,
+      31,    32,    33,    34,    35,   233,   234,    28,    98,    99,
+     100,   101,   102,   103,   104,   105,   245,   246,   250,    36,
+     254,   256,   252,   259,   268,    37,    38,    39,    40,    41,
+      29,    30,    31,    32,    33,    34,    35,   257,   269,   271,
+      21,    22,    23,    24,    25,   100,   101,   102,   103,   104,
+     105,   220,    26,    27,   274,   277,   279,    37,    38,    39,
+      40,    41,   283,    28,   280,   281,   299,   282,   204,   290,
+     302,   311,    21,    22,    23,    24,    25,    89,    90,    91,
+      92,    93,    94,    95,    26,    27,    29,    30,    31,    32,
+      33,    34,    35,   306,   315,    28,  -142,  -142,  -142,  -142,
+    -142,  -142,  -142,  -142,   265,   324,   328,    36,   320,  -142,
+     321,   322,   284,    37,    38,    39,    40,    41,    29,    30,
+      31,    32,    33,    34,    35,   325,   326,   332,   291,    22,
+      23,    24,    25,   341,   339,   346,   348,   360,   362,    36,
+      26,    27,   363,   366,   368,    37,    38,    39,    40,    41,
+     370,    28,   374,   377,    71,   380,   381,   319,   386,   387,
+     388,    66,    73,   266,    98,    99,   100,   101,   102,   103,
+     104,   105,    62,   119,    29,    30,    31,    32,    33,    34,
+      35,    99,   100,   101,   102,   103,   104,   105,   267,   125,
+     258,   342,   379,   247,   330,    36,   240,     0,     0,     0,
+       0,    37,    38,    39,    40,    41,    98,    99,   100,   101,
+     102,   103,   104,   105,    98,    99,   100,   101,   102,   103,
+     104,   105,     0,     0,   146,     0,     0,     0,     0,    89,
+      90,    91,    92,    93,    94,    95,    98,    99,   100,   101,
+     102,   103,   104,   105,     0,     0,     0,     0,     0,   228,
+      98,    99,   100,   101,   102,   103,   104,   105,     0,     0,
+       0,     0,     0,   323,     0,     0,   253,  -144,  -144,  -144,
+    -144,  -144,  -144,  -144,  -144,     0,     0,     0,     0,     0,
+    -144,    98,    99,   100,   101,   102,   103,   104,   105
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,     6,   183,   145,     2,   147,   148,   149,    48,   133,
-      17,     3,   228,     3,     3,   224,   253,   205,   206,    18,
-       3,     4,    58,    24,    25,    13,    14,    36,     8,     9,
-     306,   275,    69,    34,    35,    36,    73,    69,     3,     3,
-       3,    73,    69,   259,     3,    54,    73,    56,    57,   325,
-      12,    13,    14,    15,    16,    17,    18,    19,    23,    23,
-      36,   249,   250,    25,    23,    66,    13,    14,    68,    68,
-      71,    59,   309,    22,    62,   319,    76,   353,    54,    68,
-     261,    57,   118,    21,     3,    23,    78,   296,    78,    72,
-      70,    92,    93,    94,    95,    96,    97,    98,    99,   287,
-     101,   317,   339,   104,    23,   103,    68,   105,    36,    71,
-       3,   118,    59,   294,    76,    62,     3,     3,     3,    36,
-      21,   245,    23,     3,   164,   313,    54,    22,    56,     3,
-      23,    36,   133,     3,     4,   136,    23,    54,    23,    56,
-      57,    58,     0,    60,   332,    62,    22,    64,   146,    54,
-      22,     3,     4,     5,     6,     7,   109,    21,   346,   112,
-      17,    18,    19,    15,    16,     3,     4,     5,     6,     7,
-      69,    70,    68,     3,    26,    71,   318,    15,    16,     4,
-      76,    69,    70,   184,     8,     9,   367,   368,    26,   194,
-       3,     4,     5,     4,   375,    47,    48,    49,    50,    51,
-      52,    53,     3,     4,     5,   206,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    68,     4,    70,    69,
-      70,     4,    74,    75,    76,    77,    78,    58,     4,    60,
-      68,    62,     3,    64,    69,    70,    74,    75,    76,    77,
-      78,    69,    70,     3,   245,     3,     4,     5,     6,     7,
-     251,    69,   253,    69,    70,    69,    70,    15,    16,    17,
-     265,   266,   267,    15,    16,    17,    18,    19,    26,    12,
-      13,    14,    15,    16,    17,    18,    19,    13,    14,    15,
-      16,    17,    18,    19,     3,     4,     5,     6,     7,    47,
-      48,    49,    50,    51,    52,    53,    15,    16,     4,     5,
-       6,     7,    69,    70,   305,   306,    71,    26,   309,    79,
-      68,    22,    69,    70,    69,    70,    74,    75,    76,    77,
-      78,    68,     3,    68,   325,   310,   311,    70,    47,    48,
-      49,    50,    51,    52,    53,    68,    27,    68,   339,    27,
-      27,    47,    48,    49,    50,    51,    52,    53,    27,    68,
-       3,    70,   353,    37,     3,    74,    75,    76,    77,    78,
-       3,     4,     5,     6,     7,    27,    28,    29,    30,    31,
-      32,    77,    15,    16,    17,     3,    68,    72,     3,    71,
-      72,     3,    22,    26,    76,     3,    63,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    27,    28,    29,    30,
-      31,    32,    71,     3,    47,    48,    49,    50,    51,    52,
-      53,    35,    70,     3,     3,     4,     5,     6,     7,    71,
-      71,    10,    69,     3,    55,    68,    15,    16,    33,    21,
-      18,    74,    75,    76,    77,    78,    21,    26,    12,    13,
-      14,    15,    16,    17,    18,    19,    70,    22,    79,    36,
-       3,    25,    23,     3,     4,     5,     6,     7,    47,    48,
-      49,    50,    51,    52,    53,    15,    16,    54,     5,    56,
-      57,    58,     3,    60,    61,    62,    26,    64,     3,    68,
-       3,    24,    73,    38,    70,    74,    75,    76,    77,    78,
-      69,     3,     3,     4,     5,     6,     7,    47,    48,    49,
-      50,    51,    52,    53,    15,    16,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    26,     3,     3,    68,     3,
-      65,    72,    71,    73,    74,    75,    76,    77,    78,    71,
-      35,     3,     4,     5,     6,     7,    47,    48,    49,    50,
-      51,    52,    53,    15,    16,    12,    13,    14,    15,    16,
-      17,    18,    19,    71,    26,     5,     3,    68,    25,    34,
-      22,    70,    68,    74,    75,    76,    77,    78,    14,    15,
-      16,    17,    18,    19,     9,    47,    48,    49,    50,    51,
-      52,    53,    12,    13,    14,    15,    16,    17,    18,    19,
-      68,    68,    21,    69,    39,    25,    68,     3,    69,    69,
-      27,    40,    74,    75,    76,    77,    78,    12,    13,    14,
-      15,    16,    17,    18,    19,    12,    13,    14,    15,    16,
-      17,    18,    19,    41,    68,    21,    66,    12,    13,    14,
-      15,    16,    17,    18,    19,     3,    68,     3,    22,    14,
-      68,    71,    27,    28,    29,    30,    31,    32,    12,    13,
-      14,    15,    16,    17,    18,    19,     3,    67,     3,     3,
-      23,    25,     3,    13,    50,    70,    54,   197,   309,   362,
-     315,   181,   173,    70,    12,    13,    14,    15,    16,    17,
-      18,    19,    -1,    -1,    -1,    -1,    -1,    25,    12,    13,
-      14,    15,    16,    17,    18,    19
+       1,     7,    51,   174,   154,   196,   156,   157,   158,   159,
+       3,   219,   220,   191,   142,    19,     3,   290,     3,    61,
+       3,     4,   268,     3,    18,    26,    27,    37,    38,     3,
+      71,     3,   321,    67,    75,    36,    37,    38,   229,     4,
+       5,     6,     7,    23,     8,     9,    56,     3,    58,    59,
+     339,    23,     3,    37,    38,    71,   264,   265,    70,    75,
+     333,    14,    15,   241,    14,    15,    78,    23,   116,     3,
+      71,   119,    56,   244,    58,    76,    70,   366,   324,    14,
+      15,   272,    22,   125,    49,    50,    51,    52,    53,    54,
+      55,    74,    22,    80,   302,    80,    70,    98,    99,   100,
+     101,   102,   103,   104,   105,   276,   107,   353,    72,    62,
+     111,     3,    62,    66,    79,    70,    66,   110,    73,   112,
+     328,   125,     3,    78,    37,    38,    22,    62,   177,    37,
+      38,    66,   260,   311,    22,    37,    38,    21,   346,    23,
+       3,   142,    23,    56,   145,    58,    59,    60,    56,    62,
+      63,    64,   360,    66,    56,     3,     4,    59,    37,    38,
+     331,     0,   155,     3,     4,     5,     6,     7,    27,    28,
+      29,    30,    31,    32,    33,    15,    16,    56,    21,    58,
+      59,    60,   332,    62,     3,    64,    26,    66,     4,   380,
+     381,    15,    16,    17,    18,    19,   197,   388,    57,     3,
+       3,   207,     4,     3,    23,     3,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    21,    71,    23,   220,
+      23,    75,    81,    23,     4,    23,    17,    18,    19,     3,
+      70,     3,     4,     5,     6,     7,    76,    77,    78,    79,
+      80,    71,    72,    15,    16,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    26,     3,     4,     5,    70,   260,
+       4,    73,    74,    71,    72,   266,    78,   268,     8,     9,
+      36,     3,     4,     5,   280,   281,   282,    49,    50,    51,
+      52,    53,    54,    55,    71,    72,    71,    72,    12,    13,
+      14,    15,    16,    17,    18,    19,    71,    72,    70,     4,
+      72,    25,    71,    72,    76,    77,    78,    79,    80,    71,
+      72,     3,     3,     4,     5,     6,     7,    71,    72,   320,
+     321,    71,    72,   324,    15,    16,    17,    12,    13,    14,
+      15,    16,    17,    18,    19,    26,    71,    60,   339,    62,
+      25,    64,    22,    66,     3,     4,     5,     6,     7,    73,
+      71,    72,   353,    73,   325,   326,    15,    16,    49,    50,
+      51,    52,    53,    54,    55,   366,    81,    26,    12,    13,
+      14,    15,    16,    17,    18,    19,    70,     3,    27,    70,
+      22,    70,    70,    70,    27,    76,    77,    78,    79,    80,
+      49,    50,    51,    52,    53,    54,    55,    27,    27,    27,
+      39,     3,     3,     4,     5,     6,     7,     3,     3,     3,
+      74,    70,     3,    72,    15,    16,    17,    76,    77,    78,
+      79,    80,     3,    22,     3,    26,    73,    65,    72,     3,
+       3,    72,     3,    73,     3,     4,     5,     6,     7,    73,
+      71,    10,    18,     3,    34,    22,    15,    16,    49,    50,
+      51,    52,    53,    54,    55,    21,    21,    26,    12,    13,
+      14,    15,    16,    17,    18,    19,    23,     5,     3,    70,
+       3,     3,    72,    71,    24,    76,    77,    78,    79,    80,
+      49,    50,    51,    52,    53,    54,    55,    75,    40,     3,
+       3,     4,     5,     6,     7,    14,    15,    16,    17,    18,
+      19,    70,    15,    16,     3,     3,    67,    76,    77,    78,
+      79,    80,     5,    26,    73,    73,     3,    73,    72,    74,
+      35,    22,     3,     4,     5,     6,     7,    27,    28,    29,
+      30,    31,    32,    33,    15,    16,    49,    50,    51,    52,
+      53,    54,    55,    21,    72,    26,    12,    13,    14,    15,
+      16,    17,    18,    19,     9,    71,    41,    70,    70,    25,
+      70,    70,    75,    76,    77,    78,    79,    80,    49,    50,
+      51,    52,    53,    54,    55,    71,    71,    27,     3,     4,
+       5,     6,     7,     3,    70,    42,    21,    43,    68,    70,
+      15,    16,     3,    70,    22,    76,    77,    78,    79,    80,
+       3,    26,    70,     3,    70,    69,     3,    73,     3,    23,
+       3,    15,    78,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    14,    53,    49,    50,    51,    52,    53,    54,
+      55,    13,    14,    15,    16,    17,    18,    19,    36,    57,
+     210,   324,   375,   194,   305,    70,   186,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    12,    13,    14,    15,
+      16,    17,    18,    19,    12,    13,    14,    15,    16,    17,
+      18,    19,    -1,    -1,    72,    -1,    -1,    -1,    -1,    27,
+      28,    29,    30,    31,    32,    33,    12,    13,    14,    15,
+      16,    17,    18,    19,    -1,    -1,    -1,    -1,    -1,    25,
+      12,    13,    14,    15,    16,    17,    18,    19,    -1,    -1,
+      -1,    -1,    -1,    25,    -1,    -1,    72,    12,    13,    14,
+      15,    16,    17,    18,    19,    -1,    -1,    -1,    -1,    -1,
+      25,    12,    13,    14,    15,    16,    17,    18,    19
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    36,    54,    56,    57,    58,    60,    61,    62,    64,
-      81,    82,    83,    84,    85,    88,    89,   125,   126,     3,
-       4,     5,     6,     7,    15,    16,    26,    47,    48,    49,
-      50,    51,    52,    53,    68,    74,    75,    76,    77,    78,
-      90,   109,   110,   112,   120,   121,     3,   121,   122,    22,
-      22,     3,     3,    96,    22,    22,     3,     0,    21,    85,
-      88,    89,    84,    88,    89,   126,    68,    71,    76,   109,
-     109,    68,    76,     4,     4,     4,     4,     4,   109,   109,
-     109,     3,     3,     3,    27,    28,    29,    30,    31,    32,
-      91,    92,    12,    13,    14,    15,    16,    17,    18,    19,
-      25,    69,    71,    79,    55,    79,    92,     3,    23,    86,
-      87,    23,    86,    68,   133,    18,    68,   136,   125,     3,
-     127,   128,    22,    82,    88,    89,    88,    89,    70,   109,
-     111,     3,    78,    68,    17,   109,    68,    70,     3,     4,
-      72,    93,    94,    95,    96,    27,    68,    27,    27,    27,
-      37,    97,    98,   109,   109,   109,   109,   109,   109,   109,
-     109,     3,   109,   121,   109,   121,     3,     4,    23,    87,
-      23,     3,   134,    72,   135,     3,     3,   137,    22,    82,
-       3,    21,    23,    63,    69,    70,    71,     3,    70,   111,
-      70,    70,    17,   109,    71,    71,     3,    69,     3,    93,
-     121,    93,    93,    93,     3,    10,    68,   104,   105,   106,
-     107,   109,    33,   113,    25,    92,    21,    21,     3,     4,
-       5,    69,    70,   137,    22,    69,    70,     3,   131,   132,
-      23,     5,   128,   133,   109,     3,    70,    70,    70,     3,
-      96,     3,    73,    94,    69,    72,   104,   104,   109,     8,
-       9,    11,    35,    24,    38,   114,     3,     3,    73,   131,
-       3,     3,    23,   132,    65,    71,    71,    71,     5,    73,
-     111,    70,   104,   104,   109,    72,     3,    44,    45,    46,
-     109,   116,   117,   119,     3,   123,   124,    34,   102,   103,
-       3,     4,     5,    23,     3,   133,    22,    96,    96,    96,
-      70,    73,   108,   112,    71,    68,    68,    68,    25,    69,
-      69,    69,   104,    39,    99,   133,    21,   131,    27,    69,
-      73,     3,   118,   119,   118,    68,   115,     3,   116,   123,
-     123,   104,    40,   100,   135,    23,    93,   112,    71,    69,
-      70,    70,   118,    69,    70,   104,    41,   101,    21,    66,
-       3,   119,    70,    68,   104,    22,   118,     3,   129,   130,
-      70,    68,    21,    23,     3,   138,   130,    67,     3,    69,
-      70,   133,   133,     3,    23,     3,   133
+       0,    37,    38,    56,    58,    59,    60,    62,    63,    64,
+      66,    83,    84,    85,    86,    87,    90,    91,    92,   128,
+     129,     3,     4,     5,     6,     7,    15,    16,    26,    49,
+      50,    51,    52,    53,    54,    55,    70,    76,    77,    78,
+      79,    80,    93,   112,   113,   115,   123,   124,    67,     3,
+     124,   125,    22,    22,     3,     3,    99,    22,    22,     3,
+       0,    21,    87,    90,    91,    92,    86,    90,    91,    92,
+     129,    70,    73,    78,   112,   112,    70,    78,     4,     4,
+       4,     4,     4,   112,   112,   112,     3,     3,     3,    27,
+      28,    29,    30,    31,    32,    33,    94,    95,    12,    13,
+      14,    15,    16,    17,    18,    19,    25,    71,    22,    73,
+      81,    57,    81,    95,     3,    23,    88,    89,    23,    88,
+      70,   136,    18,    70,   139,   128,     3,   130,   131,    22,
+      84,    90,    91,    92,    90,    91,    92,    72,   112,   114,
+       3,    80,    70,    17,   112,    70,    72,     3,     4,    74,
+      96,    97,    98,    99,    27,    70,    27,    27,    27,    27,
+      39,   100,   101,   112,   112,   112,   112,   112,   112,   112,
+     112,     3,   112,     3,   134,   135,   124,   112,   124,     3,
+       4,    23,    89,    23,     3,   137,    74,   138,     3,     3,
+     140,    22,    84,     3,    21,    23,    65,    71,    72,    73,
+       3,    72,   114,    72,    72,    17,   112,    73,    73,     3,
+      71,     3,    96,   124,    96,    96,    96,    96,     3,    10,
+      70,   107,   108,   109,   110,   112,    34,   116,    25,     3,
+      23,   135,    95,    21,    21,     3,     4,     5,    71,    72,
+     140,    22,    71,    72,   134,    23,     5,   131,   136,   112,
+       3,    72,    72,    72,     3,    99,     3,    75,    97,    71,
+      74,   107,   107,   112,     8,     9,    11,    36,    24,    40,
+     117,     3,     3,   136,     3,    75,   134,     3,    23,    67,
+      73,    73,    73,     5,    75,   114,    72,   107,   107,   112,
+      74,     3,    46,    47,    48,   112,   119,   120,   122,     3,
+     126,   127,    35,   105,   106,   136,    21,     3,     4,     5,
+      23,    22,    99,    99,    99,    72,    75,   111,   115,    73,
+      70,    70,    70,    25,    71,    71,    71,   107,    41,   102,
+     138,   134,    27,    71,    75,     3,   121,   122,   121,    70,
+     118,     3,   119,   126,   126,   107,    42,   103,    21,    23,
+      96,   115,    73,    71,    72,    72,   121,    71,    72,   107,
+      43,   104,    68,     3,   122,    72,    70,   107,    22,   121,
+       3,   132,   133,    72,    70,    21,    23,     3,   141,   133,
+      69,     3,    71,    72,   136,   136,     3,    23,     3,   136
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    80,    81,    81,    81,    82,    82,    82,    82,    82,
-      82,    82,    82,    82,    82,    83,    83,    84,    84,    85,
-      85,    86,    86,    87,    87,    88,    89,    89,    90,    91,
-      92,    92,    92,    92,    92,    92,    93,    93,    94,    94,
-      95,    95,    95,    95,    95,    96,    96,    97,    97,    98,
-      99,    99,   100,   100,   101,   101,   102,   102,   103,   104,
-     104,   104,   104,   104,   105,   105,   105,   105,   106,   107,
-     108,   108,   109,   109,   109,   109,   109,   109,   109,   109,
-     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
-     109,   109,   109,   109,   109,   109,   109,   110,   110,   110,
-     110,   111,   111,   112,   112,   112,   112,   112,   112,   112,
-     112,   112,   112,   112,   112,   113,   113,   114,   114,   115,
-     115,   116,   116,   116,   116,   117,   117,   118,   118,   119,
-     119,   119,   119,   120,   120,   121,   121,   121,   122,   122,
-     123,   124,   124,   125,   125,   126,   126,   126,   126,   127,
-     127,   128,   129,   129,   130,   131,   131,   132,   132,   133,
-     133,   134,   134,   134,   134,   134,   134,   134,   134,   135,
-     135,   136,   136,   137,   137,   138,   138
+       0,    82,    83,    83,    83,    84,    84,    84,    84,    84,
+      84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
+      85,    85,    86,    86,    87,    87,    88,    88,    89,    89,
+      90,    91,    91,    92,    93,    94,    95,    95,    95,    95,
+      95,    95,    95,    96,    96,    97,    97,    98,    98,    98,
+      98,    98,    99,    99,   100,   100,   101,   102,   102,   103,
+     103,   104,   104,   105,   105,   106,   107,   107,   107,   107,
+     107,   108,   108,   108,   108,   109,   110,   111,   111,   112,
+     112,   112,   112,   112,   112,   112,   112,   112,   112,   112,
+     112,   112,   112,   112,   112,   112,   112,   112,   112,   112,
+     112,   112,   112,   112,   113,   113,   113,   113,   114,   114,
+     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
+     115,   115,   116,   116,   117,   117,   118,   118,   119,   119,
+     119,   119,   120,   120,   121,   121,   122,   122,   122,   122,
+     123,   123,   124,   124,   124,   125,   125,   126,   127,   127,
+     128,   128,   129,   129,   129,   129,   130,   130,   131,   132,
+     132,   133,   134,   134,   135,   135,   136,   136,   137,   137,
+     137,   137,   137,   137,   137,   137,   138,   138,   139,   139,
+     140,   140,   141,   141
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     5,     3,     3,     2,     2,     1,
-       3,     3,     2,     2,     1,     1,     3,     4,     3,     4,
-       3,     1,     2,     3,     3,     3,     3,     5,     1,     8,
-       2,     3,     3,     3,     3,     8,     1,     3,     1,     2,
-       1,     3,     5,     5,     5,     1,     3,     0,     1,     2,
-       0,     2,     0,     2,     0,     2,     0,     1,     2,     3,
-       3,     2,     3,     1,     1,     1,     3,     4,     3,     5,
-       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       2,     2,     2,     2,     1,     2,     1,     1,     3,     4,
-       4,     4,     3,     5,     5,     5,     4,     1,     3,     3,
-       5,     1,     3,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     0,     3,     0,     2,     3,
-       5,     1,     4,     4,     4,     1,     3,     1,     3,     1,
-       3,     5,     3,     2,     4,     1,     3,     5,     3,     3,
-       1,     3,     3,     1,     2,     7,     6,    16,     4,     1,
-       3,     3,     1,     3,     4,     1,     2,     6,     4,     0,
-       3,     1,     2,     2,     2,     3,     4,     4,     4,     0,
-       3,     0,     3,     1,     3,     3,     5
+       3,     3,     2,     2,     1,     3,     3,     2,     2,     1,
+       1,     3,     4,     3,     4,     3,     1,     2,     3,     3,
+       3,     3,     5,     5,     1,     8,     2,     3,     3,     3,
+       3,     3,     8,     1,     3,     1,     2,     1,     3,     5,
+       5,     5,     1,     3,     0,     1,     2,     0,     2,     0,
+       2,     0,     2,     0,     1,     2,     3,     3,     2,     3,
+       1,     1,     1,     3,     4,     3,     5,     1,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     2,     2,     2,
+       2,     1,     2,     1,     1,     3,     4,     4,     4,     3,
+       5,     5,     5,     4,     1,     3,     3,     5,     1,     3,
+       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       2,     2,     0,     3,     0,     2,     3,     5,     1,     4,
+       4,     4,     1,     3,     1,     3,     1,     3,     5,     3,
+       2,     4,     1,     3,     5,     3,     3,     1,     3,     3,
+       1,     2,     7,     6,    16,     4,     1,     3,     3,     1,
+       3,     4,     1,     2,     6,     4,     0,     3,     1,     2,
+       2,     2,     3,     4,     4,     4,     0,     3,     0,     3,
+       1,     3,     3,     5
 };
 
 
@@ -1671,1107 +1689,1165 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 204 "fta.y" /* yacc.c:1646  */
+#line 206 "fta.y" /* yacc.c:1646  */
     {
                fta_parse_result->parse_tree_list = (yyvsp[0].q_list);
                fta_parse_result->tables = NULL;
                fta_parse_result->parse_type = QUERY_PARSE;
        }
-#line 1681 "fta.tab.cc" /* yacc.c:1646  */
+#line 1699 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 209 "fta.y" /* yacc.c:1646  */
+#line 211 "fta.y" /* yacc.c:1646  */
     {
                fta_parse_result->parse_tree_list = NULL;
                fta_parse_result->fta_parse_tree = NULL;
                fta_parse_result->tables = (yyvsp[0].table_list_schema);
                fta_parse_result->parse_type = TABLE_PARSE;
        }
-#line 1692 "fta.tab.cc" /* yacc.c:1646  */
+#line 1710 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 216 "fta.y" /* yacc.c:1646  */
+#line 218 "fta.y" /* yacc.c:1646  */
     {
                fta_parse_result->parse_tree_list = NULL;
                fta_parse_result->fta_parse_tree = (yyvsp[-1].tblp);
                fta_parse_result->tables = (yyvsp[-2].table_list_schema);
                fta_parse_result->parse_type = STREAM_PARSE;
        }
-#line 1703 "fta.tab.cc" /* yacc.c:1646  */
+#line 1721 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 230 "fta.y" /* yacc.c:1646  */
+#line 232 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-2].var_defs));                        // Memory leak : plug it.
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1713 "fta.tab.cc" /* yacc.c:1646  */
+#line 1731 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 235 "fta.y" /* yacc.c:1646  */
+#line 237 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-2].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1723 "fta.tab.cc" /* yacc.c:1646  */
+#line 1741 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 240 "fta.y" /* yacc.c:1646  */
+#line 242 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap(NULL);                        // Memory leak : plug it.
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1733 "fta.tab.cc" /* yacc.c:1646  */
+#line 1751 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 245 "fta.y" /* yacc.c:1646  */
+#line 247 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1742 "fta.tab.cc" /* yacc.c:1646  */
+#line 1760 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 249 "fta.y" /* yacc.c:1646  */
+#line 251 "fta.y" /* yacc.c:1646  */
     {
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1750 "fta.tab.cc" /* yacc.c:1646  */
+#line 1768 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 252 "fta.y" /* yacc.c:1646  */
+#line 254 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-2].var_defs));                        // Memory leak : plug it.
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1760 "fta.tab.cc" /* yacc.c:1646  */
+#line 1778 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 257 "fta.y" /* yacc.c:1646  */
+#line 259 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-2].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1770 "fta.tab.cc" /* yacc.c:1646  */
+#line 1788 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 262 "fta.y" /* yacc.c:1646  */
+#line 264 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1779 "fta.tab.cc" /* yacc.c:1646  */
+#line 1797 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 266 "fta.y" /* yacc.c:1646  */
+#line 268 "fta.y" /* yacc.c:1646  */
     {
                                (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1788 "fta.tab.cc" /* yacc.c:1646  */
+#line 1806 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 270 "fta.y" /* yacc.c:1646  */
+#line 272 "fta.y" /* yacc.c:1646  */
     {
                                (yyval.tblp) = (yyvsp[0].tblp);
                        }
-#line 1796 "fta.tab.cc" /* yacc.c:1646  */
+#line 1814 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 15:
 #line 275 "fta.y" /* yacc.c:1646  */
-    {(yyval.q_list) = new query_list_t((yyvsp[0].tblp));}
-#line 1802 "fta.tab.cc" /* yacc.c:1646  */
+    {
+                               (yyvsp[0].tblp)->add_nmap((yyvsp[-2].var_defs));                        // Memory leak : plug it.
+                               (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
+                               (yyval.tblp) = (yyvsp[0].tblp);
+                       }
+#line 1824 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 276 "fta.y" /* yacc.c:1646  */
-    {(yyval.q_list) = (yyvsp[-2].q_list)->append((yyvsp[0].tblp));}
-#line 1808 "fta.tab.cc" /* yacc.c:1646  */
+#line 280 "fta.y" /* yacc.c:1646  */
+    {
+                               (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
+                               (yyvsp[0].tblp)->add_param_list((yyvsp[-2].var_defs));          // Memory leak : plug it.
+                               (yyval.tblp) = (yyvsp[0].tblp);
+                       }
+#line 1834 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 280 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs)=(yyvsp[-1].var_defs);}
-#line 1814 "fta.tab.cc" /* yacc.c:1646  */
+#line 285 "fta.y" /* yacc.c:1646  */
+    {
+                               (yyvsp[0].tblp)->add_param_list((yyvsp[-1].var_defs));          // Memory leak : plug it.
+                               (yyval.tblp) = (yyvsp[0].tblp);
+                       }
+#line 1843 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 281 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs)=NULL;}
-#line 1820 "fta.tab.cc" /* yacc.c:1646  */
+#line 289 "fta.y" /* yacc.c:1646  */
+    {
+                               (yyvsp[0].tblp)->add_nmap((yyvsp[-1].var_defs));                        // Memory leak : plug it.
+                               (yyval.tblp) = (yyvsp[0].tblp);
+                       }
+#line 1852 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 285 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs)=(yyvsp[-1].var_defs);fta_parse_defines=(yyvsp[-1].var_defs);}
-#line 1826 "fta.tab.cc" /* yacc.c:1646  */
+#line 293 "fta.y" /* yacc.c:1646  */
+    {
+                               (yyval.tblp) = (yyvsp[0].tblp);
+                       }
+#line 1860 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 286 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs)=NULL;fta_parse_defines = NULL;}
-#line 1832 "fta.tab.cc" /* yacc.c:1646  */
+#line 298 "fta.y" /* yacc.c:1646  */
+    {(yyval.q_list) = new query_list_t((yyvsp[0].tblp));}
+#line 1866 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 290 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs) = new var_defs_t((yyvsp[0].var_pair));}
-#line 1838 "fta.tab.cc" /* yacc.c:1646  */
+#line 299 "fta.y" /* yacc.c:1646  */
+    {(yyval.q_list) = (yyvsp[-2].q_list)->append((yyvsp[0].tblp));}
+#line 1872 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 291 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_defs) = (yyvsp[-1].var_defs)->add_var_pair((yyvsp[0].var_pair));}
-#line 1844 "fta.tab.cc" /* yacc.c:1646  */
+#line 303 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs)=(yyvsp[-1].var_defs);}
+#line 1878 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 295 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
-#line 1850 "fta.tab.cc" /* yacc.c:1646  */
+#line 304 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs)=NULL;}
+#line 1884 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 296 "fta.y" /* yacc.c:1646  */
-    {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
-#line 1856 "fta.tab.cc" /* yacc.c:1646  */
+#line 308 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs)=(yyvsp[-1].var_defs);fta_parse_defines=(yyvsp[-1].var_defs);}
+#line 1890 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 300 "fta.y" /* yacc.c:1646  */
-    {(yyval.tblp) = (yyvsp[0].tblp)->add_selection((yyvsp[-1].select_listval));}
-#line 1862 "fta.tab.cc" /* yacc.c:1646  */
+#line 309 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs)=NULL;fta_parse_defines = NULL;}
+#line 1896 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 305 "fta.y" /* yacc.c:1646  */
-    {(yyval.tblp) = new table_exp_t((yyvsp[-1].clist),(yyvsp[0].tbl_list));}
-#line 1868 "fta.tab.cc" /* yacc.c:1646  */
+#line 313 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs) = new var_defs_t((yyvsp[0].var_pair));}
+#line 1902 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 307 "fta.y" /* yacc.c:1646  */
-    {(yyval.tblp) = new table_exp_t((yyvsp[-3].clist),(yyvsp[-1].scalarval),(yyvsp[0].tbl_list));}
-#line 1874 "fta.tab.cc" /* yacc.c:1646  */
+#line 314 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_defs) = (yyvsp[-1].var_defs)->add_var_pair((yyvsp[0].var_pair));}
+#line 1908 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 314 "fta.y" /* yacc.c:1646  */
-    { (yyval.select_listval) = (yyvsp[0].select_listval);}
-#line 1880 "fta.tab.cc" /* yacc.c:1646  */
+#line 318 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
+#line 1914 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 326 "fta.y" /* yacc.c:1646  */
-    {(yyval.tblp)=new table_exp_t((yyvsp[-7].tbl_list),(yyvsp[-6].predp),(yyvsp[-5].extended_gb_list),(yyvsp[-4].clist),(yyvsp[-3].predp),(yyvsp[-2].predp),(yyvsp[-1].predp), (yyvsp[0].predp));}
-#line 1886 "fta.tab.cc" /* yacc.c:1646  */
+#line 319 "fta.y" /* yacc.c:1646  */
+    {(yyval.var_pair) = new var_pair_t((yyvsp[-2].strval),(yyvsp[-1].strval));}
+#line 1920 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 330 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(-1);}
-#line 1892 "fta.tab.cc" /* yacc.c:1646  */
+#line 323 "fta.y" /* yacc.c:1646  */
+    {(yyval.tblp) = (yyvsp[0].tblp)->add_selection((yyvsp[-1].select_listval));}
+#line 1926 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 331 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(INNER_JOIN_PROPERTY);}
-#line 1898 "fta.tab.cc" /* yacc.c:1646  */
+#line 328 "fta.y" /* yacc.c:1646  */
+    {(yyval.tblp) = new table_exp_t((yyvsp[-1].clist),(yyvsp[0].tbl_list));}
+#line 1932 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 332 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(OUTER_JOIN_PROPERTY);}
-#line 1904 "fta.tab.cc" /* yacc.c:1646  */
+#line 330 "fta.y" /* yacc.c:1646  */
+    {(yyval.tblp) = new table_exp_t((yyvsp[-3].clist),(yyvsp[-1].scalarval),(yyvsp[0].tbl_list));}
+#line 1938 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 333 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(RIGHT_OUTER_JOIN_PROPERTY);}
-#line 1910 "fta.tab.cc" /* yacc.c:1646  */
+#line 335 "fta.y" /* yacc.c:1646  */
+    {(yyval.tblp) = table_exp_t::make_watchlist_tbl((yyvsp[-1].field_list_t)); }
+#line 1944 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 334 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(LEFT_OUTER_JOIN_PROPERTY);}
-#line 1916 "fta.tab.cc" /* yacc.c:1646  */
+#line 342 "fta.y" /* yacc.c:1646  */
+    { (yyval.select_listval) = (yyvsp[0].select_listval);}
+#line 1950 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 335 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(FILTER_JOIN_PROPERTY); (yyval.tbl_list)->set_colref((yyvsp[-5].colref)); (yyval.tbl_list)->set_temporal_range((yyvsp[-3].strval));}
-#line 1922 "fta.tab.cc" /* yacc.c:1646  */
+#line 354 "fta.y" /* yacc.c:1646  */
+    {(yyval.tblp)=new table_exp_t((yyvsp[-7].tbl_list),(yyvsp[-6].predp),(yyvsp[-5].extended_gb_list),(yyvsp[-4].clist),(yyvsp[-3].predp),(yyvsp[-2].predp),(yyvsp[-1].predp), (yyvsp[0].predp));}
+#line 1956 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 36:
-#line 339 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list) = new tablevar_list_t((yyvsp[0].table));}
-#line 1928 "fta.tab.cc" /* yacc.c:1646  */
+#line 358 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(-1);}
+#line 1962 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 340 "fta.y" /* yacc.c:1646  */
-    {(yyval.tbl_list)= (yyvsp[-2].tbl_list)->append_table((yyvsp[0].table));}
-#line 1934 "fta.tab.cc" /* yacc.c:1646  */
+#line 359 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(INNER_JOIN_PROPERTY);}
+#line 1968 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 344 "fta.y" /* yacc.c:1646  */
-    { (yyval.table) = (yyvsp[0].table);}
-#line 1940 "fta.tab.cc" /* yacc.c:1646  */
+#line 360 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(OUTER_JOIN_PROPERTY);}
+#line 1974 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 345 "fta.y" /* yacc.c:1646  */
-    { (yyval.table)= (yyvsp[-1].table)->set_range_var((yyvsp[0].strval));}
-#line 1946 "fta.tab.cc" /* yacc.c:1646  */
+#line 361 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(RIGHT_OUTER_JOIN_PROPERTY);}
+#line 1980 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 349 "fta.y" /* yacc.c:1646  */
-    {(yyval.table) = new tablevar_t((yyvsp[0].stringval)->c_str());}
-#line 1952 "fta.tab.cc" /* yacc.c:1646  */
+#line 362 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(LEFT_OUTER_JOIN_PROPERTY);}
+#line 1986 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 350 "fta.y" /* yacc.c:1646  */
-    {(yyval.table) = new tablevar_t((yyvsp[-2].strval),(yyvsp[0].stringval)->c_str(),0);}
-#line 1958 "fta.tab.cc" /* yacc.c:1646  */
+#line 363 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(WATCHLIST_JOIN_PROPERTY);}
+#line 1992 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 351 "fta.y" /* yacc.c:1646  */
-    {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
-#line 1964 "fta.tab.cc" /* yacc.c:1646  */
+#line 364 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = (yyvsp[0].tbl_list); (yyval.tbl_list)->set_properties(FILTER_JOIN_PROPERTY); (yyval.tbl_list)->set_colref((yyvsp[-5].colref)); (yyval.tbl_list)->set_temporal_range((yyvsp[-3].strval));}
+#line 1998 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 43:
-#line 352 "fta.y" /* yacc.c:1646  */
-    {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
-#line 1970 "fta.tab.cc" /* yacc.c:1646  */
+#line 368 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list) = new tablevar_list_t((yyvsp[0].table));}
+#line 2004 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 353 "fta.y" /* yacc.c:1646  */
-    {(yyval.table) = new tablevar_t((yyvsp[-3].strval),(yyvsp[0].stringval)->c_str(),1);}
-#line 1976 "fta.tab.cc" /* yacc.c:1646  */
+#line 369 "fta.y" /* yacc.c:1646  */
+    {(yyval.tbl_list)= (yyvsp[-2].tbl_list)->append_table((yyvsp[0].table));}
+#line 2010 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 357 "fta.y" /* yacc.c:1646  */
-    {(yyval.stringval) = new string_t((yyvsp[0].strval));}
-#line 1982 "fta.tab.cc" /* yacc.c:1646  */
+#line 373 "fta.y" /* yacc.c:1646  */
+    { (yyval.table) = (yyvsp[0].table);}
+#line 2016 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 358 "fta.y" /* yacc.c:1646  */
-    {(yyval.stringval) = (yyval.stringval)->append("/",(yyvsp[0].strval));}
-#line 1988 "fta.tab.cc" /* yacc.c:1646  */
+#line 374 "fta.y" /* yacc.c:1646  */
+    { (yyval.table)= (yyvsp[-1].table)->set_range_var((yyvsp[0].strval));}
+#line 2022 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 363 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=NULL;}
-#line 1994 "fta.tab.cc" /* yacc.c:1646  */
+#line 378 "fta.y" /* yacc.c:1646  */
+    {(yyval.table) = new tablevar_t((yyvsp[0].stringval)->c_str());}
+#line 2028 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 364 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=(yyvsp[0].predp);}
-#line 2000 "fta.tab.cc" /* yacc.c:1646  */
+#line 379 "fta.y" /* yacc.c:1646  */
+    {(yyval.table) = new tablevar_t((yyvsp[-2].strval),(yyvsp[0].stringval)->c_str(),0);}
+#line 2034 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 368 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = (yyvsp[0].predp);}
-#line 2006 "fta.tab.cc" /* yacc.c:1646  */
+#line 380 "fta.y" /* yacc.c:1646  */
+    {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
+#line 2040 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 372 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=NULL;}
-#line 2012 "fta.tab.cc" /* yacc.c:1646  */
+#line 381 "fta.y" /* yacc.c:1646  */
+    {(yyval.table) = new tablevar_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].stringval)->c_str());}
+#line 2046 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 373 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=(yyvsp[0].predp); }
-#line 2018 "fta.tab.cc" /* yacc.c:1646  */
+#line 382 "fta.y" /* yacc.c:1646  */
+    {(yyval.table) = new tablevar_t((yyvsp[-3].strval),(yyvsp[0].stringval)->c_str(),1);}
+#line 2052 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 377 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=NULL;}
-#line 2024 "fta.tab.cc" /* yacc.c:1646  */
+#line 386 "fta.y" /* yacc.c:1646  */
+    {(yyval.stringval) = new string_t((yyvsp[0].strval));}
+#line 2058 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 378 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=(yyvsp[0].predp); }
-#line 2030 "fta.tab.cc" /* yacc.c:1646  */
+#line 387 "fta.y" /* yacc.c:1646  */
+    {(yyval.stringval) = (yyval.stringval)->append("/",(yyvsp[0].strval));}
+#line 2064 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 382 "fta.y" /* yacc.c:1646  */
+#line 392 "fta.y" /* yacc.c:1646  */
     {(yyval.predp)=NULL;}
-#line 2036 "fta.tab.cc" /* yacc.c:1646  */
+#line 2070 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 383 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=(yyvsp[0].predp); }
-#line 2042 "fta.tab.cc" /* yacc.c:1646  */
+#line 393 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=(yyvsp[0].predp);}
+#line 2076 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 387 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=NULL;}
-#line 2048 "fta.tab.cc" /* yacc.c:1646  */
+#line 397 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = (yyvsp[0].predp);}
+#line 2082 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 388 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=(yyvsp[0].predp);}
-#line 2054 "fta.tab.cc" /* yacc.c:1646  */
+#line 401 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=NULL;}
+#line 2088 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 392 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = (yyvsp[0].predp);}
-#line 2060 "fta.tab.cc" /* yacc.c:1646  */
+#line 402 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=(yyvsp[0].predp); }
+#line 2094 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 399 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=new predicate_t("OR",(yyvsp[-2].predp),(yyvsp[0].predp));}
-#line 2066 "fta.tab.cc" /* yacc.c:1646  */
+#line 406 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=NULL;}
+#line 2100 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 400 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp)=new predicate_t("AND",(yyvsp[-2].predp),(yyvsp[0].predp));}
-#line 2072 "fta.tab.cc" /* yacc.c:1646  */
+#line 407 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=(yyvsp[0].predp); }
+#line 2106 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 401 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = new predicate_t("NOT", (yyvsp[0].predp) );}
-#line 2078 "fta.tab.cc" /* yacc.c:1646  */
+#line 411 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=NULL;}
+#line 2112 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 402 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = (yyvsp[-1].predp);}
-#line 2084 "fta.tab.cc" /* yacc.c:1646  */
+#line 412 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=(yyvsp[0].predp); }
+#line 2118 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 403 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = (yyvsp[0].predp);}
-#line 2090 "fta.tab.cc" /* yacc.c:1646  */
+#line 416 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=NULL;}
+#line 2124 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 407 "fta.y" /* yacc.c:1646  */
-    { (yyval.predp)=(yyvsp[0].predp);}
-#line 2096 "fta.tab.cc" /* yacc.c:1646  */
+#line 417 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=(yyvsp[0].predp);}
+#line 2130 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 408 "fta.y" /* yacc.c:1646  */
-    { (yyval.predp) = (yyvsp[0].predp);}
-#line 2102 "fta.tab.cc" /* yacc.c:1646  */
+#line 421 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = (yyvsp[0].predp);}
+#line 2136 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 409 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = predicate_t::make_paramless_fcn_predicate((yyvsp[-2].strval)); }
-#line 2108 "fta.tab.cc" /* yacc.c:1646  */
+#line 428 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=new predicate_t("OR",(yyvsp[-2].predp),(yyvsp[0].predp));}
+#line 2142 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 410 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = new predicate_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
-#line 2114 "fta.tab.cc" /* yacc.c:1646  */
+#line 429 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp)=new predicate_t("AND",(yyvsp[-2].predp),(yyvsp[0].predp));}
+#line 2148 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 414 "fta.y" /* yacc.c:1646  */
-    {(yyval.predp) = new predicate_t((yyvsp[-2].scalarval),(yyvsp[-1].strval),(yyvsp[0].scalarval));}
-#line 2120 "fta.tab.cc" /* yacc.c:1646  */
+#line 430 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = new predicate_t("NOT", (yyvsp[0].predp) );}
+#line 2154 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 418 "fta.y" /* yacc.c:1646  */
-    { (yyval.predp) = new predicate_t((yyvsp[-4].scalarval),(yyvsp[-1].lit_l)); }
-#line 2126 "fta.tab.cc" /* yacc.c:1646  */
+#line 431 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = (yyvsp[-1].predp);}
+#line 2160 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 422 "fta.y" /* yacc.c:1646  */
-    {(yyval.lit_l) = new literal_list_t((yyvsp[0].litval));}
-#line 2132 "fta.tab.cc" /* yacc.c:1646  */
+#line 432 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = (yyvsp[0].predp);}
+#line 2166 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 423 "fta.y" /* yacc.c:1646  */
-    {(yyval.lit_l) = (yyvsp[-2].lit_l)->append_literal((yyvsp[0].litval));}
-#line 2138 "fta.tab.cc" /* yacc.c:1646  */
+#line 436 "fta.y" /* yacc.c:1646  */
+    { (yyval.predp)=(yyvsp[0].predp);}
+#line 2172 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 429 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("+",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2144 "fta.tab.cc" /* yacc.c:1646  */
+#line 437 "fta.y" /* yacc.c:1646  */
+    { (yyval.predp) = (yyvsp[0].predp);}
+#line 2178 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 430 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("-",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2150 "fta.tab.cc" /* yacc.c:1646  */
+#line 438 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = predicate_t::make_paramless_fcn_predicate((yyvsp[-2].strval)); }
+#line 2184 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 431 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("|",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2156 "fta.tab.cc" /* yacc.c:1646  */
+#line 439 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = new predicate_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
+#line 2190 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 432 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("*",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2162 "fta.tab.cc" /* yacc.c:1646  */
+#line 443 "fta.y" /* yacc.c:1646  */
+    {(yyval.predp) = new predicate_t((yyvsp[-2].scalarval),(yyvsp[-1].strval),(yyvsp[0].scalarval));}
+#line 2196 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 433 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("/",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2168 "fta.tab.cc" /* yacc.c:1646  */
+#line 447 "fta.y" /* yacc.c:1646  */
+    { (yyval.predp) = new predicate_t((yyvsp[-4].scalarval),(yyvsp[-1].lit_l)); }
+#line 2202 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 434 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("&",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2174 "fta.tab.cc" /* yacc.c:1646  */
+#line 451 "fta.y" /* yacc.c:1646  */
+    {(yyval.lit_l) = new literal_list_t((yyvsp[0].litval));}
+#line 2208 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 435 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t("%",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2180 "fta.tab.cc" /* yacc.c:1646  */
+#line 452 "fta.y" /* yacc.c:1646  */
+    {(yyval.lit_l) = (yyvsp[-2].lit_l)->append_literal((yyvsp[0].litval));}
+#line 2214 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 436 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)=new scalarexp_t((yyvsp[-1].strval),(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
-#line 2186 "fta.tab.cc" /* yacc.c:1646  */
+#line 458 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("+",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2220 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 437 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = new scalarexp_t("+",(yyvsp[0].scalarval));}
-#line 2192 "fta.tab.cc" /* yacc.c:1646  */
+#line 459 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("-",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2226 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 438 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = new scalarexp_t("-",(yyvsp[0].scalarval));}
-#line 2198 "fta.tab.cc" /* yacc.c:1646  */
+#line 460 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("|",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2232 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 439 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = new scalarexp_t("!",(yyvsp[0].scalarval));}
-#line 2204 "fta.tab.cc" /* yacc.c:1646  */
+#line 461 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("*",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2238 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 440 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = new scalarexp_t("~",(yyvsp[0].scalarval));}
-#line 2210 "fta.tab.cc" /* yacc.c:1646  */
+#line 462 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("/",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2244 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 441 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval)= new scalarexp_t((yyvsp[0].litval));}
-#line 2216 "fta.tab.cc" /* yacc.c:1646  */
+#line 463 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("&",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2250 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 442 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = scalarexp_t::make_param_reference((yyvsp[0].strval));}
-#line 2222 "fta.tab.cc" /* yacc.c:1646  */
+#line 464 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t("%",(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2256 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 443 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = scalarexp_t::make_iface_param_reference((yyvsp[0].ifpref));}
-#line 2228 "fta.tab.cc" /* yacc.c:1646  */
+#line 465 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)=new scalarexp_t((yyvsp[-1].strval),(yyvsp[-2].scalarval),(yyvsp[0].scalarval));}
+#line 2262 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 444 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = new scalarexp_t((yyvsp[0].colref));}
-#line 2234 "fta.tab.cc" /* yacc.c:1646  */
+#line 466 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = new scalarexp_t("+",(yyvsp[0].scalarval));}
+#line 2268 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 445 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = (yyvsp[-1].scalarval);}
-#line 2240 "fta.tab.cc" /* yacc.c:1646  */
+#line 467 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = new scalarexp_t("-",(yyvsp[0].scalarval));}
+#line 2274 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 89:
-#line 446 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-3].strval)); }
-#line 2246 "fta.tab.cc" /* yacc.c:1646  */
+#line 468 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = new scalarexp_t("!",(yyvsp[0].scalarval));}
+#line 2280 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 90:
-#line 447 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-3].strval),(yyvsp[-1].scalarval)); }
-#line 2252 "fta.tab.cc" /* yacc.c:1646  */
+#line 469 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = new scalarexp_t("~",(yyvsp[0].scalarval));}
+#line 2286 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 91:
-#line 448 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = new scalarexp_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
-#line 2258 "fta.tab.cc" /* yacc.c:1646  */
+#line 470 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval)= new scalarexp_t((yyvsp[0].litval));}
+#line 2292 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 92:
-#line 449 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-2].strval)); }
-#line 2264 "fta.tab.cc" /* yacc.c:1646  */
+#line 471 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = scalarexp_t::make_param_reference((yyvsp[0].strval));}
+#line 2298 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 450 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-4].strval)); (yyval.scalarval)->set_superaggr(true); }
-#line 2270 "fta.tab.cc" /* yacc.c:1646  */
+#line 472 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = scalarexp_t::make_iface_param_reference((yyvsp[0].ifpref));}
+#line 2304 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 451 "fta.y" /* yacc.c:1646  */
-    { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-4].strval),(yyvsp[-1].scalarval)); (yyval.scalarval)->set_superaggr(true); }
-#line 2276 "fta.tab.cc" /* yacc.c:1646  */
+#line 473 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = new scalarexp_t((yyvsp[0].colref));}
+#line 2310 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 452 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = new scalarexp_t((yyvsp[-4].strval), (yyvsp[-1].se_listval)->get_se_list()); (yyval.scalarval)->set_superaggr(true); }
-#line 2282 "fta.tab.cc" /* yacc.c:1646  */
+#line 474 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = (yyvsp[-1].scalarval);}
+#line 2316 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 453 "fta.y" /* yacc.c:1646  */
-    {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-3].strval)); (yyval.scalarval)->set_superaggr(true); }
-#line 2288 "fta.tab.cc" /* yacc.c:1646  */
+#line 475 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-3].strval)); }
+#line 2322 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 458 "fta.y" /* yacc.c:1646  */
-    {  (yyval.select_listval)= new select_list_t((yyvsp[0].scalarval)); }
-#line 2294 "fta.tab.cc" /* yacc.c:1646  */
+#line 476 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-3].strval),(yyvsp[-1].scalarval)); }
+#line 2328 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 459 "fta.y" /* yacc.c:1646  */
-    {  (yyval.select_listval)= new select_list_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
-#line 2300 "fta.tab.cc" /* yacc.c:1646  */
+#line 477 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = new scalarexp_t((yyvsp[-3].strval), (yyvsp[-1].se_listval)->get_se_list()); }
+#line 2334 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 460 "fta.y" /* yacc.c:1646  */
-    { (yyval.select_listval)=(yyvsp[-2].select_listval)->append((yyvsp[0].scalarval)); }
-#line 2306 "fta.tab.cc" /* yacc.c:1646  */
+#line 478 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-2].strval)); }
+#line 2340 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 461 "fta.y" /* yacc.c:1646  */
-    { (yyval.select_listval)=(yyvsp[-4].select_listval)->append((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
-#line 2312 "fta.tab.cc" /* yacc.c:1646  */
+#line 479 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = scalarexp_t::make_star_aggr((yyvsp[-4].strval)); (yyval.scalarval)->set_superaggr(true); }
+#line 2346 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 465 "fta.y" /* yacc.c:1646  */
-    {  (yyval.se_listval)= new se_list_t((yyvsp[0].scalarval)); }
-#line 2318 "fta.tab.cc" /* yacc.c:1646  */
+#line 480 "fta.y" /* yacc.c:1646  */
+    { (yyval.scalarval) = scalarexp_t::make_se_aggr((yyvsp[-4].strval),(yyvsp[-1].scalarval)); (yyval.scalarval)->set_superaggr(true); }
+#line 2352 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 466 "fta.y" /* yacc.c:1646  */
-    { (yyval.se_listval)=(yyvsp[-2].se_listval)->append((yyvsp[0].scalarval)); }
-#line 2324 "fta.tab.cc" /* yacc.c:1646  */
+#line 481 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = new scalarexp_t((yyvsp[-4].strval), (yyvsp[-1].se_listval)->get_se_list()); (yyval.scalarval)->set_superaggr(true); }
+#line 2358 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 470 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_STRING);}
-#line 2330 "fta.tab.cc" /* yacc.c:1646  */
+#line 482 "fta.y" /* yacc.c:1646  */
+    {(yyval.scalarval) = scalarexp_t::make_paramless_fcn((yyvsp[-3].strval)); (yyval.scalarval)->set_superaggr(true); }
+#line 2364 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 471 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_INT);}
-#line 2336 "fta.tab.cc" /* yacc.c:1646  */
+#line 487 "fta.y" /* yacc.c:1646  */
+    {  (yyval.select_listval)= new select_list_t((yyvsp[0].scalarval)); }
+#line 2370 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 472 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGINT);}
-#line 2342 "fta.tab.cc" /* yacc.c:1646  */
+#line 488 "fta.y" /* yacc.c:1646  */
+    {  (yyval.select_listval)= new select_list_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
+#line 2376 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 473 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_FLOAT);}
-#line 2348 "fta.tab.cc" /* yacc.c:1646  */
+#line 489 "fta.y" /* yacc.c:1646  */
+    { (yyval.select_listval)=(yyvsp[-2].select_listval)->append((yyvsp[0].scalarval)); }
+#line 2382 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 474 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t("TRUE",LITERAL_BOOL);}
-#line 2354 "fta.tab.cc" /* yacc.c:1646  */
+#line 490 "fta.y" /* yacc.c:1646  */
+    { (yyval.select_listval)=(yyvsp[-4].select_listval)->append((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
+#line 2388 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 475 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t("FALSE",LITERAL_BOOL);}
-#line 2360 "fta.tab.cc" /* yacc.c:1646  */
+#line 494 "fta.y" /* yacc.c:1646  */
+    {  (yyval.se_listval)= new se_list_t((yyvsp[0].scalarval)); }
+#line 2394 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 476 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_TIMEVAL);}
-#line 2366 "fta.tab.cc" /* yacc.c:1646  */
+#line 495 "fta.y" /* yacc.c:1646  */
+    { (yyval.se_listval)=(yyvsp[-2].se_listval)->append((yyvsp[0].scalarval)); }
+#line 2400 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 477 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_HEX);}
-#line 2372 "fta.tab.cc" /* yacc.c:1646  */
+#line 499 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_STRING);}
+#line 2406 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 478 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGHEX);}
-#line 2378 "fta.tab.cc" /* yacc.c:1646  */
+#line 500 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_INT);}
+#line 2412 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 479 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IP);}
-#line 2384 "fta.tab.cc" /* yacc.c:1646  */
+#line 501 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGINT);}
+#line 2418 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 480 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IPV6);}
-#line 2390 "fta.tab.cc" /* yacc.c:1646  */
+#line 502 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_FLOAT);}
+#line 2424 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 481 "fta.y" /* yacc.c:1646  */
-    {(yyval.litval) = literal_t::make_define_literal((yyvsp[0].strval),fta_parse_defines);}
-#line 2396 "fta.tab.cc" /* yacc.c:1646  */
+#line 503 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t("TRUE",LITERAL_BOOL);}
+#line 2430 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 487 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb_list) = NULL;}
-#line 2402 "fta.tab.cc" /* yacc.c:1646  */
+#line 504 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t("FALSE",LITERAL_BOOL);}
+#line 2436 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 488 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb_list) = (yyvsp[0].extended_gb_list);}
-#line 2408 "fta.tab.cc" /* yacc.c:1646  */
+#line 505 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_TIMEVAL);}
+#line 2442 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 492 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist) = NULL;}
-#line 2414 "fta.tab.cc" /* yacc.c:1646  */
+#line 506 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_HEX);}
+#line 2448 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 493 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist) = (yyvsp[0].clist);}
-#line 2420 "fta.tab.cc" /* yacc.c:1646  */
+#line 507 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_LONGHEX);}
+#line 2454 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 497 "fta.y" /* yacc.c:1646  */
-    { (yyval.list_of_gb_list) = new list_of_gb_list_t((yyvsp[-1].gb_list));}
-#line 2426 "fta.tab.cc" /* yacc.c:1646  */
+#line 508 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IP);}
+#line 2460 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 498 "fta.y" /* yacc.c:1646  */
-    {(yyval.list_of_gb_list) = (yyvsp[-4].list_of_gb_list)->append((yyvsp[-1].gb_list));}
-#line 2432 "fta.tab.cc" /* yacc.c:1646  */
+#line 509 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = new literal_t((yyvsp[0].strval),LITERAL_IPV6);}
+#line 2466 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 502 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb) = extended_gb_t::create_from_gb((yyvsp[0].gb_val));}
-#line 2438 "fta.tab.cc" /* yacc.c:1646  */
+#line 510 "fta.y" /* yacc.c:1646  */
+    {(yyval.litval) = literal_t::make_define_literal((yyvsp[0].strval),fta_parse_defines);}
+#line 2472 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 503 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb) = extended_gb_t::extended_create_from_rollup((yyvsp[-1].gb_list));}
-#line 2444 "fta.tab.cc" /* yacc.c:1646  */
+#line 516 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb_list) = NULL;}
+#line 2478 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 504 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb) = extended_gb_t::extended_create_from_cube((yyvsp[-1].gb_list));}
-#line 2450 "fta.tab.cc" /* yacc.c:1646  */
+#line 517 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb_list) = (yyvsp[0].extended_gb_list);}
+#line 2484 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 505 "fta.y" /* yacc.c:1646  */
-    {(yyval.extended_gb) = extended_gb_t::extended_create_from_gsets((yyvsp[-1].list_of_gb_list));}
-#line 2456 "fta.tab.cc" /* yacc.c:1646  */
+#line 521 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist) = NULL;}
+#line 2490 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 509 "fta.y" /* yacc.c:1646  */
-    { (yyval.extended_gb_list) = new extended_gb_list_t((yyvsp[0].extended_gb));}
-#line 2462 "fta.tab.cc" /* yacc.c:1646  */
+#line 522 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist) = (yyvsp[0].clist);}
+#line 2496 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 510 "fta.y" /* yacc.c:1646  */
-    { (yyval.extended_gb_list)=(yyvsp[-2].extended_gb_list)->append((yyvsp[0].extended_gb));}
-#line 2468 "fta.tab.cc" /* yacc.c:1646  */
+#line 526 "fta.y" /* yacc.c:1646  */
+    { (yyval.list_of_gb_list) = new list_of_gb_list_t((yyvsp[-1].gb_list));}
+#line 2502 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 514 "fta.y" /* yacc.c:1646  */
-    { (yyval.gb_list) = new gb_list_t((yyvsp[0].gb_val));}
-#line 2474 "fta.tab.cc" /* yacc.c:1646  */
+#line 527 "fta.y" /* yacc.c:1646  */
+    {(yyval.list_of_gb_list) = (yyvsp[-4].list_of_gb_list)->append((yyvsp[-1].gb_list));}
+#line 2508 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 128:
-#line 515 "fta.y" /* yacc.c:1646  */
-    { (yyval.gb_list)=(yyvsp[-2].gb_list)->append((yyvsp[0].gb_val));}
-#line 2480 "fta.tab.cc" /* yacc.c:1646  */
+#line 531 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb) = extended_gb_t::create_from_gb((yyvsp[0].gb_val));}
+#line 2514 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 129:
-#line 519 "fta.y" /* yacc.c:1646  */
-    {(yyval.gb_val) = new gb_t((yyvsp[0].strval)); }
-#line 2486 "fta.tab.cc" /* yacc.c:1646  */
+#line 532 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb) = extended_gb_t::extended_create_from_rollup((yyvsp[-1].gb_list));}
+#line 2520 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 130:
-#line 520 "fta.y" /* yacc.c:1646  */
-    {(yyval.gb_val) = new gb_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
-#line 2492 "fta.tab.cc" /* yacc.c:1646  */
+#line 533 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb) = extended_gb_t::extended_create_from_cube((yyvsp[-1].gb_list));}
+#line 2526 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 131:
-#line 521 "fta.y" /* yacc.c:1646  */
-    {(yyval.gb_val) = new gb_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
-#line 2498 "fta.tab.cc" /* yacc.c:1646  */
+#line 534 "fta.y" /* yacc.c:1646  */
+    {(yyval.extended_gb) = extended_gb_t::extended_create_from_gsets((yyvsp[-1].list_of_gb_list));}
+#line 2532 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 522 "fta.y" /* yacc.c:1646  */
-    {(yyval.gb_val) = new gb_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
-#line 2504 "fta.tab.cc" /* yacc.c:1646  */
+#line 538 "fta.y" /* yacc.c:1646  */
+    { (yyval.extended_gb_list) = new extended_gb_list_t((yyvsp[0].extended_gb));}
+#line 2538 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 533 "fta.y" /* yacc.c:1646  */
-    {(yyval.ifpref) = new ifpref_t((yyvsp[0].strval));}
-#line 2510 "fta.tab.cc" /* yacc.c:1646  */
+#line 539 "fta.y" /* yacc.c:1646  */
+    { (yyval.extended_gb_list)=(yyvsp[-2].extended_gb_list)->append((yyvsp[0].extended_gb));}
+#line 2544 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 534 "fta.y" /* yacc.c:1646  */
-    {(yyval.ifpref) = new ifpref_t((yyvsp[-3].strval), (yyvsp[0].strval));}
-#line 2516 "fta.tab.cc" /* yacc.c:1646  */
+#line 543 "fta.y" /* yacc.c:1646  */
+    { (yyval.gb_list) = new gb_list_t((yyvsp[0].gb_val));}
+#line 2550 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 538 "fta.y" /* yacc.c:1646  */
-    {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
-#line 2522 "fta.tab.cc" /* yacc.c:1646  */
+#line 544 "fta.y" /* yacc.c:1646  */
+    { (yyval.gb_list)=(yyvsp[-2].gb_list)->append((yyvsp[0].gb_val));}
+#line 2556 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 539 "fta.y" /* yacc.c:1646  */
-    {(yyval.colref) = new colref_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
-#line 2528 "fta.tab.cc" /* yacc.c:1646  */
+#line 548 "fta.y" /* yacc.c:1646  */
+    {(yyval.gb_val) = new gb_t((yyvsp[0].strval)); }
+#line 2562 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 540 "fta.y" /* yacc.c:1646  */
-    {(yyval.colref) = new colref_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
-#line 2534 "fta.tab.cc" /* yacc.c:1646  */
+#line 549 "fta.y" /* yacc.c:1646  */
+    {(yyval.gb_val) = new gb_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
+#line 2568 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 544 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
-#line 2540 "fta.tab.cc" /* yacc.c:1646  */
+#line 550 "fta.y" /* yacc.c:1646  */
+    {(yyval.gb_val) = new gb_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
+#line 2574 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 545 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
-#line 2546 "fta.tab.cc" /* yacc.c:1646  */
+#line 551 "fta.y" /* yacc.c:1646  */
+    {(yyval.gb_val) = new gb_t((yyvsp[-2].scalarval),(yyvsp[0].strval)); }
+#line 2580 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 549 "fta.y" /* yacc.c:1646  */
-    {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
-#line 2552 "fta.tab.cc" /* yacc.c:1646  */
+#line 562 "fta.y" /* yacc.c:1646  */
+    {(yyval.ifpref) = new ifpref_t((yyvsp[0].strval));}
+#line 2586 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 553 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
-#line 2558 "fta.tab.cc" /* yacc.c:1646  */
+#line 563 "fta.y" /* yacc.c:1646  */
+    {(yyval.ifpref) = new ifpref_t((yyvsp[-3].strval), (yyvsp[0].strval));}
+#line 2592 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 554 "fta.y" /* yacc.c:1646  */
-    {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
-#line 2564 "fta.tab.cc" /* yacc.c:1646  */
+#line 567 "fta.y" /* yacc.c:1646  */
+    {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
+#line 2598 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 569 "fta.y" /* yacc.c:1646  */
-    {(yyval.table_list_schema) = new table_list((yyvsp[0].table_def_t));}
-#line 2570 "fta.tab.cc" /* yacc.c:1646  */
+#line 568 "fta.y" /* yacc.c:1646  */
+    {(yyval.colref) = new colref_t((yyvsp[-2].strval),(yyvsp[0].strval)); }
+#line 2604 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 570 "fta.y" /* yacc.c:1646  */
-    {(yyval.table_list_schema) = (yyvsp[-1].table_list_schema)->append_table((yyvsp[0].table_def_t));}
-#line 2576 "fta.tab.cc" /* yacc.c:1646  */
+#line 569 "fta.y" /* yacc.c:1646  */
+    {(yyval.colref) = new colref_t((yyvsp[-4].strval),(yyvsp[-2].strval),(yyvsp[0].strval)); }
+#line 2610 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
   case 145:
 #line 573 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
+#line 2616 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 146:
+#line 574 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
+#line 2622 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 147:
+#line 578 "fta.y" /* yacc.c:1646  */
+    {(yyval.colref) = new colref_t((yyvsp[0].strval)); }
+#line 2628 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 148:
+#line 582 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist)=new colref_list_t((yyvsp[-2].colref)); (yyval.clist)->append((yyvsp[0].colref));}
+#line 2634 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 149:
+#line 583 "fta.y" /* yacc.c:1646  */
+    {(yyval.clist) = (yyvsp[-2].clist)->append((yyvsp[0].colref));}
+#line 2640 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 150:
+#line 598 "fta.y" /* yacc.c:1646  */
+    {(yyval.table_list_schema) = new table_list((yyvsp[0].table_def_t));}
+#line 2646 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 151:
+#line 599 "fta.y" /* yacc.c:1646  */
+    {(yyval.table_list_schema) = (yyvsp[-1].table_list_schema)->append_table((yyvsp[0].table_def_t));}
+#line 2652 "fta.tab.cc" /* yacc.c:1646  */
+    break;
+
+  case 152:
+#line 602 "fta.y" /* yacc.c:1646  */
     {
                                        (yyval.table_def_t)=new table_def((yyvsp[-5].strval),(yyvsp[-4].plist_t),(yyvsp[-3].plist_t), (yyvsp[-1].field_list_t), PROTOCOL_SCHEMA); delete (yyvsp[-4].plist_t); delete (yyvsp[-1].field_list_t);}
-#line 2583 "fta.tab.cc" /* yacc.c:1646  */
+#line 2659 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 575 "fta.y" /* yacc.c:1646  */
+  case 153:
+#line 604 "fta.y" /* yacc.c:1646  */
     {
                                        (yyval.table_def_t)=new table_def((yyvsp[-4].stringval)->c_str(),(yyvsp[-3].plist_t),NULL,(yyvsp[-1].field_list_t), STREAM_SCHEMA); delete (yyvsp[-1].field_list_t);}
-#line 2590 "fta.tab.cc" /* yacc.c:1646  */
+#line 2666 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 147:
-#line 577 "fta.y" /* yacc.c:1646  */
+  case 154:
+#line 606 "fta.y" /* yacc.c:1646  */
     {
                                (yyval.table_def_t) = new table_def((yyvsp[-14].strval), (yyvsp[-11].plist_t), (yyvsp[-8].field_list_t), (yyvsp[-4].subqueryspec_list_t), (yyvsp[-1].plist_t)); }
-#line 2597 "fta.tab.cc" /* yacc.c:1646  */
+#line 2673 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 148:
-#line 579 "fta.y" /* yacc.c:1646  */
+  case 155:
+#line 608 "fta.y" /* yacc.c:1646  */
     { (yyval.table_def_t) = new table_def((yyvsp[-1].ufcnl)); }
-#line 2603 "fta.tab.cc" /* yacc.c:1646  */
+#line 2679 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 149:
-#line 583 "fta.y" /* yacc.c:1646  */
+  case 156:
+#line 612 "fta.y" /* yacc.c:1646  */
     {(yyval.ufcnl) = new unpack_fcn_list((yyvsp[0].ufcn));}
-#line 2609 "fta.tab.cc" /* yacc.c:1646  */
+#line 2685 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 584 "fta.y" /* yacc.c:1646  */
+  case 157:
+#line 613 "fta.y" /* yacc.c:1646  */
     {(yyval.ufcnl) = (yyvsp[-2].ufcnl) -> append((yyvsp[0].ufcn));}
-#line 2615 "fta.tab.cc" /* yacc.c:1646  */
+#line 2691 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 588 "fta.y" /* yacc.c:1646  */
+  case 158:
+#line 617 "fta.y" /* yacc.c:1646  */
     {(yyval.ufcn) = new unpack_fcn((yyvsp[-2].strval),(yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2621 "fta.tab.cc" /* yacc.c:1646  */
+#line 2697 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 592 "fta.y" /* yacc.c:1646  */
+  case 159:
+#line 621 "fta.y" /* yacc.c:1646  */
     {(yyval.subqueryspec_list_t) = new subqueryspec_list((yyvsp[0].subq_spec_t));}
-#line 2627 "fta.tab.cc" /* yacc.c:1646  */
+#line 2703 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 593 "fta.y" /* yacc.c:1646  */
+  case 160:
+#line 622 "fta.y" /* yacc.c:1646  */
     {(yyval.subqueryspec_list_t) = (yyvsp[-2].subqueryspec_list_t)->append((yyvsp[0].subq_spec_t));}
-#line 2633 "fta.tab.cc" /* yacc.c:1646  */
+#line 2709 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 597 "fta.y" /* yacc.c:1646  */
+  case 161:
+#line 626 "fta.y" /* yacc.c:1646  */
     {(yyval.subq_spec_t)=new subquery_spec((yyvsp[-3].strval), (yyvsp[-1].namevec_t)); delete (yyvsp[-1].namevec_t);}
-#line 2639 "fta.tab.cc" /* yacc.c:1646  */
+#line 2715 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 600 "fta.y" /* yacc.c:1646  */
+  case 162:
+#line 629 "fta.y" /* yacc.c:1646  */
     {(yyval.field_list_t) = new field_entry_list((yyvsp[0].field_t));}
-#line 2645 "fta.tab.cc" /* yacc.c:1646  */
+#line 2721 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 601 "fta.y" /* yacc.c:1646  */
+  case 163:
+#line 630 "fta.y" /* yacc.c:1646  */
     {(yyval.field_list_t) = (yyvsp[-1].field_list_t)->append_field((yyvsp[0].field_t));}
-#line 2651 "fta.tab.cc" /* yacc.c:1646  */
+#line 2727 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 605 "fta.y" /* yacc.c:1646  */
+  case 164:
+#line 634 "fta.y" /* yacc.c:1646  */
     {(yyval.field_t) = new field_entry((yyvsp[-5].strval),(yyvsp[-4].strval),(yyvsp[-3].strval),(yyvsp[-2].plist_t),(yyvsp[-1].plist_t));}
-#line 2657 "fta.tab.cc" /* yacc.c:1646  */
+#line 2733 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 606 "fta.y" /* yacc.c:1646  */
+  case 165:
+#line 635 "fta.y" /* yacc.c:1646  */
     {(yyval.field_t) = new field_entry((yyvsp[-3].strval),(yyvsp[-2].strval),"",(yyvsp[-1].plist_t),NULL);}
-#line 2663 "fta.tab.cc" /* yacc.c:1646  */
+#line 2739 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 610 "fta.y" /* yacc.c:1646  */
+  case 166:
+#line 639 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = NULL;}
-#line 2669 "fta.tab.cc" /* yacc.c:1646  */
+#line 2745 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 611 "fta.y" /* yacc.c:1646  */
+  case 167:
+#line 640 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
-#line 2675 "fta.tab.cc" /* yacc.c:1646  */
+#line 2751 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 615 "fta.y" /* yacc.c:1646  */
+  case 168:
+#line 644 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = new param_list((yyvsp[0].strval));}
-#line 2681 "fta.tab.cc" /* yacc.c:1646  */
+#line 2757 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 616 "fta.y" /* yacc.c:1646  */
+  case 169:
+#line 645 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2687 "fta.tab.cc" /* yacc.c:1646  */
+#line 2763 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 617 "fta.y" /* yacc.c:1646  */
+  case 170:
+#line 646 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2693 "fta.tab.cc" /* yacc.c:1646  */
+#line 2769 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 618 "fta.y" /* yacc.c:1646  */
+  case 171:
+#line 647 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = new param_list((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2699 "fta.tab.cc" /* yacc.c:1646  */
+#line 2775 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 619 "fta.y" /* yacc.c:1646  */
+  case 172:
+#line 648 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-2].plist_t)->append((yyvsp[0].strval));}
-#line 2705 "fta.tab.cc" /* yacc.c:1646  */
+#line 2781 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 620 "fta.y" /* yacc.c:1646  */
+  case 173:
+#line 649 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2711 "fta.tab.cc" /* yacc.c:1646  */
+#line 2787 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 621 "fta.y" /* yacc.c:1646  */
+  case 174:
+#line 650 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2717 "fta.tab.cc" /* yacc.c:1646  */
+#line 2793 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 622 "fta.y" /* yacc.c:1646  */
+  case 175:
+#line 651 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-3].plist_t)->append((yyvsp[-1].strval),(yyvsp[0].strval));}
-#line 2723 "fta.tab.cc" /* yacc.c:1646  */
+#line 2799 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 626 "fta.y" /* yacc.c:1646  */
+  case 176:
+#line 655 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = NULL;}
-#line 2729 "fta.tab.cc" /* yacc.c:1646  */
+#line 2805 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 627 "fta.y" /* yacc.c:1646  */
+  case 177:
+#line 656 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
-#line 2735 "fta.tab.cc" /* yacc.c:1646  */
+#line 2811 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 631 "fta.y" /* yacc.c:1646  */
+  case 178:
+#line 660 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = NULL;}
-#line 2741 "fta.tab.cc" /* yacc.c:1646  */
+#line 2817 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 632 "fta.y" /* yacc.c:1646  */
+  case 179:
+#line 661 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-1].plist_t);}
-#line 2747 "fta.tab.cc" /* yacc.c:1646  */
+#line 2823 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 636 "fta.y" /* yacc.c:1646  */
+  case 180:
+#line 665 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = new param_list((yyvsp[0].strval));}
-#line 2753 "fta.tab.cc" /* yacc.c:1646  */
+#line 2829 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 637 "fta.y" /* yacc.c:1646  */
+  case 181:
+#line 666 "fta.y" /* yacc.c:1646  */
     {(yyval.plist_t) = (yyvsp[-2].plist_t)->append((yyvsp[0].strval));}
-#line 2759 "fta.tab.cc" /* yacc.c:1646  */
+#line 2835 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 641 "fta.y" /* yacc.c:1646  */
+  case 182:
+#line 670 "fta.y" /* yacc.c:1646  */
     {(yyval.namevec_t) = new name_vec((yyvsp[-2].strval),(yyvsp[-1].strval),(yyvsp[0].plist_t));}
-#line 2765 "fta.tab.cc" /* yacc.c:1646  */
+#line 2841 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 642 "fta.y" /* yacc.c:1646  */
+  case 183:
+#line 671 "fta.y" /* yacc.c:1646  */
     {(yyval.namevec_t) = (yyvsp[-4].namevec_t)->append((yyvsp[-2].strval),(yyvsp[-1].strval), (yyvsp[0].plist_t));}
-#line 2771 "fta.tab.cc" /* yacc.c:1646  */
+#line 2847 "fta.tab.cc" /* yacc.c:1646  */
     break;
 
 
-#line 2775 "fta.tab.cc" /* yacc.c:1646  */
+#line 2851 "fta.tab.cc" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2999,6 +3075,6 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 645 "fta.y" /* yacc.c:1906  */
+#line 674 "fta.y" /* yacc.c:1906  */