]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: point "no new variables" error at right line number.
authorDaniel Morsing <daniel.morsing@gmail.com>
Mon, 30 Jul 2012 02:24:19 +0000 (22:24 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 30 Jul 2012 02:24:19 +0000 (22:24 -0400)
Fixes #3856.

R=dsymonds, rsc
CC=golang-dev
https://golang.org/cl/6455056

src/cmd/gc/dcl.c
src/cmd/gc/go.h
src/cmd/gc/go.y
src/cmd/gc/lex.c
src/cmd/gc/y.tab.c
src/cmd/gc/y.tab.h
test/declbad.go

index 32f334b710d5dfab367e51a269fe092d24d1c174..63a55c74b1318a9cdddc0defd61ad4c9cc8ece5f 100644 (file)
@@ -464,7 +464,7 @@ colasdefn(NodeList *left, Node *defn)
                if(isblank(n))
                        continue;
                if(!colasname(n)) {
-                       yyerror("non-name %N on left side of :=", n);
+                       yyerrorl(defn->lineno, "non-name %N on left side of :=", n);
                        nerr++;
                        continue;
                }
@@ -479,11 +479,11 @@ colasdefn(NodeList *left, Node *defn)
                l->n = n;
        }
        if(nnew == 0 && nerr == 0)
-               yyerror("no new variables on left side of :=");
+               yyerrorl(defn->lineno, "no new variables on left side of :=");
 }
 
 Node*
-colas(NodeList *left, NodeList *right)
+colas(NodeList *left, NodeList *right, int32 lno)
 {
        Node *as;
 
@@ -491,6 +491,7 @@ colas(NodeList *left, NodeList *right)
        as->list = left;
        as->rlist = right;
        as->colas = 1;
+       as->lineno = lno;
        colasdefn(left, as);
 
        // make the tree prettier; not necessary
index 9045922d37d3429b0e2651fe08f708eafe4c3390..5c482f19b5a5b61a3f47fb2020f0ff07ec47174a 100644 (file)
@@ -928,7 +928,7 @@ void        nodfconst(Node *n, Type *t, Mpflt* fval);
 void   addmethod(Sym *sf, Type *t, int local);
 void   addvar(Node *n, Type *t, int ctxt);
 NodeList*      checkarglist(NodeList *all, int input);
-Node*  colas(NodeList *left, NodeList *right);
+Node*  colas(NodeList *left, NodeList *right, int32 lno);
 void   colasdefn(NodeList *left, Node *defn);
 NodeList*      constiter(NodeList *vl, Node *t, NodeList *cl);
 Node*  dclname(Sym *s);
index f95058721415ae70d7d411f85eeeb51b1cecb5b6..42c78d8e9f9f0acad7643f002491dc839fbee99c 100644 (file)
@@ -37,8 +37,8 @@ static void fixlbrace(int);
 // |sed 's/.*  //' |9 fmt -l1 |sort |9 fmt -l50 | sed 's/^/%xxx                /'
 
 %token <val>   LLITERAL
-%token <i>     LASOP
-%token <sym>   LBREAK LCASE LCHAN LCOLAS LCONST LCONTINUE LDDD
+%token <i>     LASOP LCOLAS
+%token <sym>   LBREAK LCASE LCHAN LCONST LCONTINUE LDDD
 %token <sym>   LDEFAULT LDEFER LELSE LFALL LFOR LFUNC LGO LGOTO
 %token <sym>   LIF LIMPORT LINTERFACE LMAP LNAME
 %token <sym>   LPACKAGE LRANGE LRETURN LSELECT LSTRUCT LSWITCH
@@ -437,7 +437,7 @@ simple_stmt:
                                $$->left = dclname($1->n->sym);  // it's a colas, so must not re-use an oldname.
                        break;
                }
-               $$ = colas($1, $3);
+               $$ = colas($1, $3, $2);
        }
 |      expr LINC
        {
@@ -496,7 +496,7 @@ case:
                // done in casebody()
                markdcl();
                $$ = nod(OXCASE, N, N);
-               $$->list = list1(colas($2, list1($4)));
+               $$->list = list1(colas($2, list1($4), $3));
        }
 |      LDEFAULT ':'
        {
index 641cb6f62c593c248850cb54ab5095dbdda31140..f07a23c150f294dbd83fe4227290ed8576bab9f9 100644 (file)
@@ -973,6 +973,7 @@ l0:
                c1 = getc();
                if(c1 == '=') {
                        c = LCOLAS;
+                       yylval.i = lexlineno;
                        goto lx;
                }
                break;
index 97bf233eb7daa3cc98fab50c1dbef1fd2f1ac1ec..b19c477313e01b9df66744e2dba2059fb66132a9 100644 (file)
@@ -106,10 +106,10 @@ static void fixlbrace(int);
    enum yytokentype {
      LLITERAL = 258,
      LASOP = 259,
-     LBREAK = 260,
-     LCASE = 261,
-     LCHAN = 262,
-     LCOLAS = 263,
+     LCOLAS = 260,
+     LBREAK = 261,
+     LCASE = 262,
+     LCHAN = 263,
      LCONST = 264,
      LCONTINUE = 265,
      LDDD = 266,
@@ -158,10 +158,10 @@ static void fixlbrace(int);
 /* Tokens.  */
 #define LLITERAL 258
 #define LASOP 259
-#define LBREAK 260
-#define LCASE 261
-#define LCHAN 262
-#define LCOLAS 263
+#define LCOLAS 260
+#define LBREAK 261
+#define LCASE 262
+#define LCHAN 263
 #define LCONST 264
 #define LCONTINUE 265
 #define LDDD 266
@@ -457,7 +457,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2131
+#define YYLAST   2097
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  76
@@ -573,12 +573,12 @@ static const yytype_int16 yyrhs[] =
       -1,   181,   142,    65,   182,    -1,   181,    65,   182,    -1,
       94,    -1,   181,   142,    -1,   181,    -1,   137,    -1,    96,
      142,    -1,   123,    -1,   123,     4,   123,    -1,   182,    65,
-     182,    -1,   182,     8,   182,    -1,   123,    42,    -1,   123,
-      37,    -1,     6,   183,    66,    -1,     6,   183,    65,   123,
-      66,    -1,     6,   183,     8,   123,    66,    -1,    12,    66,
+     182,    -1,   182,     5,   182,    -1,   123,    42,    -1,   123,
+      37,    -1,     7,   183,    66,    -1,     7,   183,    65,   123,
+      66,    -1,     7,   183,     5,   123,    66,    -1,    12,    66,
       -1,    -1,    67,   101,   179,    68,    -1,    -1,    99,   103,
      179,    -1,    -1,   104,   102,    -1,    -1,    35,   106,   179,
-      68,    -1,   182,    65,    26,   123,    -1,   182,     8,    26,
+      68,    -1,   182,    65,    26,   123,    -1,   182,     5,    26,
      123,    -1,   190,    62,   190,    62,   190,    -1,   190,    -1,
      107,    -1,   108,   105,    -1,    -1,    16,   111,   109,    -1,
      190,    -1,   190,    62,   190,    -1,    -1,    -1,    -1,    20,
@@ -615,10 +615,10 @@ static const yytype_int16 yyrhs[] =
       -1,   148,    -1,    59,   142,    60,    -1,   157,    -1,   149,
       -1,   149,    -1,   151,    -1,   157,    -1,   149,    -1,   150,
       -1,   148,    -1,   139,    -1,   139,    63,   137,    -1,    71,
-     188,    72,   142,    -1,    71,    11,    72,   142,    -1,     7,
-     144,    -1,     7,    36,   142,    -1,    23,    71,   142,    72,
+     188,    72,   142,    -1,    71,    11,    72,   142,    -1,     8,
+     144,    -1,     8,    36,   142,    -1,    23,    71,   142,    72,
      142,    -1,   152,    -1,   153,    -1,    53,   142,    -1,    36,
-       7,   142,    -1,    29,   133,   166,   186,    68,    -1,    29,
+       8,   142,    -1,    29,   133,   166,   186,    68,    -1,    29,
      133,    68,    -1,    22,   133,   167,   186,    68,    -1,    22,
      133,    68,    -1,    17,   155,   158,    -1,   137,    59,   175,
       60,   159,    -1,    59,   175,    60,   137,    59,   175,    60,
@@ -639,7 +639,7 @@ static const yytype_int16 yyrhs[] =
      173,    -1,   174,    75,   173,    -1,    -1,   174,   187,    -1,
       -1,   100,    -1,    91,    -1,   177,    -1,     1,    -1,    98,
       -1,   110,    -1,   118,    -1,   121,    -1,   113,    -1,    -1,
-     140,    66,   178,   176,    -1,    15,    -1,     5,   136,    -1,
+     140,    66,   178,   176,    -1,    15,    -1,     6,   136,    -1,
       10,   136,    -1,    18,   125,    -1,    13,   125,    -1,    19,
      134,    -1,    27,   189,    -1,   176,    -1,   179,    62,   176,
       -1,   134,    -1,   180,    75,   134,    -1,   135,    -1,   181,
@@ -656,9 +656,9 @@ static const yytype_int16 yyrhs[] =
       -1,   200,    -1,   202,    -1,   138,    -1,    24,    -1,    71,
       72,   198,    -1,    71,     3,    72,   198,    -1,    23,    71,
      198,    72,   198,    -1,    29,    67,   192,    68,    -1,    22,
-      67,   193,    68,    -1,    53,   198,    -1,     7,   199,    -1,
-       7,    59,   201,    60,    -1,     7,    36,   198,    -1,    36,
-       7,   198,    -1,    17,    59,   191,    60,   206,    -1,   137,
+      67,   193,    68,    -1,    53,   198,    -1,     8,   199,    -1,
+       8,    59,   201,    60,    -1,     8,    36,   198,    -1,    36,
+       8,   198,    -1,    17,    59,   191,    60,   206,    -1,   137,
      198,   194,    -1,   137,    11,   198,   194,    -1,   137,   198,
      194,    -1,   137,    59,   191,    60,   206,    -1,   198,    -1,
       -1,   207,    -1,    59,   191,    60,    -1,   198,    -1,     3,
@@ -714,8 +714,8 @@ static const yytype_uint16 yyrline[] =
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 const char *yytname[] =
 {
-  "$end", "error", "$undefined", "LLITERAL", "LASOP", "LBREAK", "LCASE",
-  "LCHAN", "LCOLAS", "LCONST", "LCONTINUE", "LDDD", "LDEFAULT", "LDEFER",
+  "$end", "error", "$undefined", "LLITERAL", "LASOP", "LCOLAS", "LBREAK",
+  "LCASE", "LCHAN", "LCONST", "LCONTINUE", "LDDD", "LDEFAULT", "LDEFER",
   "LELSE", "LFALL", "LFOR", "LFUNC", "LGO", "LGOTO", "LIF", "LIMPORT",
   "LINTERFACE", "LMAP", "LNAME", "LPACKAGE", "LRANGE", "LRETURN",
   "LSELECT", "LSTRUCT", "LSWITCH", "LTYPE", "LVAR", "LANDAND", "LANDNOT",
@@ -947,94 +947,94 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -551
+#define YYPACT_NINF -549
 static const yytype_int16 yypact[] =
 {
-    -551,    46,    48,   121,  -551,    58,  -551,   135,  -551,  -551,
-    -551,    65,    72,  -551,   147,   156,  -551,  -551,   112,  -551,
-      50,   134,   904,  -551,   162,   463,   209,  -551,    54,   237,
-    -551,   121,   245,  -551,  -551,  -551,    58,  1666,  -551,    58,
-     288,  -551,  -551,    34,   288,    58,  -551,    36,   184,  1467,
-    -551,    36,  -551,   316,   462,  1467,  1467,  1467,  1467,  1467,
-    1467,  1522,  1467,  1467,   965,   198,  -551,   506,  -551,  -551,
-    -551,  -551,  -551,   796,  -551,  -551,   195,     1,  -551,   199,
-    -551,   207,   216,    36,   221,  -551,  -551,  -551,   226,    53,
-    -551,  -551,   108,  -551,   214,   110,   269,   214,   214,   233,
-    -551,  -551,  -551,  -551,   238,  -551,  -551,  -551,  -551,  -551,
-    -551,  -551,   242,  1691,  1691,  1691,  -551,   240,  -551,  -551,
-    -551,  -551,  -551,  -551,   154,     1,  1467,  1658,   247,   246,
-     290,  -551,  1467,  -551,  -551,   419,  1691,  2004,   229,  -551,
-     272,   333,  1467,   258,  1691,  -551,  -551,   485,  -551,  -551,
-    -551,   656,  -551,  -551,  -551,  -551,  -551,  -551,  1577,  1522,
-    2004,   255,  -551,    10,  -551,    51,  -551,  -551,   251,  2004,
-     256,  -551,   508,  -551,  1632,  1467,  1467,  1467,  1467,  -551,
-    1467,  1467,  1467,  -551,  1467,  1467,  1467,  1467,  1467,  1467,
-    1467,  1467,  1467,  1467,  1467,  1467,  1467,  1467,  -551,  1192,
-     552,  1467,  -551,  1467,  -551,  -551,  1134,  1467,  1467,  1467,
-    -551,  1203,    58,   246,   260,   332,  -551,  1838,  1838,  -551,
-      76,   282,  -551,  1658,   344,  1691,  -551,  -551,  -551,  -551,
-    -551,  -551,  -551,   293,    58,  -551,  -551,   328,  -551,   178,
-     303,  1691,  -551,  1658,  -551,  -551,  -551,   295,   308,  1658,
-    1134,  -551,  -551,   309,   271,   364,  -551,   334,   337,  -551,
-    -551,   330,  -551,    11,    66,  -551,  -551,   342,  -551,  -551,
-     397,   664,  -551,  -551,  -551,   351,  -551,  -551,  -551,   352,
-    1467,    58,   343,  1719,  -551,   349,  1691,  1691,  -551,   356,
-    1467,   357,  2004,  2075,  -551,  2028,   692,   692,   692,   692,
-    -551,   692,   692,  2052,  -551,   593,   593,   593,   593,  -551,
-    -551,  -551,  -551,  1247,  -551,  -551,    22,  1302,  -551,  1877,
-     355,  1060,  1979,  1247,  -551,  -551,  -551,  -551,  -551,  -551,
-      86,   229,   229,  2004,  1777,   367,   361,   359,  -551,   366,
-     427,  1838,    52,    29,  -551,   370,  -551,  -551,  -551,   784,
-    -551,   118,   379,    58,   396,   400,   401,  -551,  -551,   404,
-    1691,   409,  -551,  -551,  -551,  -551,  1357,  1412,  1467,  -551,
-    -551,  -551,  1658,  -551,  1744,   414,   109,   328,  1467,    58,
-     416,   423,  1658,  -551,   561,   417,  1691,    44,   364,   397,
-     364,   428,   451,   421,  -551,  -551,    58,   397,   456,    58,
-     436,    58,   438,   229,  -551,  1467,  1752,  1691,  -551,    24,
-     171,   287,   338,  -551,  -551,  -551,    58,   439,   229,  1467,
-    -551,  1907,  -551,  -551,   425,   435,   430,  1522,   446,   448,
-     453,  -551,  1467,  -551,  -551,   443,  1134,  1060,  -551,  1838,
-     479,  -551,  -551,  -551,    58,  1805,  1838,    58,  1838,  -551,
-    -551,   514,   161,  -551,  -551,   460,   454,  1838,    52,  1838,
-     397,    58,    58,  -551,   458,   459,  -551,  -551,  -551,  1744,
-    -551,  1134,  1467,  1467,   467,  -551,  1658,   472,  -551,  -551,
-    -551,  -551,  -551,  -551,  -551,  1744,  -551,  -551,  -551,  -551,
-    -551,   477,  -551,  -551,  -551,  1522,   474,  -551,  -551,  -551,
-     482,  -551,   500,   397,  -551,  -551,  -551,  -551,  -551,  -551,
-    -551,  -551,  -551,   229,   501,  1247,  -551,  -551,   505,  1632,
-    -551,   229,  1247,  1247,  1247,  -551,  -551,  -551,   503,  -551,
-    -551,  -551,  -551,   511,  -551,   137,  -551,  -551,   518,   528,
-     532,   534,   535,   530,  -551,  -551,   537,   533,  1838,   536,
-    -551,   538,  -551,  -551,   560,  -551,  1838,  -551,   551,   397,
-    -551,   557,  -551,  1830,   151,  2004,  2004,  1467,   558,  1658,
-    -551,   605,  1744,   125,  -551,  1060,   397,   397,  -551,    75,
-     360,   554,    58,   563,   357,   556,  2004,  -551,  -551,  -551,
-    -551,  -551,  -551,  -551,  1830,    58,  -551,  1805,  1838,   397,
-    -551,    58,   161,  -551,  -551,  -551,    58,    58,  -551,  -551,
-    -551,  -551,  -551,  -551,   570,    78,  -551,  -551,  1467,  1467,
-    -551,  1522,   569,  -551,  -551,  -551,  -551,  -551,  -551,  -551,
-    -551,   576,  -551,  -551,  -551,  -551,   578,   582,   584,  1744,
-    -551,  -551,  1931,  1955,  1830,  -551,  1830,  -551,  -551,  -551,
-    -551,  -551,  -551
+    -549,    63,    58,    91,  -549,   227,  -549,    44,  -549,  -549,
+    -549,    67,    57,  -549,   111,   135,  -549,  -549,   123,  -549,
+      50,   151,   904,  -549,   157,   463,   149,  -549,    54,   219,
+    -549,    91,   230,  -549,  -549,  -549,   227,  1654,  -549,   227,
+     288,  -549,  -549,   316,   288,   227,  -549,    21,   167,  1466,
+    -549,    21,  -549,   327,   333,  1466,  1466,  1466,  1466,  1466,
+    1466,  1509,  1466,  1466,   985,   193,  -549,   419,  -549,  -549,
+    -549,  -549,  -549,   796,  -549,  -549,   176,     1,  -549,   194,
+    -549,   196,   206,    21,   215,  -549,  -549,  -549,   216,    51,
+    -549,  -549,    45,  -549,   203,     7,   256,   203,   203,   231,
+    -549,  -549,  -549,  -549,   244,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,   234,  1681,  1681,  1681,  -549,   250,  -549,  -549,
+    -549,  -549,  -549,  -549,   168,     1,  1466,  1628,   260,   264,
+     266,  -549,  1466,  -549,  -549,   110,  1681,  1993,   257,  -549,
+     300,   229,  1466,   451,  1681,  -549,  -549,   461,  -549,  -549,
+    -549,   662,  -549,  -549,  -549,  -549,  -549,  -549,  1552,  1509,
+    1993,   263,  -549,    10,  -549,   165,  -549,  -549,   270,  1993,
+     274,  -549,   485,  -549,  1595,  1466,  1466,  1466,  1466,  -549,
+    1466,  1466,  1466,  -549,  1466,  1466,  1466,  1466,  1466,  1466,
+    1466,  1466,  1466,  1466,  1466,  1466,  1466,  1466,  -549,  1203,
+     506,  1466,  -549,  1466,  -549,  -549,  1134,  1466,  1466,  1466,
+    -549,   673,   227,   264,   293,   355,  -549,  1214,  1214,  -549,
+      76,   303,  -549,  1628,   357,  1681,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,   328,   227,  -549,  -549,   358,  -549,    68,
+     337,  1681,  -549,  1628,  -549,  -549,  -549,   329,   348,  1628,
+    1134,  -549,  -549,   351,   128,   390,  -549,   359,   354,  -549,
+    -549,   349,  -549,    30,    34,  -549,  -549,   366,  -549,  -549,
+     427,  1620,  -549,  -549,  -549,   371,  -549,  -549,  -549,   373,
+    1466,   227,   376,  1707,  -549,   391,  1681,  1681,  -549,   400,
+    1466,   398,  1993,  1839,  -549,  2017,   755,   755,   755,   755,
+    -549,   755,   755,  2041,  -549,   582,   582,   582,   582,  -549,
+    -549,  -549,  -549,  1258,  -549,  -549,    33,  1313,  -549,  1866,
+     356,  1060,  1968,  1258,  -549,  -549,  -549,  -549,  -549,  -549,
+       3,   257,   257,  1993,  1748,   405,   402,   403,  -549,   412,
+     475,  1214,    52,    29,  -549,   421,  -549,  -549,  -549,  1774,
+    -549,    85,   425,   227,   426,   429,   434,  -549,  -549,   438,
+    1681,   439,  -549,  -549,  -549,  -549,  1368,  1423,  1466,  -549,
+    -549,  -549,  1628,  -549,  1715,   440,    86,   358,  1466,   227,
+     441,   443,  1628,  -549,   508,   437,  1681,    78,   390,   427,
+     390,   446,   280,   442,  -549,  -549,   227,   427,   454,   227,
+     448,   227,   453,   257,  -549,  1466,  1740,  1681,  -549,   181,
+     248,   338,   360,  -549,  -549,  -549,   227,   455,   257,  1466,
+    -549,  1896,  -549,  -549,   447,   450,   456,  1509,   457,   466,
+     469,  -549,  1466,  -549,  -549,   468,  1134,  1060,  -549,  1214,
+     501,  -549,  -549,  -549,   227,  1801,  1214,   227,  1214,  -549,
+    -549,   537,   161,  -549,  -549,   480,   488,  1214,    52,  1214,
+     427,   227,   227,  -549,   503,   486,  -549,  -549,  -549,  1715,
+    -549,  1134,  1466,  1466,   514,  -549,  1628,   509,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  1715,  -549,  -549,  -549,  -549,
+    -549,   518,  -549,  -549,  -549,  1509,   517,  -549,  -549,  -549,
+     525,  -549,   528,   427,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,  -549,   257,   531,  1258,  -549,  -549,   532,  1595,
+    -549,   257,  1258,  1258,  1258,  -549,  -549,  -549,   533,  -549,
+    -549,  -549,  -549,   526,  -549,   109,  -549,  -549,   539,   540,
+     545,   546,   550,   543,  -549,  -549,   551,   547,  1214,   552,
+    -549,   556,  -549,  -549,   573,  -549,  1214,  -549,   561,   427,
+    -549,   565,  -549,  1827,   131,  1993,  1993,  1466,   567,  1628,
+    -549,   611,  1715,    28,  -549,  1060,   427,   427,  -549,   100,
+     367,   563,   227,   574,   398,   571,  1993,  -549,  -549,  -549,
+    -549,  -549,  -549,  -549,  1827,   227,  -549,  1801,  1214,   427,
+    -549,   227,   161,  -549,  -549,  -549,   227,   227,  -549,  -549,
+    -549,  -549,  -549,  -549,   581,    15,  -549,  -549,  1466,  1466,
+    -549,  1509,   580,  -549,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,   584,  -549,  -549,  -549,  -549,   585,   586,   587,  1715,
+    -549,  -549,  1920,  1944,  1827,  -549,  1827,  -549,  -549,  -549,
+    -549,  -549,  -549
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -551,  -551,  -551,  -551,  -551,  -551,  -551,    -6,  -551,  -551,
-     608,  -551,   -11,  -551,  -551,   623,  -551,  -134,   -25,    68,
-    -551,  -135,  -121,  -551,    39,  -551,  -551,  -551,   145,   278,
-    -551,  -551,  -551,  -551,  -551,  -551,   515,    41,  -551,  -551,
-    -551,  -551,  -551,  -551,  -551,  -551,  -551,   579,   493,    45,
-    -551,  -192,   138,  -246,   192,   -47,   415,   200,   -20,   380,
-     626,    -5,   449,   346,  -551,   426,    95,   509,  -551,  -551,
-    -551,  -551,   -33,    38,   -31,   -18,  -551,  -551,  -551,  -551,
-    -551,    43,   457,  -467,  -551,  -551,  -551,  -551,  -551,  -551,
-    -551,  -551,   280,  -126,  -227,   292,  -551,   302,  -551,  -220,
-    -297,   662,  -551,  -248,  -551,   -66,    18,   194,  -551,  -295,
-    -228,  -289,  -191,  -551,  -119,  -403,  -551,  -551,  -305,  -551,
-     -32,  -551,   127,  -551,   362,   250,   363,   232,    90,    98,
-    -550,  -551,  -426,   241,  -551,   486,  -551,  -551
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,    -6,  -549,  -549,
+     617,  -549,   -11,  -549,  -549,   627,  -549,  -134,   -25,    71,
+    -549,  -135,  -121,  -549,    35,  -549,  -549,  -549,   146,   279,
+    -549,  -549,  -549,  -549,  -549,  -549,   513,    42,  -549,  -549,
+    -549,  -549,  -549,  -549,  -549,  -549,  -549,   579,   493,   245,
+    -549,  -192,   134,  -318,   278,   -47,   418,     8,   -20,   381,
+     624,    -5,   449,   346,  -549,   422,    95,   510,  -549,  -549,
+    -549,  -549,   -33,    38,   -31,   -18,  -549,  -549,  -549,  -549,
+    -549,    43,   458,  -467,  -549,  -549,  -549,  -549,  -549,  -549,
+    -549,  -549,   276,  -126,  -227,   289,  -549,   302,  -549,  -220,
+    -297,   650,  -549,  -248,  -549,   -66,    18,   183,  -549,  -295,
+    -228,  -289,  -191,  -549,  -119,  -403,  -549,  -549,  -305,  -549,
+     273,  -549,   127,  -549,   342,   240,   353,   226,    88,    96,
+    -548,  -549,  -426,   236,  -549,   487,  -549,  -549
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1046,221 +1046,217 @@ static const yytype_int16 yytable[] =
       12,   174,   376,   359,   119,   235,   121,   240,   274,   259,
      320,   235,   323,   278,   161,    32,   109,    79,   570,   109,
      107,   235,   103,    32,   433,   131,   554,   428,   435,   375,
-     385,   111,   456,   426,   111,   380,   389,   391,   128,   393,
-     111,   539,   173,   164,   630,  -176,     4,   400,   146,   150,
-     495,   402,  -208,    27,   205,   450,   496,    27,     9,  -172,
-     199,   417,   150,   214,   200,   216,   218,   138,    18,  -175,
-     388,   133,   201,     5,     9,   120,     9,  -176,     9,    27,
-     122,   495,     9,  -172,   501,   124,  -208,   496,   133,   130,
-     380,  -172,   507,   127,   651,   222,   652,   427,    46,   163,
-       9,   457,   451,   134,   165,   617,   174,    10,    11,    28,
-    -174,   452,   497,    29,   102,   257,   207,    29,  -208,   390,
-     134,   266,   243,    10,    11,    10,    11,    10,    11,   381,
-     111,    10,    11,   618,    19,   525,   111,   528,   146,    29,
-     536,   164,   150,   625,   239,   325,     7,   289,   437,    10,
-      11,   228,   228,   228,   438,   560,   231,   231,   231,    15,
-    -260,   500,   491,   502,   450,   228,  -260,   150,    20,   212,
-     231,   437,   648,   208,   228,    26,   636,   486,   461,   231,
-      23,   164,   228,   209,    11,     9,   366,   231,   535,   228,
-     619,   620,   631,   462,   231,   318,    33,   163,   578,   437,
-     621,    79,   165,   637,   638,   592,  -170,   349,   226,   232,
-     233,   451,   228,   437,   357,    32,  -260,   231,   243,   611,
-     581,   515,  -260,   564,    93,   331,   332,   585,   522,   363,
-    -170,   261,   125,   101,    10,    11,   125,   163,  -170,   276,
-     105,   533,   165,   367,   243,    79,   282,   235,   108,   474,
-     409,   141,   411,   209,   605,   136,   568,   235,   259,   488,
-     171,   228,   198,   228,   509,  -147,   231,   511,   231,   291,
-     430,   623,   624,   202,  -229,   203,   150,   587,   589,   228,
-    -175,   228,     9,   204,   231,  -174,   231,   228,    11,   206,
-     583,    35,   231,   215,   634,    37,  -259,   219,   403,   164,
-     220,   223,  -259,   234,   209,   112,   249,   262,   418,   228,
-      47,    48,     9,   250,   231,   285,    79,    51,   273,   353,
-     361,   410,  -171,   286,   228,   228,   412,   622,   287,   231,
-     231,    10,    11,  -229,   379,   354,   369,   453,   345,  -229,
-       9,   479,   358,   481,   355,   356,  -171,    61,   349,   614,
-     519,   360,  -259,   362,  -171,   163,   482,   254,  -259,    64,
-     165,    10,    11,   364,   257,   368,   397,   243,   374,   477,
-     372,   378,   266,  -169,   489,   143,   506,   243,   408,   111,
-     529,   414,   415,   117,   331,   332,   263,   111,   380,    10,
-      11,   111,   264,   382,   146,  -173,   150,  -169,   228,   384,
-     394,   265,   386,   231,   392,  -169,    10,    11,   405,   164,
-     228,   150,   480,   399,   401,   231,   413,   483,   416,  -173,
-     228,   432,   419,   513,   228,   231,   444,  -173,   445,   231,
-     446,    79,    79,   447,   448,   458,   479,   521,   481,   349,
-     541,   463,   548,   254,   228,   228,   235,   453,   612,   231,
-     231,   482,   479,   453,   481,   408,   561,   349,   466,   117,
-     117,   117,   467,   468,   469,   163,    79,   482,   449,   470,
-     165,   243,    94,   117,   485,   254,   460,   164,   255,   379,
-      95,   494,   117,   490,    96,   493,     9,   256,   503,   505,
-     117,   508,    10,    11,    97,    98,   510,   117,   512,   520,
-     524,   226,   514,   526,   263,   527,   530,   480,   531,     9,
-     264,   534,   483,   532,   228,   340,   519,   553,   563,   231,
-     117,   147,   555,   480,    10,    11,   556,    99,   483,   567,
-       9,   569,     9,   163,   462,    10,    11,   572,   165,   479,
-     574,   481,   576,   210,   210,   277,   210,   210,   152,   153,
+     385,   111,   456,   618,   111,    46,   389,   391,   128,   393,
+     111,   539,   173,   164,   426,  -176,   630,   400,   146,   150,
+     207,   402,   205,    27,   380,   450,   133,    27,   380,   141,
+     199,   417,   150,     4,   200,   437,   212,   138,    15,  -175,
+      18,   438,   201,   366,     9,   120,     9,  -176,     9,    27,
+     122,    11,   325,     5,   501,   495,   133,   390,   134,   388,
+     496,   204,   507,   619,   620,   222,   651,   206,   652,   163,
+       9,   457,   451,   621,   165,   617,   174,   495,   427,    28,
+     208,   452,   496,    29,   102,   257,     7,    29,   134,    19,
+     209,   266,   243,    10,    11,    10,    11,    10,    11,   381,
+     111,  -229,    20,   367,   254,   525,   111,   528,   146,    29,
+     536,   164,   150,   209,   239,   461,   497,   289,   437,    10,
+      11,   228,   228,   228,   486,   560,   231,   231,   231,    23,
+     462,   500,   491,   502,   450,   228,  -208,   150,   625,   255,
+     231,   437,   648,   101,   228,  -260,   636,   592,   256,   231,
+    -260,   164,   228,    10,    11,     9,    26,   231,   535,   228,
+    -229,   379,   631,   437,   231,   318,  -229,   163,   578,   611,
+    -208,    79,   165,   637,   638,   587,   589,   349,   226,   232,
+     233,   451,   228,    33,   357,    32,  -172,   231,   243,    93,
+     581,   515,   105,   564,  -174,   331,   332,   585,   522,   363,
+    -260,   261,  -208,   108,    10,    11,  -260,   163,   136,   276,
+    -172,   533,   165,   198,   243,    79,   282,   235,  -172,   474,
+     409,     9,   411,   254,   605,   171,   568,   235,   259,   488,
+    -147,   228,   202,   228,   509,   203,   231,   511,   231,   291,
+     430,   623,   624,  -259,  -175,  -174,   150,    11,  -259,   228,
+     215,   228,   263,  -170,   231,   124,   231,   228,   264,   130,
+     583,    35,   231,   223,   634,   219,    37,   265,   403,   164,
+      10,    11,    10,    11,   254,   112,   220,  -170,   418,   228,
+      47,    48,     9,   234,   231,  -170,    79,    51,   125,   249,
+     361,   410,   125,   285,   228,   228,   412,   622,  -259,   231,
+     231,   250,   209,   263,  -259,   262,   369,   453,   345,   264,
+       9,   479,   286,   481,   355,   356,   287,    61,   349,   614,
+     519,     9,   353,    10,    11,   163,   482,     9,   354,    64,
+     165,    10,    11,   358,   257,   360,   397,   243,   214,   477,
+     216,   218,   266,  -171,   489,   127,   506,   243,   408,   111,
+     529,   414,   415,   117,   331,   332,   143,   111,   362,    10,
+      11,   111,   147,   364,   146,  -169,   150,  -171,   228,   368,
+      10,    11,  -173,   231,   372,  -171,    10,    11,   374,   164,
+     228,   150,   480,   378,   380,   231,   384,   483,   382,  -169,
+     228,   386,   432,   513,   228,   231,  -173,  -169,   392,   231,
+     394,    79,    79,   399,  -173,   401,   479,   521,   481,   349,
+     541,   405,   548,     9,   228,   228,   235,   453,   612,   231,
+     231,   482,   479,   453,   481,   408,   561,   349,   413,   117,
+     117,   117,   416,   419,   444,   163,    79,   482,   449,   445,
+     165,   243,    94,   117,   446,     9,   460,   164,   172,   447,
+      95,   494,   117,   448,    96,     9,   458,   463,   466,   508,
+     117,   467,    10,    11,    97,    98,   468,   117,   469,   470,
+     485,   226,   514,   490,   379,   493,   503,   480,   510,     9,
+     505,   273,   483,   512,   228,   520,   519,   530,   526,   231,
+     117,   277,   524,   480,    10,    11,   531,    99,   483,   532,
+       9,   527,   254,   163,    10,    11,   534,   340,   165,   479,
+     553,   481,   555,   210,   210,   288,   210,   210,   152,   153,
      154,   155,   156,   157,   482,   166,   167,   228,    10,    11,
-     577,   580,   231,   590,   243,   172,   537,   582,   288,   117,
-      79,   117,   544,   547,   529,   552,     9,   150,   593,    10,
-      11,    10,    11,   591,   557,   254,   559,   117,   594,   117,
-     349,  -151,   541,   595,  -152,   117,   548,   453,   596,   597,
-     601,   349,   349,   164,   600,   598,   479,   228,   481,   602,
-     480,   317,   231,   604,   584,   483,   606,   117,   613,   615,
-     255,   482,   626,   628,   629,    10,    11,   177,   137,   117,
-     639,   437,   117,   117,    10,    11,   644,   185,   645,   106,
-     160,   189,   646,   169,   647,    66,   194,   195,   196,   197,
-     627,   152,   156,   579,   640,   487,   641,   272,   370,   163,
-     344,   404,   588,    37,   165,   123,   344,   344,   284,   371,
-     352,    37,   504,   112,   475,   599,   492,   480,    47,    48,
-       9,   112,   483,   603,    91,    51,    47,    48,     9,   573,
-     538,   635,   224,    51,   562,   632,   442,   443,   351,   558,
-     224,     0,     0,     0,     0,     0,   117,     0,     0,   114,
-       0,     0,     0,     0,     0,   225,     0,   114,   117,     0,
-     117,   280,     0,   225,   544,   633,   177,    64,   117,    10,
-      11,   281,   117,     0,     0,    64,   185,    10,    11,   396,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,     0,
+     556,   462,   231,   563,   243,   317,   537,   255,   569,   117,
+      79,   117,   544,   547,   529,   552,   567,   150,   572,    10,
+      11,    10,    11,   574,   557,   576,   559,   117,   577,   117,
+     349,   580,   541,   590,   582,   117,   548,   453,   591,   593,
+     594,   349,   349,   164,  -151,   595,   479,   228,   481,  -152,
+     480,   596,   231,   597,   584,   483,   177,   117,   601,   598,
+     600,   482,   602,   604,   606,   615,   185,   613,   137,   117,
+     189,   626,   117,   117,   628,   194,   195,   196,   197,   629,
+     160,   639,   437,   169,   644,   645,   646,   647,   106,    66,
+     640,   152,   156,   627,   579,   272,   487,   641,   588,   163,
+     344,   370,   404,   123,   165,   371,   344,   344,   504,   284,
+      37,   352,    91,   492,   475,   599,   442,   480,   573,   112,
+     538,   334,   483,   603,    47,    48,     9,   443,   562,   635,
+     335,    51,     0,   632,   558,   336,   337,   338,   224,   351,
+       0,     0,   339,     0,     0,     0,   117,     0,     0,   340,
+       0,     0,     0,     0,     0,   114,     0,     0,   117,     0,
+     117,   225,     0,     0,   544,   633,   341,   280,   117,     0,
+       0,     0,   117,    64,     0,    10,    11,   281,   342,     0,
+       0,     0,     0,     0,   343,     0,     0,    11,     0,     0,
        0,     0,   117,   117,   292,   293,   294,   295,     0,   296,
      297,   298,     0,   299,   300,   301,   302,   303,   304,   305,
      306,   307,   308,   309,   310,   311,   312,     0,   160,     0,
-     319,     0,   322,   344,     0,     0,   137,   137,   333,     0,
-     344,   334,     0,     0,     0,   459,     0,     0,   344,     0,
-     175,   335,     0,     0,  -269,     0,   336,   337,   338,     0,
-       0,     0,     0,   339,     0,   117,     0,     0,     0,     0,
-     340,     0,   117,     0,     0,     0,     0,     0,     0,   176,
-     177,   117,   178,   179,   180,   181,   182,   341,   183,   184,
+     319,     0,   322,   344,     0,     0,   137,   137,   333,   177,
+     344,     0,     0,     0,     0,     0,     0,     0,   344,   185,
+     175,  -269,     0,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,     0,     0,     0,   117,     0,     0,     0,     0,
+       0,     0,   117,     0,     0,     0,     0,     0,     0,   176,
+     177,   117,   178,   179,   180,   181,   182,     0,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,     0,     0,   343,     0,     0,    11,   137,
+     195,   196,   197,     0,     0,     0,     0,     0,     0,   137,
        0,  -269,     0,     0,     0,   117,     0,     0,     0,   137,
        0,  -269,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   344,     0,
        0,     0,   421,     0,   542,   344,   160,   344,     0,     0,
-       0,     0,   421,     0,    -2,    34,   344,    35,   344,    36,
-       0,    37,     0,    38,    39,   117,     0,    40,   117,    41,
+       0,     0,   421,     0,    -2,    34,   344,    35,   344,     0,
+      36,     0,    37,    38,    39,   117,     0,    40,   117,    41,
       42,    43,    44,    45,    46,     0,    47,    48,     9,     0,
        0,    49,    50,    51,    52,    53,    54,     0,     0,     0,
       55,     0,     0,     0,     0,   137,   137,     0,     0,     0,
        0,     0,     0,    56,    57,     0,    58,    59,     0,     0,
-      60,     0,     0,    61,     0,     0,   -24,     0,    35,     0,
-       0,     0,    37,    62,    63,    64,   168,    10,    11,     0,
-       0,     0,   112,     0,   137,   117,     0,    47,    48,     9,
-       0,     0,     0,     0,    51,     0,     0,   344,   137,     0,
-       0,    55,     0,     0,     0,   344,   160,     0,     0,     0,
-       0,   169,   344,     0,    56,    57,     0,    58,    59,     0,
-       0,    60,     0,     0,    61,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    62,    63,    64,     0,    10,    11,
-       0,     0,     0,   344,     0,     0,   542,   344,     0,     0,
-       0,   565,   566,     0,     0,     0,     0,     0,     0,     0,
-       0,   324,     0,    35,     0,    36,  -244,    37,     0,    38,
+      60,     0,     0,    61,     0,     0,   -24,     0,     0,     0,
+       0,     0,     0,    62,    63,    64,     0,    10,    11,     0,
+       0,     0,     0,     0,   137,   117,     0,     0,    35,     0,
+       0,     0,     0,    37,     0,     0,   168,   344,   137,     0,
+       0,     0,   112,     0,     0,   344,   160,    47,    48,     9,
+       0,   169,   344,     0,    51,     0,     0,     0,     0,     0,
+       0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    56,    57,     0,    58,    59,     0,
+       0,    60,     0,   344,    61,     0,   542,   344,     0,     0,
+       0,   565,   566,     0,    62,    63,    64,     0,    10,    11,
+       0,   324,     0,    35,     0,     0,    36,  -244,    37,    38,
       39,     0,  -244,    40,   160,    41,    42,   112,    44,    45,
       46,     0,    47,    48,     9,     0,     0,    49,    50,    51,
       52,    53,    54,   344,   421,   344,    55,     0,     0,     0,
        0,   421,   586,   421,     0,     0,     0,     0,     0,    56,
       57,     0,    58,    59,     0,     0,    60,     0,     0,    61,
        0,     0,  -244,     0,     0,     0,     0,   325,  -244,    62,
-      63,    64,     0,    10,    11,   324,     0,    35,     0,    36,
-       0,    37,     0,    38,    39,     0,     0,    40,     0,    41,
+      63,    64,     0,    10,    11,   324,     0,    35,     0,     0,
+      36,     0,    37,    38,    39,     0,     0,    40,     0,    41,
       42,   112,    44,    45,    46,     0,    47,    48,     9,     0,
        0,    49,    50,    51,    52,    53,    54,     0,     0,     0,
       55,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    56,    57,     0,    58,    59,     0,     0,
-      60,     0,     0,    61,     0,    35,  -244,   642,   643,    37,
-     160,   325,  -244,    62,    63,    64,     0,    10,    11,   112,
-     334,     0,     0,     0,    47,    48,     9,     0,     0,     0,
-     335,    51,     0,     0,     0,   336,   337,   338,   158,     0,
-       0,     0,   339,     0,     0,     0,     0,     0,     0,   340,
-       0,    56,    57,     0,    58,   159,     0,     0,    60,     0,
-      35,    61,   314,     0,    37,     0,   341,     0,     0,     0,
-       0,    62,    63,    64,   112,    10,    11,     0,   342,    47,
-      48,     9,     0,     0,   343,     0,    51,    11,     0,     0,
-       0,     0,     0,    55,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    56,    57,     0,    58,
-      59,     0,     0,    60,     0,    35,    61,     0,     0,    37,
-       0,     0,     0,     0,   420,     0,    62,    63,    64,   112,
-      10,    11,     0,     0,    47,    48,     9,     0,     0,     0,
-       0,    51,     0,   429,     0,     0,     0,     0,   158,     0,
+      60,     0,     0,    61,     0,     0,  -244,   642,   643,     0,
+     160,   325,  -244,    62,    63,    64,    35,    10,    11,     0,
+       0,    37,     0,     0,     0,     0,     0,     0,     0,     0,
+     112,     0,   334,     0,     0,    47,    48,     9,     0,     0,
+       0,   335,    51,     0,     0,     0,   336,   337,   338,   158,
+       0,     0,     0,   339,     0,     0,     0,     0,     0,     0,
+     340,     0,    56,    57,     0,    58,   159,     0,     0,    60,
+       0,    35,    61,   314,     0,     0,    37,   341,     0,     0,
+       0,     0,    62,    63,    64,   112,    10,    11,     0,     0,
+      47,    48,     9,     0,     0,   343,     0,    51,    11,     0,
+       0,     0,     0,     0,    55,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    56,    57,     0,
+      58,    59,     0,     0,    60,     0,    35,    61,     0,     0,
+       0,    37,     0,     0,     0,   420,     0,    62,    63,    64,
+     112,    10,    11,     0,     0,    47,    48,     9,     0,     0,
+       0,     0,    51,     0,   429,     0,     0,     0,     0,   158,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    56,    57,     0,    58,   159,     0,     0,    60,     0,
-      35,    61,     0,     0,    37,     0,     0,     0,     0,     0,
-       0,    62,    63,    64,   112,    10,    11,     0,     0,    47,
-      48,     9,     0,   472,     0,     0,    51,     0,     0,     0,
-       0,     0,     0,    55,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    56,    57,     0,    58,
-      59,     0,     0,    60,     0,    35,    61,     0,     0,    37,
-       0,     0,     0,     0,     0,     0,    62,    63,    64,   112,
-      10,    11,     0,     0,    47,    48,     9,     0,   473,     0,
-       0,    51,     0,     0,     0,     0,     0,     0,    55,     0,
+       0,     0,    56,    57,     0,    58,   159,     0,     0,    60,
+       0,    35,    61,     0,     0,     0,    37,     0,     0,     0,
+       0,     0,    62,    63,    64,   112,    10,    11,     0,     0,
+      47,    48,     9,     0,   472,     0,     0,    51,     0,     0,
+       0,     0,     0,     0,    55,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    56,    57,     0,
+      58,    59,     0,     0,    60,     0,    35,    61,     0,     0,
+       0,    37,     0,     0,     0,     0,     0,    62,    63,    64,
+     112,    10,    11,     0,     0,    47,    48,     9,     0,   473,
+       0,     0,    51,     0,     0,     0,     0,     0,     0,    55,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    35,
+       0,     0,    56,    57,    37,    58,    59,     0,     0,    60,
+       0,     0,    61,   112,     0,     0,     0,     0,    47,    48,
+       9,     0,    62,    63,    64,    51,    10,    11,     0,     0,
+       0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    35,     0,     0,    56,    57,    37,    58,    59,
+       0,     0,    60,     0,     0,    61,   112,     0,     0,     0,
+       0,    47,    48,     9,     0,    62,    63,    64,    51,    10,
+      11,     0,     0,     0,     0,   158,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    35,     0,     0,    56,    57,
+     283,    58,   159,     0,     0,    60,     0,     0,    61,   112,
+       0,     0,     0,     0,    47,    48,     9,     0,    62,    63,
+      64,    51,    10,    11,     0,     0,     0,     0,    55,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    56,    57,     0,    58,    59,     0,     0,    60,     0,
-      35,    61,     0,     0,    37,     0,     0,     0,     0,     0,
-       0,    62,    63,    64,   112,    10,    11,     0,     0,    47,
-      48,     9,     0,     0,     0,     0,    51,     0,     0,     0,
-       0,     0,     0,    55,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    56,    57,     0,    58,
-      59,     0,     0,    60,     0,    35,    61,     0,     0,    37,
-       0,     0,     0,     0,     0,     0,    62,    63,    64,   112,
-      10,    11,     0,     0,    47,    48,     9,     0,     0,     0,
-       0,    51,     0,     0,     0,     0,     0,     0,   158,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    56,    57,     0,    58,   159,     0,     0,    60,     0,
-      35,    61,     0,     0,   283,     0,     0,     0,     0,     0,
-       0,    62,    63,    64,   112,    10,    11,     0,     0,    47,
-      48,     9,     0,     0,     0,     0,    51,     0,     0,     0,
-       0,     0,     0,    55,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    56,    57,     0,    58,
-      59,     0,     0,    60,     0,     0,    61,     0,     0,    37,
-       0,     0,     0,     0,     0,     0,    62,    63,    64,   112,
-      10,    11,     0,     0,    47,    48,     9,     0,     0,     0,
-       0,    51,     0,     0,     0,    37,     0,     0,   224,   241,
-       0,     0,     0,    37,     0,   112,     0,     0,     0,     0,
-      47,    48,     9,   112,     0,   114,     0,    51,    47,    48,
-       9,   225,     0,     0,   224,    51,     0,   290,    37,     0,
-       0,     0,   113,    64,     0,    10,    11,   281,   112,     0,
-       0,   114,     0,    47,    48,     9,     0,   225,     0,   114,
-      51,     0,     0,     0,     0,   115,    37,   224,     0,    64,
-       0,    10,    11,     0,     0,     0,   112,    64,     0,    10,
-      11,    47,    48,     9,   114,     0,     0,     0,    51,     0,
-     225,    37,     0,     0,     0,   406,     0,     0,     0,   283,
-       0,   112,    64,     0,    10,    11,    47,    48,     9,   112,
-       0,     0,   114,    51,    47,    48,     9,     0,   407,     0,
-     224,    51,     0,     0,   334,     0,     0,     0,   224,     0,
-      64,     0,    10,    11,   335,     0,     0,   114,     0,   336,
-     337,   338,     0,   476,     0,   114,   339,     0,     0,     0,
-       0,   225,   334,   439,     0,    64,     0,    10,    11,     0,
-       0,     0,   335,    64,     0,    10,    11,   336,   337,   540,
-     341,     0,     0,     0,   339,     0,   440,   334,     0,     0,
-       0,   340,     0,     0,     0,   334,     0,   335,   343,     0,
-       0,    11,   336,   337,   338,   335,     0,     0,   341,   339,
-     336,   337,   338,     0,     0,     0,   340,   339,     0,     0,
-       0,     0,     0,     0,   340,     0,   343,     0,    10,    11,
-       0,     0,     0,   341,     0,     0,     0,     0,     0,   607,
-       0,   341,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   343,     0,     0,    11,     0,     0,     0,     0,   343,
-     176,   177,    11,   178,     0,   180,   181,   182,     0,     0,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,     0,     0,     0,     0,     0,     0,
-     176,   177,     0,   178,     0,   180,   181,   182,     0,   431,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   176,   177,     0,   178,     0,   180,
-     181,   182,     0,   523,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   176,   177,
-       0,   178,     0,   180,   181,   182,     0,   649,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   176,   177,     0,   178,     0,   180,   181,   182,
-       0,   650,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   197,     0,   176,   177,   434,
-     178,     0,   180,   181,   182,     0,     0,   184,   185,   186,
+       0,    56,    57,    37,    58,    59,     0,     0,    60,     0,
+       0,    61,   112,     0,     0,     0,     0,    47,    48,     9,
+       0,    62,    63,    64,    51,    10,    11,     0,    37,     0,
+       0,   224,     0,     0,     0,     0,    37,   112,     0,   241,
+       0,     0,    47,    48,     9,   112,     0,     0,   114,    51,
+      47,    48,     9,     0,   225,     0,   224,    51,     0,     0,
+     290,     0,    37,     0,   224,     0,    64,     0,    10,    11,
+     281,   112,     0,   114,     0,     0,    47,    48,     9,   225,
+       0,   114,     0,    51,     0,     0,     0,   225,     0,    37,
+     113,    64,     0,    10,    11,   396,     0,     0,   112,    64,
+       0,    10,    11,    47,    48,     9,     0,   114,     0,     0,
+      51,     0,     0,   115,     0,    37,     0,   224,     0,     0,
+       0,     0,     0,    37,   112,    64,     0,    10,    11,    47,
+      48,     9,   112,     0,   114,     0,    51,    47,    48,     9,
+     225,     0,     0,   406,    51,     0,     0,     0,   283,     0,
+       0,   224,    64,     0,    10,    11,   334,   112,     0,     0,
+     114,     0,    47,    48,     9,   335,   407,     0,   114,    51,
+     336,   337,   338,     0,   476,     0,   224,   339,    64,     0,
+      10,    11,   334,     0,   439,   459,    64,     0,    10,    11,
+       0,   335,     0,   114,     0,     0,   336,   337,   338,   225,
+       0,   341,     0,   339,     0,     0,     0,   440,     0,   334,
+     340,    64,     0,    10,    11,     0,     0,     0,   335,   343,
+       0,     0,    11,   336,   337,   540,     0,   341,     0,     0,
+     339,     0,     0,     0,     0,   334,     0,   340,     0,     0,
+       0,     0,     0,     0,   335,   343,     0,     0,    11,   336,
+     337,   338,     0,     0,   341,     0,   339,     0,     0,     0,
+       0,     0,     0,   340,     0,     0,     0,     0,     0,     0,
+       0,     0,   343,   177,    10,    11,     0,   180,   181,   182,
+     341,     0,   184,   185,   186,   187,   607,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,     0,     0,   343,   176,
+     177,    11,   178,     0,   180,   181,   182,     0,     0,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,     0,     0,     0,     0,     0,     0,   176,
+     177,     0,   178,     0,   180,   181,   182,     0,   431,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   176,   177,     0,   178,     0,   180,   181,
+     182,     0,   523,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   176,   177,     0,
+     178,     0,   180,   181,   182,     0,   649,   184,   185,   186,
      187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   176,   177,     0,     0,     0,   180,   181,   182,     0,
-       0,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   176,   177,     0,     0,     0,
-     180,   181,   182,     0,     0,   184,   185,   186,   187,     0,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   177,
-       0,     0,     0,   180,   181,   182,     0,     0,   184,   185,
-     186,   187,     0,   189,   190,   191,   192,   193,   194,   195,
-     196,   197
+     197,   176,   177,     0,   178,     0,   180,   181,   182,     0,
+     650,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,     0,   176,   177,   434,   178,
+       0,   180,   181,   182,     0,     0,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     176,   177,     0,     0,     0,   180,   181,   182,     0,     0,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   176,   177,     0,     0,     0,   180,
+     181,   182,     0,     0,   184,   185,   186,   187,     0,   189,
+     190,   191,   192,   193,   194,   195,   196,   197
 };
 
 #define yypact_value_is_default(yystate) \
-  ((yystate) == (-551))
+  ((yystate) == (-549))
 
 #define yytable_value_is_error(yytable_value) \
   YYID (0)
@@ -1270,217 +1266,213 @@ static const yytype_int16 yycheck[] =
        5,    67,   250,   223,    37,   126,    37,   126,   143,   135,
      201,   132,   204,   147,    61,    20,    36,    22,   485,    39,
       31,   142,    28,    28,   321,    45,   452,   316,   323,   249,
-     258,    36,     3,    11,    39,    24,   263,   264,    43,   267,
-      45,   444,    67,    61,   594,    35,     0,   275,    53,    54,
-       6,   279,     1,     3,     1,     3,    12,     3,    24,    35,
-      59,   289,    67,    95,    63,    97,    98,    49,     3,    59,
-      59,    35,    71,    25,    24,    37,    24,    67,    24,     3,
-      37,     6,    24,    59,   389,    40,    35,    12,    35,    44,
-      24,    67,   397,    59,   644,   106,   646,    75,    20,    61,
-      24,    72,    50,    67,    61,   572,   172,    73,    74,    59,
-      59,    59,    68,    63,    60,   135,     8,    63,    67,    53,
-      67,   141,   127,    73,    74,    73,    74,    73,    74,   255,
-     135,    73,    74,     8,    62,   424,   141,   426,   143,    63,
-     437,   159,   147,    68,   126,    67,    25,   172,    62,    73,
+     258,    36,     3,     5,    39,    20,   263,   264,    43,   267,
+      45,   444,    67,    61,    11,    35,   594,   275,    53,    54,
+       5,   279,     1,     3,    24,     3,    35,     3,    24,    51,
+      59,   289,    67,     0,    63,    62,    59,    49,    24,    59,
+       3,    68,    71,     5,    24,    37,    24,    67,    24,     3,
+      37,    74,    67,    25,   389,     7,    35,    53,    67,    59,
+      12,    83,   397,    65,    66,   106,   644,    89,   646,    61,
+      24,    72,    50,    75,    61,   572,   172,     7,    75,    59,
+      65,    59,    12,    63,    60,   135,    25,    63,    67,    62,
+      75,   141,   127,    73,    74,    73,    74,    73,    74,   255,
+     135,     3,    21,    65,    24,   424,   141,   426,   143,    63,
+     437,   159,   147,    75,   126,    60,    68,   172,    62,    73,
       74,   113,   114,   115,    68,   460,   113,   114,   115,    24,
-       6,   388,   382,   390,     3,   127,    12,   172,    21,    59,
-     127,    62,   639,    65,   136,    63,   602,    68,    60,   136,
-      24,   199,   144,    75,    74,    24,     8,   144,   436,   151,
-      65,    66,   595,    75,   151,   200,    62,   159,   503,    62,
-      75,   206,   159,   606,   607,    68,    35,   212,   113,   114,
-     115,    50,   174,    62,   220,   220,    62,   174,   223,    68,
-     515,   413,    68,   471,    62,   207,   208,   522,   420,   234,
-      59,   136,    40,    24,    73,    74,    44,   199,    67,   144,
-       3,   432,   199,    65,   249,   250,   151,   368,     3,   368,
-     283,    51,   283,    75,   559,    71,   476,   378,   384,   378,
-      62,   223,    67,   225,   399,    66,   223,   401,   225,   174,
-     317,   576,   577,    66,     3,    59,   281,   523,   524,   241,
-      59,   243,    24,    83,   241,    59,   243,   249,    74,    89,
-     518,     3,   249,    24,   599,     7,     6,    64,   280,   317,
-      62,    59,    12,    63,    75,    17,    59,    35,   290,   271,
-      22,    23,    24,    67,   271,    60,   321,    29,    60,    59,
-     225,   283,    35,    72,   286,   287,   283,   575,    72,   286,
-     287,    73,    74,    62,    63,     3,   241,   342,   211,    68,
-      24,   374,    60,   374,   217,   218,    59,    59,   353,   569,
-     416,     7,    62,    60,    67,   317,   374,    24,    68,    71,
-     317,    73,    74,    35,   384,    62,   271,   372,    60,   374,
-      75,    62,   392,    35,   379,    59,   396,   382,   283,   384,
-     427,   286,   287,    37,   366,   367,    53,   392,    24,    73,
-      74,   396,    59,    59,   399,    35,   401,    59,   360,    62,
-       3,    68,    72,   360,    62,    67,    73,    74,    65,   427,
-     372,   416,   374,    62,    62,   372,    67,   374,    62,    59,
-     382,    66,    65,   405,   386,   382,    59,    67,    67,   386,
-      71,   436,   437,    67,     7,    65,   469,   419,   469,   444,
-     445,    62,   447,    24,   406,   407,   567,   452,   567,   406,
-     407,   469,   485,   458,   485,   360,   461,   462,    62,   113,
-     114,   115,    62,    62,    60,   427,   471,   485,   341,    60,
-     427,   476,     9,   127,    60,    24,   349,   495,    59,    63,
-      17,   386,   136,    60,    21,    68,    24,    68,    60,    68,
-     144,    35,    73,    74,    31,    32,    60,   151,    60,    60,
-      75,   406,   407,    68,    53,    75,    60,   469,    60,    24,
-      59,    68,   469,    60,   476,    36,   582,     3,    60,   476,
-     174,    59,    62,   485,    73,    74,    72,    64,   485,    62,
-      24,    59,    24,   495,    75,    73,    74,    60,   495,   572,
-      66,   572,    60,    94,    95,    60,    97,    98,    55,    56,
+      75,   388,   382,   390,     3,   127,     1,   172,    68,    59,
+     127,    62,   639,    24,   136,     7,   602,    68,    68,   136,
+      12,   199,   144,    73,    74,    24,    63,   144,   436,   151,
+      62,    63,   595,    62,   151,   200,    68,   159,   503,    68,
+      35,   206,   159,   606,   607,   523,   524,   212,   113,   114,
+     115,    50,   174,    62,   220,   220,    35,   174,   223,    62,
+     515,   413,     3,   471,    59,   207,   208,   522,   420,   234,
+      62,   136,    67,     3,    73,    74,    68,   199,    71,   144,
+      59,   432,   199,    67,   249,   250,   151,   368,    67,   368,
+     283,    24,   283,    24,   559,    62,   476,   378,   384,   378,
+      66,   223,    66,   225,   399,    59,   223,   401,   225,   174,
+     317,   576,   577,     7,    59,    59,   281,    74,    12,   241,
+      24,   243,    53,    35,   241,    40,   243,   249,    59,    44,
+     518,     3,   249,    59,   599,    64,     8,    68,   280,   317,
+      73,    74,    73,    74,    24,    17,    62,    59,   290,   271,
+      22,    23,    24,    63,   271,    67,   321,    29,    40,    59,
+     225,   283,    44,    60,   286,   287,   283,   575,    62,   286,
+     287,    67,    75,    53,    68,    35,   241,   342,   211,    59,
+      24,   374,    72,   374,   217,   218,    72,    59,   353,   569,
+     416,    24,    59,    73,    74,   317,   374,    24,     3,    71,
+     317,    73,    74,    60,   384,     8,   271,   372,    95,   374,
+      97,    98,   392,    35,   379,    59,   396,   382,   283,   384,
+     427,   286,   287,    37,   366,   367,    59,   392,    60,    73,
+      74,   396,    59,    35,   399,    35,   401,    59,   360,    62,
+      73,    74,    35,   360,    75,    67,    73,    74,    60,   427,
+     372,   416,   374,    62,    24,   372,    62,   374,    59,    59,
+     382,    72,    66,   405,   386,   382,    59,    67,    62,   386,
+       3,   436,   437,    62,    67,    62,   469,   419,   469,   444,
+     445,    65,   447,    24,   406,   407,   567,   452,   567,   406,
+     407,   469,   485,   458,   485,   360,   461,   462,    67,   113,
+     114,   115,    62,    65,    59,   427,   471,   485,   341,    67,
+     427,   476,     9,   127,    71,    24,   349,   495,    59,    67,
+      17,   386,   136,     8,    21,    24,    65,    62,    62,    35,
+     144,    62,    73,    74,    31,    32,    62,   151,    60,    60,
+      60,   406,   407,    60,    63,    68,    60,   469,    60,    24,
+      68,    60,   469,    60,   476,    60,   582,    60,    68,   476,
+     174,    60,    75,   485,    73,    74,    60,    64,   485,    60,
+      24,    75,    24,   495,    73,    74,    68,    36,   495,   572,
+       3,   572,    62,    94,    95,    60,    97,    98,    55,    56,
       57,    58,    59,    60,   572,    62,    63,   519,    73,    74,
-      60,    60,   519,    60,   569,    59,   439,    62,    60,   223,
-     575,   225,   445,   446,   621,   448,    24,   582,    60,    73,
-      74,    73,    74,    72,   457,    24,   459,   241,    60,   243,
-     595,    59,   597,    59,    59,   249,   601,   602,    68,    62,
-      62,   606,   607,   621,    68,    72,   639,   569,   639,    49,
-     572,    59,   569,    62,   519,   572,    59,   271,    60,    14,
-      59,   639,    68,    60,    68,    73,    74,    34,    49,   283,
-      60,    62,   286,   287,    73,    74,    60,    44,    60,    31,
-      61,    48,    60,    64,    60,    22,    53,    54,    55,    56,
-     582,   158,   159,   508,   615,   377,   615,   142,   243,   621,
-     211,   281,   524,     7,   621,    39,   217,   218,   159,   243,
-     213,     7,   392,    17,   372,   548,   384,   639,    22,    23,
-      24,    17,   639,   556,    22,    29,    22,    23,    24,   495,
-     440,   601,    36,    29,   462,   597,   334,   334,   212,   458,
-      36,    -1,    -1,    -1,    -1,    -1,   360,    -1,    -1,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    -1,    53,   372,    -1,
-     374,    65,    -1,    59,   597,   598,    34,    71,   382,    73,
-      74,    75,   386,    -1,    -1,    71,    44,    73,    74,    75,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
+      72,    75,   519,    60,   569,    59,   439,    59,    59,   223,
+     575,   225,   445,   446,   621,   448,    62,   582,    60,    73,
+      74,    73,    74,    66,   457,    60,   459,   241,    60,   243,
+     595,    60,   597,    60,    62,   249,   601,   602,    72,    60,
+      60,   606,   607,   621,    59,    59,   639,   569,   639,    59,
+     572,    68,   569,    62,   519,   572,    34,   271,    62,    72,
+      68,   639,    49,    62,    59,    14,    44,    60,    49,   283,
+      48,    68,   286,   287,    60,    53,    54,    55,    56,    68,
+      61,    60,    62,    64,    60,    60,    60,    60,    31,    22,
+     615,   158,   159,   582,   508,   142,   377,   615,   524,   621,
+     211,   243,   281,    39,   621,   243,   217,   218,   392,   159,
+       8,   213,    22,   384,   372,   548,   334,   639,   495,    17,
+     440,     8,   639,   556,    22,    23,    24,   334,   462,   601,
+      17,    29,    -1,   597,   458,    22,    23,    24,    36,   212,
+      -1,    -1,    29,    -1,    -1,    -1,   360,    -1,    -1,    36,
+      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,   372,    -1,
+     374,    59,    -1,    -1,   597,   598,    53,    65,   382,    -1,
+      -1,    -1,   386,    71,    -1,    73,    74,    75,    65,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    74,    -1,    -1,
       -1,    -1,   406,   407,   175,   176,   177,   178,    -1,   180,
      181,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
      191,   192,   193,   194,   195,   196,   197,    -1,   199,    -1,
-     201,    -1,   203,   334,    -1,    -1,   207,   208,   209,    -1,
-     341,     7,    -1,    -1,    -1,    11,    -1,    -1,   349,    -1,
-       4,    17,    -1,    -1,     8,    -1,    22,    23,    24,    -1,
-      -1,    -1,    -1,    29,    -1,   469,    -1,    -1,    -1,    -1,
-      36,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,    33,
-      34,   485,    36,    37,    38,    39,    40,    53,    42,    43,
+     201,    -1,   203,   334,    -1,    -1,   207,   208,   209,    34,
+     341,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,    44,
+       4,     5,    -1,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    -1,    -1,    -1,   469,    -1,    -1,    -1,    -1,
+      -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,    33,
+      34,   485,    36,    37,    38,    39,    40,    -1,    42,    43,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    -1,    -1,    71,    -1,    -1,    74,   280,
+      54,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,   280,
       -1,    65,    -1,    -1,    -1,   519,    -1,    -1,    -1,   290,
       -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   439,    -1,
       -1,    -1,   313,    -1,   445,   446,   317,   448,    -1,    -1,
-      -1,    -1,   323,    -1,     0,     1,   457,     3,   459,     5,
-      -1,     7,    -1,     9,    10,   569,    -1,    13,   572,    15,
+      -1,    -1,   323,    -1,     0,     1,   457,     3,   459,    -1,
+       6,    -1,     8,     9,    10,   569,    -1,    13,   572,    15,
       16,    17,    18,    19,    20,    -1,    22,    23,    24,    -1,
       -1,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
       36,    -1,    -1,    -1,    -1,   366,   367,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    -1,    52,    53,    -1,    -1,
-      56,    -1,    -1,    59,    -1,    -1,    62,    -1,     3,    -1,
-      -1,    -1,     7,    69,    70,    71,    11,    73,    74,    -1,
-      -1,    -1,    17,    -1,   405,   639,    -1,    22,    23,    24,
-      -1,    -1,    -1,    -1,    29,    -1,    -1,   548,   419,    -1,
-      -1,    36,    -1,    -1,    -1,   556,   427,    -1,    -1,    -1,
-      -1,   432,   563,    -1,    49,    50,    -1,    52,    53,    -1,
-      -1,    56,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    70,    71,    -1,    73,    74,
-      -1,    -1,    -1,   594,    -1,    -1,   597,   598,    -1,    -1,
-      -1,   472,   473,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     1,    -1,     3,    -1,     5,     6,     7,    -1,     9,
+      56,    -1,    -1,    59,    -1,    -1,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    70,    71,    -1,    73,    74,    -1,
+      -1,    -1,    -1,    -1,   405,   639,    -1,    -1,     3,    -1,
+      -1,    -1,    -1,     8,    -1,    -1,    11,   548,   419,    -1,
+      -1,    -1,    17,    -1,    -1,   556,   427,    22,    23,    24,
+      -1,   432,   563,    -1,    29,    -1,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    50,    -1,    52,    53,    -1,
+      -1,    56,    -1,   594,    59,    -1,   597,   598,    -1,    -1,
+      -1,   472,   473,    -1,    69,    70,    71,    -1,    73,    74,
+      -1,     1,    -1,     3,    -1,    -1,     6,     7,     8,     9,
       10,    -1,    12,    13,   495,    15,    16,    17,    18,    19,
       20,    -1,    22,    23,    24,    -1,    -1,    27,    28,    29,
       30,    31,    32,   644,   515,   646,    36,    -1,    -1,    -1,
       -1,   522,   523,   524,    -1,    -1,    -1,    -1,    -1,    49,
       50,    -1,    52,    53,    -1,    -1,    56,    -1,    -1,    59,
       -1,    -1,    62,    -1,    -1,    -1,    -1,    67,    68,    69,
-      70,    71,    -1,    73,    74,     1,    -1,     3,    -1,     5,
-      -1,     7,    -1,     9,    10,    -1,    -1,    13,    -1,    15,
+      70,    71,    -1,    73,    74,     1,    -1,     3,    -1,    -1,
+       6,    -1,     8,     9,    10,    -1,    -1,    13,    -1,    15,
       16,    17,    18,    19,    20,    -1,    22,    23,    24,    -1,
       -1,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
       36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    49,    50,    -1,    52,    53,    -1,    -1,
-      56,    -1,    -1,    59,    -1,     3,    62,   618,   619,     7,
-     621,    67,    68,    69,    70,    71,    -1,    73,    74,    17,
-       7,    -1,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,
-      17,    29,    -1,    -1,    -1,    22,    23,    24,    36,    -1,
-      -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,
-      -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,
-       3,    59,    60,    -1,     7,    -1,    53,    -1,    -1,    -1,
-      -1,    69,    70,    71,    17,    73,    74,    -1,    65,    22,
-      23,    24,    -1,    -1,    71,    -1,    29,    74,    -1,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,
-      53,    -1,    -1,    56,    -1,     3,    59,    -1,    -1,     7,
-      -1,    -1,    -1,    -1,    67,    -1,    69,    70,    71,    17,
-      73,    74,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,
+      56,    -1,    -1,    59,    -1,    -1,    62,   618,   619,    -1,
+     621,    67,    68,    69,    70,    71,     3,    73,    74,    -1,
+      -1,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      17,    -1,     8,    -1,    -1,    22,    23,    24,    -1,    -1,
+      -1,    17,    29,    -1,    -1,    -1,    22,    23,    24,    36,
+      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,
+      36,    -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,
+      -1,     3,    59,    60,    -1,    -1,     8,    53,    -1,    -1,
+      -1,    -1,    69,    70,    71,    17,    73,    74,    -1,    -1,
+      22,    23,    24,    -1,    -1,    71,    -1,    29,    74,    -1,
+      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,
+      52,    53,    -1,    -1,    56,    -1,     3,    59,    -1,    -1,
+      -1,     8,    -1,    -1,    -1,    67,    -1,    69,    70,    71,
+      17,    73,    74,    -1,    -1,    22,    23,    24,    -1,    -1,
+      -1,    -1,    29,    -1,    31,    -1,    -1,    -1,    -1,    36,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,
-       3,    59,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    69,    70,    71,    17,    73,    74,    -1,    -1,    22,
-      23,    24,    -1,    26,    -1,    -1,    29,    -1,    -1,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,
-      53,    -1,    -1,    56,    -1,     3,    59,    -1,    -1,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    17,
-      73,    74,    -1,    -1,    22,    23,    24,    -1,    26,    -1,
-      -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,
-       3,    59,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    69,    70,    71,    17,    73,    74,    -1,    -1,    22,
-      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,
-      53,    -1,    -1,    56,    -1,     3,    59,    -1,    -1,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    17,
-      73,    74,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
+      -1,    -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,
+      -1,     3,    59,    -1,    -1,    -1,     8,    -1,    -1,    -1,
+      -1,    -1,    69,    70,    71,    17,    73,    74,    -1,    -1,
+      22,    23,    24,    -1,    26,    -1,    -1,    29,    -1,    -1,
+      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,
+      52,    53,    -1,    -1,    56,    -1,     3,    59,    -1,    -1,
+      -1,     8,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,
+      17,    73,    74,    -1,    -1,    22,    23,    24,    -1,    26,
+      -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+      -1,    -1,    49,    50,     8,    52,    53,    -1,    -1,    56,
+      -1,    -1,    59,    17,    -1,    -1,    -1,    -1,    22,    23,
+      24,    -1,    69,    70,    71,    29,    73,    74,    -1,    -1,
+      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     3,    -1,    -1,    49,    50,     8,    52,    53,
+      -1,    -1,    56,    -1,    -1,    59,    17,    -1,    -1,    -1,
+      -1,    22,    23,    24,    -1,    69,    70,    71,    29,    73,
+      74,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     3,    -1,    -1,    49,    50,
+       8,    52,    53,    -1,    -1,    56,    -1,    -1,    59,    17,
+      -1,    -1,    -1,    -1,    22,    23,    24,    -1,    69,    70,
+      71,    29,    73,    74,    -1,    -1,    -1,    -1,    36,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,
-       3,    59,    -1,    -1,     7,    -1,    -1,    -1,    -1,    -1,
-      -1,    69,    70,    71,    17,    73,    74,    -1,    -1,    22,
-      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    -1,
+      -1,    49,    50,     8,    52,    53,    -1,    -1,    56,    -1,
+      -1,    59,    17,    -1,    -1,    -1,    -1,    22,    23,    24,
+      -1,    69,    70,    71,    29,    73,    74,    -1,     8,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,     8,    17,    -1,    11,
+      -1,    -1,    22,    23,    24,    17,    -1,    -1,    53,    29,
+      22,    23,    24,    -1,    59,    -1,    36,    29,    -1,    -1,
+      65,    -1,     8,    -1,    36,    -1,    71,    -1,    73,    74,
+      75,    17,    -1,    53,    -1,    -1,    22,    23,    24,    59,
+      -1,    53,    -1,    29,    -1,    -1,    -1,    59,    -1,     8,
+      36,    71,    -1,    73,    74,    75,    -1,    -1,    17,    71,
+      -1,    73,    74,    22,    23,    24,    -1,    53,    -1,    -1,
+      29,    -1,    -1,    59,    -1,     8,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,     8,    17,    71,    -1,    73,    74,    22,
+      23,    24,    17,    -1,    53,    -1,    29,    22,    23,    24,
+      59,    -1,    -1,    36,    29,    -1,    -1,    -1,     8,    -1,
+      -1,    36,    71,    -1,    73,    74,     8,    17,    -1,    -1,
+      53,    -1,    22,    23,    24,    17,    59,    -1,    53,    29,
+      22,    23,    24,    -1,    59,    -1,    36,    29,    71,    -1,
+      73,    74,     8,    -1,    36,    11,    71,    -1,    73,    74,
+      -1,    17,    -1,    53,    -1,    -1,    22,    23,    24,    59,
+      -1,    53,    -1,    29,    -1,    -1,    -1,    59,    -1,     8,
+      36,    71,    -1,    73,    74,    -1,    -1,    -1,    17,    71,
+      -1,    -1,    74,    22,    23,    24,    -1,    53,    -1,    -1,
+      29,    -1,    -1,    -1,    -1,     8,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    17,    71,    -1,    -1,    74,    22,
+      23,    24,    -1,    -1,    53,    -1,    29,    -1,    -1,    -1,
       -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,
-      53,    -1,    -1,    56,    -1,    -1,    59,    -1,    -1,     7,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    17,
-      73,    74,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,
-      -1,    29,    -1,    -1,    -1,     7,    -1,    -1,    36,    11,
-      -1,    -1,    -1,     7,    -1,    17,    -1,    -1,    -1,    -1,
-      22,    23,    24,    17,    -1,    53,    -1,    29,    22,    23,
-      24,    59,    -1,    -1,    36,    29,    -1,    65,     7,    -1,
-      -1,    -1,    36,    71,    -1,    73,    74,    75,    17,    -1,
-      -1,    53,    -1,    22,    23,    24,    -1,    59,    -1,    53,
-      29,    -1,    -1,    -1,    -1,    59,     7,    36,    -1,    71,
-      -1,    73,    74,    -1,    -1,    -1,    17,    71,    -1,    73,
-      74,    22,    23,    24,    53,    -1,    -1,    -1,    29,    -1,
-      59,     7,    -1,    -1,    -1,    36,    -1,    -1,    -1,     7,
-      -1,    17,    71,    -1,    73,    74,    22,    23,    24,    17,
-      -1,    -1,    53,    29,    22,    23,    24,    -1,    59,    -1,
-      36,    29,    -1,    -1,     7,    -1,    -1,    -1,    36,    -1,
-      71,    -1,    73,    74,    17,    -1,    -1,    53,    -1,    22,
-      23,    24,    -1,    59,    -1,    53,    29,    -1,    -1,    -1,
-      -1,    59,     7,    36,    -1,    71,    -1,    73,    74,    -1,
-      -1,    -1,    17,    71,    -1,    73,    74,    22,    23,    24,
-      53,    -1,    -1,    -1,    29,    -1,    59,     7,    -1,    -1,
-      -1,    36,    -1,    -1,    -1,     7,    -1,    17,    71,    -1,
-      -1,    74,    22,    23,    24,    17,    -1,    -1,    53,    29,
-      22,    23,    24,    -1,    -1,    -1,    36,    29,    -1,    -1,
-      -1,    -1,    -1,    -1,    36,    -1,    71,    -1,    73,    74,
-      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,
-      -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    71,    -1,    -1,    74,    -1,    -1,    -1,    -1,    71,
-      33,    34,    74,    36,    -1,    38,    39,    40,    -1,    -1,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,
-      33,    34,    -1,    36,    -1,    38,    39,    40,    -1,    72,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    33,    34,    -1,    36,    -1,    38,
-      39,    40,    -1,    66,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    33,    34,
-      -1,    36,    -1,    38,    39,    40,    -1,    66,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    33,    34,    -1,    36,    -1,    38,    39,    40,
-      -1,    66,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    -1,    33,    34,    60,
-      36,    -1,    38,    39,    40,    -1,    -1,    43,    44,    45,
+      -1,    -1,    71,    34,    73,    74,    -1,    38,    39,    40,
+      53,    -1,    43,    44,    45,    46,    59,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    -1,    -1,    71,    33,
+      34,    74,    36,    -1,    38,    39,    40,    -1,    -1,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    33,
+      34,    -1,    36,    -1,    38,    39,    40,    -1,    72,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    33,    34,    -1,    36,    -1,    38,    39,
+      40,    -1,    66,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    33,    34,    -1,
+      36,    -1,    38,    39,    40,    -1,    66,    43,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    33,    34,    -1,    -1,    -1,    38,    39,    40,    -1,
-      -1,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    33,    34,    -1,    -1,    -1,
-      38,    39,    40,    -1,    -1,    43,    44,    45,    46,    -1,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,    34,
-      -1,    -1,    -1,    38,    39,    40,    -1,    -1,    43,    44,
-      45,    46,    -1,    48,    49,    50,    51,    52,    53,    54,
-      55,    56
+      56,    33,    34,    -1,    36,    -1,    38,    39,    40,    -1,
+      66,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    -1,    33,    34,    60,    36,
+      -1,    38,    39,    40,    -1,    -1,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    -1,    -1,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    -1,    -1,    43,    44,    45,    46,    -1,    48,
+      49,    50,    51,    52,    53,    54,    55,    56
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1490,7 +1482,7 @@ static const yytype_uint8 yystos[] =
        0,    77,    79,    80,     0,    25,    78,    25,    86,    24,
       73,    74,   137,   138,    81,    24,    88,    89,     3,    62,
       21,    82,   162,    24,    87,   210,    63,     3,    59,    63,
-      83,    85,   137,    62,     1,     3,     5,     7,     9,    10,
+      83,    85,   137,    62,     1,     3,     6,     8,     9,    10,
       13,    15,    16,    17,    18,    19,    20,    22,    23,    27,
       28,    29,    30,    31,    32,    36,    49,    50,    52,    53,
       56,    59,    69,    70,    71,    90,    91,    92,    98,   110,
@@ -1507,7 +1499,7 @@ static const yytype_uint8 yystos[] =
      188,    62,    59,    94,   181,     4,    33,    34,    36,    37,
       38,    39,    40,    42,    43,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    67,    59,
-      63,    71,    66,    59,   133,     1,   133,     8,    65,    75,
+      63,    71,    66,    59,   133,     1,   133,     5,    65,    75,
      138,   196,    59,   156,   196,    24,   196,   197,   196,    64,
       62,   186,    88,    59,    36,    59,   142,   148,   149,   150,
      151,   157,   142,   142,    63,    98,   107,   108,   109,   182,
@@ -1515,15 +1507,15 @@ static const yytype_uint8 yystos[] =
       67,   158,   112,   190,    24,    59,    68,   134,   167,   169,
      171,   142,    35,    53,    59,    68,   134,   166,   168,   169,
      170,   180,   112,    60,    97,   165,   142,    60,    93,   163,
-      65,    75,   142,     7,   143,    60,    72,    72,    60,    94,
+      65,    75,   142,     8,   143,    60,    72,    72,    60,    94,
       65,   142,   123,   123,   123,   123,   123,   123,   123,   123,
      123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
      123,   123,   123,   127,    60,   131,   183,    59,   137,   123,
      188,   178,   123,   127,     1,    67,    91,   100,   176,   177,
-     179,   182,   182,   123,     7,    17,    22,    23,    24,    29,
+     179,   182,   182,   123,     8,    17,    22,    23,    24,    29,
       36,    53,    65,    71,   138,   198,   200,   201,   202,   137,
      203,   211,   158,    59,     3,   198,   198,    83,    60,   175,
-       7,   142,    60,   137,    35,   105,     8,    65,    62,   142,
+       8,   142,    60,   137,    35,   105,     5,    65,    62,   142,
      132,   141,    75,   187,    60,   175,   179,   115,    62,    63,
       24,   169,    59,   172,    62,   186,    72,   104,    59,   170,
       53,   170,    62,   186,     3,   194,    75,   142,   120,    62,
@@ -1531,12 +1523,12 @@ static const yytype_uint8 yystos[] =
      149,   150,   157,    67,   142,   142,    62,   186,   182,    65,
       67,   123,   128,   129,   184,   185,    11,    75,   187,    31,
      131,    72,    66,   176,    60,   185,   101,    62,    68,    36,
-      59,   199,   200,   202,    59,    67,    71,    67,     7,   198,
+      59,   199,   200,   202,    59,    67,    71,    67,     8,   198,
        3,    50,    59,   137,   208,   209,     3,    72,    65,    11,
      198,    60,    75,    62,   191,   211,    62,    62,    62,    60,
       60,   106,    26,    26,   190,   173,    59,   137,   147,   148,
      149,   150,   151,   157,   159,    60,    68,   105,   190,   137,
-      60,   175,   171,    68,   142,     6,    12,    68,    99,   102,
+      60,   175,   171,    68,   142,     7,    12,    68,    99,   102,
      170,   194,   170,    60,   168,    68,   134,   194,    35,    97,
       60,    93,    60,   182,   142,   127,    94,    95,   164,   181,
       60,   182,   127,    66,    75,   187,    68,    75,   187,   131,
@@ -1548,7 +1540,7 @@ static const yytype_uint8 yystos[] =
       60,   185,    62,   186,   142,   185,   123,   129,   128,   129,
       60,    72,    68,    60,    60,    59,    68,    62,    72,   198,
       68,    62,    49,   198,    62,   194,    59,    59,   198,   206,
-     207,    68,   190,    60,   175,    14,   117,   159,     8,    65,
+     207,    68,   190,    60,   175,    14,   117,   159,     5,    65,
       66,    75,   179,   194,   194,    68,    68,    95,    60,    68,
      206,   191,   205,   198,   194,   204,   208,   191,   191,    60,
      100,   113,   123,   123,    60,    60,    60,    60,   159,    66,
@@ -2854,7 +2846,7 @@ yyreduce:
                                (yyval.node)->left = dclname((yyvsp[(1) - (3)].list)->n->sym);  // it's a colas, so must not re-use an oldname.
                        break;
                }
-               (yyval.node) = colas((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
+               (yyval.node) = colas((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list), (yyvsp[(2) - (3)].i));
        }
     break;
 
@@ -2936,7 +2928,7 @@ yyreduce:
                // done in casebody()
                markdcl();
                (yyval.node) = nod(OXCASE, N, N);
-               (yyval.node)->list = list1(colas((yyvsp[(2) - (5)].list), list1((yyvsp[(4) - (5)].node))));
+               (yyval.node)->list = list1(colas((yyvsp[(2) - (5)].list), list1((yyvsp[(4) - (5)].node)), (yyvsp[(3) - (5)].i)));
        }
     break;
 
@@ -5293,7 +5285,7 @@ yyreduce:
 
 
 /* Line 1806 of yacc.c  */
-#line 5298 "y.tab.c"
+#line 5290 "y.tab.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
index bc6c47d6d288fbc34ccaa8e87b8e15c3a93eeca9..6eeb831b2540d827fab93966c0395feea876d7d4 100644 (file)
    enum yytokentype {
      LLITERAL = 258,
      LASOP = 259,
-     LBREAK = 260,
-     LCASE = 261,
-     LCHAN = 262,
-     LCOLAS = 263,
+     LCOLAS = 260,
+     LBREAK = 261,
+     LCASE = 262,
+     LCHAN = 263,
      LCONST = 264,
      LCONTINUE = 265,
      LDDD = 266,
 /* Tokens.  */
 #define LLITERAL 258
 #define LASOP 259
-#define LBREAK 260
-#define LCASE 261
-#define LCHAN 262
-#define LCOLAS 263
+#define LCOLAS 260
+#define LBREAK 261
+#define LCASE 262
+#define LCHAN 263
 #define LCONST 264
 #define LCONTINUE 265
 #define LDDD 266
index 32d68e7ea231df5cd9354da6e3e2cc6dfe7bfae6..eace9376a3c0c798c822743c408a66389b59b71a 100644 (file)
@@ -38,6 +38,12 @@ func main() {
                i, f := f2() // ERROR "redeclared|no new"
                _, _, _ = i, f, s
        }
+       {
+               // multiline no new variables
+               i := f1
+               i := func() int { // ERROR "redeclared|no new|incompatible"
+               }
+       }
        {
                // single redeclaration
                i, f, s := f3()