You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2016/04/19 18:44:33 UTC

[20/24] incubator-quickstep git commit: Added JOIN ... ON ... operator and tests. (#171)

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/e87cabf4/parser/preprocessed/SqlParser_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 7ebb01f..d625dc7 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.0.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -112,6 +112,7 @@ typedef struct YYLTYPE {
 #include "parser/ParseGeneratorTableReference.hpp"
 #include "parser/ParseGroupBy.hpp"
 #include "parser/ParseHaving.hpp"
+#include "parser/ParseJoinedTableReference.hpp"
 #include "parser/ParseKeyValue.hpp"
 #include "parser/ParseLimit.hpp"
 #include "parser/ParseLiteralValue.hpp"
@@ -149,7 +150,7 @@ typedef struct YYLTYPE {
 // Needed for Bison 2.6 and higher, which do not automatically provide this typedef.
 typedef void* yyscan_t;
 
-#line 153 "SqlParser_gen.cpp" /* yacc.c:339  */
+#line 154 "SqlParser_gen.cpp" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -303,10 +304,10 @@ extern int quickstep_yydebug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 117 "../SqlParser.ypp" /* yacc.c:355  */
+#line 118 "../SqlParser.ypp" /* yacc.c:355  */
 
   quickstep::ParseString *string_value_;
 
@@ -342,6 +343,8 @@ union YYSTYPE
   quickstep::PtrList<quickstep::ParseTableReference> *table_reference_list_;
   quickstep::ParseTableReferenceSignature *table_reference_signature_;
 
+  quickstep::ParseJoinedTableReference::JoinType join_type_;
+
   quickstep::ParseDataType *data_type_;
   quickstep::ParseAttributeDefinition *attribute_definition_;
   quickstep::ParseColumnConstraint *column_constraint_;
@@ -396,8 +399,10 @@ union YYSTYPE
   quickstep::PtrVector<quickstep::ParseSubqueryTableReference> *with_list_;
   quickstep::ParseSubqueryTableReference *with_list_element_;
 
-#line 400 "SqlParser_gen.cpp" /* yacc.c:355  */
+#line 403 "SqlParser_gen.cpp" /* yacc.c:355  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -423,13 +428,13 @@ int quickstep_yyparse (yyscan_t yyscanner, quickstep::ParseStatement **parsedSta
 #endif /* !YY_QUICKSTEP_YY_SQLPARSER_GEN_HPP_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 207 "../SqlParser.ypp" /* yacc.c:358  */
+#line 210 "../SqlParser.ypp" /* yacc.c:358  */
 
 /* This header needs YYSTYPE, which is defined by the %union directive above */
 #include "SqlLexer_gen.hpp"
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
 
-#line 433 "SqlParser_gen.cpp" /* yacc.c:358  */
+#line 438 "SqlParser_gen.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -673,16 +678,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  47
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1147
+#define YYLAST   975
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  128
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  95
+#define YYNNTS  94
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  255
+#define YYNRULES  254
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  497
+#define YYNSTATES  470
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -740,32 +745,32 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   570,   570,   574,   578,   582,   586,   589,   596,   599,
-     602,   605,   608,   611,   614,   617,   620,   623,   629,   635,
-     642,   648,   655,   664,   669,   678,   683,   688,   692,   698,
-     703,   706,   709,   714,   717,   720,   723,   726,   729,   732,
-     735,   738,   741,   753,   756,   759,   777,   797,   800,   803,
-     808,   813,   819,   825,   834,   838,   844,   847,   852,   857,
-     862,   869,   876,   880,   886,   889,   894,   897,   902,   905,
-     910,   913,   932,   936,   942,   946,   952,   955,   958,   963,
-     966,   973,   978,   989,   994,   998,  1002,  1008,  1011,  1017,
-    1025,  1028,  1031,  1037,  1042,  1045,  1050,  1054,  1058,  1062,
-    1068,  1073,  1078,  1082,  1088,  1094,  1097,  1102,  1107,  1111,
-    1117,  1123,  1129,  1132,  1136,  1142,  1145,  1150,  1154,  1160,
-    1163,  1166,  1171,  1176,  1179,  1185,  1189,  1195,  1201,  1207,
-    1213,  1219,  1225,  1231,  1237,  1245,  1250,  1253,  1256,  1261,
-    1265,  1269,  1272,  1276,  1281,  1284,  1289,  1292,  1297,  1301,
-    1307,  1310,  1315,  1318,  1323,  1326,  1331,  1334,  1353,  1357,
-    1363,  1370,  1373,  1376,  1381,  1384,  1387,  1393,  1396,  1401,
-    1406,  1415,  1420,  1429,  1434,  1437,  1442,  1445,  1450,  1456,
-    1462,  1465,  1468,  1471,  1474,  1477,  1483,  1492,  1495,  1500,
-    1503,  1508,  1511,  1516,  1519,  1522,  1525,  1528,  1531,  1536,
-    1540,  1544,  1547,  1552,  1557,  1560,  1565,  1569,  1575,  1580,
-    1584,  1590,  1595,  1598,  1603,  1607,  1613,  1616,  1619,  1622,
-    1634,  1638,  1657,  1672,  1676,  1682,  1685,  1690,  1694,  1701,
-    1704,  1707,  1710,  1713,  1716,  1719,  1722,  1725,  1728,  1733,
-    1744,  1747,  1752,  1755,  1758,  1764,  1768,  1774,  1777,  1785,
-    1788,  1791,  1794,  1800,  1805,  1810
+       0,   575,   575,   579,   583,   587,   591,   594,   601,   604,
+     607,   610,   613,   616,   619,   622,   625,   628,   634,   640,
+     647,   653,   660,   669,   674,   683,   688,   693,   697,   703,
+     708,   711,   714,   719,   722,   725,   728,   731,   734,   737,
+     740,   743,   746,   758,   761,   764,   782,   802,   805,   808,
+     813,   818,   824,   830,   839,   843,   849,   852,   857,   862,
+     867,   874,   881,   885,   891,   894,   899,   902,   907,   910,
+     915,   918,   937,   941,   947,   951,   957,   960,   963,   968,
+     971,   978,   983,   994,   999,  1003,  1007,  1013,  1016,  1022,
+    1030,  1033,  1036,  1042,  1047,  1050,  1055,  1059,  1063,  1067,
+    1073,  1078,  1083,  1087,  1093,  1099,  1102,  1107,  1112,  1116,
+    1122,  1128,  1134,  1137,  1141,  1147,  1150,  1155,  1159,  1165,
+    1168,  1171,  1176,  1181,  1186,  1189,  1192,  1197,  1200,  1203,
+    1206,  1209,  1212,  1215,  1218,  1223,  1226,  1231,  1235,  1239,
+    1242,  1246,  1249,  1254,  1257,  1262,  1265,  1270,  1274,  1280,
+    1283,  1288,  1291,  1296,  1299,  1304,  1307,  1326,  1330,  1336,
+    1343,  1346,  1349,  1354,  1357,  1360,  1366,  1369,  1374,  1379,
+    1388,  1393,  1402,  1407,  1410,  1415,  1418,  1423,  1429,  1435,
+    1438,  1441,  1444,  1447,  1450,  1456,  1465,  1468,  1473,  1476,
+    1481,  1484,  1489,  1492,  1495,  1498,  1501,  1504,  1509,  1513,
+    1517,  1520,  1525,  1530,  1533,  1538,  1542,  1548,  1553,  1557,
+    1563,  1568,  1571,  1576,  1580,  1586,  1589,  1592,  1595,  1607,
+    1611,  1630,  1645,  1649,  1655,  1658,  1663,  1667,  1674,  1677,
+    1680,  1683,  1686,  1689,  1692,  1695,  1698,  1701,  1706,  1717,
+    1720,  1725,  1728,  1731,  1737,  1741,  1747,  1750,  1758,  1761,
+    1764,  1767,  1773,  1778,  1783
 };
 #endif
 
@@ -818,9 +823,9 @@ static const char *const yytname[] =
   "assignment_list", "assignment_item", "select_statement", "with_clause",
   "with_list", "with_list_element", "select_query", "opt_all_distinct",
   "selection", "selection_item_commalist", "selection_item", "from_clause",
-  "opt_join_chain", "join_chain", "join", "subquery_expression",
-  "opt_sample_clause", "table_reference", "table_reference_signature",
-  "table_reference_signature_primary", "table_reference_commalist",
+  "subquery_expression", "opt_sample_clause", "join_type",
+  "joined_table_reference", "table_reference", "table_reference_signature",
+  "table_reference_signature_primary", "joined_table_reference_commalist",
   "opt_group_by_clause", "opt_having_clause", "opt_order_by_clause",
   "opt_limit_clause", "order_commalist", "order_item",
   "opt_order_direction", "opt_nulls_first", "opt_where_clause",
@@ -858,12 +863,12 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -209
+#define YYPACT_NINF -223
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-209)))
+  (!!((Yystate) == (-223)))
 
-#define YYTABLE_NINF -1
+#define YYTABLE_NINF -128
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -872,56 +877,53 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     394,  -209,  -209,   -35,   190,    72,   133,   120,    53,  -209,
-      69,   190,   190,  -209,    94,   127,  -209,  -209,  -209,  -209,
-    -209,  -209,  -209,  -209,  -209,  -209,    91,  -209,   -34,   207,
-     190,  -209,  -209,   166,   190,   190,   190,   190,   190,  -209,
-    -209,   602,   134,   113,  -209,   235,   144,  -209,  -209,  -209,
-     197,  -209,  -209,  -209,  -209,    62,   289,   208,   176,   192,
-    -209,   137,  -209,  -209,   308,   321,  -209,  -209,  -209,   635,
-     206,  -209,   255,  -209,  -209,   210,  -209,  -209,   331,  -209,
-    -209,  -209,  -209,  -209,  -209,   214,   272,   844,   346,   285,
-     227,  -209,   236,    -2,  -209,  -209,  -209,  -209,  -209,  -209,
-    -209,   877,    41,   190,   190,   230,   190,   190,   123,   220,
-     237,   190,   190,   514,  -209,  -209,   233,   190,  -209,  -209,
-    -209,   514,    23,   -33,  -209,   349,  -209,   190,  -209,   352,
-    -209,     7,  -209,     9,   192,   844,  -209,  -209,   190,   844,
-    -209,  -209,  -209,  -209,   844,   321,  -209,   190,   426,   126,
-    -209,   350,  -209,   261,  -209,   146,  -209,   261,   190,     3,
-     190,   190,   239,  -209,   241,  -209,   148,   960,   723,   230,
-     514,   358,   359,  -209,  -209,  1075,   354,   965,   152,    15,
-     844,   -20,  -209,   844,  -209,   311,   247,   309,   254,  -209,
-      81,  -209,   105,    81,   -32,   312,  -209,  -209,    -2,  -209,
-    -209,   260,   844,  -209,   258,   156,   190,  -209,   844,   262,
-    -209,   190,  -209,  -209,   256,   303,   313,   265,  -209,  -209,
-    -209,   184,   190,   278,     3,   190,  -209,   118,  -209,  -209,
-       1,    37,   514,   514,    98,  -209,  -209,  -209,  -209,  -209,
-    -209,  -209,  -209,   844,   268,   844,    26,  -209,   165,   280,
-     844,    52,  -209,   337,   258,  -209,  -209,   844,  -209,   190,
-    -209,  -209,   116,   319,   190,   129,   132,     9,  -209,   106,
-    -209,  -209,   395,   399,    81,   361,   336,  -209,   167,  -209,
-     844,  -209,   258,  -209,  -209,   514,   284,   286,   190,   404,
-      88,   173,  -209,   177,   385,    27,  -209,   287,   296,  -209,
-     330,   292,   965,  -209,   338,   190,  -209,  -209,   118,  -209,
-    -209,   359,  -209,  -209,  -209,   844,   293,    55,   756,  -209,
-     258,   334,  -209,  -209,   965,   297,   258,   844,  -209,    39,
-    -209,   190,   341,   190,   -47,   190,   343,   190,   344,  -209,
-    -209,   332,   333,  -209,   844,   514,   339,  -209,   258,    10,
-     190,   190,   180,  -209,  -209,  -209,  -209,  -209,  -209,  -209,
-     209,  -209,   190,  -209,  -209,  -209,  -209,   305,     3,   391,
-     345,  -209,   514,  -209,  -209,   310,  -209,   232,   756,  -209,
-     844,   182,  -209,  -209,   965,   258,  -209,   -45,   190,   -25,
-     514,   -16,   190,    18,   190,  -209,  -209,   316,   358,   403,
-     356,  -209,   185,   187,  -209,   430,    88,  -209,   190,  -209,
-    -209,   320,   410,  -209,    16,   190,   844,   191,   258,  -209,
-     193,   514,    64,   514,   358,   514,    67,   514,    75,   844,
-     445,  -209,   355,  -209,  -209,  -209,   195,  -209,  -209,  -209,
-    -209,    13,   190,   121,  -209,   329,   258,  -209,  -209,   358,
-     514,   358,   358,   514,   358,   514,   340,  -209,   202,  -209,
-     190,  -209,   190,  -209,  -209,   190,  -209,   198,  -209,  -209,
-     347,  -209,   358,   358,   358,   844,  -209,  -209,   369,   348,
-    -209,   200,  -209,   190,  -209,   117,  -209,   190,  -209,   217,
-    -209,  -209,   219,   365,  -209,   455,  -209
+      63,  -223,  -223,   -56,   229,   -15,     4,   -51,    14,  -223,
+      36,   229,   229,  -223,    96,   124,  -223,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,  -223,  -223,    97,  -223,    48,   101,
+     229,  -223,  -223,   133,   229,   229,   229,   229,   229,  -223,
+    -223,   493,    23,    79,  -223,   199,    60,  -223,  -223,  -223,
+     179,  -223,  -223,  -223,  -223,    27,   260,   181,   165,   158,
+    -223,   123,  -223,  -223,   289,   293,  -223,  -223,  -223,   526,
+     178,  -223,   232,  -223,  -223,   180,  -223,  -223,   306,  -223,
+    -223,  -223,  -223,  -223,  -223,   188,   242,   735,   320,   273,
+     248,  -223,   221,    22,  -223,  -223,  -223,  -223,  -223,  -223,
+    -223,   768,    -5,   229,   229,   223,   229,   229,   115,   194,
+     237,   229,   229,   405,  -223,  -223,   234,   229,  -223,  -223,
+    -223,   405,    51,   -22,  -223,   377,  -223,   229,  -223,   378,
+    -223,     7,  -223,    21,   158,   735,  -223,  -223,   229,   735,
+    -223,  -223,  -223,  -223,   735,   293,  -223,   229,   272,   -64,
+    -223,   375,  -223,   287,  -223,   138,  -223,   287,   229,    58,
+     229,   229,   265,  -223,   266,  -223,   148,   851,   614,   223,
+     405,   384,   385,  -223,  -223,   349,   379,   856,   155,    16,
+     735,    -2,  -223,   735,  -223,   336,   276,   331,   277,  -223,
+      15,   195,   111,  -223,   278,   195,    52,   334,  -223,  -223,
+      22,  -223,  -223,   280,   735,  -223,   261,   161,   229,  -223,
+     735,   281,  -223,   229,  -223,  -223,   283,   328,   333,   290,
+    -223,  -223,  -223,   117,   229,   303,    58,   229,  -223,   151,
+    -223,  -223,     5,    64,   405,   405,    25,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,  -223,   735,   298,   735,    13,  -223,
+     166,   309,   735,    38,  -223,   358,   261,  -223,  -223,   735,
+    -223,   129,   229,  -223,  -223,   335,  -223,   338,   339,   345,
+      21,  -223,   423,   424,   195,   393,   364,  -223,   173,  -223,
+     735,  -223,   261,  -223,  -223,   405,   312,   316,   229,   436,
+      24,   182,  -223,   190,   415,   157,  -223,   317,   326,  -223,
+     360,   324,   856,  -223,   369,   229,  -223,  -223,   151,  -223,
+    -223,   385,  -223,  -223,  -223,   735,   327,   246,   647,  -223,
+     261,   365,  -223,  -223,   856,   340,   261,   735,  -223,    26,
+    -223,  -223,  -223,  -223,  -223,    21,   111,   366,   367,  -223,
+     735,   405,   368,  -223,   261,    12,   229,   229,   192,  -223,
+    -223,  -223,  -223,  -223,  -223,  -223,   153,  -223,   229,  -223,
+    -223,  -223,  -223,   341,    58,   422,   371,  -223,   405,  -223,
+    -223,   344,  -223,   250,   647,  -223,   735,   198,  -223,  -223,
+     856,   261,  -223,   381,  -223,  -223,   337,   384,   431,   389,
+    -223,   204,   207,  -223,   468,    24,  -223,   229,  -223,  -223,
+     350,   435,  -223,    30,   229,   735,   210,   261,  -223,   213,
+     405,   735,   469,  -223,   380,  -223,  -223,  -223,   225,  -223,
+    -223,  -223,  -223,    11,   229,   118,  -223,   352,   261,  -223,
+    -223,   384,   353,  -223,   186,  -223,   229,  -223,   229,  -223,
+    -223,   229,  -223,   227,  -223,  -223,   356,  -223,   735,  -223,
+    -223,   397,   361,  -223,   247,  -223,   229,  -223,   -13,  -223,
+     229,  -223,   252,  -223,  -223,   257,   392,  -223,   479,  -223
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -929,327 +931,290 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     6,   255,     0,     0,     0,     0,     0,     0,    18,
+       0,     6,   254,     0,     0,     0,     0,     0,     0,    18,
      112,     0,     0,     7,     0,     0,    15,     8,    10,    11,
-      13,    14,     9,    17,    12,    16,     0,   105,     0,   253,
-       0,   247,   248,     0,     0,     0,     0,     0,     0,   113,
-     114,     0,     0,   107,   108,     0,   146,     1,     3,     2,
-       0,   106,     5,     4,   254,     0,     0,     0,     0,   167,
-      25,     0,   220,   217,     0,   239,   115,    40,    29,     0,
+      13,    14,     9,    17,    12,    16,     0,   105,     0,   252,
+       0,   246,   247,     0,     0,     0,     0,     0,     0,   113,
+     114,     0,     0,   107,   108,     0,   145,     1,     3,     2,
+       0,   106,     5,     4,   253,     0,     0,     0,     0,   166,
+      25,     0,   219,   216,     0,   238,   115,    40,    29,     0,
        0,    30,    31,    34,    36,     0,    37,    39,     0,    41,
-     216,    35,    38,    32,    33,     0,     0,     0,     0,     0,
-     116,   117,   121,   188,   190,   192,   195,   196,   197,   194,
-     193,     0,   225,     0,     0,     0,     0,     0,     0,     0,
-      94,     0,     0,     0,   101,   168,     0,     0,    91,   218,
-     219,     0,     0,   212,   209,     0,    43,     0,   221,     0,
-      44,     0,   222,     0,   167,     0,   240,   241,     0,     0,
-     120,   243,   244,   242,     0,     0,   191,     0,     0,   167,
-     103,     0,   109,     0,   110,     0,   245,     0,     0,     0,
+     215,    35,    38,    32,    33,     0,     0,     0,     0,     0,
+     116,   117,   121,   187,   189,   191,   194,   195,   196,   193,
+     192,     0,   224,     0,     0,     0,     0,     0,     0,     0,
+      94,     0,     0,     0,   101,   167,     0,     0,    91,   217,
+     218,     0,     0,   211,   208,     0,    43,     0,   220,     0,
+      44,     0,   221,     0,   166,     0,   239,   240,     0,     0,
+     120,   242,   243,   241,     0,     0,   190,     0,     0,   166,
+     103,     0,   109,     0,   110,     0,   244,     0,     0,     0,
        0,     0,     0,    93,    66,    27,     0,     0,     0,     0,
-       0,   169,   171,   173,   175,     0,   193,     0,     0,     0,
-       0,   212,   206,     0,   210,     0,     0,     0,     0,   198,
-       0,   148,   123,   143,   136,   150,   118,   119,   187,   189,
-     226,     0,     0,   199,   214,     0,     0,   100,     0,     0,
-     147,     0,    92,    19,     0,     0,     0,     0,    20,    21,
-      22,     0,     0,     0,    64,     0,    42,    56,   174,   182,
-       0,     0,     0,     0,     0,   229,   231,   232,   233,   234,
-     230,   235,   237,     0,     0,     0,     0,   223,     0,     0,
-       0,     0,   207,     0,   213,   205,    45,     0,    46,     0,
-     139,   144,     0,     0,     0,     0,     0,     0,   122,   124,
-     126,   142,     0,     0,   141,     0,   152,   200,     0,   201,
-       0,   102,   104,   135,   246,     0,     0,     0,     0,     0,
-       0,     0,   227,     0,   225,     0,    63,    65,    68,    28,
+       0,   168,   170,   172,   174,     0,   192,     0,     0,     0,
+       0,   211,   205,     0,   209,     0,     0,     0,     0,   197,
+       0,     0,   147,   136,   122,   141,   124,   149,   118,   119,
+     186,   188,   225,     0,     0,   198,   213,     0,     0,   100,
+       0,     0,   146,     0,    92,    19,     0,     0,     0,     0,
+      20,    21,    22,     0,     0,     0,    64,     0,    42,    56,
+     173,   181,     0,     0,     0,     0,     0,   228,   230,   231,
+     232,   233,   229,   234,   236,     0,     0,     0,     0,   222,
+       0,     0,     0,     0,   206,     0,   212,   204,    45,     0,
+      46,   127,     0,   137,   143,   133,   128,   129,   131,     0,
+       0,   140,     0,     0,   139,     0,   151,   199,     0,   200,
+       0,   102,   104,   123,   245,     0,     0,     0,     0,     0,
+       0,     0,   226,     0,   224,     0,    63,    65,    68,    28,
        0,     0,     0,    47,     0,     0,    49,    55,    57,    26,
-     181,   170,   172,   236,   238,     0,     0,     0,     0,   183,
-     180,     0,   179,    90,     0,     0,   211,     0,   204,     0,
-     145,     0,     0,     0,     0,     0,     0,     0,     0,   149,
-     125,     0,     0,   140,     0,     0,   154,   202,   215,     0,
-       0,     0,     0,    96,   251,   252,   250,   249,    97,    95,
-       0,    67,     0,    83,    84,    85,    86,    87,     0,     0,
-      70,    48,     0,    51,    50,     0,    54,     0,     0,   185,
-       0,     0,   178,   224,     0,   208,   203,     0,     0,     0,
-       0,     0,     0,     0,     0,   137,   138,   151,   153,     0,
-     156,    61,     0,     0,    58,     0,     0,   228,     0,    24,
-      62,     0,     0,    23,     0,     0,     0,     0,   176,   184,
-       0,     0,     0,     0,   128,     0,     0,     0,     0,     0,
-       0,   111,     0,    59,    98,    99,     0,    74,    76,    77,
-      78,     0,     0,     0,    52,     0,   177,   186,    89,   134,
-       0,   127,   130,     0,   132,     0,   155,   158,   161,   157,
-       0,    88,     0,    82,    80,     0,    79,     0,    72,    73,
-       0,    53,   133,   129,   131,     0,   162,   163,   164,     0,
-      75,     0,    69,     0,   159,     0,   160,     0,    81,     0,
-     165,   166,     0,     0,    60,     0,    71
+     180,   169,   171,   235,   237,     0,     0,     0,     0,   182,
+     179,     0,   178,    90,     0,     0,   210,     0,   203,     0,
+     142,   144,   134,   130,   132,     0,   148,     0,     0,   138,
+       0,     0,   153,   201,   214,     0,     0,     0,     0,    96,
+     250,   251,   249,   248,    97,    95,     0,    67,     0,    83,
+      84,    85,    86,    87,     0,     0,    70,    48,     0,    51,
+      50,     0,    54,     0,     0,   184,     0,     0,   177,   223,
+       0,   207,   202,     0,   125,   126,   150,   152,     0,   155,
+      61,     0,     0,    58,     0,     0,   227,     0,    24,    62,
+       0,     0,    23,     0,     0,     0,     0,   175,   183,     0,
+       0,     0,     0,   111,     0,    59,    98,    99,     0,    74,
+      76,    77,    78,     0,     0,     0,    52,     0,   176,   185,
+      89,   135,   154,   157,   160,   156,     0,    88,     0,    82,
+      80,     0,    79,     0,    72,    73,     0,    53,     0,   161,
+     162,   163,     0,    75,     0,    69,     0,   158,     0,   159,
+       0,    81,     0,   164,   165,     0,     0,    60,     0,    71
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -209,  -209,  -209,  -209,  -209,  -209,  -209,  -209,  -121,  -209,
-     298,   155,  -209,  -209,  -208,  -209,  -209,  -209,  -209,  -209,
-    -209,    22,     8,  -209,  -209,  -209,  -209,  -209,  -209,  -209,
-    -209,  -209,  -209,  -209,  -209,   267,  -209,  -209,  -209,   373,
-      14,  -209,  -209,  -209,   351,  -209,  -209,  -209,   211,  -102,
-    -209,   218,  -183,   -11,  -209,  -209,  -209,  -209,  -209,  -209,
-      12,  -209,  -209,   -54,  -209,   -50,   246,   251,   322,   -30,
-     353,   357,   392,  -129,  -209,  -209,  -209,   315,  -209,   371,
-     317,  -196,  -175,   115,   -86,  -209,  -209,  -209,  -209,  -209,
-    -105,    -4,    99,  -209,  -209
+    -223,  -223,  -223,  -223,  -223,  -223,  -223,  -223,  -121,  -223,
+     321,   183,  -223,  -223,  -222,  -223,  -223,  -223,  -223,  -223,
+    -223,    68,    49,  -223,  -223,  -223,  -223,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,  -223,   285,  -223,  -223,  -223,   390,
+       9,  -223,  -223,  -223,   370,  -223,  -100,  -223,  -223,  -149,
+     160,  -143,    -9,  -223,  -223,  -223,  -223,  -223,  -223,    53,
+    -223,  -223,   107,  -223,  -120,   262,   268,   342,   -30,   372,
+     362,   403,  -123,  -223,  -223,  -223,   347,  -223,   394,   355,
+    -192,  -161,   127,  -107,  -223,  -223,  -223,  -223,  -223,  -115,
+      -4,   113,  -223,  -223
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    14,    15,    16,    17,    18,    19,    20,   165,   166,
-      88,   307,   308,   309,   218,   297,   298,   223,   370,   413,
-     470,   436,   437,   438,   439,   440,   367,   409,    21,    22,
+      88,   307,   308,   309,   220,   297,   298,   225,   366,   402,
+     446,   418,   419,   420,   421,   422,   363,   398,    21,    22,
      163,   291,    23,    24,   149,   150,    25,    26,    43,    44,
-     209,    41,    89,    90,    91,   134,   268,   269,   270,   190,
-     274,   191,   260,   261,   192,   276,   346,   400,   431,   456,
-     457,   478,   486,   114,   115,   171,   172,   173,   174,   175,
-      93,    94,    95,    96,    97,    98,   181,   182,   123,   124,
-     185,   205,    99,   248,   100,   293,   245,   101,   139,   144,
-     155,   102,   358,    28,    29
+     211,    41,    89,    90,    91,   134,   191,   274,   269,   192,
+     193,   263,   264,   194,   276,   342,   389,   413,   432,   433,
+     451,   459,   114,   115,   171,   172,   173,   174,   175,    93,
+      94,    95,    96,    97,    98,   181,   182,   123,   124,   185,
+     207,    99,   250,   100,   293,   247,   101,   139,   144,   155,
+     102,   354,    28,    29
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
      positive, shift that token.  If negative, reduce the rule whose
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const yytype_uint16 yytable[] =
+static const yytype_int16 yytable[] =
 {
-      33,    45,   247,   154,   193,   272,   278,    42,    46,   232,
-     271,    92,   178,    31,    27,    32,   296,    31,   232,    32,
-     463,   141,   142,   232,   232,   183,    55,   176,   136,   137,
-      57,    58,    59,    60,    61,   176,   321,   213,   183,   122,
-      51,   390,   464,   421,   136,   137,   214,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   131,   136,   137,
-     136,   137,   363,   423,   380,   364,   365,   229,   147,   215,
-      30,   179,   425,   136,   137,   118,   136,   137,   273,   211,
-     195,   211,   176,   121,   176,    31,    52,    32,   140,    53,
-     108,   343,   148,    45,    47,   207,   180,   216,    39,   151,
-      46,   211,   156,   157,   299,    92,   427,   164,   167,   244,
-     211,   322,   259,   156,   217,   313,   314,   315,   204,   109,
-     230,   250,   381,   187,    40,   143,   310,   373,   300,   194,
-     366,    38,   189,   153,   197,   401,   292,   465,   193,   180,
-     231,   444,   319,   200,   211,    34,   176,   176,   397,   383,
-     251,   354,   450,   254,   167,   453,   219,   220,   327,   334,
-     410,   301,   189,   455,   386,   148,    50,   158,   159,   302,
-     316,   212,   204,   262,   262,   355,   356,    35,   282,   263,
-     263,   490,   417,   352,   264,   264,    46,   265,   265,    46,
-     211,   468,    10,   211,    31,   331,    32,   357,   491,   176,
-      36,   211,   151,   303,   266,   266,   332,   284,   335,   247,
-      54,   337,   304,   317,   379,   320,   305,   469,   294,   336,
-     326,   167,   338,   136,   137,    37,   387,   329,   389,   306,
-     391,   267,   393,    56,   476,   349,   103,   289,    10,   104,
-      31,   416,    32,   113,   290,   402,   403,    48,   330,    49,
-     348,   116,   206,   136,   137,    46,   477,   136,   137,   176,
-     156,   117,   405,   194,   160,   161,   105,   138,   106,   406,
-      46,   210,   211,   224,   225,   107,   407,   249,   211,   136,
-     137,   279,   280,   422,   156,   377,   176,   426,   204,   428,
-     323,   324,   347,   280,   110,   398,   111,   385,   359,   360,
-     112,   375,   361,   362,   176,   404,   211,   419,   280,   113,
-     432,   211,   433,   211,   204,   119,   447,   280,   448,   324,
-     461,   462,   414,   482,   462,   488,   211,   156,   120,   156,
-     125,   156,   126,   156,   127,   176,   128,   176,   129,   176,
-     424,   176,   493,   211,   494,   211,   156,   156,   204,   130,
-     418,   132,   133,   135,   153,   162,   186,   177,   294,   188,
-     481,   208,    10,   221,   176,   222,   232,   176,   233,   176,
-     255,   449,   256,   451,   246,   452,   257,   454,   489,   258,
-     285,   275,   492,   286,   156,   277,   446,   283,   156,   288,
-     156,   295,   318,   287,   325,     1,   328,     2,   333,   458,
-     472,   344,   341,   473,   441,   474,   342,   345,   350,   353,
-     351,   445,   147,   368,   369,   371,   372,   378,   374,   382,
-     388,   384,   392,   394,     3,   395,   396,   411,   399,   408,
-      31,    62,    32,    63,   415,   434,   412,   466,   441,   430,
-       4,     5,   280,   429,   442,   458,     6,    64,    65,   201,
-     443,     7,   459,   460,   471,   485,   479,   495,   441,    67,
-      68,   156,   496,   376,   467,   227,   475,    69,    70,     8,
-     480,   483,   487,   281,    71,    72,    73,   152,   311,   156,
-     340,   202,    74,   156,   312,   339,   196,   484,    75,     9,
-     228,    76,   198,   146,   184,    10,   252,     0,   253,   420,
-       0,   199,    77,    78,     0,   435,    11,     0,     0,     0,
-      79,    80,    12,     0,    13,     0,     0,     0,    31,    62,
-      32,    63,     0,    81,   168,     0,     0,     0,     0,     0,
-      82,     0,     0,    83,    84,    64,    65,     0,     0,     0,
-       0,    85,     0,     0,     0,    86,     0,    67,    68,     0,
-      87,   203,     0,     0,     0,    69,    70,     0,     0,     0,
-       0,     0,    71,    72,    73,     0,     0,     0,     0,     0,
-      74,     0,     0,     0,     0,   169,    75,     0,     0,    76,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      77,    78,     0,     0,     0,     0,     0,     0,    79,    80,
-       0,     0,     0,     0,     0,     0,    31,    62,    32,    63,
-       0,    81,     0,     0,     0,     0,     0,     0,    82,     0,
-       0,    83,    84,    64,    65,    66,     0,     0,     0,    85,
-       0,     0,     0,    86,     0,    67,    68,     0,   170,    31,
-      62,    32,    63,    69,    70,     0,     0,     0,     0,     0,
-      71,    72,    73,     0,     0,     0,    64,    65,    74,     0,
-       0,     0,     0,     0,    75,     0,     0,    76,    67,    68,
-       0,     0,     0,     0,     0,     0,    69,    70,    77,    78,
-       0,     0,     0,    71,    72,    73,    79,    80,     0,     0,
-       0,    74,     0,     0,     0,     0,     0,    75,     0,    81,
-      76,     0,     0,     0,     0,     0,    82,     0,     0,    83,
-      84,    77,    78,     0,     0,     0,     0,    85,     0,    79,
-      80,    86,     0,     0,     0,     0,    87,    31,    62,    32,
-      63,     0,    81,     0,     0,     0,     0,     0,     0,    82,
-       0,     0,    83,    84,    64,    65,     0,     0,     0,     0,
-      85,   121,     0,     0,    86,     0,    67,    68,     0,    87,
-      31,    62,    32,    63,    69,    70,     0,     0,     0,     0,
+      33,   179,   178,    45,   296,   154,   176,    42,    46,    27,
+     195,    92,   278,   234,   176,    31,   249,    32,   439,    31,
+     234,    32,   147,   321,   234,    31,    55,    32,   136,   137,
+      57,    58,    59,    60,    61,    51,   183,   215,   234,   122,
+     440,   261,   313,   314,   315,   141,   142,   136,   137,    30,
+     232,   463,   271,   113,    37,   108,   183,   131,    34,   136,
+     137,   176,   208,   176,     1,    39,     2,   195,   464,   231,
+     118,    36,   136,   137,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   109,   136,   137,   350,   140,   272,
+      35,    40,    38,     3,   121,    45,    47,   316,   322,   151,
+      46,   216,   156,   157,    54,    92,   299,   164,   167,     4,
+       5,   351,   352,   156,   180,     6,    10,   292,   206,   148,
+       7,   336,   252,   187,   217,   103,   377,   176,   176,   196,
+     310,   339,   189,   353,   199,   441,   246,   390,     8,   190,
+     233,   369,   399,   202,   327,   190,   319,   195,   386,   143,
+     253,   382,   218,   256,   167,   426,   221,   222,     9,   158,
+     159,   300,   273,   379,    10,   345,   214,   180,    52,   219,
+     289,    53,    50,   348,   206,    11,   148,   290,   176,   265,
+     282,    12,   406,    13,   106,   266,   196,    46,   444,   189,
+    -127,    46,   359,   267,   301,   360,   361,   265,    10,    31,
+      56,    32,   302,   266,   151,   104,   394,   136,   137,   284,
+     268,   267,   195,   395,   445,   317,   375,   320,   449,   249,
+     294,   387,   326,   167,    10,    31,   262,    32,   268,   329,
+     105,   391,   392,    31,   176,    32,   303,   116,   160,   161,
+     450,   197,   136,   137,    48,   304,    49,   117,   403,   305,
+     344,   396,   138,   331,   330,   376,   209,   107,    46,   405,
+     362,   176,   306,   212,   213,   110,   196,   136,   137,   111,
+      46,   136,   137,   226,   227,   113,    31,    62,    32,    63,
+     251,   213,   136,   137,   156,   373,   279,   280,   206,   112,
+     431,   323,   324,    64,    65,   203,   119,   381,   343,   280,
+     120,   371,   125,   176,   127,    67,    68,   355,   356,   126,
+     206,   128,   129,    69,    70,   357,   358,   393,   213,   130,
+      71,    72,    73,   408,   280,   132,   454,   204,    74,   414,
+     213,   196,   415,   213,    75,   429,   280,    76,   430,   324,
+     133,   462,   156,   156,   206,   465,   407,   153,    77,    78,
+     437,   438,   455,   438,   294,   162,    79,    80,   177,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,    81,
+     136,   137,   461,   213,   135,   428,    82,   466,   213,    83,
+      84,   434,   467,   213,   186,   188,   210,    85,    10,   223,
+     224,    86,   234,   423,   235,   257,    87,   205,   259,   248,
+     427,   258,   260,   275,   270,   277,   283,   285,   286,    31,
+      62,    32,    63,   287,   288,   168,   295,   328,   434,   442,
+     423,   246,   318,   325,   335,   332,    64,    65,   333,   334,
+     337,   338,   452,   340,   423,   341,   346,   156,    67,    68,
+     347,   349,   147,   364,   365,   367,    69,    70,   368,   370,
+     378,   374,   156,    71,    72,    73,   156,   388,   400,   384,
+     385,    74,   401,   280,   380,   397,   169,    75,   404,   410,
+      76,   411,   412,   416,   424,   425,   435,   447,   436,   448,
+     456,    77,    78,   458,   468,   460,   469,   453,   229,    79,
+      80,   372,   443,   281,   152,   383,   311,    31,    62,    32,
+      63,   457,    81,   312,   146,   198,   201,   409,   417,    82,
+     230,   200,    83,    84,    64,    65,    66,   184,     0,     0,
+      85,     0,     0,     0,    86,     0,    67,    68,   254,   170,
+      31,    62,    32,    63,    69,    70,   255,     0,     0,     0,
        0,    71,    72,    73,     0,     0,     0,    64,    65,    74,
-       0,     0,     0,     0,   169,    75,     0,     0,    76,    67,
+       0,     0,     0,     0,     0,    75,     0,     0,    76,    67,
       68,     0,     0,     0,     0,     0,     0,    69,    70,    77,
       78,     0,     0,     0,    71,    72,    73,    79,    80,     0,
        0,     0,    74,     0,     0,     0,     0,     0,    75,     0,
       81,    76,     0,     0,     0,     0,     0,    82,     0,     0,
       83,    84,    77,    78,     0,     0,     0,     0,    85,     0,
-      79,    80,    86,     0,     0,     0,     0,   170,    31,    62,
-      32,    63,     0,    81,     0,     0,     0,    10,     0,     0,
+      79,    80,    86,     0,     0,     0,     0,    87,    31,    62,
+      32,    63,     0,    81,     0,     0,     0,     0,     0,     0,
       82,     0,     0,    83,    84,    64,    65,     0,     0,     0,
-       0,    85,     0,     0,     0,    86,     0,    67,    68,     0,
+       0,    85,   121,     0,     0,    86,     0,    67,    68,     0,
       87,    31,    62,    32,    63,    69,    70,     0,     0,     0,
-       0,     0,    71,    72,    73,     0,     0,     0,    64,   145,
-      74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
+       0,     0,    71,    72,    73,     0,     0,     0,    64,    65,
+      74,     0,     0,     0,     0,   169,    75,     0,     0,    76,
       67,    68,     0,     0,     0,     0,     0,     0,    69,    70,
       77,    78,     0,     0,     0,    71,    72,    73,    79,    80,
        0,     0,     0,    74,     0,     0,     0,     0,     0,    75,
        0,    81,    76,     0,     0,     0,     0,     0,    82,     0,
        0,    83,    84,    77,    78,     0,     0,     0,     0,    85,
-       0,    79,    80,    86,     0,     0,     0,     0,    87,     0,
-      62,     0,    63,     0,    81,     0,     0,     0,     0,     0,
-       0,    82,     0,     0,    83,    84,    64,   145,     0,     0,
-       0,     0,    85,    67,    68,     0,    86,     0,    67,    68,
-       0,    87,    70,     0,     0,     0,     0,    70,    71,    72,
-      73,     0,     0,    71,    72,    73,    74,     0,     0,     0,
-       0,    74,     0,     0,     0,    76,     0,     0,     0,     0,
-      76,     0,     0,     0,     0,     0,    77,   226,     0,     0,
-       0,    77,    78,     0,    79,     0,     0,     0,     0,    79,
-      80,     0,     0,     0,     0,     0,     0,    81,     0,     0,
-       0,     0,    81,     0,    82,     0,     0,    83,    84,    82,
-       0,     0,    83,    84,     0,    85,     0,     0,     0,    86,
-      85,     0,     0,     0,    86,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,     0,   136,   137,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   244
+       0,    79,    80,    86,     0,     0,     0,     0,   170,    31,
+      62,    32,    63,     0,    81,     0,     0,     0,    10,     0,
+       0,    82,     0,     0,    83,    84,    64,    65,     0,     0,
+       0,     0,    85,     0,     0,     0,    86,     0,    67,    68,
+       0,    87,    31,    62,    32,    63,    69,    70,     0,     0,
+       0,     0,     0,    71,    72,    73,     0,     0,     0,    64,
+     145,    74,     0,     0,     0,     0,     0,    75,     0,     0,
+      76,    67,    68,     0,     0,     0,     0,     0,     0,    69,
+      70,    77,    78,     0,     0,     0,    71,    72,    73,    79,
+      80,     0,     0,     0,    74,     0,     0,     0,     0,     0,
+      75,     0,    81,    76,     0,     0,     0,     0,     0,    82,
+       0,     0,    83,    84,    77,    78,     0,     0,     0,     0,
+      85,     0,    79,    80,    86,     0,     0,     0,     0,    87,
+       0,    62,     0,    63,     0,    81,     0,     0,     0,     0,
+       0,     0,    82,     0,     0,    83,    84,    64,   145,     0,
+       0,     0,     0,    85,    67,    68,     0,    86,     0,    67,
+      68,     0,    87,    70,     0,     0,     0,     0,    70,    71,
+      72,    73,     0,     0,    71,    72,    73,    74,     0,     0,
+       0,     0,    74,     0,     0,     0,    76,     0,     0,     0,
+       0,    76,     0,     0,     0,     0,     0,    77,   228,     0,
+       0,     0,    77,    78,     0,    79,     0,     0,     0,     0,
+      79,    80,     0,     0,     0,     0,     0,     0,    81,     0,
+       0,     0,     0,    81,     0,    82,     0,     0,    83,    84,
+      82,     0,     0,    83,    84,     0,    85,     0,     0,     0,
+      86,    85,     0,     0,     0,    86
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,    12,   177,   105,   133,    37,   202,    11,    12,     8,
-     193,    41,   117,     4,     0,     6,   224,     4,     8,     6,
-       7,    23,    24,     8,     8,    58,    30,   113,    21,    22,
-      34,    35,    36,    37,    38,   121,    10,   158,    58,    69,
-      26,    88,    29,    88,    21,    22,    43,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    87,    21,    22,
-      21,    22,    35,    88,     9,    38,    39,   169,    27,    66,
-     105,   121,    88,    21,    22,    61,    21,    22,   110,   126,
-     134,   126,   168,   116,   170,     4,   120,     6,    92,   123,
-      28,   274,   124,   104,     0,   149,   116,    94,    29,   103,
-     104,   126,   106,   107,   225,   135,    88,   111,   112,    72,
-     126,    85,    31,   117,   111,    17,    18,    19,   148,    57,
-     170,   106,   318,   127,    55,   127,   125,   302,    10,   133,
-     103,    78,   125,   124,   138,   125,   222,   124,   267,   116,
-     170,   125,   244,   147,   126,    73,   232,   233,   344,   324,
-     180,    63,    88,   183,   158,    88,   160,   161,   106,   264,
-     368,    43,   125,    88,   125,   124,    75,    44,    45,    51,
-      72,   157,   202,    68,    68,    87,    88,   105,   208,    74,
-      74,    64,   378,   288,    79,    79,   190,    82,    82,   193,
-     126,    70,   101,   126,     4,    79,     6,   109,    81,   285,
-      67,   126,   206,    85,    99,    99,    90,   211,    79,   384,
-       3,    79,    94,   243,   316,   245,    98,    96,   222,    90,
-     250,   225,    90,    21,    22,   105,   331,   257,   333,   111,
-     335,   126,   337,    67,    32,   285,   102,    53,   101,   126,
-       4,     9,     6,   117,    60,   350,   351,   120,   259,   122,
-     280,   114,   126,    21,    22,   259,    54,    21,    22,   345,
-     264,   124,    53,   267,    44,    45,    31,    31,   124,    60,
-     274,   125,   126,   125,   126,    78,   362,   125,   126,    21,
-      22,   125,   126,   388,   288,   315,   372,   392,   318,   394,
-     125,   126,   125,   126,     5,   345,    88,   327,   125,   126,
-     124,   305,   125,   126,   390,   125,   126,   125,   126,   117,
-     125,   126,   125,   126,   344,     7,   125,   126,   125,   126,
-     125,   126,   372,   125,   126,   125,   126,   331,     7,   333,
-     124,   335,    77,   337,   124,   421,     5,   423,   124,   425,
-     390,   427,   125,   126,   125,   126,   350,   351,   378,    77,
-     380,     5,    67,   126,   124,   118,     7,   124,   362,     7,
-     465,    11,   101,   124,   450,   124,     8,   453,     9,   455,
-      59,   421,   125,   423,    20,   425,    67,   427,   483,   125,
-     124,    69,   487,    80,   388,   125,   416,   125,   392,   124,
-     394,   113,   124,    80,   114,     1,    59,     3,    79,   429,
-     450,    40,     7,   453,   408,   455,     7,    71,   124,     5,
-     124,   415,    27,   126,   118,    85,   124,   124,    80,    85,
-      79,   124,    79,    79,    30,    93,    93,    36,    89,   124,
-       4,     5,     6,     7,   124,     5,    91,   441,   442,    83,
-      46,    47,   126,    40,   124,   475,    52,    21,    22,    23,
-      40,    57,     7,    98,   125,    86,   460,    92,   462,    33,
-      34,   465,     7,   308,   442,   167,   126,    41,    42,    75,
-     462,   124,   124,   206,    48,    49,    50,   104,   232,   483,
-     269,    55,    56,   487,   233,   267,   135,   475,    62,    95,
-     168,    65,   139,   101,   123,   101,   181,    -1,   181,   384,
-      -1,   144,    76,    77,    -1,   406,   112,    -1,    -1,    -1,
-      84,    85,   118,    -1,   120,    -1,    -1,    -1,     4,     5,
-       6,     7,    -1,    97,    10,    -1,    -1,    -1,    -1,    -1,
-     104,    -1,    -1,   107,   108,    21,    22,    -1,    -1,    -1,
-      -1,   115,    -1,    -1,    -1,   119,    -1,    33,    34,    -1,
-     124,   125,    -1,    -1,    -1,    41,    42,    -1,    -1,    -1,
-      -1,    -1,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,
-      56,    -1,    -1,    -1,    -1,    61,    62,    -1,    -1,    65,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
-      -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
-      -1,    97,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,
-      -1,   107,   108,    21,    22,    23,    -1,    -1,    -1,   115,
-      -1,    -1,    -1,   119,    -1,    33,    34,    -1,   124,     4,
-       5,     6,     7,    41,    42,    -1,    -1,    -1,    -1,    -1,
-      48,    49,    50,    -1,    -1,    -1,    21,    22,    56,    -1,
-      -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    76,    77,
-      -1,    -1,    -1,    48,    49,    50,    84,    85,    -1,    -1,
-      -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    97,
-      65,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,   107,
-     108,    76,    77,    -1,    -1,    -1,    -1,   115,    -1,    84,
-      85,   119,    -1,    -1,    -1,    -1,   124,     4,     5,     6,
-       7,    -1,    97,    -1,    -1,    -1,    -1,    -1,    -1,   104,
-      -1,    -1,   107,   108,    21,    22,    -1,    -1,    -1,    -1,
-     115,   116,    -1,    -1,   119,    -1,    33,    34,    -1,   124,
-       4,     5,     6,     7,    41,    42,    -1,    -1,    -1,    -1,
+       4,   121,   117,    12,   226,   105,   113,    11,    12,     0,
+     133,    41,   204,     8,   121,     4,   177,     6,     7,     4,
+       8,     6,    27,    10,     8,     4,    30,     6,    21,    22,
+      34,    35,    36,    37,    38,    26,    58,   158,     8,    69,
+      29,   190,    17,    18,    19,    23,    24,    21,    22,   105,
+     170,    64,   195,   117,   105,    28,    58,    87,    73,    21,
+      22,   168,   126,   170,     1,    29,     3,   190,    81,   169,
+      61,    67,    21,    22,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    57,    21,    22,    63,    92,    37,
+     105,    55,    78,    30,   116,   104,     0,    72,    85,   103,
+     104,    43,   106,   107,     3,   135,   227,   111,   112,    46,
+      47,    87,    88,   117,   116,    52,   101,   224,   148,   124,
+      57,   270,   106,   127,    66,   102,   318,   234,   235,   133,
+     125,   274,   125,   109,   138,   124,    72,   125,    75,   124,
+     170,   302,   364,   147,   106,   124,   246,   270,   340,   127,
+     180,   125,    94,   183,   158,   125,   160,   161,    95,    44,
+      45,    10,   110,   324,   101,   285,   157,   116,   120,   111,
+      53,   123,    75,   288,   204,   112,   124,    60,   285,    68,
+     210,   118,   374,   120,   124,    74,   190,   191,    70,   125,
+      79,   195,    35,    82,    43,    38,    39,    68,   101,     4,
+      67,     6,    51,    74,   208,   126,    53,    21,    22,   213,
+      99,    82,   335,    60,    96,   245,   316,   247,    32,   380,
+     224,   341,   252,   227,   101,     4,    31,     6,    99,   259,
+      31,   346,   347,     4,   341,     6,    85,   114,    44,    45,
+      54,   134,    21,    22,   120,    94,   122,   124,   368,    98,
+     280,   358,    31,   262,   125,     9,   149,    78,   262,     9,
+     103,   368,   111,   125,   126,     5,   270,    21,    22,    88,
+     274,    21,    22,   125,   126,   117,     4,     5,     6,     7,
+     125,   126,    21,    22,   288,   315,   125,   126,   318,   124,
+     410,   125,   126,    21,    22,    23,     7,   327,   125,   126,
+       7,   305,   124,   410,   124,    33,    34,   125,   126,    77,
+     340,     5,   124,    41,    42,   125,   126,   125,   126,    77,
+      48,    49,    50,   125,   126,     5,   441,    55,    56,   125,
+     126,   335,   125,   126,    62,   125,   126,    65,   125,   126,
+      67,   456,   346,   347,   374,   460,   376,   124,    76,    77,
+     125,   126,   125,   126,   358,   118,    84,    85,   124,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    97,
+      21,    22,   125,   126,   126,   405,   104,   125,   126,   107,
+     108,   411,   125,   126,     7,     7,    11,   115,   101,   124,
+     124,   119,     8,   397,     9,    59,   124,   125,    67,    20,
+     404,   125,   125,    69,   126,   125,   125,   124,    80,     4,
+       5,     6,     7,    80,   124,    10,   113,    59,   448,   423,
+     424,    72,   124,   114,    79,    90,    21,    22,    90,    90,
+       7,     7,   436,    40,   438,    71,   124,   441,    33,    34,
+     124,     5,    27,   126,   118,    85,    41,    42,   124,    80,
+      85,   124,   456,    48,    49,    50,   460,    89,    36,    93,
+      93,    56,    91,   126,   124,   124,    61,    62,   124,    88,
+      65,    40,    83,     5,   124,    40,     7,   125,    98,   126,
+     124,    76,    77,    86,    92,   124,     7,   438,   167,    84,
+      85,   308,   424,   208,   104,   335,   234,     4,     5,     6,
+       7,   448,    97,   235,   101,   135,   144,   380,   395,   104,
+     168,   139,   107,   108,    21,    22,    23,   123,    -1,    -1,
+     115,    -1,    -1,    -1,   119,    -1,    33,    34,   181,   124,
+       4,     5,     6,     7,    41,    42,   181,    -1,    -1,    -1,
       -1,    48,    49,    50,    -1,    -1,    -1,    21,    22,    56,
-      -1,    -1,    -1,    -1,    61,    62,    -1,    -1,    65,    33,
+      -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    33,
       34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    76,
       77,    -1,    -1,    -1,    48,    49,    50,    84,    85,    -1,
       -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
       97,    65,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,
      107,   108,    76,    77,    -1,    -1,    -1,    -1,   115,    -1,
       84,    85,   119,    -1,    -1,    -1,    -1,   124,     4,     5,
-       6,     7,    -1,    97,    -1,    -1,    -1,   101,    -1,    -1,
+       6,     7,    -1,    97,    -1,    -1,    -1,    -1,    -1,    -1,
      104,    -1,    -1,   107,   108,    21,    22,    -1,    -1,    -1,
-      -1,   115,    -1,    -1,    -1,   119,    -1,    33,    34,    -1,
+      -1,   115,   116,    -1,    -1,   119,    -1,    33,    34,    -1,
      124,     4,     5,     6,     7,    41,    42,    -1,    -1,    -1,
       -1,    -1,    48,    49,    50,    -1,    -1,    -1,    21,    22,
-      56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
+      56,    -1,    -1,    -1,    -1,    61,    62,    -1,    -1,    65,
       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,
       76,    77,    -1,    -1,    -1,    48,    49,    50,    84,    85,
       -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,
       -1,    97,    65,    -1,    -1,    -1,    -1,    -1,   104,    -1,
       -1,   107,   108,    76,    77,    -1,    -1,    -1,    -1,   115,
-      -1,    84,    85,   119,    -1,    -1,    -1,    -1,   124,    -1,
-       5,    -1,     7,    -1,    97,    -1,    -1,    -1,    -1,    -1,
+      -1,    84,    85,   119,    -1,    -1,    -1,    -1,   124,     4,
+       5,     6,     7,    -1,    97,    -1,    -1,    -1,   101,    -1,
       -1,   104,    -1,    -1,   107,   108,    21,    22,    -1,    -1,
-      -1,    -1,   115,    33,    34,    -1,   119,    -1,    33,    34,
-      -1,   124,    42,    -1,    -1,    -1,    -1,    42,    48,    49,
-      50,    -1,    -1,    48,    49,    50,    56,    -1,    -1,    -1,
-      -1,    56,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
-      -1,    76,    77,    -1,    84,    -1,    -1,    -1,    -1,    84,
-      85,    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,    -1,
-      -1,    -1,    97,    -1,   104,    -1,    -1,   107,   108,   104,
-      -1,    -1,   107,   108,    -1,   115,    -1,    -1,    -1,   119,
-     115,    -1,    -1,    -1,   119,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    -1,    21,    22,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72
+      -1,    -1,   115,    -1,    -1,    -1,   119,    -1,    33,    34,
+      -1,   124,     4,     5,     6,     7,    41,    42,    -1,    -1,
+      -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    21,
+      22,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
+      65,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    41,
+      42,    76,    77,    -1,    -1,    -1,    48,    49,    50,    84,
+      85,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,
+      62,    -1,    97,    65,    -1,    -1,    -1,    -1,    -1,   104,
+      -1,    -1,   107,   108,    76,    77,    -1,    -1,    -1,    -1,
+     115,    -1,    84,    85,   119,    -1,    -1,    -1,    -1,   124,
+      -1,     5,    -1,     7,    -1,    97,    -1,    -1,    -1,    -1,
+      -1,    -1,   104,    -1,    -1,   107,   108,    21,    22,    -1,
+      -1,    -1,    -1,   115,    33,    34,    -1,   119,    -1,    33,
+      34,    -1,   124,    42,    -1,    -1,    -1,    -1,    42,    48,
+      49,    50,    -1,    -1,    48,    49,    50,    56,    -1,    -1,
+      -1,    -1,    56,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      -1,    65,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
+      -1,    -1,    76,    77,    -1,    84,    -1,    -1,    -1,    -1,
+      84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    97,    -1,
+      -1,    -1,    -1,    97,    -1,   104,    -1,    -1,   107,   108,
+     104,    -1,    -1,   107,   108,    -1,   115,    -1,    -1,    -1,
+     119,   115,    -1,    -1,    -1,   119
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1258,54 +1223,51 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,     3,    30,    46,    47,    52,    57,    75,    95,
      101,   112,   118,   120,   129,   130,   131,   132,   133,   134,
-     135,   156,   157,   160,   161,   164,   165,   168,   221,   222,
-     105,     4,     6,   219,    73,   105,    67,   105,    78,    29,
-      55,   169,   219,   166,   167,   181,   219,     0,   120,   122,
-      75,   168,   120,   123,     3,   219,    67,   219,   219,   219,
-     219,   219,     5,     7,    21,    22,    23,    33,    34,    41,
+     135,   156,   157,   160,   161,   164,   165,   168,   220,   221,
+     105,     4,     6,   218,    73,   105,    67,   105,    78,    29,
+      55,   169,   218,   166,   167,   180,   218,     0,   120,   122,
+      75,   168,   120,   123,     3,   218,    67,   218,   218,   218,
+     218,   218,     5,     7,    21,    22,    23,    33,    34,    41,
       42,    48,    49,    50,    56,    62,    65,    76,    77,    84,
       85,    97,   104,   107,   108,   115,   119,   124,   138,   170,
-     171,   172,   197,   198,   199,   200,   201,   202,   203,   210,
-     212,   215,   219,   102,   126,    31,   124,    78,    28,    57,
-       5,    88,   124,   117,   191,   192,   114,   124,   168,     7,
-       7,   116,   197,   206,   207,   124,    77,   124,     5,   124,
-      77,   197,     5,    67,   173,   126,    21,    22,    31,   216,
-     219,    23,    24,   127,   217,    22,   200,    27,   124,   162,
-     163,   219,   167,   124,   177,   218,   219,   219,    44,    45,
-      44,    45,   118,   158,   219,   136,   137,   219,    10,    61,
-     124,   193,   194,   195,   196,   197,   212,   124,   218,   193,
-     116,   204,   205,    58,   207,   208,     7,   219,     7,   125,
-     177,   179,   182,   201,   219,   191,   172,   219,   198,   199,
-     219,    23,    55,   125,   197,   209,   126,   191,    11,   168,
-     125,   126,   168,   136,    43,    66,    94,   111,   142,   219,
-     219,   124,   124,   145,   125,   126,    77,   138,   196,   177,
-     193,   197,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    72,   214,    20,   210,   211,   125,
-     106,   197,   205,   208,   197,    59,   125,    67,   125,    31,
-     180,   181,    68,    74,    79,    82,    99,   126,   174,   175,
-     176,   180,    37,   110,   178,    69,   183,   125,   209,   125,
-     126,   163,   197,   125,   219,   124,    80,    80,   124,    53,
-      60,   159,   212,   213,   219,   113,   142,   143,   144,   136,
+     171,   172,   196,   197,   198,   199,   200,   201,   202,   209,
+     211,   214,   218,   102,   126,    31,   124,    78,    28,    57,
+       5,    88,   124,   117,   190,   191,   114,   124,   168,     7,
+       7,   116,   196,   205,   206,   124,    77,   124,     5,   124,
+      77,   196,     5,    67,   173,   126,    21,    22,    31,   215,
+     218,    23,    24,   127,   216,    22,   199,    27,   124,   162,
+     163,   218,   167,   124,   174,   217,   218,   218,    44,    45,
+      44,    45,   118,   158,   218,   136,   137,   218,    10,    61,
+     124,   192,   193,   194,   195,   196,   211,   124,   217,   192,
+     116,   203,   204,    58,   206,   207,     7,   218,     7,   125,
+     124,   174,   177,   178,   181,   200,   218,   190,   172,   218,
+     197,   198,   218,    23,    55,   125,   196,   208,   126,   190,
+      11,   168,   125,   126,   168,   136,    43,    66,    94,   111,
+     142,   218,   218,   124,   124,   145,   125,   126,    77,   138,
+     195,   174,   192,   196,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    72,   213,    20,   209,
+     210,   125,   106,   196,   204,   207,   196,    59,   125,    67,
+     125,   177,    31,   179,   180,    68,    74,    82,    99,   176,
+     126,   179,    37,   110,   175,    69,   182,   125,   208,   125,
+     126,   163,   196,   125,   218,   124,    80,    80,   124,    53,
+      60,   159,   211,   212,   218,   113,   142,   143,   144,   136,
       10,    43,    51,    85,    94,    98,   111,   139,   140,   141,
-     125,   194,   195,    17,    18,    19,    72,   197,   124,   177,
-     197,    10,    85,   125,   126,   114,   197,   106,    59,   197,
-     181,    79,    90,    79,   218,    79,    90,    79,    90,   179,
-     176,     7,     7,   180,    40,    71,   184,   125,   197,   193,
-     124,   124,   218,     5,    63,    87,    88,   109,   220,   125,
-     126,   125,   126,    35,    38,    39,   103,   154,   126,   118,
-     146,    85,   124,   210,    80,   219,   139,   197,   124,   177,
-       9,   209,    85,   210,   124,   197,   125,   218,    79,   218,
-      88,   218,    79,   218,    79,    93,    93,   209,   193,    89,
-     185,   125,   218,   218,   125,    53,    60,   212,   124,   155,
-     142,    36,    91,   147,   193,   124,     9,   209,   197,   125,
-     211,    88,   218,    88,   193,    88,   218,    88,   218,    40,
-      83,   186,   125,   125,     5,   220,   149,   150,   151,   152,
-     153,   219,   124,    40,   125,   219,   197,   125,   125,   193,
-      88,   193,   193,    88,   193,    88,   187,   188,   197,     7,
-      98,   125,   126,     7,    29,   124,   219,   149,    70,    96,
-     148,   125,   193,   193,   193,   126,    32,    54,   189,   219,
-     150,   218,   125,   124,   188,    86,   190,   124,   125,   218,
-      64,    81,   218,   125,   125,    92,     7
+     125,   193,   194,    17,    18,    19,    72,   196,   124,   174,
+     196,    10,    85,   125,   126,   114,   196,   106,    59,   196,
+     125,   180,    90,    90,    90,    79,   177,     7,     7,   179,
+      40,    71,   183,   125,   196,   192,   124,   124,   217,     5,
+      63,    87,    88,   109,   219,   125,   126,   125,   126,    35,
+      38,    39,   103,   154,   126,   118,   146,    85,   124,   209,
+      80,   218,   139,   196,   124,   174,     9,   208,    85,   209,
+     124,   196,   125,   178,    93,    93,   208,   192,    89,   184,
+     125,   217,   217,   125,    53,    60,   211,   124,   155,   142,
+      36,    91,   147,   192,   124,     9,   208,   196,   125,   210,
+      88,    40,    83,   185,   125,   125,     5,   219,   149,   150,
+     151,   152,   153,   218,   124,    40,   125,   218,   196,   125,
+     125,   192,   186,   187,   196,     7,    98,   125,   126,     7,
+      29,   124,   218,   149,    70,    96,   148,   125,   126,    32,
+      54,   188,   218,   150,   217,   125,   124,   187,    86,   189,
+     124,   125,   217,    64,    81,   217,   125,   125,    92,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1323,20 +1285,20 @@ static const yytype_uint8 yyr1[] =
      156,   156,   156,   157,   158,   158,   159,   159,   159,   159,
      160,   161,   162,   162,   163,   164,   164,   165,   166,   166,
      167,   168,   169,   169,   169,   170,   170,   171,   171,   172,
-     172,   172,   173,   174,   174,   175,   175,   176,   176,   176,
-     176,   176,   176,   176,   176,   177,   178,   178,   178,   179,
-     179,   179,   179,   179,   180,   180,   181,   181,   182,   182,
-     183,   183,   184,   184,   185,   185,   186,   186,   187,   187,
-     188,   189,   189,   189,   190,   190,   190,   191,   191,   192,
-     193,   193,   194,   194,   195,   195,   196,   196,   196,   196,
-     196,   196,   196,   196,   196,   196,   196,   197,   197,   198,
-     198,   199,   199,   200,   200,   200,   200,   200,   200,   201,
-     201,   201,   201,   202,   203,   203,   204,   204,   205,   206,
-     206,   207,   208,   208,   209,   209,   210,   210,   210,   210,
-     210,   210,   210,   211,   211,   212,   212,   213,   213,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   215,
-     216,   216,   217,   217,   217,   218,   218,   219,   219,   220,
-     220,   220,   220,   221,   222,   222
+     172,   172,   173,   174,   175,   175,   175,   176,   176,   176,
+     176,   176,   176,   176,   176,   177,   177,   178,   178,   178,
+     178,   178,   178,   179,   179,   180,   180,   181,   181,   182,
+     182,   183,   183,   184,   184,   185,   185,   186,   186,   187,
+     188,   188,   188,   189,   189,   189,   190,   190,   191,   192,
+     192,   193,   193,   194,   194,   195,   195,   195,   195,   195,
+     195,   195,   195,   195,   195,   195,   196,   196,   197,   197,
+     198,   198,   199,   199,   199,   199,   199,   199,   200,   200,
+     200,   200,   201,   202,   202,   203,   203,   204,   205,   205,
+     206,   207,   207,   208,   208,   209,   209,   209,   209,   209,
+     209,   209,   210,   210,   211,   211,   212,   212,   213,   213,
+     213,   213,   213,   213,   213,   213,   213,   213,   214,   215,
+     215,   216,   216,   216,   217,   217,   218,   218,   219,   219,
+     219,   219,   220,   221,   221
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1354,20 +1316,20 @@ static const yytype_uint8 yyr2[] =
        7,     4,     5,     5,     0,     4,     2,     2,     4,     4,
        5,     4,     3,     1,     3,     1,     2,     2,     1,     3,
        3,     9,     0,     1,     1,     1,     1,     1,     3,     3,
-       2,     1,     3,     0,     1,     2,     1,     5,     4,     6,
-       5,     6,     5,     6,     5,     3,     0,     3,     3,     2,
-       3,     2,     2,     1,     1,     2,     1,     4,     1,     3,
-       0,     3,     0,     2,     0,     3,     0,     2,     1,     3,
-       3,     0,     1,     1,     0,     2,     2,     0,     1,     2,
-       3,     1,     3,     1,     2,     1,     5,     6,     4,     3,
-       3,     3,     2,     3,     5,     4,     6,     3,     1,     3,
-       1,     2,     1,     1,     1,     1,     1,     1,     3,     3,
-       4,     4,     5,     6,     5,     4,     1,     2,     4,     1,
-       2,     4,     0,     2,     1,     3,     1,     1,     2,     2,
-       1,     2,     2,     1,     3,     1,     3,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     2,     1,     2,     1,
-       1,     1,     1,     1,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     2,     2,     0
+       2,     1,     2,     3,     0,     3,     3,     0,     1,     1,
+       2,     1,     2,     1,     2,     6,     1,     2,     3,     2,
+       2,     1,     3,     1,     2,     1,     4,     1,     3,     0,
+       3,     0,     2,     0,     3,     0,     2,     1,     3,     3,
+       0,     1,     1,     0,     2,     2,     0,     1,     2,     3,
+       1,     3,     1,     2,     1,     5,     6,     4,     3,     3,
+       3,     2,     3,     5,     4,     6,     3,     1,     3,     1,
+       2,     1,     1,     1,     1,     1,     1,     3,     3,     4,
+       4,     5,     6,     5,     4,     1,     2,     4,     1,     2,
+       4,     0,     2,     1,     3,     1,     1,     2,     2,     1,
+       2,     2,     1,     3,     1,     3,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     2,     1,     2,     1,     1,
+       1,     1,     1,     1,     1,     3,     1,     1,     1,     1,
+       1,     1,     2,     2,     0
 };
 
 
@@ -1864,893 +1826,909 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
   switch (yytype)
     {
           case 3: /* TOKEN_COMMAND  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1874 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1836 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1884 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1846 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1894 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1856 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1904 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1866 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 1914 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1876 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 130: /* sql_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1924 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1886 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 131: /* quit_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).quit_statement_) != nullptr) {
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 1934 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1896 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 132: /* alter_table_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1944 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1906 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 133: /* create_table_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).create_table_statement_) != nullptr) {
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 1954 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1916 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 134: /* create_index_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1964 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1926 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 135: /* drop_table_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).drop_table_statement_) != nullptr) {
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 1974 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1936 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 136: /* column_def  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 1984 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1946 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 137: /* column_def_commalist  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_list_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 1994 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1956 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 138: /* data_type  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).data_type_) != nullptr) {
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 2004 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1966 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 139: /* column_constraint_def  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_) != nullptr) {
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 2014 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1976 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 140: /* column_constraint_def_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2024 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1986 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 141: /* opt_column_constraint_def_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2034 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1996 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 145: /* opt_column_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2044 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2006 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 146: /* opt_block_properties  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).block_properties_) != nullptr) {
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2054 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2016 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 147: /* opt_partition_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).partition_clause_) != nullptr) {
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2064 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2026 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 148: /* partition_type  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2074 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2036 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 149: /* key_value_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2084 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2046 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 150: /* key_value  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_) != nullptr) {
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2094 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2056 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 151: /* key_string_value  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_value_) != nullptr) {
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2104 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2066 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 152: /* key_string_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_list_) != nullptr) {
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2114 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2076 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 153: /* key_integer_value  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_integer_value_) != nullptr) {
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2124 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2086 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 154: /* index_type  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2134 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2096 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 155: /* opt_index_properties  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2144 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2106 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 156: /* insert_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).insert_statement_) != nullptr) {
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#line 2154 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2116 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 157: /* copy_from_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).copy_from_statement_) != nullptr) {
     delete ((*yyvaluep).copy_from_statement_);
   }
 }
-#line 2164 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2126 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 158: /* opt_copy_from_params  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).copy_from_params_) != nullptr) {
     delete ((*yyvaluep).copy_from_params_);
   }
 }
-#line 2174 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2136 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 159: /* copy_from_params  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).copy_from_params_) != nullptr) {
     delete ((*yyvaluep).copy_from_params_);
   }
 }
-#line 2184 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2146 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 160: /* update_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).update_statement_) != nullptr) {
     delete ((*yyvaluep).update_statement_);
   }
 }
-#line 2194 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2156 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 161: /* delete_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).delete_statement_) != nullptr) {
     delete ((*yyvaluep).delete_statement_);
   }
 }
-#line 2204 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2166 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 162: /* assignment_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_list_) != nullptr) {
     delete ((*yyvaluep).assignment_list_);
   }
 }
-#line 2214 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2176 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 163: /* assignment_item  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).assignment_) != nullptr) {
     delete ((*yyvaluep).assignment_);
   }
 }
-#line 2224 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2186 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 164: /* select_statement  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).select_statement_) != nullptr) {
     delete ((*yyvaluep).select_statement_);
   }
 }
-#line 2234 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2196 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 165: /* with_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2244 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2206 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 166: /* with_list  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_) != nullptr) {
     delete ((*yyvaluep).with_list_);
   }
 }
-#line 2254 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2216 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 167: /* with_list_element  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).with_list_element_) != nullptr) {
     delete ((*yyvaluep).with_list_element_);
   }
 }
-#line 2264 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2226 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 168: /* select_query  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).select_query_) != nullptr) {
     delete ((*yyvaluep).select_query_);
   }
 }
-#line 2274 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2236 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 170: /* selection  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_) != nullptr) {
     delete ((*yyvaluep).selection_);
   }
 }
-#line 2284 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2246 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 171: /* selection_item_commalist  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_list_) != nullptr) {
     delete ((*yyvaluep).selection_list_);
   }
 }
-#line 2294 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2256 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 172: /* selection_item  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).selection_item_) != nullptr) {
     delete ((*yyvaluep).selection_item_);
   }
 }
-#line 2304 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2266 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 173: /* from_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2314 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2276 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 177: /* subquery_expression  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 174: /* subquery_expression  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).subquery_expression_) != nullptr) {
     delete ((*yyvaluep).subquery_expression_);
   }
 }
-#line 2324 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2286 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 178: /* opt_sample_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 175: /* opt_sample_clause  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_sample_clause_) != nullptr) {
     delete ((*yyvaluep).opt_sample_clause_);
   }
 }
-#line 2334 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2296 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 179: /* table_reference  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 176: /* join_type  */
+#line 564 "../SqlParser.ypp" /* yacc.c:1257  */
+      { }
+#line 2302 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 177: /* joined_table_reference  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_) != nullptr) {
     delete ((*yyvaluep).table_reference_);
   }
 }
-#line 2344 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2312 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 180: /* table_reference_signature  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 178: /* table_reference  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+      {
+  if (((*yyvaluep).table_reference_) != nullptr) {
+    delete ((*yyvaluep).table_reference_);
+  }
+}
+#line 2322 "SqlParser_gen.cpp" /* yacc.c:1257  */
+        break;
+
+    case 179: /* table_reference_signature  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2354 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2332 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 181: /* table_reference_signature_primary  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 180: /* table_reference_signature_primary  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_signature_) != nullptr) {
     delete ((*yyvaluep).table_reference_signature_);
   }
 }
-#line 2364 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2342 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 182: /* table_reference_commalist  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 181: /* joined_table_reference_commalist  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).table_reference_list_) != nullptr) {
     delete ((*yyvaluep).table_reference_list_);
   }
 }
-#line 2374 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2352 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 183: /* opt_group_by_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 182: /* opt_group_by_clause  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_group_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_group_by_clause_);
   }
 }
-#line 2384 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2362 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 184: /* opt_having_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 183: /* opt_having_clause  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_having_clause_) != nullptr) {
     delete ((*yyvaluep).opt_having_clause_);
   }
 }
-#line 2394 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2372 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 185: /* opt_order_by_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 184: /* opt_order_by_clause  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_order_by_clause_) != nullptr) {
     delete ((*yyvaluep).opt_order_by_clause_);
   }
 }
-#line 2404 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2382 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 186: /* opt_limit_clause  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 185: /* opt_limit_clause  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).opt_limit_clause_) != nullptr) {
     delete ((*yyvaluep).opt_limit_clause_);
   }
 }
-#line 2414 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2392 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 187: /* order_commalist  */
-#line 561 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 186: /* order_commalist  */
+#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
       {
  

<TRUNCATED>