]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: Give better line numbers for errors in composite literals.
authorDaniel Morsing <daniel.morsing@gmail.com>
Wed, 12 Dec 2012 15:43:54 +0000 (16:43 +0100)
committerDaniel Morsing <daniel.morsing@gmail.com>
Wed, 12 Dec 2012 15:43:54 +0000 (16:43 +0100)
Credit to Russ for suggesting this fix.

Fixes #3925.

R=golang-dev, franciscossouza, rsc
CC=golang-dev
https://golang.org/cl/6920051

src/cmd/gc/go.y
src/cmd/gc/y.tab.c
src/cmd/gc/y.tab.h
src/cmd/gc/yerr.h
test/fixedbugs/issue3925.go [new file with mode: 0644]

index 29e6e3b34225c16d8adab94b1d7415950c0b07d1..5f9d5935f78f857d85b3c4e779bf720f7ae45bd4 100644 (file)
@@ -54,7 +54,7 @@ static void fixlbrace(int);
 %type  <node>  stmt ntype
 %type  <node>  arg_type
 %type  <node>  case caseblock
-%type  <node>  compound_stmt dotname embed expr complitexpr
+%type  <node>  compound_stmt dotname embed expr complitexpr bare_complitexpr
 %type  <node>  expr_or_type
 %type  <node>  fndcl hidden_fndcl fnliteral
 %type  <node>  for_body for_header for_stmt if_header if_stmt non_dcl_stmt
@@ -974,6 +974,29 @@ keyval:
                $$ = nod(OKEY, $1, $3);
        }
 
+bare_complitexpr:
+       expr
+       {
+               // These nodes do not carry line numbers.
+               // Since a composite literal commonly spans several lines,
+               // the line number on errors may be misleading.
+               // Introduce a wrapper node to give the correct line.
+               $$ = $1;
+               switch($$->op) {
+               case ONAME:
+               case ONONAME:
+               case OTYPE:
+               case OPACK:
+               case OLITERAL:
+                       $$ = nod(OPAREN, $$, N);
+               }
+       }
+|      '{' start_complit braced_keyval_list '}'
+       {
+               $$ = $2;
+               $$->list = $3;
+       }
+
 complitexpr:
        expr
 |      '{' start_complit braced_keyval_list '}'
@@ -1761,7 +1784,7 @@ keyval_list:
        {
                $$ = list1($1);
        }
-|      complitexpr
+|      bare_complitexpr
        {
                $$ = list1($1);
        }
@@ -1769,7 +1792,7 @@ keyval_list:
        {
                $$ = list($1, $3);
        }
-|      keyval_list ',' complitexpr
+|      keyval_list ',' bare_complitexpr
        {
                $$ = list($1, $3);
        }
index 26ae8e1833a7be54109bc32259ef7e1ad47aede7..792dc661cd132f213e1f3f706d1aa09b6958da31 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.5.  */
+/* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2011 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 "2.6.5"
+#define YYBISON_VERSION "2.5"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 /* Pull parsers.  */
 #define YYPULL 1
 
+/* Using locations.  */
+#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
-/* Line 360 of yacc.c  */
+
+/* Line 268 of yacc.c  */
 #line 20 "go.y"
 
 #include <u.h>
 
 static void fixlbrace(int);
 
-/* Line 360 of yacc.c  */
-#line 77 "y.tab.c"
 
-# ifndef YY_NULL
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
-#  else
-#   define YY_NULL 0
-#  endif
-# endif
+/* Line 268 of yacc.c  */
+#line 81 "y.tab.c"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -91,18 +92,12 @@ static void fixlbrace(int);
 # define YYERROR_VERBOSE 1
 #endif
 
-/* In a future release of Bison, this section will be replaced
-   by #include "y.tab.h".  */
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
 #endif
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -213,10 +208,12 @@ extern int yydebug;
 
 
 
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-/* Line 376 of yacc.c  */
+
+/* Line 293 of yacc.c  */
 #line 28 "go.y"
 
        Node*           node;
@@ -227,36 +224,21 @@ typedef union YYSTYPE
        int             i;
 
 
-/* Line 376 of yacc.c  */
-#line 232 "y.tab.c"
+
+/* Line 293 of yacc.c  */
+#line 230 "y.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-extern YYSTYPE yylval;
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
-
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
 
-/* Line 379 of yacc.c  */
-#line 260 "y.tab.c"
+
+/* Line 343 of yacc.c  */
+#line 242 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -309,24 +291,24 @@ typedef short int yytype_int16;
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(Msgid) Msgid
+#  define YY_(msgid) msgid
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
 #else
-# define YYUSE(E) /* empty */
+# define YYUSE(e) /* empty */
 #endif
 
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(N) (N)
+# define YYID(n) (n)
 #else
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
@@ -362,7 +344,6 @@ YYID (yyi)
 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
 #      define EXIT_SUCCESS 0
 #     endif
@@ -454,20 +435,20 @@ union yyalloc
 #endif
 
 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
+/* Copy COUNT objects from FROM to TO.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 #  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
       while (YYID (0))
 #  endif
 # endif
@@ -476,16 +457,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2049
+#define YYLAST   2144
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  76
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  141
+#define YYNNTS  142
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  347
+#define YYNRULES  349
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  658
+#define YYNSTATES  662
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -549,58 +530,58 @@ static const yytype_uint16 yyprhs[] =
      366,   370,   374,   378,   382,   384,   387,   390,   393,   396,
      399,   402,   405,   408,   412,   418,   425,   427,   429,   433,
      439,   445,   450,   457,   459,   464,   470,   476,   484,   486,
-     487,   491,   493,   498,   500,   504,   506,   508,   510,   512,
-     514,   516,   518,   519,   521,   523,   525,   527,   532,   534,
-     536,   538,   541,   543,   545,   547,   549,   551,   555,   557,
-     559,   561,   564,   566,   568,   570,   572,   576,   578,   580,
-     582,   584,   586,   588,   590,   592,   594,   598,   603,   608,
-     611,   615,   621,   623,   625,   628,   632,   638,   642,   648,
-     652,   656,   662,   671,   677,   686,   692,   693,   697,   698,
-     700,   704,   706,   711,   714,   715,   719,   721,   725,   727,
-     731,   733,   737,   739,   743,   745,   749,   753,   756,   761,
-     765,   771,   777,   779,   783,   785,   788,   790,   794,   799,
-     801,   804,   807,   809,   811,   815,   816,   819,   820,   822,
-     824,   826,   828,   830,   832,   834,   836,   838,   839,   844,
-     846,   849,   852,   855,   858,   861,   864,   866,   870,   872,
-     876,   878,   882,   884,   888,   890,   894,   896,   898,   902,
-     906,   907,   910,   911,   913,   914,   916,   917,   919,   920,
-     922,   923,   925,   926,   928,   929,   931,   932,   934,   935,
-     937,   942,   947,   953,   960,   965,   970,   972,   974,   976,
-     978,   980,   982,   984,   986,   988,   992,   997,  1003,  1008,
-    1013,  1016,  1019,  1024,  1028,  1032,  1038,  1042,  1047,  1051,
-    1057,  1059,  1060,  1062,  1066,  1068,  1070,  1073,  1075,  1077,
-    1083,  1084,  1087,  1089,  1093,  1095,  1099,  1101
+     487,   491,   493,   498,   500,   505,   507,   511,   513,   515,
+     517,   519,   521,   523,   525,   526,   528,   530,   532,   534,
+     539,   541,   543,   545,   548,   550,   552,   554,   556,   558,
+     562,   564,   566,   568,   571,   573,   575,   577,   579,   583,
+     585,   587,   589,   591,   593,   595,   597,   599,   601,   605,
+     610,   615,   618,   622,   628,   630,   632,   635,   639,   645,
+     649,   655,   659,   663,   669,   678,   684,   693,   699,   700,
+     704,   705,   707,   711,   713,   718,   721,   722,   726,   728,
+     732,   734,   738,   740,   744,   746,   750,   752,   756,   760,
+     763,   768,   772,   778,   784,   786,   790,   792,   795,   797,
+     801,   806,   808,   811,   814,   816,   818,   822,   823,   826,
+     827,   829,   831,   833,   835,   837,   839,   841,   843,   845,
+     846,   851,   853,   856,   859,   862,   865,   868,   871,   873,
+     877,   879,   883,   885,   889,   891,   895,   897,   901,   903,
+     905,   909,   913,   914,   917,   918,   920,   921,   923,   924,
+     926,   927,   929,   930,   932,   933,   935,   936,   938,   939,
+     941,   942,   944,   949,   954,   960,   967,   972,   977,   979,
+     981,   983,   985,   987,   989,   991,   993,   995,   999,  1004,
+    1010,  1015,  1020,  1023,  1026,  1031,  1035,  1039,  1045,  1049,
+    1054,  1058,  1064,  1066,  1067,  1069,  1073,  1075,  1077,  1080,
+    1082,  1084,  1090,  1091,  1094,  1096,  1100,  1102,  1106,  1108
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-      77,     0,    -1,    79,    78,    81,   165,    -1,    -1,    25,
-     140,    62,    -1,    -1,    80,    86,    88,    -1,    -1,    81,
-      82,    62,    -1,    21,    83,    -1,    21,    59,    84,   189,
+      77,     0,    -1,    79,    78,    81,   166,    -1,    -1,    25,
+     141,    62,    -1,    -1,    80,    86,    88,    -1,    -1,    81,
+      82,    62,    -1,    21,    83,    -1,    21,    59,    84,   190,
       60,    -1,    21,    59,    60,    -1,    85,    86,    88,    -1,
       85,    88,    -1,    83,    -1,    84,    62,    83,    -1,     3,
-      -1,   140,     3,    -1,    63,     3,    -1,    25,    24,    87,
-      62,    -1,    -1,    24,    -1,    -1,    89,   213,    64,    64,
-      -1,    -1,    91,    -1,   157,    -1,   180,    -1,     1,    -1,
-      32,    93,    -1,    32,    59,   166,   189,    60,    -1,    32,
-      59,    60,    -1,    92,    94,    -1,    92,    59,    94,   189,
-      60,    -1,    92,    59,    94,    62,   167,   189,    60,    -1,
-      92,    59,    60,    -1,    31,    97,    -1,    31,    59,   168,
-     189,    60,    -1,    31,    59,    60,    -1,     9,    -1,   184,
-     145,    -1,   184,   145,    65,   185,    -1,   184,    65,   185,
-      -1,   184,   145,    65,   185,    -1,   184,    65,   185,    -1,
-      94,    -1,   184,   145,    -1,   184,    -1,   140,    -1,    96,
-     145,    -1,   126,    -1,   126,     4,   126,    -1,   185,    65,
-     185,    -1,   185,     5,   185,    -1,   126,    42,    -1,   126,
-      37,    -1,     7,   186,    66,    -1,     7,   186,    65,   126,
-      66,    -1,     7,   186,     5,   126,    66,    -1,    12,    66,
-      -1,    -1,    67,   101,   182,    68,    -1,    -1,    99,   103,
-     182,    -1,    -1,   104,   102,    -1,    -1,    35,   106,   182,
-      68,    -1,   185,    65,    26,   126,    -1,   185,     5,    26,
-     126,    -1,   193,    62,   193,    62,   193,    -1,   193,    -1,
+      -1,   141,     3,    -1,    63,     3,    -1,    25,    24,    87,
+      62,    -1,    -1,    24,    -1,    -1,    89,   214,    64,    64,
+      -1,    -1,    91,    -1,   158,    -1,   181,    -1,     1,    -1,
+      32,    93,    -1,    32,    59,   167,   190,    60,    -1,    32,
+      59,    60,    -1,    92,    94,    -1,    92,    59,    94,   190,
+      60,    -1,    92,    59,    94,    62,   168,   190,    60,    -1,
+      92,    59,    60,    -1,    31,    97,    -1,    31,    59,   169,
+     190,    60,    -1,    31,    59,    60,    -1,     9,    -1,   185,
+     146,    -1,   185,   146,    65,   186,    -1,   185,    65,   186,
+      -1,   185,   146,    65,   186,    -1,   185,    65,   186,    -1,
+      94,    -1,   185,   146,    -1,   185,    -1,   141,    -1,    96,
+     146,    -1,   126,    -1,   126,     4,   126,    -1,   186,    65,
+     186,    -1,   186,     5,   186,    -1,   126,    42,    -1,   126,
+      37,    -1,     7,   187,    66,    -1,     7,   187,    65,   126,
+      66,    -1,     7,   187,     5,   126,    66,    -1,    12,    66,
+      -1,    -1,    67,   101,   183,    68,    -1,    -1,    99,   103,
+     183,    -1,    -1,   104,   102,    -1,    -1,    35,   106,   183,
+      68,    -1,   186,    65,    26,   126,    -1,   186,     5,    26,
+     126,    -1,   194,    62,   194,    62,   194,    -1,   194,    -1,
      107,    -1,   108,   105,    -1,    -1,    16,   111,   109,    -1,
-     193,    -1,   193,    62,   193,    -1,    -1,    -1,    -1,    20,
+     194,    -1,   194,    62,   194,    -1,    -1,    -1,    -1,    20,
      114,   112,   115,   105,   116,   119,   120,    -1,    -1,    14,
       20,   118,   112,   105,    -1,    -1,   119,   117,    -1,    -1,
       14,   100,    -1,    -1,    -1,    30,   122,   112,   123,    35,
@@ -613,79 +594,80 @@ static const yytype_int16 yyrhs[] =
      126,    53,   126,    -1,   126,    54,   126,    -1,   126,    55,
      126,    -1,   126,    56,   126,    -1,   126,    34,   126,    -1,
      126,    44,   126,    -1,   126,    48,   126,    -1,   126,    36,
-     126,    -1,   133,    -1,    53,   127,    -1,    56,   127,    -1,
+     126,    -1,   134,    -1,    53,   127,    -1,    56,   127,    -1,
       49,   127,    -1,    50,   127,    -1,    69,   127,    -1,    70,
-     127,    -1,    52,   127,    -1,    36,   127,    -1,   133,    59,
-      60,    -1,   133,    59,   186,   190,    60,    -1,   133,    59,
-     186,    11,   190,    60,    -1,     3,    -1,   142,    -1,   133,
-      63,   140,    -1,   133,    63,    59,   134,    60,    -1,   133,
-      63,    59,    31,    60,    -1,   133,    71,   126,    72,    -1,
-     133,    71,   191,    66,   191,    72,    -1,   128,    -1,   148,
-      59,   126,    60,    -1,   149,   136,   130,   188,    68,    -1,
-     129,    67,   130,   188,    68,    -1,    59,   134,    60,    67,
-     130,   188,    68,    -1,   164,    -1,    -1,   126,    66,   132,
-      -1,   126,    -1,    67,   130,   188,    68,    -1,   129,    -1,
-      59,   134,    60,    -1,   126,    -1,   146,    -1,   145,    -1,
-      35,    -1,    67,    -1,   140,    -1,   140,    -1,    -1,   137,
-      -1,    24,    -1,   141,    -1,    73,    -1,    74,     3,    63,
-      24,    -1,   140,    -1,   137,    -1,    11,    -1,    11,   145,
-      -1,   154,    -1,   160,    -1,   152,    -1,   153,    -1,   151,
-      -1,    59,   145,    60,    -1,   154,    -1,   160,    -1,   152,
-      -1,    53,   146,    -1,   160,    -1,   152,    -1,   153,    -1,
-     151,    -1,    59,   145,    60,    -1,   160,    -1,   152,    -1,
-     152,    -1,   154,    -1,   160,    -1,   152,    -1,   153,    -1,
-     151,    -1,   142,    -1,   142,    63,   140,    -1,    71,   191,
-      72,   145,    -1,    71,    11,    72,   145,    -1,     8,   147,
-      -1,     8,    36,   145,    -1,    23,    71,   145,    72,   145,
-      -1,   155,    -1,   156,    -1,    53,   145,    -1,    36,     8,
-     145,    -1,    29,   136,   169,   189,    68,    -1,    29,   136,
-      68,    -1,    22,   136,   170,   189,    68,    -1,    22,   136,
-      68,    -1,    17,   158,   161,    -1,   140,    59,   178,    60,
-     162,    -1,    59,   178,    60,   140,    59,   178,    60,   162,
-      -1,   199,    59,   194,    60,   209,    -1,    59,   214,    60,
-     140,    59,   194,    60,   209,    -1,    17,    59,   178,    60,
-     162,    -1,    -1,    67,   182,    68,    -1,    -1,   150,    -1,
-      59,   178,    60,    -1,   160,    -1,   163,   136,   182,    68,
-      -1,   163,     1,    -1,    -1,   165,    90,    62,    -1,    93,
-      -1,   166,    62,    93,    -1,    95,    -1,   167,    62,    95,
-      -1,    97,    -1,   168,    62,    97,    -1,   171,    -1,   169,
-      62,   171,    -1,   174,    -1,   170,    62,   174,    -1,   183,
-     145,   197,    -1,   173,   197,    -1,    59,   173,    60,   197,
-      -1,    53,   173,   197,    -1,    59,    53,   173,    60,   197,
-      -1,    53,    59,   173,    60,   197,    -1,    24,    -1,    24,
-      63,   140,    -1,   172,    -1,   137,   175,    -1,   172,    -1,
-      59,   172,    60,    -1,    59,   178,    60,   162,    -1,   135,
-      -1,   140,   135,    -1,   140,   144,    -1,   144,    -1,   176,
-      -1,   177,    75,   176,    -1,    -1,   177,   190,    -1,    -1,
-     100,    -1,    91,    -1,   180,    -1,     1,    -1,    98,    -1,
-     110,    -1,   121,    -1,   124,    -1,   113,    -1,    -1,   143,
-      66,   181,   179,    -1,    15,    -1,     6,   139,    -1,    10,
-     139,    -1,    18,   128,    -1,    13,   128,    -1,    19,   137,
-      -1,    27,   192,    -1,   179,    -1,   182,    62,   179,    -1,
-     137,    -1,   183,    75,   137,    -1,   138,    -1,   184,    75,
-     138,    -1,   126,    -1,   185,    75,   126,    -1,   134,    -1,
-     186,    75,   134,    -1,   131,    -1,   132,    -1,   187,    75,
-     131,    -1,   187,    75,   132,    -1,    -1,   187,   190,    -1,
-      -1,    62,    -1,    -1,    75,    -1,    -1,   126,    -1,    -1,
-     185,    -1,    -1,    98,    -1,    -1,   214,    -1,    -1,   215,
-      -1,    -1,   216,    -1,    -1,     3,    -1,    21,    24,     3,
-      62,    -1,    32,   199,   201,    62,    -1,     9,   199,    65,
-     212,    62,    -1,     9,   199,   201,    65,   212,    62,    -1,
-      31,   200,   201,    62,    -1,    17,   159,   161,    62,    -1,
-     141,    -1,   199,    -1,   203,    -1,   204,    -1,   205,    -1,
-     203,    -1,   205,    -1,   141,    -1,    24,    -1,    71,    72,
-     201,    -1,    71,     3,    72,   201,    -1,    23,    71,   201,
-      72,   201,    -1,    29,    67,   195,    68,    -1,    22,    67,
-     196,    68,    -1,    53,   201,    -1,     8,   202,    -1,     8,
-      59,   204,    60,    -1,     8,    36,   201,    -1,    36,     8,
-     201,    -1,    17,    59,   194,    60,   209,    -1,   140,   201,
-     197,    -1,   140,    11,   201,   197,    -1,   140,   201,   197,
-      -1,   140,    59,   194,    60,   209,    -1,   201,    -1,    -1,
-     210,    -1,    59,   194,    60,    -1,   201,    -1,     3,    -1,
-      50,     3,    -1,   140,    -1,   211,    -1,    59,   211,    49,
-     211,    60,    -1,    -1,   213,   198,    -1,   206,    -1,   214,
-      75,   206,    -1,   207,    -1,   215,    62,   207,    -1,   208,
-      -1,   216,    62,   208,    -1
+     127,    -1,    52,   127,    -1,    36,   127,    -1,   134,    59,
+      60,    -1,   134,    59,   187,   191,    60,    -1,   134,    59,
+     187,    11,   191,    60,    -1,     3,    -1,   143,    -1,   134,
+      63,   141,    -1,   134,    63,    59,   135,    60,    -1,   134,
+      63,    59,    31,    60,    -1,   134,    71,   126,    72,    -1,
+     134,    71,   192,    66,   192,    72,    -1,   128,    -1,   149,
+      59,   126,    60,    -1,   150,   137,   130,   189,    68,    -1,
+     129,    67,   130,   189,    68,    -1,    59,   135,    60,    67,
+     130,   189,    68,    -1,   165,    -1,    -1,   126,    66,   133,
+      -1,   126,    -1,    67,   130,   189,    68,    -1,   126,    -1,
+      67,   130,   189,    68,    -1,   129,    -1,    59,   135,    60,
+      -1,   126,    -1,   147,    -1,   146,    -1,    35,    -1,    67,
+      -1,   141,    -1,   141,    -1,    -1,   138,    -1,    24,    -1,
+     142,    -1,    73,    -1,    74,     3,    63,    24,    -1,   141,
+      -1,   138,    -1,    11,    -1,    11,   146,    -1,   155,    -1,
+     161,    -1,   153,    -1,   154,    -1,   152,    -1,    59,   146,
+      60,    -1,   155,    -1,   161,    -1,   153,    -1,    53,   147,
+      -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,    59,
+     146,    60,    -1,   161,    -1,   153,    -1,   153,    -1,   155,
+      -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,   143,
+      -1,   143,    63,   141,    -1,    71,   192,    72,   146,    -1,
+      71,    11,    72,   146,    -1,     8,   148,    -1,     8,    36,
+     146,    -1,    23,    71,   146,    72,   146,    -1,   156,    -1,
+     157,    -1,    53,   146,    -1,    36,     8,   146,    -1,    29,
+     137,   170,   190,    68,    -1,    29,   137,    68,    -1,    22,
+     137,   171,   190,    68,    -1,    22,   137,    68,    -1,    17,
+     159,   162,    -1,   141,    59,   179,    60,   163,    -1,    59,
+     179,    60,   141,    59,   179,    60,   163,    -1,   200,    59,
+     195,    60,   210,    -1,    59,   215,    60,   141,    59,   195,
+      60,   210,    -1,    17,    59,   179,    60,   163,    -1,    -1,
+      67,   183,    68,    -1,    -1,   151,    -1,    59,   179,    60,
+      -1,   161,    -1,   164,   137,   183,    68,    -1,   164,     1,
+      -1,    -1,   166,    90,    62,    -1,    93,    -1,   167,    62,
+      93,    -1,    95,    -1,   168,    62,    95,    -1,    97,    -1,
+     169,    62,    97,    -1,   172,    -1,   170,    62,   172,    -1,
+     175,    -1,   171,    62,   175,    -1,   184,   146,   198,    -1,
+     174,   198,    -1,    59,   174,    60,   198,    -1,    53,   174,
+     198,    -1,    59,    53,   174,    60,   198,    -1,    53,    59,
+     174,    60,   198,    -1,    24,    -1,    24,    63,   141,    -1,
+     173,    -1,   138,   176,    -1,   173,    -1,    59,   173,    60,
+      -1,    59,   179,    60,   163,    -1,   136,    -1,   141,   136,
+      -1,   141,   145,    -1,   145,    -1,   177,    -1,   178,    75,
+     177,    -1,    -1,   178,   191,    -1,    -1,   100,    -1,    91,
+      -1,   181,    -1,     1,    -1,    98,    -1,   110,    -1,   121,
+      -1,   124,    -1,   113,    -1,    -1,   144,    66,   182,   180,
+      -1,    15,    -1,     6,   140,    -1,    10,   140,    -1,    18,
+     128,    -1,    13,   128,    -1,    19,   138,    -1,    27,   193,
+      -1,   180,    -1,   183,    62,   180,    -1,   138,    -1,   184,
+      75,   138,    -1,   139,    -1,   185,    75,   139,    -1,   126,
+      -1,   186,    75,   126,    -1,   135,    -1,   187,    75,   135,
+      -1,   131,    -1,   132,    -1,   188,    75,   131,    -1,   188,
+      75,   132,    -1,    -1,   188,   191,    -1,    -1,    62,    -1,
+      -1,    75,    -1,    -1,   126,    -1,    -1,   186,    -1,    -1,
+      98,    -1,    -1,   215,    -1,    -1,   216,    -1,    -1,   217,
+      -1,    -1,     3,    -1,    21,    24,     3,    62,    -1,    32,
+     200,   202,    62,    -1,     9,   200,    65,   213,    62,    -1,
+       9,   200,   202,    65,   213,    62,    -1,    31,   201,   202,
+      62,    -1,    17,   160,   162,    62,    -1,   142,    -1,   200,
+      -1,   204,    -1,   205,    -1,   206,    -1,   204,    -1,   206,
+      -1,   142,    -1,    24,    -1,    71,    72,   202,    -1,    71,
+       3,    72,   202,    -1,    23,    71,   202,    72,   202,    -1,
+      29,    67,   196,    68,    -1,    22,    67,   197,    68,    -1,
+      53,   202,    -1,     8,   203,    -1,     8,    59,   205,    60,
+      -1,     8,    36,   202,    -1,    36,     8,   202,    -1,    17,
+      59,   195,    60,   210,    -1,   141,   202,   198,    -1,   141,
+      11,   202,   198,    -1,   141,   202,   198,    -1,   141,    59,
+     195,    60,   210,    -1,   202,    -1,    -1,   211,    -1,    59,
+     195,    60,    -1,   202,    -1,     3,    -1,    50,     3,    -1,
+     141,    -1,   212,    -1,    59,   212,    49,   212,    60,    -1,
+      -1,   214,   199,    -1,   207,    -1,   215,    75,   207,    -1,
+     208,    -1,   216,    62,   208,    -1,   209,    -1,   217,    62,
+     209,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -705,31 +687,31 @@ static const yytype_uint16 yyrline[] =
      820,   824,   828,   833,   839,   840,   844,   855,   859,   863,
      867,   872,   876,   886,   890,   895,   903,   907,   908,   919,
      923,   927,   931,   935,   936,   942,   949,   955,   962,   965,
-     972,   978,   979,   986,   987,  1005,  1006,  1009,  1012,  1016,
-    1027,  1036,  1042,  1045,  1048,  1055,  1056,  1062,  1077,  1085,
-    1097,  1102,  1108,  1109,  1110,  1111,  1112,  1113,  1119,  1120,
-    1121,  1122,  1128,  1129,  1130,  1131,  1132,  1138,  1139,  1142,
-    1145,  1146,  1147,  1148,  1149,  1152,  1153,  1166,  1170,  1175,
-    1180,  1185,  1189,  1190,  1193,  1199,  1206,  1212,  1219,  1225,
-    1236,  1247,  1276,  1316,  1341,  1359,  1368,  1371,  1379,  1383,
-    1387,  1394,  1400,  1405,  1417,  1420,  1429,  1430,  1436,  1437,
-    1443,  1447,  1453,  1454,  1460,  1464,  1470,  1493,  1498,  1504,
-    1510,  1517,  1526,  1535,  1550,  1556,  1561,  1565,  1572,  1585,
-    1586,  1592,  1598,  1601,  1605,  1611,  1614,  1623,  1626,  1627,
-    1631,  1632,  1638,  1639,  1640,  1641,  1642,  1644,  1643,  1658,
-    1663,  1667,  1671,  1675,  1679,  1684,  1703,  1709,  1717,  1721,
-    1727,  1731,  1737,  1741,  1747,  1751,  1760,  1764,  1768,  1772,
-    1778,  1781,  1789,  1790,  1792,  1793,  1796,  1799,  1802,  1805,
-    1808,  1811,  1814,  1817,  1820,  1823,  1826,  1829,  1832,  1835,
-    1841,  1845,  1849,  1853,  1857,  1861,  1881,  1888,  1899,  1900,
-    1901,  1904,  1905,  1908,  1912,  1922,  1926,  1930,  1934,  1938,
-    1942,  1946,  1952,  1958,  1966,  1974,  1980,  1987,  2003,  2021,
-    2025,  2031,  2034,  2037,  2041,  2051,  2055,  2070,  2078,  2079,
-    2091,  2092,  2095,  2099,  2105,  2109,  2115,  2119
+     972,   978,   994,  1001,  1002,  1009,  1010,  1028,  1029,  1032,
+    1035,  1039,  1050,  1059,  1065,  1068,  1071,  1078,  1079,  1085,
+    1100,  1108,  1120,  1125,  1131,  1132,  1133,  1134,  1135,  1136,
+    1142,  1143,  1144,  1145,  1151,  1152,  1153,  1154,  1155,  1161,
+    1162,  1165,  1168,  1169,  1170,  1171,  1172,  1175,  1176,  1189,
+    1193,  1198,  1203,  1208,  1212,  1213,  1216,  1222,  1229,  1235,
+    1242,  1248,  1259,  1270,  1299,  1339,  1364,  1382,  1391,  1394,
+    1402,  1406,  1410,  1417,  1423,  1428,  1440,  1443,  1452,  1453,
+    1459,  1460,  1466,  1470,  1476,  1477,  1483,  1487,  1493,  1516,
+    1521,  1527,  1533,  1540,  1549,  1558,  1573,  1579,  1584,  1588,
+    1595,  1608,  1609,  1615,  1621,  1624,  1628,  1634,  1637,  1646,
+    1649,  1650,  1654,  1655,  1661,  1662,  1663,  1664,  1665,  1667,
+    1666,  1681,  1686,  1690,  1694,  1698,  1702,  1707,  1726,  1732,
+    1740,  1744,  1750,  1754,  1760,  1764,  1770,  1774,  1783,  1787,
+    1791,  1795,  1801,  1804,  1812,  1813,  1815,  1816,  1819,  1822,
+    1825,  1828,  1831,  1834,  1837,  1840,  1843,  1846,  1849,  1852,
+    1855,  1858,  1864,  1868,  1872,  1876,  1880,  1884,  1904,  1911,
+    1922,  1923,  1924,  1927,  1928,  1931,  1935,  1945,  1949,  1953,
+    1957,  1961,  1965,  1969,  1975,  1981,  1989,  1997,  2003,  2010,
+    2026,  2044,  2048,  2054,  2057,  2060,  2064,  2074,  2078,  2093,
+    2101,  2102,  2114,  2115,  2118,  2122,  2128,  2132,  2138,  2142
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 1
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 const char *yytname[] =
@@ -753,27 +735,28 @@ const char *yytname[] =
   "$@6", "if_header", "if_stmt", "$@7", "$@8", "$@9", "elseif", "$@10",
   "elseif_list", "else", "switch_stmt", "$@11", "$@12", "select_stmt",
   "$@13", "expr", "uexpr", "pseudocall", "pexpr_no_paren", "start_complit",
-  "keyval", "complitexpr", "pexpr", "expr_or_type", "name_or_type",
-  "lbrace", "new_name", "dcl_name", "onew_name", "sym", "hidden_importsym",
-  "name", "labelname", "dotdotdot", "ntype", "non_expr_type",
-  "non_recvchantype", "convtype", "comptype", "fnret_type", "dotname",
-  "othertype", "ptrtype", "recvchantype", "structtype", "interfacetype",
-  "xfndcl", "fndcl", "hidden_fndcl", "fntype", "fnbody", "fnres",
-  "fnlitdcl", "fnliteral", "xdcl_list", "vardcl_list", "constdcl_list",
-  "typedcl_list", "structdcl_list", "interfacedcl_list", "structdcl",
-  "packname", "embed", "interfacedcl", "indcl", "arg_type",
-  "arg_type_list", "oarg_type_list_ocomma", "stmt", "non_dcl_stmt", "$@14",
-  "stmt_list", "new_name_list", "dcl_name_list", "expr_list",
-  "expr_or_type_list", "keyval_list", "braced_keyval_list", "osemi",
-  "ocomma", "oexpr", "oexpr_list", "osimple_stmt", "ohidden_funarg_list",
-  "ohidden_structdcl_list", "ohidden_interfacedcl_list", "oliteral",
-  "hidden_import", "hidden_pkg_importsym", "hidden_pkgtype", "hidden_type",
+  "keyval", "bare_complitexpr", "complitexpr", "pexpr", "expr_or_type",
+  "name_or_type", "lbrace", "new_name", "dcl_name", "onew_name", "sym",
+  "hidden_importsym", "name", "labelname", "dotdotdot", "ntype",
+  "non_expr_type", "non_recvchantype", "convtype", "comptype",
+  "fnret_type", "dotname", "othertype", "ptrtype", "recvchantype",
+  "structtype", "interfacetype", "xfndcl", "fndcl", "hidden_fndcl",
+  "fntype", "fnbody", "fnres", "fnlitdcl", "fnliteral", "xdcl_list",
+  "vardcl_list", "constdcl_list", "typedcl_list", "structdcl_list",
+  "interfacedcl_list", "structdcl", "packname", "embed", "interfacedcl",
+  "indcl", "arg_type", "arg_type_list", "oarg_type_list_ocomma", "stmt",
+  "non_dcl_stmt", "$@14", "stmt_list", "new_name_list", "dcl_name_list",
+  "expr_list", "expr_or_type_list", "keyval_list", "braced_keyval_list",
+  "osemi", "ocomma", "oexpr", "oexpr_list", "osimple_stmt",
+  "ohidden_funarg_list", "ohidden_structdcl_list",
+  "ohidden_interfacedcl_list", "oliteral", "hidden_import",
+  "hidden_pkg_importsym", "hidden_pkgtype", "hidden_type",
   "hidden_type_non_recv_chan", "hidden_type_misc", "hidden_type_recv_chan",
   "hidden_type_func", "hidden_funarg", "hidden_structdcl",
   "hidden_interfacedcl", "ohidden_funres", "hidden_funres",
   "hidden_literal", "hidden_constant", "hidden_import_list",
   "hidden_funarg_list", "hidden_structdcl_list",
-  "hidden_interfacedcl_list", YY_NULL
+  "hidden_interfacedcl_list", 0
 };
 #endif
 
@@ -810,27 +793,27 @@ static const yytype_uint8 yyr1[] =
      126,   126,   126,   126,   127,   127,   127,   127,   127,   127,
      127,   127,   127,   128,   128,   128,   129,   129,   129,   129,
      129,   129,   129,   129,   129,   129,   129,   129,   129,   130,
-     131,   132,   132,   133,   133,   134,   134,   135,   136,   136,
-     137,   138,   139,   139,   140,   140,   140,   141,   142,   143,
-     144,   144,   145,   145,   145,   145,   145,   145,   146,   146,
-     146,   146,   147,   147,   147,   147,   147,   148,   148,   149,
-     150,   150,   150,   150,   150,   151,   151,   152,   152,   152,
-     152,   152,   152,   152,   153,   154,   155,   155,   156,   156,
-     157,   158,   158,   159,   159,   160,   161,   161,   162,   162,
-     162,   163,   164,   164,   165,   165,   166,   166,   167,   167,
-     168,   168,   169,   169,   170,   170,   171,   171,   171,   171,
-     171,   171,   172,   172,   173,   174,   174,   174,   175,   176,
-     176,   176,   176,   177,   177,   178,   178,   179,   179,   179,
-     179,   179,   180,   180,   180,   180,   180,   181,   180,   180,
-     180,   180,   180,   180,   180,   180,   182,   182,   183,   183,
-     184,   184,   185,   185,   186,   186,   187,   187,   187,   187,
+     131,   132,   132,   133,   133,   134,   134,   135,   135,   136,
+     137,   137,   138,   139,   140,   140,   141,   141,   141,   142,
+     143,   144,   145,   145,   146,   146,   146,   146,   146,   146,
+     147,   147,   147,   147,   148,   148,   148,   148,   148,   149,
+     149,   150,   151,   151,   151,   151,   151,   152,   152,   153,
+     153,   153,   153,   153,   153,   153,   154,   155,   156,   156,
+     157,   157,   158,   159,   159,   160,   160,   161,   162,   162,
+     163,   163,   163,   164,   165,   165,   166,   166,   167,   167,
+     168,   168,   169,   169,   170,   170,   171,   171,   172,   172,
+     172,   172,   172,   172,   173,   173,   174,   175,   175,   175,
+     176,   177,   177,   177,   177,   178,   178,   179,   179,   180,
+     180,   180,   180,   180,   181,   181,   181,   181,   181,   182,
+     181,   181,   181,   181,   181,   181,   181,   181,   183,   183,
+     184,   184,   185,   185,   186,   186,   187,   187,   188,   188,
      188,   188,   189,   189,   190,   190,   191,   191,   192,   192,
      193,   193,   194,   194,   195,   195,   196,   196,   197,   197,
-     198,   198,   198,   198,   198,   198,   199,   200,   201,   201,
-     201,   202,   202,   203,   203,   203,   203,   203,   203,   203,
-     203,   203,   203,   203,   204,   205,   206,   206,   207,   208,
-     208,   209,   209,   210,   210,   211,   211,   211,   212,   212,
-     213,   213,   214,   214,   215,   215,   216,   216
+     198,   198,   199,   199,   199,   199,   199,   199,   200,   201,
+     202,   202,   202,   203,   203,   204,   204,   204,   204,   204,
+     204,   204,   204,   204,   204,   204,   205,   206,   207,   207,
+     208,   209,   209,   210,   210,   211,   211,   212,   212,   212,
+     213,   213,   214,   214,   215,   215,   216,   216,   217,   217
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -850,27 +833,27 @@ static const yytype_uint8 yyr2[] =
        3,     3,     3,     3,     1,     2,     2,     2,     2,     2,
        2,     2,     2,     3,     5,     6,     1,     1,     3,     5,
        5,     4,     6,     1,     4,     5,     5,     7,     1,     0,
-       3,     1,     4,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     0,     1,     1,     1,     1,     4,     1,     1,
-       1,     2,     1,     1,     1,     1,     1,     3,     1,     1,
-       1,     2,     1,     1,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     4,     4,     2,
-       3,     5,     1,     1,     2,     3,     5,     3,     5,     3,
-       3,     5,     8,     5,     8,     5,     0,     3,     0,     1,
-       3,     1,     4,     2,     0,     3,     1,     3,     1,     3,
-       1,     3,     1,     3,     1,     3,     3,     2,     4,     3,
-       5,     5,     1,     3,     1,     2,     1,     3,     4,     1,
-       2,     2,     1,     1,     3,     0,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       2,     2,     2,     2,     2,     2,     1,     3,     1,     3,
-       1,     3,     1,     3,     1,     3,     1,     1,     3,     3,
-       0,     2,     0,     1,     0,     1,     0,     1,     0,     1,
+       3,     1,     4,     1,     4,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     0,     1,     1,     1,     1,     4,
+       1,     1,     1,     2,     1,     1,     1,     1,     1,     3,
+       1,     1,     1,     2,     1,     1,     1,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     4,
+       4,     2,     3,     5,     1,     1,     2,     3,     5,     3,
+       5,     3,     3,     5,     8,     5,     8,     5,     0,     3,
+       0,     1,     3,     1,     4,     2,     0,     3,     1,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     3,     2,
+       4,     3,     5,     5,     1,     3,     1,     2,     1,     3,
+       4,     1,     2,     2,     1,     1,     3,     0,     2,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     1,     2,     2,     2,     2,     2,     2,     1,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     1,     1,
+       3,     3,     0,     2,     0,     1,     0,     1,     0,     1,
        0,     1,     0,     1,     0,     1,     0,     1,     0,     1,
-       4,     4,     5,     6,     4,     4,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     4,     5,     4,     4,
-       2,     2,     4,     3,     3,     5,     3,     4,     3,     5,
-       1,     0,     1,     3,     1,     1,     2,     1,     1,     5,
-       0,     2,     1,     3,     1,     3,     1,     3
+       0,     1,     4,     4,     5,     6,     4,     4,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     4,     5,
+       4,     4,     2,     2,     4,     3,     3,     5,     3,     4,
+       3,     5,     1,     0,     1,     3,     1,     1,     2,     1,
+       1,     5,     0,     2,     1,     3,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -878,72 +861,73 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       5,     0,     3,     0,     1,     0,     7,     0,    22,   154,
-     156,     0,     0,   155,   214,    20,     6,   340,     0,     4,
+       5,     0,     3,     0,     1,     0,     7,     0,    22,   156,
+     158,     0,     0,   157,   216,    20,     6,   342,     0,     4,
        0,     0,     0,    21,     0,     0,     0,    16,     0,     0,
-       9,    22,     0,     8,    28,   126,   152,     0,    39,   152,
-       0,   259,    74,     0,     0,     0,    78,     0,     0,   288,
+       9,    22,     0,     8,    28,   126,   154,     0,    39,   154,
+       0,   261,    74,     0,     0,     0,    78,     0,     0,   290,
       91,     0,    88,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   286,     0,    25,     0,   252,   253,
-     256,   254,   255,    50,    93,   133,   143,   114,   159,   158,
-     127,     0,     0,     0,   179,   192,   193,    26,   211,     0,
+       0,     0,     0,     0,   288,     0,    25,     0,   254,   255,
+     258,   256,   257,    50,    93,   133,   145,   114,   161,   160,
+     127,     0,     0,     0,   181,   194,   195,    26,   213,     0,
      138,    27,     0,    19,     0,     0,     0,     0,     0,     0,
-     341,   157,    11,    14,   282,    18,    22,    13,    17,   153,
-     260,   150,     0,     0,     0,     0,   158,   185,   189,   175,
-     173,   174,   172,   261,   133,     0,   290,   245,     0,   206,
-     133,   264,   290,   148,   149,     0,     0,   272,   289,   265,
-       0,     0,   290,     0,     0,    36,    48,     0,    29,   270,
-     151,     0,   122,   117,   118,   121,   115,   116,     0,     0,
-     145,     0,   146,   170,   168,   169,   119,   120,     0,   287,
-       0,   215,     0,    32,     0,     0,     0,     0,     0,    55,
+     343,   159,    11,    14,   284,    18,    22,    13,    17,   155,
+     262,   152,     0,     0,     0,     0,   160,   187,   191,   177,
+     175,   176,   174,   263,   133,     0,   292,   247,     0,   208,
+     133,   266,   292,   150,   151,     0,     0,   274,   291,   267,
+       0,     0,   292,     0,     0,    36,    48,     0,    29,   272,
+     153,     0,   122,   117,   118,   121,   115,   116,     0,     0,
+     147,     0,   148,   172,   170,   171,   119,   120,     0,   289,
+       0,   217,     0,    32,     0,     0,     0,     0,     0,    55,
        0,     0,     0,    54,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   139,     0,
-       0,   286,   257,     0,   139,   213,     0,     0,     0,     0,
-     306,     0,     0,   206,     0,     0,   307,     0,     0,    23,
-     283,     0,    12,   245,     0,     0,   190,   166,   164,   165,
-     162,   163,   194,     0,     0,   291,    72,     0,    75,     0,
-      71,   160,   239,   158,   242,   147,   243,   284,     0,   245,
-       0,   200,    79,    76,   154,     0,   199,     0,   282,   236,
-     224,     0,    64,     0,     0,   197,   268,   282,   222,   234,
-     298,     0,    89,    38,   220,   282,    49,    31,   216,   282,
-       0,     0,    40,     0,   171,   144,     0,     0,    35,   282,
+       0,   288,   259,     0,   139,   215,     0,     0,     0,     0,
+     308,     0,     0,   208,     0,     0,   309,     0,     0,    23,
+     285,     0,    12,   247,     0,     0,   192,   168,   166,   167,
+     164,   165,   196,     0,     0,   293,    72,     0,    75,     0,
+      71,   162,   241,   160,   244,   149,   245,   286,     0,   247,
+       0,   202,    79,    76,   156,     0,   201,     0,   284,   238,
+     226,     0,    64,     0,     0,   199,   270,   284,   224,   236,
+     300,     0,    89,    38,   222,   284,    49,    31,   218,   284,
+       0,     0,    40,     0,   173,   146,     0,     0,    35,   284,
        0,     0,    51,    95,   110,   113,    96,   100,   101,    99,
      111,    98,    97,    94,   112,   102,   103,   104,   105,   106,
-     107,   108,   109,   280,   123,   274,   284,     0,   128,   287,
-       0,     0,     0,   280,   251,    60,   249,   248,   266,   250,
-       0,    53,    52,   273,     0,     0,     0,     0,   314,     0,
-       0,     0,     0,     0,   313,     0,   308,   309,   310,     0,
-     342,     0,     0,   292,     0,     0,     0,    15,    10,     0,
-       0,     0,   176,   186,    66,    73,     0,     0,   290,   161,
-     240,   241,   285,   246,   208,     0,     0,     0,   290,     0,
-     232,     0,   245,   235,   283,     0,     0,     0,     0,   298,
-       0,     0,   283,     0,   299,   227,     0,   298,     0,   283,
-       0,   283,     0,    42,   271,     0,     0,     0,   195,   166,
-     164,   165,   163,   139,   188,   187,   283,     0,    44,     0,
-     139,   141,   276,   277,   284,     0,   284,   285,     0,     0,
-       0,   131,   286,   258,   134,     0,     0,     0,   212,     0,
-       0,   321,   311,   312,   292,   296,     0,   294,     0,   320,
-     335,     0,     0,   337,   338,     0,     0,     0,     0,     0,
-     298,     0,     0,   305,     0,   293,   300,   304,   301,   208,
-     167,     0,     0,     0,     0,   244,   245,   158,   209,   184,
-     182,   183,   180,   181,   205,   208,   207,    80,    77,   233,
-     237,     0,   225,   198,   191,     0,     0,    92,    62,    65,
-       0,   229,     0,   298,   223,   196,   269,   226,    64,   221,
-      37,   217,    30,    41,     0,   280,    45,   218,   282,    47,
-      33,    43,   280,     0,   285,   281,   136,   285,     0,   275,
-     124,   130,   129,     0,   135,     0,   267,   323,     0,     0,
-     314,     0,   313,     0,   330,   346,   297,     0,     0,     0,
-     344,   295,   324,   336,     0,   302,     0,   315,     0,   298,
-     326,     0,   343,   331,     0,    69,    68,   290,     0,   245,
-     201,    84,   208,     0,    59,     0,   298,   298,   228,     0,
-     167,     0,   283,     0,    46,     0,   141,   140,   278,   279,
-     125,   132,    61,   322,   331,   292,   319,     0,     0,   298,
-     318,     0,     0,   316,   303,   327,   292,   292,   334,   203,
-     332,    67,    70,   210,     0,    86,   238,     0,     0,    56,
-       0,    63,   231,   230,    90,   137,   219,    34,   142,   325,
-       0,   347,   317,   328,   345,     0,     0,     0,   208,     0,
-      85,    81,     0,     0,   331,   339,   331,   333,   202,    82,
-      87,    58,    57,   329,   204,   290,     0,    83
+     107,   108,   109,   282,   123,   276,   286,     0,   128,   289,
+       0,     0,     0,   282,   253,    60,   251,   250,   268,   252,
+       0,    53,    52,   275,     0,     0,     0,     0,   316,     0,
+       0,     0,     0,     0,   315,     0,   310,   311,   312,     0,
+     344,     0,     0,   294,     0,     0,     0,    15,    10,     0,
+       0,     0,   178,   188,    66,    73,     0,     0,   292,   163,
+     242,   243,   287,   248,   210,     0,     0,     0,   292,     0,
+     234,     0,   247,   237,   285,     0,     0,     0,     0,   300,
+       0,     0,   285,     0,   301,   229,     0,   300,     0,   285,
+       0,   285,     0,    42,   273,     0,     0,     0,   197,   168,
+     166,   167,   165,   139,   190,   189,   285,     0,    44,     0,
+     139,   141,   278,   279,   286,     0,   286,   287,     0,     0,
+       0,   131,   288,   260,   134,     0,     0,     0,   214,     0,
+       0,   323,   313,   314,   294,   298,     0,   296,     0,   322,
+     337,     0,     0,   339,   340,     0,     0,     0,     0,     0,
+     300,     0,     0,   307,     0,   295,   302,   306,   303,   210,
+     169,     0,     0,     0,     0,   246,   247,   160,   211,   186,
+     184,   185,   182,   183,   207,   210,   209,    80,    77,   235,
+     239,     0,   227,   200,   193,     0,     0,    92,    62,    65,
+       0,   231,     0,   300,   225,   198,   271,   228,    64,   223,
+      37,   219,    30,    41,     0,   282,    45,   220,   284,    47,
+      33,    43,   282,     0,   287,   283,   136,   287,     0,   277,
+     124,   130,   129,     0,   135,     0,   269,   325,     0,     0,
+     316,     0,   315,     0,   332,   348,   299,     0,     0,     0,
+     346,   297,   326,   338,     0,   304,     0,   317,     0,   300,
+     328,     0,   345,   333,     0,    69,    68,   292,     0,   247,
+     203,    84,   210,     0,    59,     0,   300,   300,   230,     0,
+     169,     0,   285,     0,    46,     0,   139,   143,   140,   280,
+     281,   125,   132,    61,   324,   333,   294,   321,     0,     0,
+     300,   320,     0,     0,   318,   305,   329,   294,   294,   336,
+     205,   334,    67,    70,   212,     0,    86,   240,     0,     0,
+      56,     0,    63,   233,   232,    90,   137,   221,    34,   142,
+     282,   327,     0,   349,   319,   330,   347,     0,     0,     0,
+     210,     0,    85,    81,     0,     0,     0,   333,   341,   333,
+     335,   204,    82,    87,    58,    57,   144,   331,   206,   292,
+       0,    83
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -953,538 +937,559 @@ static const yytype_int16 yydefgoto[] =
        8,    24,    16,    17,    65,   326,    67,   148,   516,   517,
      144,   145,    68,   498,   327,   436,   499,   575,   387,   365,
      471,   236,   237,   238,    69,   126,   252,    70,   132,   377,
-     571,   640,   655,   615,   641,    71,   142,   398,    72,   140,
-      73,    74,    75,    76,   313,   422,   423,    77,   315,   242,
-     135,    78,   149,   110,   116,    13,    80,    81,   244,   245,
-     162,   118,    82,    83,   478,   227,    84,   229,   230,    85,
-      86,    87,   129,   213,    88,   251,   484,    89,    90,    22,
-     279,   518,   275,   267,   258,   268,   269,   270,   260,   383,
-     246,   247,   248,   328,   329,   321,   330,   271,   151,    92,
-     316,   424,   425,   221,   373,   170,   139,   253,   464,   549,
-     543,   395,   100,   211,   217,   608,   441,   346,   347,   348,
-     350,   550,   545,   609,   610,   454,   455,    25,   465,   551,
-     546
+     571,   642,   659,   616,   643,    71,   142,   398,    72,   140,
+      73,    74,    75,    76,   313,   422,   423,   588,    77,   315,
+     242,   135,    78,   149,   110,   116,    13,    80,    81,   244,
+     245,   162,   118,    82,    83,   478,   227,    84,   229,   230,
+      85,    86,    87,   129,   213,    88,   251,   484,    89,    90,
+      22,   279,   518,   275,   267,   258,   268,   269,   270,   260,
+     383,   246,   247,   248,   328,   329,   321,   330,   271,   151,
+      92,   316,   424,   425,   221,   373,   170,   139,   253,   464,
+     549,   543,   395,   100,   211,   217,   609,   441,   346,   347,
+     348,   350,   550,   545,   610,   611,   454,   455,    25,   465,
+     551,   546
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -459
+#define YYPACT_NINF -467
 static const yytype_int16 yypact[] =
 {
-    -459,    55,    46,    53,  -459,   181,  -459,    44,  -459,  -459,
-    -459,    91,    20,  -459,    75,   122,  -459,  -459,    97,  -459,
-     472,   124,  1062,  -459,   129,   276,   153,  -459,   228,   190,
-    -459,    53,   200,  -459,  -459,  -459,   181,  1638,  -459,   181,
-      66,  -459,  -459,   197,    66,   181,  -459,    30,   142,  1475,
-    -459,    30,  -459,   444,   467,  1475,  1475,  1475,  1475,  1475,
-    1475,  1518,  1475,  1475,   638,   163,  -459,   485,  -459,  -459,
-    -459,  -459,  -459,   830,  -459,  -459,   172,   240,  -459,   187,
-    -459,   192,   201,    30,   213,  -459,  -459,  -459,   218,    65,
-    -459,  -459,    40,  -459,   204,     5,   271,   204,   204,   241,
-    -459,  -459,  -459,  -459,   238,  -459,  -459,  -459,  -459,  -459,
-    -459,  -459,   251,  1663,  1663,  1663,  -459,   254,  -459,  -459,
-    -459,  -459,  -459,  -459,    79,   240,  1475,  1630,   261,   246,
-     236,  -459,  1475,  -459,  -459,   413,  1663,   804,   248,  -459,
-     301,   662,  1475,   508,  1663,  -459,  -459,   551,  -459,  -459,
-    -459,   477,  -459,  -459,  -459,  -459,  -459,  -459,  1561,  1518,
-     804,   278,  -459,    17,  -459,    42,  -459,  -459,   270,   804,
-     279,  -459,   561,  -459,  1604,  1475,  1475,  1475,  1475,  -459,
-    1475,  1475,  1475,  -459,  1475,  1475,  1475,  1475,  1475,  1475,
-    1475,  1475,  1475,  1475,  1475,  1475,  1475,  1475,  -459,   946,
-     564,  1475,  -459,  1475,  -459,  -459,  1212,  1475,  1475,  1475,
-    -459,   335,   181,   246,   295,   367,  -459,  1832,  1832,  -459,
-      29,   322,  -459,  1630,   376,  1663,  -459,  -459,  -459,  -459,
-    -459,  -459,  -459,   332,   181,  -459,  -459,   360,  -459,   106,
-     339,  1663,  -459,  1630,  -459,  -459,  -459,   338,   354,  1630,
-    1212,  -459,  -459,   356,   170,   395,  -459,   362,   361,  -459,
-    -459,   358,  -459,    22,   125,  -459,  -459,   364,  -459,  -459,
-     424,   884,  -459,  -459,  -459,   366,  -459,  -459,  -459,   371,
-    1475,   181,   370,  1697,  -459,   374,  1663,  1663,  -459,   400,
-    1475,   373,   804,  1993,  -459,  1946,   690,   690,   690,   690,
-    -459,   690,   690,  1970,  -459,   751,   751,   751,   751,  -459,
-    -459,  -459,  -459,  1267,  -459,  -459,    52,  1322,  -459,  1843,
-     397,  1138,  1922,  1267,  -459,  -459,  -459,  -459,  -459,  -459,
-      -8,   248,   248,   804,  1755,   405,   416,   417,  -459,   422,
-     487,  1832,   419,    54,  -459,   433,  -459,  -459,  -459,   648,
-    -459,    10,   440,   181,   442,   443,   446,  -459,  -459,   450,
-    1663,   451,  -459,  -459,  -459,  -459,  1377,  1432,  1475,  -459,
-    -459,  -459,  1630,  -459,  1722,   461,   128,   360,  1475,   181,
-     459,   464,  1630,  -459,   580,   457,  1663,    60,   395,   424,
-     395,   469,   259,   475,  -459,  -459,   181,   424,   492,   181,
-     489,   181,   493,   248,  -459,  1475,  1730,  1663,  -459,   309,
-     314,   326,   330,  -459,  -459,  -459,   181,   495,   248,  1475,
-    -459,   991,  -459,  -459,   462,   479,   481,  1518,   500,   503,
-     514,  -459,  1475,  -459,  -459,   510,  1212,  1138,  -459,  1832,
-     540,  -459,  -459,  -459,   181,  1789,  1832,   181,  1832,  -459,
-    -459,   576,   272,  -459,  -459,   518,   511,  1832,   419,  1832,
-     424,   181,   181,  -459,   524,   516,  -459,  -459,  -459,  1722,
-    -459,  1212,  1475,  1475,   532,  -459,  1630,   527,  -459,  -459,
-    -459,  -459,  -459,  -459,  -459,  1722,  -459,  -459,  -459,  -459,
-    -459,   538,  -459,  -459,  -459,  1518,   537,  -459,  -459,  -459,
-     546,  -459,   548,   424,  -459,  -459,  -459,  -459,  -459,  -459,
-    -459,  -459,  -459,   248,   553,  1267,  -459,  -459,   552,  1604,
-    -459,   248,  1267,  1267,  1267,  -459,  -459,  -459,   556,  -459,
-    -459,  -459,  -459,   547,  -459,   146,  -459,  -459,   558,   562,
-     567,   569,   572,   568,  -459,  -459,   578,   571,  1832,   579,
-    -459,   582,  -459,  -459,   599,  -459,  1832,  -459,   588,   424,
-    -459,   592,  -459,  1799,   168,   804,   804,  1475,   597,  1630,
-    -459,  -459,  1722,    68,  -459,  1138,   424,   424,  -459,    86,
-     340,   584,   181,   604,   373,   598,   804,  -459,  -459,  -459,
-    -459,  -459,  -459,  -459,  1799,   181,  -459,  1789,  1832,   424,
-    -459,   181,   272,  -459,  -459,  -459,   181,   181,  -459,  -459,
-    -459,  -459,  -459,  -459,   608,   655,  -459,  1475,  1475,  -459,
-    1518,   611,  -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,
-     615,  -459,  -459,  -459,  -459,   618,   619,   620,  1722,    41,
-    -459,  -459,  1874,  1898,  1799,  -459,  1799,  -459,  -459,  -459,
-    -459,  -459,  -459,  -459,  -459,  1475,   360,  -459
+    -467,    53,    59,    64,  -467,    34,  -467,   120,  -467,  -467,
+    -467,   144,    94,  -467,   177,   181,  -467,  -467,   145,  -467,
+      54,   160,  1026,  -467,   163,   397,   215,  -467,   113,   237,
+    -467,    64,   239,  -467,  -467,  -467,    34,  1711,  -467,    34,
+    1567,  -467,  -467,   336,  1567,    34,  -467,   161,   180,  1464,
+    -467,   161,  -467,   389,   409,  1464,  1464,  1464,  1464,  1464,
+    1464,  1507,  1464,  1464,   840,   191,  -467,   461,  -467,  -467,
+    -467,  -467,  -467,   672,  -467,  -467,   207,   227,  -467,   213,
+    -467,   228,   199,   161,   218,  -467,  -467,  -467,   236,    91,
+    -467,  -467,    76,  -467,   223,   -13,   276,   223,   223,   247,
+    -467,  -467,  -467,  -467,   255,  -467,  -467,  -467,  -467,  -467,
+    -467,  -467,   263,  1722,  1722,  1722,  -467,   262,  -467,  -467,
+    -467,  -467,  -467,  -467,   261,   227,  1464,  1679,   265,   259,
+     335,  -467,  1464,  -467,  -467,   399,  1722,  2040,   269,  -467,
+     293,    23,  1464,   211,  1722,  -467,  -467,   291,  -467,  -467,
+    -467,  1593,  -467,  -467,  -467,  -467,  -467,  -467,  1550,  1507,
+    2040,   280,  -467,    31,  -467,   171,  -467,  -467,   300,  2040,
+     304,  -467,   347,  -467,  1620,  1464,  1464,  1464,  1464,  -467,
+    1464,  1464,  1464,  -467,  1464,  1464,  1464,  1464,  1464,  1464,
+    1464,  1464,  1464,  1464,  1464,  1464,  1464,  1464,  -467,   726,
+     484,  1464,  -467,  1464,  -467,  -467,  1187,  1464,  1464,  1464,
+    -467,   310,    34,   259,   295,   377,  -467,  1267,  1267,  -467,
+     115,   322,  -467,  1679,   375,  1722,  -467,  -467,  -467,  -467,
+    -467,  -467,  -467,   326,    34,  -467,  -467,   353,  -467,    78,
+     327,  1722,  -467,  1679,  -467,  -467,  -467,   323,   339,  1679,
+    1187,  -467,  -467,   343,   122,   388,  -467,   342,   354,  -467,
+    -467,   358,  -467,    21,    32,  -467,  -467,   379,  -467,  -467,
+     412,  1652,  -467,  -467,  -467,   387,  -467,  -467,  -467,   413,
+    1464,    34,   411,  1754,  -467,   383,  1722,  1722,  -467,   416,
+    1464,   414,  2040,   881,  -467,  2064,  1178,  1178,  1178,  1178,
+    -467,  1178,  1178,  2088,  -467,   598,   598,   598,   598,  -467,
+    -467,  -467,  -467,   936,  -467,  -467,    48,  1256,  -467,  1913,
+     408,  1113,  2015,   936,  -467,  -467,  -467,  -467,  -467,  -467,
+      -8,   269,   269,  2040,  1833,   425,   419,   421,  -467,   424,
+     485,  1267,    90,    49,  -467,   430,  -467,  -467,  -467,  1841,
+    -467,    27,   435,    34,   439,   440,   442,  -467,  -467,   445,
+    1722,   446,  -467,  -467,  -467,  -467,  1311,  1366,  1464,  -467,
+    -467,  -467,  1679,  -467,  1780,   447,   148,   353,  1464,    34,
+     459,   449,  1679,  -467,   501,   455,  1722,    92,   388,   412,
+     388,   450,   240,   458,  -467,  -467,    34,   412,   492,    34,
+     468,    34,   472,   269,  -467,  1464,  1807,  1722,  -467,   165,
+     167,   253,   392,  -467,  -467,  -467,    34,   480,   269,  1464,
+    -467,  1943,  -467,  -467,   470,   478,   473,  1507,   489,   490,
+     491,  -467,  1464,  -467,  -467,   487,  1187,  1113,  -467,  1267,
+     516,  -467,  -467,  -467,    34,  1866,  1267,    34,  1267,  -467,
+    -467,   550,   196,  -467,  -467,   494,   493,  1267,    90,  1267,
+     412,    34,    34,  -467,   503,   486,  -467,  -467,  -467,  1780,
+    -467,  1187,  1464,  1464,   507,  -467,  1679,   512,  -467,  -467,
+    -467,  -467,  -467,  -467,  -467,  1780,  -467,  -467,  -467,  -467,
+    -467,   513,  -467,  -467,  -467,  1507,   515,  -467,  -467,  -467,
+     518,  -467,   519,   412,  -467,  -467,  -467,  -467,  -467,  -467,
+    -467,  -467,  -467,   269,   522,   936,  -467,  -467,   521,  1620,
+    -467,   269,   936,  1409,   936,  -467,  -467,  -467,   524,  -467,
+    -467,  -467,  -467,   514,  -467,   192,  -467,  -467,   525,   528,
+     530,   533,   535,   527,  -467,  -467,   537,   532,  1267,   538,
+    -467,   543,  -467,  -467,   562,  -467,  1267,  -467,   551,   412,
+    -467,   553,  -467,  1874,   219,  2040,  2040,  1464,   554,  1679,
+    -467,  -467,  1780,    45,  -467,  1113,   412,   412,  -467,    93,
+     429,   548,    34,   557,   414,   552,  -467,  2040,  -467,  -467,
+    -467,  -467,  -467,  -467,  -467,  1874,    34,  -467,  1866,  1267,
+     412,  -467,    34,   196,  -467,  -467,  -467,    34,    34,  -467,
+    -467,  -467,  -467,  -467,  -467,   558,   605,  -467,  1464,  1464,
+    -467,  1507,   560,  -467,  -467,  -467,  -467,  -467,  -467,  -467,
+     936,  -467,   563,  -467,  -467,  -467,  -467,   564,   565,   567,
+    1780,    68,  -467,  -467,  1967,  1991,   561,  1874,  -467,  1874,
+    -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  1464,
+     353,  -467
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -459,  -459,  -459,  -459,  -459,  -459,  -459,    -4,  -459,  -459,
-     651,  -459,     4,  -459,  -459,   661,  -459,  -134,   -41,   103,
-    -459,  -135,  -121,  -459,    50,  -459,  -459,  -459,   184,  -374,
-    -459,  -459,  -459,  -459,  -459,  -459,  -140,  -459,  -459,  -459,
-    -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,
-     581,    61,   115,  -459,  -186,   169,  -411,   250,   -55,   452,
-     264,    -6,   418,   659,    -5,   382,   346,  -459,   460,    48,
-     541,  -459,  -459,  -459,  -459,   -33,    38,   -18,   -11,  -459,
-    -459,  -459,  -459,  -459,    43,   497,  -458,  -459,  -459,  -459,
-    -459,  -459,  -459,  -459,  -459,   310,  -110,  -205,   321,  -459,
-     341,  -459,  -207,  -293,   692,  -459,  -236,  -459,   -66,   -39,
-     222,  -459,  -311,  -238,  -260,  -192,  -459,  -119,  -397,  -459,
-    -459,  -353,  -459,   307,  -459,   355,  -459,   391,   286,   393,
-     267,   132,   140,  -418,  -459,  -430,   289,  -459,   536,  -459,
-    -459
+    -467,  -467,  -467,  -467,  -467,  -467,  -467,    -6,  -467,  -467,
+     599,  -467,    13,  -467,  -467,   613,  -467,  -123,   -24,    58,
+    -467,  -127,  -121,  -467,     2,  -467,  -467,  -467,   128,  -369,
+    -467,  -467,  -467,  -467,  -467,  -467,  -140,  -467,  -467,  -467,
+    -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,
+     632,    12,    33,  -467,  -201,   121,   123,  -467,   183,   -54,
+     401,   114,   -26,   369,   616,    -5,   420,   385,  -467,   417,
+     -50,   498,  -467,  -467,  -467,  -467,   -33,    18,   -31,   -25,
+    -467,  -467,  -467,  -467,  -467,   194,   448,  -460,  -467,  -467,
+    -467,  -467,  -467,  -467,  -467,  -467,   267,  -109,  -231,   278,
+    -467,   292,  -467,  -214,  -282,   643,  -467,  -223,  -467,   -66,
+     282,   172,  -467,  -311,  -238,  -274,  -183,  -467,  -112,  -414,
+    -467,  -467,  -294,  -467,   264,  -467,    85,  -467,   332,   229,
+     340,   216,    71,    77,  -466,  -467,  -424,   222,  -467,   474,
+    -467,  -467
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -273
+#define YYTABLE_NINF -275
 static const yytype_int16 yytable[] =
 {
-      12,   174,   272,   487,   119,   235,   161,   240,   274,   320,
-     138,   235,   435,   278,   376,    32,   359,    79,   323,   121,
-     385,   235,   554,    32,   103,   259,   173,   570,   433,   393,
-     109,   111,    27,   109,   111,   107,   501,   400,   128,   131,
-     111,   402,   375,  -211,   507,   207,   380,   539,   146,   150,
-     164,   417,  -179,     9,   437,     4,   428,   456,   389,   391,
-     438,   649,   150,   426,   212,   133,   205,   495,    15,    35,
-     461,     5,   496,   617,    37,   120,  -178,  -211,     7,    11,
-     122,   388,    19,   112,  -179,   462,  -263,   239,    47,    48,
-       9,  -263,    29,   495,    18,    51,    20,   134,   496,   163,
-     133,  -177,    10,    11,   165,   208,   174,   560,   325,  -211,
-     222,   366,   587,   589,   616,   209,   152,   153,   154,   155,
-     156,   157,   243,   166,   167,    61,   457,   427,   497,   257,
-     111,   289,   134,   618,   619,   266,   111,    64,   146,    10,
-      11,  -263,   150,   620,   536,   381,    23,  -263,   164,   380,
-     578,   228,   228,   228,   624,   124,   231,   231,   231,   130,
-      26,   226,   232,   233,   525,   228,   528,   150,   331,   332,
-     231,   367,   635,  -232,   228,   491,   629,   101,   390,   231,
-     648,   209,   228,   500,   261,   502,    33,   231,   164,   228,
-     437,    93,   276,   105,   231,   318,   486,   163,   630,   282,
-     535,    79,   165,   108,   581,     9,   605,   349,   437,   636,
-     637,   585,   228,   136,   592,    32,   357,   231,   243,   152,
-     156,     9,   291,   622,   623,   171,   653,   515,   654,   363,
-     437,    27,  -232,   379,   522,   564,   611,   163,  -232,   198,
-     533,   403,   165,  -262,   243,    79,   633,   235,  -262,   474,
-     409,   418,     9,  -150,    10,    11,   127,   235,   202,   488,
-     203,   228,   430,   228,   509,   411,   231,   511,   231,   568,
-      10,    11,  -178,   361,   259,   450,   150,  -177,    11,   228,
-     583,   228,   657,   254,   231,    94,   231,   228,   102,   369,
-     125,    29,   231,    95,   125,   215,     9,    96,  -262,   199,
-     220,    10,    11,   200,  -262,   219,   164,    97,    98,   228,
-     223,   201,   263,   250,   231,   141,    79,   234,   264,   397,
-     249,   410,   451,   209,   228,   228,   412,   331,   332,   231,
-     231,   408,    10,    11,   414,   415,   262,   453,   285,   621,
-      99,   479,   286,   334,  -175,    10,    11,   204,   349,  -173,
-     519,   287,   335,   206,   353,   163,   481,   336,   337,   338,
-     165,  -174,   614,   482,   339,  -172,   513,   243,  -175,   477,
-     354,   340,   529,  -173,   489,  -176,  -175,   243,   257,   111,
-     521,  -173,   358,   117,   360,  -174,   266,   111,   341,  -172,
-     506,   111,   362,  -174,   146,   364,   150,  -172,   228,  -176,
-     342,   368,   214,   231,   216,   218,   343,  -176,   408,    11,
-     228,   150,   480,   372,   374,   231,   164,   483,   378,   380,
-     228,   382,   450,   384,   228,   231,   392,   394,   399,   231,
-     386,    79,    79,   401,   494,   405,   479,   254,   419,   349,
-     541,   413,   548,     9,   228,   228,   235,   453,   612,   231,
-     231,   481,   479,   453,   226,   514,   561,   349,   482,   117,
-     117,   117,   416,   432,   444,   163,    79,   481,     9,   451,
-     165,   243,   255,   117,   482,    27,   210,   210,   452,   210,
-     210,   256,   117,   445,   164,    37,    10,    11,   446,   447,
-     117,     9,    10,    11,   112,   448,     9,   117,   458,    47,
-      48,     9,   463,   143,   466,   467,    51,   480,   468,     9,
-     469,   470,   483,   224,   228,   656,   519,    10,    11,   231,
-     117,   485,   379,   480,   490,   493,   147,   508,   483,   503,
-     114,    28,     9,   163,   235,    29,   225,   524,   165,   479,
-      10,    11,   280,   505,   172,    10,    11,   526,    64,   510,
-      10,    11,   281,   512,   481,   520,   527,   228,    10,    11,
-     530,   482,   231,   531,   243,   529,   345,   584,   273,   117,
-      79,   117,   355,   356,   532,     9,   340,   150,   534,   553,
-     555,    10,    11,   556,   563,     9,   569,   117,     9,   117,
-     349,   462,   541,   344,   567,   117,   548,   453,   572,   344,
-     344,   349,   349,   574,   254,   479,   576,   228,   577,   164,
-     480,   277,   231,   580,   582,   483,   590,   117,   593,   591,
-     481,   288,   594,   317,    10,    11,  -154,   482,   595,   117,
-     137,  -155,   117,   117,    10,    11,   596,    10,    11,   255,
-     597,    35,   160,   598,   601,   169,    37,   600,   602,   168,
-     604,   606,   625,    10,    11,   112,   334,   613,   163,   459,
-      47,    48,     9,   165,   627,   335,   628,    51,   638,   639,
-     336,   337,   338,   437,    55,   644,   480,   339,   645,   646,
-     647,   483,   106,    66,   340,   626,   254,    56,    57,   650,
-      58,    59,   579,   588,    60,   370,   449,    61,   123,   404,
-     284,   341,   504,   371,   460,   492,   117,    62,    63,    64,
-     352,    10,    11,   475,    91,   263,   344,   573,   117,   343,
-     117,   264,    11,   344,   177,   442,   538,   443,   117,   562,
-     265,   344,   117,   634,   185,    10,    11,   631,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,   558,   351,     0,
-       0,     0,   117,   117,     0,     0,   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,   177,     0,     0,   137,   137,
-     333,     0,     0,     0,   537,   185,     0,     0,     0,   189,
-     544,   547,     0,   552,   194,   195,   196,   197,     0,     0,
-       0,     0,   557,     0,   559,   117,     0,     0,     0,     0,
-       0,   344,   117,     0,     0,     0,     0,   542,   344,     0,
-     344,   117,     0,     0,   175,  -272,     0,   176,   177,   344,
-     178,   344,   180,   181,   182,     0,     0,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   137,     0,   176,   177,   117,   178,   179,   180,   181,
-     182,   137,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,   197,     0,     0,     0,
-       0,     0,    37,     0,   421,  -272,     0,     0,   160,     0,
-       0,   112,     0,   599,   421,  -272,    47,    48,     9,     0,
-       0,   603,     0,    51,     0,   117,     0,     0,   117,     0,
-     224,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     344,     0,     0,     0,     0,     0,     0,   114,   344,     0,
-       0,     0,     0,   225,     0,   344,     0,   137,   137,    35,
-       0,     0,   544,   632,    37,    64,     0,    10,    11,   396,
-       0,     0,     0,   112,     0,     0,     0,     0,    47,    48,
-       9,     0,     0,     0,     0,    51,   344,     0,     0,   542,
-     344,     0,   158,     0,   117,     0,   137,     0,     0,     0,
-       0,     0,     0,     0,     0,    56,    57,     0,    58,   159,
-     137,     0,    60,     0,     0,    61,   314,     0,   160,     0,
-       0,     0,     0,   169,     0,    62,    63,    64,     0,    10,
-      11,     0,     0,     0,   176,   177,   344,   178,   344,   180,
-     181,   182,     0,     0,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,     0,     0,
-       0,     0,     0,   565,   566,     0,     0,   523,     0,     0,
-       0,     0,    -2,    34,     0,    35,     0,     0,    36,     0,
-      37,    38,    39,     0,     0,    40,   160,    41,    42,    43,
-      44,    45,    46,     0,    47,    48,     9,     0,     0,    49,
-      50,    51,    52,    53,    54,     0,   421,     0,    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,   -24,     0,     0,     0,     0,     0,
-       0,    62,    63,    64,     0,    10,    11,     0,     0,   324,
-       0,    35,     0,     0,    36,  -247,    37,    38,    39,     0,
-    -247,    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,   642,   643,
-    -247,   160,     0,     0,     0,   325,  -247,    62,    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,
-      35,    61,     0,     0,  -247,    37,     0,     0,     0,   325,
-    -247,    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,     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,
+      12,   174,   272,   323,   119,   235,   121,   161,   487,   359,
+     109,   235,   435,   109,   240,    32,   274,    79,   320,   131,
+     385,   235,   103,    32,   278,   570,   259,   376,   554,   393,
+     539,   111,   389,   391,   111,   375,   164,   400,   128,   433,
+     111,   402,   428,   173,   107,   380,   212,   254,   146,   150,
+     618,   417,   456,     4,   437,   120,   380,    27,     9,   426,
+     438,    11,   150,   226,   232,   233,  -181,   152,   153,   154,
+     155,   156,   157,   124,   166,   167,   263,   130,     9,   163,
+     388,   207,   264,   366,     5,   390,   261,   461,   652,     7,
+    -180,   265,   205,   450,   276,   501,    10,    11,  -181,   495,
+     495,   282,   462,   507,   496,   496,   174,    10,    11,   257,
+     619,   620,   617,    28,     9,   266,    27,    29,    27,   222,
+     621,   457,   243,   427,   291,  -234,   133,    10,    11,   631,
+     111,   228,   228,   228,   164,   325,   111,     9,   146,     9,
+     451,   208,   150,   367,    15,   228,   381,    18,   289,   452,
+     525,   209,   528,   209,   228,   536,    19,   500,   134,   502,
+     497,   625,   228,    10,    11,   141,   560,   150,   491,   228,
+     152,   156,  -213,   102,   164,   361,    29,   163,    29,   637,
+     651,   657,   632,   658,  -234,   379,    10,    11,    10,    11,
+    -234,   369,   228,   638,   639,   318,   133,   204,    20,   450,
+    -177,    79,  -175,   206,   581,    23,  -213,   349,    26,   578,
+     437,   585,   515,   535,   357,    32,   486,   163,   243,   522,
+       9,   397,    33,   125,  -177,    93,  -175,   125,   134,   363,
+    -179,   122,  -177,   408,  -175,     9,   414,   415,  -213,   101,
+     105,   228,   108,   228,   243,    79,   451,   235,   564,   533,
+     409,   136,   411,   171,   437,   165,   474,   235,   203,   228,
+     593,   228,   568,   430,   254,   606,   488,   228,  -265,    10,
+      11,   273,   509,  -265,   198,   259,   150,  -180,   511,  -152,
+     583,   437,   623,   624,    10,    11,   199,   612,  -176,   228,
+     200,   661,   164,   263,   202,  -179,   345,    11,   201,   264,
+     215,   410,   355,   356,   228,   228,   635,   231,   231,   231,
+     408,   219,  -176,    10,    11,     9,    79,   220,   334,   646,
+    -176,   231,   223,  -265,   249,   234,   250,   335,   262,  -265,
+     231,   138,   336,   337,   338,   163,   494,   453,   231,   339,
+     285,   479,  -264,   481,   209,   231,   340,  -264,   349,   482,
+     519,   277,   622,   165,   353,   615,   226,   514,   257,   214,
+       9,   216,   218,   341,    10,    11,   266,   243,   231,   477,
+     506,     9,   286,   529,   489,   342,   287,   243,   228,   111,
+     354,   343,   358,   360,    11,   630,   362,   111,   364,   368,
+     228,   111,   480,   165,   146,   127,   150,  -264,   372,   374,
+     228,   382,   164,  -264,   228,   378,    94,   288,   239,    10,
+      11,   150,   380,     9,    95,   394,   384,   231,    96,   231,
+      10,    11,   117,   254,   228,   228,   449,  -174,    97,    98,
+     386,    79,    79,     9,   460,   231,   479,   231,   481,   349,
+     541,   392,   548,   231,   482,   163,   235,   453,   143,   399,
+     413,  -174,   479,   453,   481,   613,   561,   349,   255,  -174,
+     482,    99,    10,    11,  -178,   231,    79,   256,   147,   584,
+     164,   243,    10,    11,   432,   401,   405,   412,   416,   419,
+     231,   231,    10,    11,   444,     9,   445,   480,  -178,   331,
+     332,   447,   446,   448,   228,   458,  -178,   463,   117,   117,
+     117,   466,   467,   480,   468,   469,   470,   485,     9,   490,
+     503,   165,   117,   163,   210,   210,   519,   210,   210,   660,
+     172,   117,   379,   493,   537,   254,   505,   508,   510,   117,
+     544,   547,   512,   552,    10,    11,   117,   228,   235,   479,
+     520,   481,   557,   317,   559,   524,   526,   482,   527,   530,
+     531,   532,   340,   553,   231,   534,   555,    10,    11,   117,
+     255,   462,   403,   563,   243,   556,   231,   529,   483,   567,
+      79,   569,   418,   572,    10,    11,   231,   150,   576,   577,
+     231,   574,   580,   582,   591,   594,   592,   228,   595,  -156,
+     480,   349,   596,   541,  -157,   597,   164,   548,   453,   598,
+     231,   231,   349,   349,   599,   602,   601,   479,   117,   481,
+     117,   603,   607,   605,   614,   482,   626,   628,   640,   641,
+     629,   165,   437,   647,   648,   649,   117,   650,   117,   656,
+     106,   344,   177,   600,   117,    66,   579,   344,   344,   163,
+     627,   604,   185,   653,   370,   589,   189,   590,   331,   332,
+     404,   194,   195,   196,   197,   123,   117,   284,   480,   504,
+     371,   352,   492,   483,   475,    91,   442,   573,   117,   538,
+     231,   117,   117,   636,   443,   633,   175,  -274,   562,   483,
+     558,   137,     0,   544,   634,     0,   351,   513,     0,   165,
+       0,     0,     0,   160,     0,     0,   169,     0,     0,     0,
+       0,   521,     0,     0,     0,   176,   177,     0,   178,   179,
+     180,   181,   182,   231,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,    35,
+       0,     0,     0,     0,    37,     0,     0,  -274,     0,     0,
+       0,     0,     0,   112,     0,   117,     0,  -274,    47,    48,
+       9,     0,     0,     0,   344,    51,     0,   117,     0,   117,
+       0,   344,   158,   231,     0,     0,   483,   117,     0,   344,
+       0,   117,     0,     0,     0,    56,    57,     0,    58,   159,
+       0,     0,    60,     0,     0,    61,   314,     0,     0,     0,
+       0,   117,   117,     0,     0,    62,    63,    64,     0,    10,
+      11,     0,     0,     0,     0,     0,     0,   292,   293,   294,
+     295,     0,   296,   297,   298,   165,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+       0,   160,     0,   319,   483,   322,     0,     0,     0,   137,
+     137,   333,     0,    35,     0,     0,     0,     0,    37,     0,
+       0,   168,     0,     0,   117,     0,     0,   112,     0,   344,
+       0,   117,    47,    48,     9,   542,   344,     0,   344,    51,
+     117,     0,     0,     0,     0,     0,    55,   344,     0,   344,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    56,
+      57,     0,    58,    59,     0,     0,    60,     0,     0,    61,
+       0,     0,     0,     0,   117,     0,     0,     0,     0,    62,
+      63,    64,   137,    10,    11,   177,     0,     0,     0,   180,
+     181,   182,   137,     0,   184,   185,   186,   187,     0,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,     0,    35,
+       0,     0,     0,     0,    37,   421,     0,     0,     0,   160,
+       0,     0,     0,   112,   117,   421,     0,   117,    47,    48,
+       9,     0,     0,     0,     0,    51,     0,     0,   344,     0,
+       0,     0,    55,     0,     0,     0,   344,     0,     0,     0,
+       0,     0,     0,   344,     0,    56,    57,     0,    58,    59,
+       0,     0,    60,     0,     0,    61,     0,     0,   137,   137,
+       0,     0,     0,   420,     0,    62,    63,    64,     0,    10,
+      11,     0,     0,     0,     0,   344,     0,     0,   542,   344,
+       0,     0,     0,     0,     0,   117,    -2,    34,     0,    35,
+       0,     0,    36,     0,    37,    38,    39,   137,     0,    40,
+       0,    41,    42,    43,    44,    45,    46,     0,    47,    48,
+       9,   137,     0,    49,    50,    51,    52,    53,    54,   160,
+       0,     0,    55,     0,   169,     0,     0,   344,     0,   344,
+       0,     0,     0,     0,     0,    56,    57,     0,    58,    59,
+       0,     0,    60,     0,     0,    61,     0,     0,   -24,     0,
+       0,     0,     0,     0,     0,    62,    63,    64,     0,    10,
+      11,     0,     0,     0,   565,   566,     0,     0,     0,     0,
+       0,     0,     0,     0,   324,     0,    35,     0,     0,    36,
+    -249,    37,    38,    39,     0,  -249,    40,   160,    41,    42,
+     112,    44,    45,    46,     0,    47,    48,     9,     0,     0,
+      49,    50,    51,    52,    53,    54,     0,   421,     0,    55,
+       0,     0,     0,     0,   421,   587,   421,     0,     0,     0,
+       0,     0,    56,    57,     0,    58,    59,     0,     0,    60,
+       0,     0,    61,     0,     0,  -249,     0,     0,     0,     0,
+     325,  -249,    62,    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,   177,     0,    49,    50,    51,    52,    53,    54,
+       0,     0,   185,    55,     0,     0,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,     0,    56,    57,     0,    58,
+      59,     0,     0,    60,     0,     0,    61,     0,     0,  -249,
+     644,   645,     0,   160,   325,  -249,    62,    63,    64,    35,
+      10,    11,   421,     0,    37,     0,     0,     0,     0,     0,
+       0,     0,     0,   112,     0,   334,     0,     0,    47,    48,
+       9,     0,     0,     0,   335,    51,     0,   429,     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,     0,     0,     0,    37,
+     341,     0,     0,     0,     0,    62,    63,    64,   112,    10,
+      11,     0,     0,    47,    48,     9,     0,   472,   343,     0,
+      51,    11,     0,     0,     0,     0,     0,    55,     0,     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,     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,    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,    37,     0,
-     224,   241,     0,     0,     0,     0,    37,   112,     0,     0,
-       0,     0,    47,    48,     9,   112,     0,   114,     0,    51,
-      47,    48,     9,   225,     0,     0,   224,    51,     0,   290,
-       0,    37,     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,     0,   224,
-       0,    64,     0,    10,    11,    37,     0,     0,     0,    64,
-       0,    10,    11,     0,   112,     0,   114,     0,     0,    47,
-      48,     9,   225,     0,     0,     0,    51,     0,     0,     0,
-      37,     0,     0,   406,    64,     0,    10,    11,   283,   112,
-       0,     0,     0,     0,    47,    48,     9,   112,     0,     0,
-     114,    51,    47,    48,     9,     0,   407,     0,   224,    51,
-       0,     0,     0,   334,     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,
-       0,   439,     0,    64,     0,    10,    11,   334,     0,     0,
-       0,    64,     0,    10,    11,     0,   335,   334,   341,     0,
-       0,   336,   337,   540,   440,     0,   335,     0,   339,     0,
-       0,   336,   337,   338,     0,   340,   343,     0,   339,    11,
-       0,     0,     0,     0,     0,   340,     0,     0,     0,     0,
-     334,     0,   341,     0,     0,     0,     0,     0,     0,   335,
-       0,     0,   341,     0,   336,   337,   338,     0,   607,     0,
-     343,   339,    10,    11,     0,     0,     0,     0,   340,     0,
-     343,     0,     0,    11,     0,     0,   176,   177,     0,   178,
-       0,   180,   181,   182,     0,   341,   184,   185,   186,   187,
+      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,     0,     0,     0,    56,    57,
+       0,    58,    59,     0,     0,    60,     0,    35,    61,     0,
+       0,     0,    37,     0,     0,     0,   586,     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,
+      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,
+      35,     0,    47,    48,     9,    37,    62,    63,    64,    51,
+      10,    11,     0,     0,   112,     0,    55,     0,     0,    47,
+      48,     9,     0,     0,     0,     0,    51,     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,    61,     0,    37,   224,
+       0,     0,     0,     0,     0,     0,     0,   112,    64,     0,
+      10,    11,    47,    48,     9,     0,   114,     0,     0,    51,
+       0,     0,   225,     0,     0,     0,   224,     0,   280,     0,
+      37,     0,     0,     0,    64,     0,    10,    11,   281,   112,
+       0,     0,     0,   114,    47,    48,     9,     0,     0,   225,
+       0,    51,     0,     0,     0,   290,     0,    37,   224,     0,
+     241,    64,     0,    10,    11,   281,   112,     0,     0,     0,
+       0,    47,    48,     9,     0,   114,     0,     0,    51,     0,
+       0,   225,     0,     0,     0,   224,     0,     0,     0,    37,
+       0,     0,     0,    64,     0,    10,    11,   396,   112,     0,
+      37,     0,   114,    47,    48,     9,     0,     0,   225,   112,
+      51,     0,     0,     0,    47,    48,     9,   113,     0,     0,
+      64,    51,    10,    11,     0,     0,     0,     0,   224,     0,
+       0,     0,    37,     0,   114,     0,     0,     0,     0,     0,
+     115,   112,     0,     0,     0,   114,    47,    48,     9,     0,
+       0,   225,    64,    51,    10,    11,     0,     0,    37,     0,
+     406,     0,     0,    64,     0,    10,    11,   112,     0,     0,
+       0,     0,    47,    48,     9,     0,     0,   114,     0,    51,
+       0,     0,     0,   407,     0,   283,   224,     0,     0,     0,
+       0,     0,     0,     0,   112,    64,     0,    10,    11,    47,
+      48,     9,     0,   114,     0,     0,    51,     0,     0,   476,
+       0,   334,     0,   224,     0,     0,     0,     0,     0,   334,
+     335,    64,   459,    10,    11,   336,   337,   338,   335,     0,
+     114,     0,   339,   336,   337,   338,   225,     0,     0,   439,
+     339,     0,     0,     0,   334,     0,     0,   340,    64,     0,
+      10,    11,   334,   335,     0,     0,   341,     0,   336,   337,
+     540,   335,   440,     0,   341,   339,   336,   337,   338,     0,
+       0,     0,   340,   339,   343,     0,     0,    11,     0,     0,
+     340,     0,   343,     0,     0,    11,     0,     0,     0,   341,
+       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
+       0,     0,     0,   608,     0,     0,     0,   343,     0,    10,
+      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,   343,     0,     0,    11,   176,   177,     0,
-     178,     0,   180,   181,   182,   431,     0,   184,   185,   186,
+       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,   654,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   176,   177,
+       0,   178,     0,   180,   181,   182,     0,   655,   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,   178,     0,   180,   181,   182,     0,
-     651,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,   176,   177,     0,   178,     0,
-     180,   181,   182,     0,   652,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,   176,
-     177,     0,   434,     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,     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) == (-459)))
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-467))
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(yytable_value) \
   YYID (0)
 
 static const yytype_int16 yycheck[] =
 {
-       5,    67,   142,   377,    37,   126,    61,   126,   143,   201,
-      49,   132,   323,   147,   250,    20,   223,    22,   204,    37,
-     258,   142,   452,    28,    28,   135,    67,   485,   321,   267,
-      36,    36,     3,    39,    39,    31,   389,   275,    43,    45,
-      45,   279,   249,     1,   397,     5,    24,   444,    53,    54,
-      61,   289,    35,    24,    62,     0,   316,     3,   263,   264,
-      68,    20,    67,    11,    59,    35,     1,     7,    24,     3,
-      60,    25,    12,     5,     8,    37,    59,    35,    25,    74,
-      37,    59,    62,    17,    67,    75,     7,   126,    22,    23,
-      24,    12,    63,     7,     3,    29,    21,    67,    12,    61,
-      35,    59,    73,    74,    61,    65,   172,   460,    67,    67,
-     106,     5,   523,   524,   572,    75,    55,    56,    57,    58,
-      59,    60,   127,    62,    63,    59,    72,    75,    68,   135,
-     135,   172,    67,    65,    66,   141,   141,    71,   143,    73,
-      74,    62,   147,    75,   437,   255,    24,    68,   159,    24,
-     503,   113,   114,   115,    68,    40,   113,   114,   115,    44,
-      63,   113,   114,   115,   424,   127,   426,   172,   207,   208,
-     127,    65,   602,     3,   136,   382,   594,    24,    53,   136,
-     638,    75,   144,   388,   136,   390,    62,   144,   199,   151,
-      62,    62,   144,     3,   151,   200,    68,   159,   595,   151,
-     436,   206,   159,     3,   515,    24,   559,   212,    62,   606,
-     607,   522,   174,    71,    68,   220,   220,   174,   223,   158,
-     159,    24,   174,   576,   577,    62,   644,   413,   646,   234,
-      62,     3,    62,    63,   420,   471,    68,   199,    68,    67,
-     432,   280,   199,     7,   249,   250,   599,   368,    12,   368,
-     283,   290,    24,    66,    73,    74,    59,   378,    66,   378,
-      59,   223,   317,   225,   399,   283,   223,   401,   225,   476,
-      73,    74,    59,   225,   384,     3,   281,    59,    74,   241,
-     518,   243,   656,    24,   241,     9,   243,   249,    60,   241,
-      40,    63,   249,    17,    44,    24,    24,    21,    62,    59,
-      62,    73,    74,    63,    68,    64,   317,    31,    32,   271,
-      59,    71,    53,    67,   271,    51,   321,    63,    59,   271,
-      59,   283,    50,    75,   286,   287,   283,   366,   367,   286,
-     287,   283,    73,    74,   286,   287,    35,   342,    60,   575,
-      64,   374,    72,     8,    35,    73,    74,    83,   353,    35,
-     416,    72,    17,    89,    59,   317,   374,    22,    23,    24,
-     317,    35,   569,   374,    29,    35,   405,   372,    59,   374,
-       3,    36,   427,    59,   379,    35,    67,   382,   384,   384,
-     419,    67,    60,    37,     8,    59,   392,   392,    53,    59,
-     396,   396,    60,    67,   399,    35,   401,    67,   360,    59,
-      65,    62,    95,   360,    97,    98,    71,    67,   360,    74,
-     372,   416,   374,    75,    60,   372,   427,   374,    62,    24,
-     382,    59,     3,    62,   386,   382,    62,     3,    62,   386,
-      72,   436,   437,    62,   386,    65,   469,    24,    65,   444,
-     445,    67,   447,    24,   406,   407,   567,   452,   567,   406,
-     407,   469,   485,   458,   406,   407,   461,   462,   469,   113,
-     114,   115,    62,    66,    59,   427,   471,   485,    24,    50,
-     427,   476,    59,   127,   485,     3,    94,    95,    59,    97,
-      98,    68,   136,    67,   495,     8,    73,    74,    71,    67,
-     144,    24,    73,    74,    17,     8,    24,   151,    65,    22,
-      23,    24,    62,    59,    62,    62,    29,   469,    62,    24,
-      60,    60,   469,    36,   476,   655,   582,    73,    74,   476,
-     174,    60,    63,   485,    60,    68,    59,    35,   485,    60,
-      53,    59,    24,   495,   655,    63,    59,    75,   495,   572,
-      73,    74,    65,    68,    59,    73,    74,    68,    71,    60,
-      73,    74,    75,    60,   572,    60,    75,   519,    73,    74,
-      60,   572,   519,    60,   569,   620,   211,   519,    60,   223,
-     575,   225,   217,   218,    60,    24,    36,   582,    68,     3,
-      62,    73,    74,    72,    60,    24,    59,   241,    24,   243,
-     595,    75,   597,   211,    62,   249,   601,   602,    60,   217,
-     218,   606,   607,    66,    24,   638,    60,   569,    60,   620,
-     572,    60,   569,    60,    62,   572,    60,   271,    60,    72,
-     638,    60,    60,    59,    73,    74,    59,   638,    59,   283,
-      49,    59,   286,   287,    73,    74,    68,    73,    74,    59,
-      62,     3,    61,    72,    62,    64,     8,    68,    49,    11,
-      62,    59,    68,    73,    74,    17,     8,    60,   620,    11,
-      22,    23,    24,   620,    60,    17,    68,    29,    60,    14,
-      22,    23,    24,    62,    36,    60,   638,    29,    60,    60,
-      60,   638,    31,    22,    36,   582,    24,    49,    50,   639,
-      52,    53,   508,   524,    56,   243,   341,    59,    39,   281,
-     159,    53,   392,   243,   349,   384,   360,    69,    70,    71,
-     213,    73,    74,   372,    22,    53,   334,   495,   372,    71,
-     374,    59,    74,   341,    34,   334,   440,   334,   382,   462,
-      68,   349,   386,   601,    44,    73,    74,   597,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,   458,   212,    -1,
-      -1,    -1,   406,   407,    -1,    -1,   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,    34,    -1,    -1,   207,   208,
-     209,    -1,    -1,    -1,   439,    44,    -1,    -1,    -1,    48,
-     445,   446,    -1,   448,    53,    54,    55,    56,    -1,    -1,
-      -1,    -1,   457,    -1,   459,   469,    -1,    -1,    -1,    -1,
-      -1,   439,   476,    -1,    -1,    -1,    -1,   445,   446,    -1,
-     448,   485,    -1,    -1,     4,     5,    -1,    33,    34,   457,
-      36,   459,    38,    39,    40,    -1,    -1,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,   280,    -1,    33,    34,   519,    36,    37,    38,    39,
-      40,   290,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    -1,
-      -1,    -1,     8,    -1,   313,    65,    -1,    -1,   317,    -1,
-      -1,    17,    -1,   548,   323,    75,    22,    23,    24,    -1,
-      -1,   556,    -1,    29,    -1,   569,    -1,    -1,   572,    -1,
-      36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     548,    -1,    -1,    -1,    -1,    -1,    -1,    53,   556,    -1,
-      -1,    -1,    -1,    59,    -1,   563,    -1,   366,   367,     3,
-      -1,    -1,   597,   598,     8,    71,    -1,    73,    74,    75,
-      -1,    -1,    -1,    17,    -1,    -1,    -1,    -1,    22,    23,
-      24,    -1,    -1,    -1,    -1,    29,   594,    -1,    -1,   597,
-     598,    -1,    36,    -1,   638,    -1,   405,    -1,    -1,    -1,
+       5,    67,   142,   204,    37,   126,    37,    61,   377,   223,
+      36,   132,   323,    39,   126,    20,   143,    22,   201,    45,
+     258,   142,    28,    28,   147,   485,   135,   250,   452,   267,
+     444,    36,   263,   264,    39,   249,    61,   275,    43,   321,
+      45,   279,   316,    67,    31,    24,    59,    24,    53,    54,
+       5,   289,     3,     0,    62,    37,    24,     3,    24,    11,
+      68,    74,    67,   113,   114,   115,    35,    55,    56,    57,
+      58,    59,    60,    40,    62,    63,    53,    44,    24,    61,
+      59,     5,    59,     5,    25,    53,   136,    60,    20,    25,
+      59,    68,     1,     3,   144,   389,    73,    74,    67,     7,
+       7,   151,    75,   397,    12,    12,   172,    73,    74,   135,
+      65,    66,   572,    59,    24,   141,     3,    63,     3,   106,
+      75,    72,   127,    75,   174,     3,    35,    73,    74,   595,
+     135,   113,   114,   115,   159,    67,   141,    24,   143,    24,
+      50,    65,   147,    65,    24,   127,   255,     3,   172,    59,
+     424,    75,   426,    75,   136,   437,    62,   388,    67,   390,
+      68,    68,   144,    73,    74,    51,   460,   172,   382,   151,
+     158,   159,     1,    60,   199,   225,    63,   159,    63,   603,
+     640,   647,   596,   649,    62,    63,    73,    74,    73,    74,
+      68,   241,   174,   607,   608,   200,    35,    83,    21,     3,
+      35,   206,    35,    89,   515,    24,    35,   212,    63,   503,
+      62,   522,   413,   436,   220,   220,    68,   199,   223,   420,
+      24,   271,    62,    40,    59,    62,    59,    44,    67,   234,
+      59,    37,    67,   283,    67,    24,   286,   287,    67,    24,
+       3,   223,     3,   225,   249,   250,    50,   368,   471,   432,
+     283,    71,   283,    62,    62,    61,   368,   378,    59,   241,
+      68,   243,   476,   317,    24,   559,   378,   249,     7,    73,
+      74,    60,   399,    12,    67,   384,   281,    59,   401,    66,
+     518,    62,   576,   577,    73,    74,    59,    68,    35,   271,
+      63,   660,   317,    53,    66,    59,   211,    74,    71,    59,
+      24,   283,   217,   218,   286,   287,   600,   113,   114,   115,
+     360,    64,    59,    73,    74,    24,   321,    62,     8,   630,
+      67,   127,    59,    62,    59,    63,    67,    17,    35,    68,
+     136,    49,    22,    23,    24,   317,   386,   342,   144,    29,
+      60,   374,     7,   374,    75,   151,    36,    12,   353,   374,
+     416,    60,   575,   159,    59,   569,   406,   407,   384,    95,
+      24,    97,    98,    53,    73,    74,   392,   372,   174,   374,
+     396,    24,    72,   427,   379,    65,    72,   382,   360,   384,
+       3,    71,    60,     8,    74,   586,    60,   392,    35,    62,
+     372,   396,   374,   199,   399,    59,   401,    62,    75,    60,
+     382,    59,   427,    68,   386,    62,     9,    60,   126,    73,
+      74,   416,    24,    24,    17,     3,    62,   223,    21,   225,
+      73,    74,    37,    24,   406,   407,   341,    35,    31,    32,
+      72,   436,   437,    24,   349,   241,   469,   243,   469,   444,
+     445,    62,   447,   249,   469,   427,   567,   452,    59,    62,
+      67,    59,   485,   458,   485,   567,   461,   462,    59,    67,
+     485,    64,    73,    74,    35,   271,   471,    68,    59,   519,
+     495,   476,    73,    74,    66,    62,    65,   283,    62,    65,
+     286,   287,    73,    74,    59,    24,    67,   469,    59,   207,
+     208,    67,    71,     8,   476,    65,    67,    62,   113,   114,
+     115,    62,    62,   485,    62,    60,    60,    60,    24,    60,
+      60,   317,   127,   495,    94,    95,   582,    97,    98,   659,
+      59,   136,    63,    68,   439,    24,    68,    35,    60,   144,
+     445,   446,    60,   448,    73,    74,   151,   519,   659,   572,
+      60,   572,   457,    59,   459,    75,    68,   572,    75,    60,
+      60,    60,    36,     3,   360,    68,    62,    73,    74,   174,
+      59,    75,   280,    60,   569,    72,   372,   621,   374,    62,
+     575,    59,   290,    60,    73,    74,   382,   582,    60,    60,
+     386,    66,    60,    62,    60,    60,    72,   569,    60,    59,
+     572,   596,    59,   598,    59,    68,   621,   602,   603,    62,
+     406,   407,   607,   608,    72,    62,    68,   640,   223,   640,
+     225,    49,    59,    62,    60,   640,    68,    60,    60,    14,
+      68,   427,    62,    60,    60,    60,   241,    60,   243,    68,
+      31,   211,    34,   548,   249,    22,   508,   217,   218,   621,
+     582,   556,    44,   641,   243,   524,    48,   524,   366,   367,
+     281,    53,    54,    55,    56,    39,   271,   159,   640,   392,
+     243,   213,   384,   469,   372,    22,   334,   495,   283,   440,
+     476,   286,   287,   602,   334,   598,     4,     5,   462,   485,
+     458,    49,    -1,   598,   599,    -1,   212,   405,    -1,   495,
+      -1,    -1,    -1,    61,    -1,    -1,    64,    -1,    -1,    -1,
+      -1,   419,    -1,    -1,    -1,    33,    34,    -1,    36,    37,
+      38,    39,    40,   519,    42,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,     3,
+      -1,    -1,    -1,    -1,     8,    -1,    -1,    65,    -1,    -1,
+      -1,    -1,    -1,    17,    -1,   360,    -1,    75,    22,    23,
+      24,    -1,    -1,    -1,   334,    29,    -1,   372,    -1,   374,
+      -1,   341,    36,   569,    -1,    -1,   572,   382,    -1,   349,
+      -1,   386,    -1,    -1,    -1,    49,    50,    -1,    52,    53,
+      -1,    -1,    56,    -1,    -1,    59,    60,    -1,    -1,    -1,
+      -1,   406,   407,    -1,    -1,    69,    70,    71,    -1,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,   175,   176,   177,
+     178,    -1,   180,   181,   182,   621,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+      -1,   199,    -1,   201,   640,   203,    -1,    -1,    -1,   207,
+     208,   209,    -1,     3,    -1,    -1,    -1,    -1,     8,    -1,
+      -1,    11,    -1,    -1,   469,    -1,    -1,    17,    -1,   439,
+      -1,   476,    22,    23,    24,   445,   446,    -1,   448,    29,
+     485,    -1,    -1,    -1,    -1,    -1,    36,   457,    -1,   459,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      50,    -1,    52,    53,    -1,    -1,    56,    -1,    -1,    59,
+      -1,    -1,    -1,    -1,   519,    -1,    -1,    -1,    -1,    69,
+      70,    71,   280,    73,    74,    34,    -1,    -1,    -1,    38,
+      39,    40,   290,    -1,    43,    44,    45,    46,    -1,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    -1,     3,
+      -1,    -1,    -1,    -1,     8,   313,    -1,    -1,    -1,   317,
+      -1,    -1,    -1,    17,   569,   323,    -1,   572,    22,    23,
+      24,    -1,    -1,    -1,    -1,    29,    -1,    -1,   548,    -1,
+      -1,    -1,    36,    -1,    -1,    -1,   556,    -1,    -1,    -1,
+      -1,    -1,    -1,   563,    -1,    49,    50,    -1,    52,    53,
+      -1,    -1,    56,    -1,    -1,    59,    -1,    -1,   366,   367,
+      -1,    -1,    -1,    67,    -1,    69,    70,    71,    -1,    73,
+      74,    -1,    -1,    -1,    -1,   595,    -1,    -1,   598,   599,
+      -1,    -1,    -1,    -1,    -1,   640,     0,     1,    -1,     3,
+      -1,    -1,     6,    -1,     8,     9,    10,   405,    -1,    13,
+      -1,    15,    16,    17,    18,    19,    20,    -1,    22,    23,
+      24,   419,    -1,    27,    28,    29,    30,    31,    32,   427,
+      -1,    -1,    36,    -1,   432,    -1,    -1,   647,    -1,   649,
       -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,    53,
-     419,    -1,    56,    -1,    -1,    59,    60,    -1,   427,    -1,
-      -1,    -1,    -1,   432,    -1,    69,    70,    71,    -1,    73,
-      74,    -1,    -1,    -1,    33,    34,   644,    36,   646,    38,
-      39,    40,    -1,    -1,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
-      -1,    -1,    -1,   472,   473,    -1,    -1,    66,    -1,    -1,
-      -1,    -1,     0,     1,    -1,     3,    -1,    -1,     6,    -1,
-       8,     9,    10,    -1,    -1,    13,   495,    15,    16,    17,
-      18,    19,    20,    -1,    22,    23,    24,    -1,    -1,    27,
-      28,    29,    30,    31,    32,    -1,   515,    -1,    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,    -1,
-      -1,    69,    70,    71,    -1,    73,    74,    -1,    -1,     1,
-      -1,     3,    -1,    -1,     6,     7,     8,     9,    10,    -1,
-      12,    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,   617,   618,
-      62,   620,    -1,    -1,    -1,    67,    68,    69,    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,
-       3,    59,    -1,    -1,    62,     8,    -1,    -1,    -1,    67,
-      68,    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,    -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,    56,    -1,    -1,    59,    -1,    -1,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    73,
+      74,    -1,    -1,    -1,   472,   473,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -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,    -1,   515,    -1,    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,    -1,     6,    -1,     8,     9,    10,    -1,    -1,
+      13,    -1,    15,    16,    17,    18,    19,    20,    -1,    22,
+      23,    24,    34,    -1,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    44,    36,    -1,    -1,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    -1,    49,    50,    -1,    52,
+      53,    -1,    -1,    56,    -1,    -1,    59,    -1,    -1,    62,
+     618,   619,    -1,   621,    67,    68,    69,    70,    71,     3,
+      73,    74,   630,    -1,     8,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    17,    -1,     8,    -1,    -1,    22,    23,
+      24,    -1,    -1,    -1,    17,    29,    -1,    31,    -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,    -1,    -1,    -1,     8,
+      53,    -1,    -1,    -1,    -1,    69,    70,    71,    17,    73,
+      74,    -1,    -1,    22,    23,    24,    -1,    26,    71,    -1,
+      29,    74,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -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,
+      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,    -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,    -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,    -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,     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,     8,    -1,
-      36,    11,    -1,    -1,    -1,    -1,     8,    17,    -1,    -1,
-      -1,    -1,    22,    23,    24,    17,    -1,    53,    -1,    29,
-      22,    23,    24,    59,    -1,    -1,    36,    29,    -1,    65,
-      -1,     8,    -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,    -1,    36,
-      -1,    71,    -1,    73,    74,     8,    -1,    -1,    -1,    71,
-      -1,    73,    74,    -1,    17,    -1,    53,    -1,    -1,    22,
-      23,    24,    59,    -1,    -1,    -1,    29,    -1,    -1,    -1,
-       8,    -1,    -1,    36,    71,    -1,    73,    74,     8,    17,
-      -1,    -1,    -1,    -1,    22,    23,    24,    17,    -1,    -1,
-      53,    29,    22,    23,    24,    -1,    59,    -1,    36,    29,
-      -1,    -1,    -1,     8,    -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,
-      -1,    36,    -1,    71,    -1,    73,    74,     8,    -1,    -1,
-      -1,    71,    -1,    73,    74,    -1,    17,     8,    53,    -1,
-      -1,    22,    23,    24,    59,    -1,    17,    -1,    29,    -1,
-      -1,    22,    23,    24,    -1,    36,    71,    -1,    29,    74,
-      -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
-       8,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    17,
-      -1,    -1,    53,    -1,    22,    23,    24,    -1,    59,    -1,
+      -1,    -1,    -1,     3,    -1,    -1,    49,    50,     8,    52,
+      53,    -1,    -1,    56,    -1,    -1,    59,    17,    -1,    -1,
+       3,    -1,    22,    23,    24,     8,    69,    70,    71,    29,
+      73,    74,    -1,    -1,    17,    -1,    36,    -1,    -1,    22,
+      23,    24,    -1,    -1,    -1,    -1,    29,    -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,    59,    -1,     8,    36,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    71,    -1,
+      73,    74,    22,    23,    24,    -1,    53,    -1,    -1,    29,
+      -1,    -1,    59,    -1,    -1,    -1,    36,    -1,    65,    -1,
+       8,    -1,    -1,    -1,    71,    -1,    73,    74,    75,    17,
+      -1,    -1,    -1,    53,    22,    23,    24,    -1,    -1,    59,
+      -1,    29,    -1,    -1,    -1,    65,    -1,     8,    36,    -1,
+      11,    71,    -1,    73,    74,    75,    17,    -1,    -1,    -1,
+      -1,    22,    23,    24,    -1,    53,    -1,    -1,    29,    -1,
+      -1,    59,    -1,    -1,    -1,    36,    -1,    -1,    -1,     8,
+      -1,    -1,    -1,    71,    -1,    73,    74,    75,    17,    -1,
+       8,    -1,    53,    22,    23,    24,    -1,    -1,    59,    17,
+      29,    -1,    -1,    -1,    22,    23,    24,    36,    -1,    -1,
       71,    29,    73,    74,    -1,    -1,    -1,    -1,    36,    -1,
-      71,    -1,    -1,    74,    -1,    -1,    33,    34,    -1,    36,
-      -1,    38,    39,    40,    -1,    53,    43,    44,    45,    46,
+      -1,    -1,     8,    -1,    53,    -1,    -1,    -1,    -1,    -1,
+      59,    17,    -1,    -1,    -1,    53,    22,    23,    24,    -1,
+      -1,    59,    71,    29,    73,    74,    -1,    -1,     8,    -1,
+      36,    -1,    -1,    71,    -1,    73,    74,    17,    -1,    -1,
+      -1,    -1,    22,    23,    24,    -1,    -1,    53,    -1,    29,
+      -1,    -1,    -1,    59,    -1,     8,    36,    -1,    -1,    -1,
+      -1,    -1,    -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,    11,    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,
+      -1,    -1,    36,    29,    71,    -1,    -1,    74,    -1,    -1,
+      36,    -1,    71,    -1,    -1,    74,    -1,    -1,    -1,    53,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,
+      -1,    -1,    -1,    59,    -1,    -1,    -1,    71,    -1,    73,
+      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,    71,    -1,    -1,    74,    33,    34,    -1,
-      36,    -1,    38,    39,    40,    72,    -1,    43,    44,    45,
+      -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,    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,    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,    60,    -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,    -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
@@ -1492,71 +1497,72 @@ static const yytype_int16 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,    77,    79,    80,     0,    25,    78,    25,    86,    24,
-      73,    74,   140,   141,    81,    24,    88,    89,     3,    62,
-      21,    82,   165,    24,    87,   213,    63,     3,    59,    63,
-      83,    85,   140,    62,     1,     3,     6,     8,     9,    10,
+      73,    74,   141,   142,    81,    24,    88,    89,     3,    62,
+      21,    82,   166,    24,    87,   214,    63,     3,    59,    63,
+      83,    85,   141,    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,
-     113,   121,   124,   126,   127,   128,   129,   133,   137,   140,
-     142,   143,   148,   149,   152,   155,   156,   157,   160,   163,
-     164,   180,   185,    62,     9,    17,    21,    31,    32,    64,
-     198,    24,    60,    83,    84,     3,    86,    88,     3,   137,
-     139,   140,    17,    36,    53,    59,   140,   142,   147,   151,
-     152,   153,   160,   139,   128,   133,   111,    59,   140,   158,
-     128,   137,   114,    35,    67,   136,    71,   126,   185,   192,
-     125,   136,   122,    59,    96,    97,   140,    59,    93,   138,
-     140,   184,   127,   127,   127,   127,   127,   127,    36,    53,
-     126,   134,   146,   152,   154,   160,   127,   127,    11,   126,
-     191,    62,    59,    94,   184,     4,    33,    34,    36,    37,
+     113,   121,   124,   126,   127,   128,   129,   134,   138,   141,
+     143,   144,   149,   150,   153,   156,   157,   158,   161,   164,
+     165,   181,   186,    62,     9,    17,    21,    31,    32,    64,
+     199,    24,    60,    83,    84,     3,    86,    88,     3,   138,
+     140,   141,    17,    36,    53,    59,   141,   143,   148,   152,
+     153,   154,   161,   140,   128,   134,   111,    59,   141,   159,
+     128,   138,   114,    35,    67,   137,    71,   126,   186,   193,
+     125,   137,   122,    59,    96,    97,   141,    59,    93,   139,
+     141,   185,   127,   127,   127,   127,   127,   127,    36,    53,
+     126,   135,   147,   153,   155,   161,   127,   127,    11,   126,
+     192,    62,    59,    94,   185,     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,   136,     1,   136,     5,    65,    75,
-     141,   199,    59,   159,   199,    24,   199,   200,   199,    64,
-      62,   189,    88,    59,    36,    59,   145,   151,   152,   153,
-     154,   160,   145,   145,    63,    98,   107,   108,   109,   185,
-     193,    11,   135,   140,   144,   145,   176,   177,   178,    59,
-      67,   161,   112,   193,    24,    59,    68,   137,   170,   172,
-     174,   145,    35,    53,    59,    68,   137,   169,   171,   172,
-     173,   183,   112,    60,    97,   168,   145,    60,    93,   166,
-      65,    75,   145,     8,   146,    60,    72,    72,    60,    94,
-      65,   145,   126,   126,   126,   126,   126,   126,   126,   126,
+      63,    71,    66,    59,   137,     1,   137,     5,    65,    75,
+     142,   200,    59,   160,   200,    24,   200,   201,   200,    64,
+      62,   190,    88,    59,    36,    59,   146,   152,   153,   154,
+     155,   161,   146,   146,    63,    98,   107,   108,   109,   186,
+     194,    11,   136,   141,   145,   146,   177,   178,   179,    59,
+      67,   162,   112,   194,    24,    59,    68,   138,   171,   173,
+     175,   146,    35,    53,    59,    68,   138,   170,   172,   173,
+     174,   184,   112,    60,    97,   169,   146,    60,    93,   167,
+      65,    75,   146,     8,   147,    60,    72,    72,    60,    94,
+      65,   146,   126,   126,   126,   126,   126,   126,   126,   126,
      126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   130,    60,   134,   186,    59,   140,   126,
-     191,   181,   126,   130,     1,    67,    91,   100,   179,   180,
-     182,   185,   185,   126,     8,    17,    22,    23,    24,    29,
-      36,    53,    65,    71,   141,   201,   203,   204,   205,   140,
-     206,   214,   161,    59,     3,   201,   201,    83,    60,   178,
-       8,   145,    60,   140,    35,   105,     5,    65,    62,   145,
-     135,   144,    75,   190,    60,   178,   182,   115,    62,    63,
-      24,   172,    59,   175,    62,   189,    72,   104,    59,   173,
-      53,   173,    62,   189,     3,   197,    75,   145,   123,    62,
-     189,    62,   189,   185,   138,    65,    36,    59,   145,   151,
-     152,   153,   160,    67,   145,   145,    62,   189,   185,    65,
-      67,   126,   131,   132,   187,   188,    11,    75,   190,    31,
-     134,    72,    66,   179,    60,   188,   101,    62,    68,    36,
-      59,   202,   203,   205,    59,    67,    71,    67,     8,   201,
-       3,    50,    59,   140,   211,   212,     3,    72,    65,    11,
-     201,    60,    75,    62,   194,   214,    62,    62,    62,    60,
-      60,   106,    26,    26,   193,   176,    59,   140,   150,   151,
-     152,   153,   154,   160,   162,    60,    68,   105,   193,   140,
-      60,   178,   174,    68,   145,     7,    12,    68,    99,   102,
-     173,   197,   173,    60,   171,    68,   137,   197,    35,    97,
-      60,    93,    60,   185,   145,   130,    94,    95,   167,   184,
-      60,   185,   130,    66,    75,   190,    68,    75,   190,   134,
-      60,    60,    60,   191,    68,   182,   179,   201,   204,   194,
-      24,   140,   141,   196,   201,   208,   216,   201,   140,   195,
-     207,   215,   201,     3,   211,    62,    72,   201,   212,   201,
-     197,   140,   206,    60,   182,   126,   126,    62,   178,    59,
-     162,   116,    60,   186,    66,   103,    60,    60,   197,   104,
-      60,   188,    62,   189,   145,   188,   126,   132,   131,   132,
-      60,    72,    68,    60,    60,    59,    68,    62,    72,   201,
-      68,    62,    49,   201,    62,   197,    59,    59,   201,   209,
-     210,    68,   193,    60,   178,   119,   162,     5,    65,    66,
-      75,   182,   197,   197,    68,    68,    95,    60,    68,   209,
-     194,   208,   201,   197,   207,   211,   194,   194,    60,    14,
-     117,   120,   126,   126,    60,    60,    60,    60,   162,    20,
-     100,    66,    66,   209,   209,   118,   112,   105
+     126,   126,   126,   130,    60,   135,   187,    59,   141,   126,
+     192,   182,   126,   130,     1,    67,    91,   100,   180,   181,
+     183,   186,   186,   126,     8,    17,    22,    23,    24,    29,
+      36,    53,    65,    71,   142,   202,   204,   205,   206,   141,
+     207,   215,   162,    59,     3,   202,   202,    83,    60,   179,
+       8,   146,    60,   141,    35,   105,     5,    65,    62,   146,
+     136,   145,    75,   191,    60,   179,   183,   115,    62,    63,
+      24,   173,    59,   176,    62,   190,    72,   104,    59,   174,
+      53,   174,    62,   190,     3,   198,    75,   146,   123,    62,
+     190,    62,   190,   186,   139,    65,    36,    59,   146,   152,
+     153,   154,   161,    67,   146,   146,    62,   190,   186,    65,
+      67,   126,   131,   132,   188,   189,    11,    75,   191,    31,
+     135,    72,    66,   180,    60,   189,   101,    62,    68,    36,
+      59,   203,   204,   206,    59,    67,    71,    67,     8,   202,
+       3,    50,    59,   141,   212,   213,     3,    72,    65,    11,
+     202,    60,    75,    62,   195,   215,    62,    62,    62,    60,
+      60,   106,    26,    26,   194,   177,    59,   141,   151,   152,
+     153,   154,   155,   161,   163,    60,    68,   105,   194,   141,
+      60,   179,   175,    68,   146,     7,    12,    68,    99,   102,
+     174,   198,   174,    60,   172,    68,   138,   198,    35,    97,
+      60,    93,    60,   186,   146,   130,    94,    95,   168,   185,
+      60,   186,   130,    66,    75,   191,    68,    75,   191,   135,
+      60,    60,    60,   192,    68,   183,   180,   202,   205,   195,
+      24,   141,   142,   197,   202,   209,   217,   202,   141,   196,
+     208,   216,   202,     3,   212,    62,    72,   202,   213,   202,
+     198,   141,   207,    60,   183,   126,   126,    62,   179,    59,
+     163,   116,    60,   187,    66,   103,    60,    60,   198,   104,
+      60,   189,    62,   190,   146,   189,    67,   126,   133,   131,
+     132,    60,    72,    68,    60,    60,    59,    68,    62,    72,
+     202,    68,    62,    49,   202,    62,   198,    59,    59,   202,
+     210,   211,    68,   194,    60,   179,   119,   163,     5,    65,
+      66,    75,   183,   198,   198,    68,    68,    95,    60,    68,
+     130,   210,   195,   209,   202,   198,   208,   212,   195,   195,
+      60,    14,   117,   120,   126,   126,   189,    60,    60,    60,
+      60,   163,    20,   100,    66,    66,    68,   210,   210,   118,
+     112,   105
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1586,35 +1592,62 @@ static const yytype_uint8 yystos[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      YYPOPSTACK (1);                                          \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
       yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;                                                 \
     }                                                          \
 while (YYID (0))
 
-/* Error token number */
+
 #define YYTERROR       1
 #define YYERRCODE      256
 
 
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (YYID (N))                                                    \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (YYID (0))
+#endif
+
+
 /* This macro is provided for backward compatibility. */
+
 #ifndef YY_LOCATION_PRINT
 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 #endif
 
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
+
 #ifdef YYLEX_PARAM
 # define YYLEX yylex (YYLEX_PARAM)
 #else
@@ -1664,8 +1697,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
     YYSTYPE const * const yyvaluep;
 #endif
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -1917,12 +1948,12 @@ static int
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULL;
+  const char *yyformat = 0;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -1982,7 +2013,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                     break;
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
                 if (! (yysize <= yysize1
                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                   return 2;
@@ -2074,22 +2105,27 @@ yydestruct (yymsg, yytype, yyvaluep)
 }
 
 
+/* Prevent warnings from -Wmissing-prototypes.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
 
 /* The lookahead symbol.  */
 int yychar, yystate;
 
-
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
 int yynerrs;
@@ -2128,7 +2164,7 @@ yyparse ()
        `yyss': related to states.
        `yyvs': related to semantic values.
 
-       Refer to the stacks through separate pointers, to allow yyoverflow
+       Refer to the stacks thru separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
@@ -2146,7 +2182,7 @@ yyparse ()
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  int yytoken;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
@@ -2164,8 +2200,9 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -2174,6 +2211,14 @@ yyparse ()
   yyerrstatus = 0;
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+  yyssp = yyss;
+  yyvsp = yyvs;
+
   goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -2314,9 +2359,7 @@ yybackup:
   yychar = YYEMPTY;
 
   yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -2353,7 +2396,8 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 128 "go.y"
     {
                xtop = concat(xtop, (yyvsp[(4) - (4)].list));
@@ -2361,7 +2405,8 @@ yyreduce:
     break;
 
   case 3:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 134 "go.y"
     {
                prevlineno = lineno;
@@ -2372,7 +2417,8 @@ yyreduce:
     break;
 
   case 4:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 141 "go.y"
     {
                mkpackage((yyvsp[(2) - (3)].sym)->name);
@@ -2380,7 +2426,8 @@ yyreduce:
     break;
 
   case 5:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 151 "go.y"
     {
                importpkg = runtimepkg;
@@ -2394,7 +2441,8 @@ yyreduce:
     break;
 
   case 6:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 162 "go.y"
     {
                importpkg = nil;
@@ -2402,7 +2450,8 @@ yyreduce:
     break;
 
   case 12:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 176 "go.y"
     {
                Pkg *ipkg;
@@ -2439,7 +2488,8 @@ yyreduce:
     break;
 
   case 13:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 209 "go.y"
     {
                // When an invalid import path is passed to importfile,
@@ -2452,7 +2502,8 @@ yyreduce:
     break;
 
   case 16:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 224 "go.y"
     {
                // import with original name
@@ -2463,7 +2514,8 @@ yyreduce:
     break;
 
   case 17:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 231 "go.y"
     {
                // import with given name
@@ -2474,7 +2526,8 @@ yyreduce:
     break;
 
   case 18:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 238 "go.y"
     {
                // import into my name space
@@ -2485,7 +2538,8 @@ yyreduce:
     break;
 
   case 19:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 247 "go.y"
     {
                if(importpkg->name == nil) {
@@ -2501,7 +2555,8 @@ yyreduce:
     break;
 
   case 21:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 261 "go.y"
     {
                if(strcmp((yyvsp[(1) - (1)].sym)->name, "safe") == 0)
@@ -2510,7 +2565,8 @@ yyreduce:
     break;
 
   case 22:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 267 "go.y"
     {
                defercheckwidth();
@@ -2518,7 +2574,8 @@ yyreduce:
     break;
 
   case 23:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 271 "go.y"
     {
                resumecheckwidth();
@@ -2527,7 +2584,8 @@ yyreduce:
     break;
 
   case 24:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 280 "go.y"
     {
                yyerror("empty top-level declaration");
@@ -2536,7 +2594,8 @@ yyreduce:
     break;
 
   case 26:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 286 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
@@ -2544,7 +2603,8 @@ yyreduce:
     break;
 
   case 27:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 290 "go.y"
     {
                yyerror("non-declaration statement outside function body");
@@ -2553,7 +2613,8 @@ yyreduce:
     break;
 
   case 28:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 295 "go.y"
     {
                (yyval.list) = nil;
@@ -2561,7 +2622,8 @@ yyreduce:
     break;
 
   case 29:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 301 "go.y"
     {
                (yyval.list) = (yyvsp[(2) - (2)].list);
@@ -2569,7 +2631,8 @@ yyreduce:
     break;
 
   case 30:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 305 "go.y"
     {
                (yyval.list) = (yyvsp[(3) - (5)].list);
@@ -2577,7 +2640,8 @@ yyreduce:
     break;
 
   case 31:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 309 "go.y"
     {
                (yyval.list) = nil;
@@ -2585,7 +2649,8 @@ yyreduce:
     break;
 
   case 32:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 313 "go.y"
     {
                (yyval.list) = (yyvsp[(2) - (2)].list);
@@ -2595,7 +2660,8 @@ yyreduce:
     break;
 
   case 33:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 319 "go.y"
     {
                (yyval.list) = (yyvsp[(3) - (5)].list);
@@ -2605,7 +2671,8 @@ yyreduce:
     break;
 
   case 34:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 325 "go.y"
     {
                (yyval.list) = concat((yyvsp[(3) - (7)].list), (yyvsp[(5) - (7)].list));
@@ -2615,7 +2682,8 @@ yyreduce:
     break;
 
   case 35:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 331 "go.y"
     {
                (yyval.list) = nil;
@@ -2624,7 +2692,8 @@ yyreduce:
     break;
 
   case 36:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 336 "go.y"
     {
                (yyval.list) = list1((yyvsp[(2) - (2)].node));
@@ -2632,7 +2701,8 @@ yyreduce:
     break;
 
   case 37:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 340 "go.y"
     {
                (yyval.list) = (yyvsp[(3) - (5)].list);
@@ -2640,7 +2710,8 @@ yyreduce:
     break;
 
   case 38:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 344 "go.y"
     {
                (yyval.list) = nil;
@@ -2648,7 +2719,8 @@ yyreduce:
     break;
 
   case 39:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 350 "go.y"
     {
                iota = 0;
@@ -2656,7 +2728,8 @@ yyreduce:
     break;
 
   case 40:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 356 "go.y"
     {
                (yyval.list) = variter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil);
@@ -2664,7 +2737,8 @@ yyreduce:
     break;
 
   case 41:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 360 "go.y"
     {
                (yyval.list) = variter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list));
@@ -2672,7 +2746,8 @@ yyreduce:
     break;
 
   case 42:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 364 "go.y"
     {
                (yyval.list) = variter((yyvsp[(1) - (3)].list), nil, (yyvsp[(3) - (3)].list));
@@ -2680,7 +2755,8 @@ yyreduce:
     break;
 
   case 43:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 370 "go.y"
     {
                (yyval.list) = constiter((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].list));
@@ -2688,7 +2764,8 @@ yyreduce:
     break;
 
   case 44:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 374 "go.y"
     {
                (yyval.list) = constiter((yyvsp[(1) - (3)].list), N, (yyvsp[(3) - (3)].list));
@@ -2696,7 +2773,8 @@ yyreduce:
     break;
 
   case 46:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 381 "go.y"
     {
                (yyval.list) = constiter((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node), nil);
@@ -2704,7 +2782,8 @@ yyreduce:
     break;
 
   case 47:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 385 "go.y"
     {
                (yyval.list) = constiter((yyvsp[(1) - (1)].list), N, nil);
@@ -2712,7 +2791,8 @@ yyreduce:
     break;
 
   case 48:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 391 "go.y"
     {
                // different from dclname because the name
@@ -2723,7 +2803,8 @@ yyreduce:
     break;
 
   case 49:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 400 "go.y"
     {
                (yyval.node) = typedcl1((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), 1);
@@ -2731,7 +2812,8 @@ yyreduce:
     break;
 
   case 50:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 406 "go.y"
     {
                (yyval.node) = (yyvsp[(1) - (1)].node);
@@ -2739,7 +2821,8 @@ yyreduce:
     break;
 
   case 51:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 410 "go.y"
     {
                (yyval.node) = nod(OASOP, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -2748,7 +2831,8 @@ yyreduce:
     break;
 
   case 52:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 415 "go.y"
     {
                if((yyvsp[(1) - (3)].list)->next == nil && (yyvsp[(3) - (3)].list)->next == nil) {
@@ -2764,7 +2848,8 @@ yyreduce:
     break;
 
   case 53:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 427 "go.y"
     {
                if((yyvsp[(3) - (3)].list)->n->op == OTYPESW) {
@@ -2784,7 +2869,8 @@ yyreduce:
     break;
 
   case 54:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 443 "go.y"
     {
                (yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1));
@@ -2793,7 +2879,8 @@ yyreduce:
     break;
 
   case 55:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 448 "go.y"
     {
                (yyval.node) = nod(OASOP, (yyvsp[(1) - (2)].node), nodintconst(1));
@@ -2802,7 +2889,8 @@ yyreduce:
     break;
 
   case 56:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 455 "go.y"
     {
                Node *n, *nn;
@@ -2826,7 +2914,8 @@ yyreduce:
     break;
 
   case 57:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 475 "go.y"
     {
                Node *n;
@@ -2848,7 +2937,8 @@ yyreduce:
     break;
 
   case 58:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 493 "go.y"
     {
                // will be converted to OCASE
@@ -2861,7 +2951,8 @@ yyreduce:
     break;
 
   case 59:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 502 "go.y"
     {
                Node *n, *nn;
@@ -2881,7 +2972,8 @@ yyreduce:
     break;
 
   case 60:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 520 "go.y"
     {
                markdcl();
@@ -2889,7 +2981,8 @@ yyreduce:
     break;
 
   case 61:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 524 "go.y"
     {
                (yyval.node) = liststmt((yyvsp[(3) - (4)].list));
@@ -2898,7 +2991,8 @@ yyreduce:
     break;
 
   case 62:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 531 "go.y"
     {
                // If the last token read by the lexer was consumed
@@ -2912,7 +3006,8 @@ yyreduce:
     break;
 
   case 63:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 541 "go.y"
     {
                int last;
@@ -2935,7 +3030,8 @@ yyreduce:
     break;
 
   case 64:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 561 "go.y"
     {
                (yyval.list) = nil;
@@ -2943,7 +3039,8 @@ yyreduce:
     break;
 
   case 65:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 565 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].node));
@@ -2951,7 +3048,8 @@ yyreduce:
     break;
 
   case 66:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 571 "go.y"
     {
                markdcl();
@@ -2959,7 +3057,8 @@ yyreduce:
     break;
 
   case 67:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 575 "go.y"
     {
                (yyval.list) = (yyvsp[(3) - (4)].list);
@@ -2968,7 +3067,8 @@ yyreduce:
     break;
 
   case 68:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 582 "go.y"
     {
                (yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node));
@@ -2978,7 +3078,8 @@ yyreduce:
     break;
 
   case 69:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 588 "go.y"
     {
                (yyval.node) = nod(ORANGE, N, (yyvsp[(4) - (4)].node));
@@ -2989,7 +3090,8 @@ yyreduce:
     break;
 
   case 70:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 597 "go.y"
     {
                // init ; test ; incr
@@ -3004,7 +3106,8 @@ yyreduce:
     break;
 
   case 71:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 608 "go.y"
     {
                // normal test
@@ -3014,7 +3117,8 @@ yyreduce:
     break;
 
   case 73:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 617 "go.y"
     {
                (yyval.node) = (yyvsp[(1) - (2)].node);
@@ -3023,7 +3127,8 @@ yyreduce:
     break;
 
   case 74:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 624 "go.y"
     {
                markdcl();
@@ -3031,7 +3136,8 @@ yyreduce:
     break;
 
   case 75:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 628 "go.y"
     {
                (yyval.node) = (yyvsp[(3) - (3)].node);
@@ -3040,7 +3146,8 @@ yyreduce:
     break;
 
   case 76:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 635 "go.y"
     {
                // test
@@ -3050,7 +3157,8 @@ yyreduce:
     break;
 
   case 77:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 641 "go.y"
     {
                // init ; test
@@ -3062,7 +3170,8 @@ yyreduce:
     break;
 
   case 78:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 652 "go.y"
     {
                markdcl();
@@ -3070,7 +3179,8 @@ yyreduce:
     break;
 
   case 79:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 656 "go.y"
     {
                if((yyvsp[(3) - (3)].node)->ntest == N)
@@ -3079,7 +3189,8 @@ yyreduce:
     break;
 
   case 80:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 661 "go.y"
     {
                (yyvsp[(3) - (5)].node)->nbody = (yyvsp[(5) - (5)].list);
@@ -3087,7 +3198,8 @@ yyreduce:
     break;
 
   case 81:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 665 "go.y"
     {
                Node *n;
@@ -3106,7 +3218,8 @@ yyreduce:
     break;
 
   case 82:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 682 "go.y"
     {
                markdcl();
@@ -3114,7 +3227,8 @@ yyreduce:
     break;
 
   case 83:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 686 "go.y"
     {
                if((yyvsp[(4) - (5)].node)->ntest == N)
@@ -3125,7 +3239,8 @@ yyreduce:
     break;
 
   case 84:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 694 "go.y"
     {
                (yyval.list) = nil;
@@ -3133,7 +3248,8 @@ yyreduce:
     break;
 
   case 85:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 698 "go.y"
     {
                (yyval.list) = concat((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list));
@@ -3141,7 +3257,8 @@ yyreduce:
     break;
 
   case 86:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 703 "go.y"
     {
                (yyval.list) = nil;
@@ -3149,7 +3266,8 @@ yyreduce:
     break;
 
   case 87:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 707 "go.y"
     {
                NodeList *node;
@@ -3162,7 +3280,8 @@ yyreduce:
     break;
 
   case 88:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 718 "go.y"
     {
                markdcl();
@@ -3170,7 +3289,8 @@ yyreduce:
     break;
 
   case 89:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 722 "go.y"
     {
                Node *n;
@@ -3182,7 +3302,8 @@ yyreduce:
     break;
 
   case 90:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 730 "go.y"
     {
                (yyval.node) = (yyvsp[(3) - (7)].node);
@@ -3194,7 +3315,8 @@ yyreduce:
     break;
 
   case 91:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 740 "go.y"
     {
                typesw = nod(OXXX, typesw, N);
@@ -3202,7 +3324,8 @@ yyreduce:
     break;
 
   case 92:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 744 "go.y"
     {
                (yyval.node) = nod(OSELECT, N, N);
@@ -3213,7 +3336,8 @@ yyreduce:
     break;
 
   case 94:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 757 "go.y"
     {
                (yyval.node) = nod(OOROR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3221,7 +3345,8 @@ yyreduce:
     break;
 
   case 95:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 761 "go.y"
     {
                (yyval.node) = nod(OANDAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3229,7 +3354,8 @@ yyreduce:
     break;
 
   case 96:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 765 "go.y"
     {
                (yyval.node) = nod(OEQ, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3237,7 +3363,8 @@ yyreduce:
     break;
 
   case 97:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 769 "go.y"
     {
                (yyval.node) = nod(ONE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3245,7 +3372,8 @@ yyreduce:
     break;
 
   case 98:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 773 "go.y"
     {
                (yyval.node) = nod(OLT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3253,7 +3381,8 @@ yyreduce:
     break;
 
   case 99:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 777 "go.y"
     {
                (yyval.node) = nod(OLE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3261,7 +3390,8 @@ yyreduce:
     break;
 
   case 100:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 781 "go.y"
     {
                (yyval.node) = nod(OGE, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3269,7 +3399,8 @@ yyreduce:
     break;
 
   case 101:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 785 "go.y"
     {
                (yyval.node) = nod(OGT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3277,7 +3408,8 @@ yyreduce:
     break;
 
   case 102:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 789 "go.y"
     {
                (yyval.node) = nod(OADD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3285,7 +3417,8 @@ yyreduce:
     break;
 
   case 103:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 793 "go.y"
     {
                (yyval.node) = nod(OSUB, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3293,7 +3426,8 @@ yyreduce:
     break;
 
   case 104:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 797 "go.y"
     {
                (yyval.node) = nod(OOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3301,7 +3435,8 @@ yyreduce:
     break;
 
   case 105:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 801 "go.y"
     {
                (yyval.node) = nod(OXOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3309,7 +3444,8 @@ yyreduce:
     break;
 
   case 106:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 805 "go.y"
     {
                (yyval.node) = nod(OMUL, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3317,7 +3453,8 @@ yyreduce:
     break;
 
   case 107:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 809 "go.y"
     {
                (yyval.node) = nod(ODIV, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3325,7 +3462,8 @@ yyreduce:
     break;
 
   case 108:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 813 "go.y"
     {
                (yyval.node) = nod(OMOD, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3333,7 +3471,8 @@ yyreduce:
     break;
 
   case 109:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 817 "go.y"
     {
                (yyval.node) = nod(OAND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3341,7 +3480,8 @@ yyreduce:
     break;
 
   case 110:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 821 "go.y"
     {
                (yyval.node) = nod(OANDNOT, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3349,7 +3489,8 @@ yyreduce:
     break;
 
   case 111:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 825 "go.y"
     {
                (yyval.node) = nod(OLSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3357,7 +3498,8 @@ yyreduce:
     break;
 
   case 112:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 829 "go.y"
     {
                (yyval.node) = nod(ORSH, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3365,7 +3507,8 @@ yyreduce:
     break;
 
   case 113:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 834 "go.y"
     {
                (yyval.node) = nod(OSEND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
@@ -3373,7 +3516,8 @@ yyreduce:
     break;
 
   case 115:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 841 "go.y"
     {
                (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);
@@ -3381,7 +3525,8 @@ yyreduce:
     break;
 
   case 116:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 845 "go.y"
     {
                if((yyvsp[(2) - (2)].node)->op == OCOMPLIT) {
@@ -3396,7 +3541,8 @@ yyreduce:
     break;
 
   case 117:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 856 "go.y"
     {
                (yyval.node) = nod(OPLUS, (yyvsp[(2) - (2)].node), N);
@@ -3404,7 +3550,8 @@ yyreduce:
     break;
 
   case 118:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 860 "go.y"
     {
                (yyval.node) = nod(OMINUS, (yyvsp[(2) - (2)].node), N);
@@ -3412,7 +3559,8 @@ yyreduce:
     break;
 
   case 119:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 864 "go.y"
     {
                (yyval.node) = nod(ONOT, (yyvsp[(2) - (2)].node), N);
@@ -3420,7 +3568,8 @@ yyreduce:
     break;
 
   case 120:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 868 "go.y"
     {
                yyerror("the bitwise complement operator is ^");
@@ -3429,7 +3578,8 @@ yyreduce:
     break;
 
   case 121:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 873 "go.y"
     {
                (yyval.node) = nod(OCOM, (yyvsp[(2) - (2)].node), N);
@@ -3437,7 +3587,8 @@ yyreduce:
     break;
 
   case 122:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 877 "go.y"
     {
                (yyval.node) = nod(ORECV, (yyvsp[(2) - (2)].node), N);
@@ -3445,7 +3596,8 @@ yyreduce:
     break;
 
   case 123:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 887 "go.y"
     {
                (yyval.node) = nod(OCALL, (yyvsp[(1) - (3)].node), N);
@@ -3453,7 +3605,8 @@ yyreduce:
     break;
 
   case 124:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 891 "go.y"
     {
                (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N);
@@ -3462,7 +3615,8 @@ yyreduce:
     break;
 
   case 125:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 896 "go.y"
     {
                (yyval.node) = nod(OCALL, (yyvsp[(1) - (6)].node), N);
@@ -3472,7 +3626,8 @@ yyreduce:
     break;
 
   case 126:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 904 "go.y"
     {
                (yyval.node) = nodlit((yyvsp[(1) - (1)].val));
@@ -3480,7 +3635,8 @@ yyreduce:
     break;
 
   case 128:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 909 "go.y"
     {
                if((yyvsp[(1) - (3)].node)->op == OPACK) {
@@ -3495,7 +3651,8 @@ yyreduce:
     break;
 
   case 129:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 920 "go.y"
     {
                (yyval.node) = nod(ODOTTYPE, (yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node));
@@ -3503,7 +3660,8 @@ yyreduce:
     break;
 
   case 130:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 924 "go.y"
     {
                (yyval.node) = nod(OTYPESW, N, (yyvsp[(1) - (5)].node));
@@ -3511,7 +3669,8 @@ yyreduce:
     break;
 
   case 131:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 928 "go.y"
     {
                (yyval.node) = nod(OINDEX, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
@@ -3519,7 +3678,8 @@ yyreduce:
     break;
 
   case 132:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 932 "go.y"
     {
                (yyval.node) = nod(OSLICE, (yyvsp[(1) - (6)].node), nod(OKEY, (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node)));
@@ -3527,7 +3687,8 @@ yyreduce:
     break;
 
   case 134:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 937 "go.y"
     {
                // conversion
@@ -3537,7 +3698,8 @@ yyreduce:
     break;
 
   case 135:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 943 "go.y"
     {
                (yyval.node) = (yyvsp[(3) - (5)].node);
@@ -3548,7 +3710,8 @@ yyreduce:
     break;
 
   case 136:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 950 "go.y"
     {
                (yyval.node) = (yyvsp[(3) - (5)].node);
@@ -3558,7 +3721,8 @@ yyreduce:
     break;
 
   case 137:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 956 "go.y"
     {
                yyerror("cannot parenthesize type in composite literal");
@@ -3569,7 +3733,8 @@ yyreduce:
     break;
 
   case 139:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 965 "go.y"
     {
                // composite expression.
@@ -3579,16 +3744,39 @@ yyreduce:
     break;
 
   case 140:
-/* Line 1778 of yacc.c  */
+
+/* Line 1806 of yacc.c  */
 #line 973 "go.y"
     {
                (yyval.node) = nod(OKEY, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
        }
     break;
 
+  case 141:
+
+/* Line 1806 of yacc.c  */
+#line 979 "go.y"
+    {
+               // These nodes do not carry line numbers.
+               // Since a composite literal commonly spans several lines,
+               // the line number on errors may be misleading.
+               // Introduce a wrapper node to give the correct line.
+               (yyval.node) = (yyvsp[(1) - (1)].node);
+               switch((yyval.node)->op) {
+               case ONAME:
+               case ONONAME:
+               case OTYPE:
+               case OPACK:
+               case OLITERAL:
+                       (yyval.node) = nod(OPAREN, (yyval.node), N);
+               }
+       }
+    break;
+
   case 142:
-/* Line 1778 of yacc.c  */
-#line 980 "go.y"
+
+/* Line 1806 of yacc.c  */
+#line 995 "go.y"
     {
                (yyval.node) = (yyvsp[(2) - (4)].node);
                (yyval.node)->list = (yyvsp[(3) - (4)].list);
@@ -3596,8 +3784,19 @@ yyreduce:
     break;
 
   case 144:
-/* Line 1778 of yacc.c  */
-#line 988 "go.y"
+
+/* Line 1806 of yacc.c  */
+#line 1003 "go.y"
+    {
+               (yyval.node) = (yyvsp[(2) - (4)].node);
+               (yyval.node)->list = (yyvsp[(3) - (4)].list);
+       }
+    break;
+
+  case 146:
+
+/* Line 1806 of yacc.c  */
+#line 1011 "go.y"
     {
                (yyval.node) = (yyvsp[(2) - (3)].node);
                
@@ -3615,25 +3814,28 @@ yyreduce:
        }
     break;
 
-  case 148:
-/* Line 1778 of yacc.c  */
-#line 1013 "go.y"
+  case 150:
+
+/* Line 1806 of yacc.c  */
+#line 1036 "go.y"
     {
                (yyval.i) = LBODY;
        }
     break;
 
-  case 149:
-/* Line 1778 of yacc.c  */
-#line 1017 "go.y"
+  case 151:
+
+/* Line 1806 of yacc.c  */
+#line 1040 "go.y"
     {
                (yyval.i) = '{';
        }
     break;
 
-  case 150:
-/* Line 1778 of yacc.c  */
-#line 1028 "go.y"
+  case 152:
+
+/* Line 1806 of yacc.c  */
+#line 1051 "go.y"
     {
                if((yyvsp[(1) - (1)].sym) == S)
                        (yyval.node) = N;
@@ -3642,25 +3844,28 @@ yyreduce:
        }
     break;
 
-  case 151:
-/* Line 1778 of yacc.c  */
-#line 1037 "go.y"
+  case 153:
+
+/* Line 1806 of yacc.c  */
+#line 1060 "go.y"
     {
                (yyval.node) = dclname((yyvsp[(1) - (1)].sym));
        }
     break;
 
-  case 152:
-/* Line 1778 of yacc.c  */
-#line 1042 "go.y"
+  case 154:
+
+/* Line 1806 of yacc.c  */
+#line 1065 "go.y"
     {
                (yyval.node) = N;
        }
     break;
 
-  case 154:
-/* Line 1778 of yacc.c  */
-#line 1049 "go.y"
+  case 156:
+
+/* Line 1806 of yacc.c  */
+#line 1072 "go.y"
     {
                (yyval.sym) = (yyvsp[(1) - (1)].sym);
                // during imports, unqualified non-exported identifiers are from builtinpkg
@@ -3669,17 +3874,19 @@ yyreduce:
        }
     break;
 
-  case 156:
-/* Line 1778 of yacc.c  */
-#line 1057 "go.y"
+  case 158:
+
+/* Line 1806 of yacc.c  */
+#line 1080 "go.y"
     {
                (yyval.sym) = S;
        }
     break;
 
-  case 157:
-/* Line 1778 of yacc.c  */
-#line 1063 "go.y"
+  case 159:
+
+/* Line 1806 of yacc.c  */
+#line 1086 "go.y"
     {
                Pkg *p;
 
@@ -3694,9 +3901,10 @@ yyreduce:
        }
     break;
 
-  case 158:
-/* Line 1778 of yacc.c  */
-#line 1078 "go.y"
+  case 160:
+
+/* Line 1806 of yacc.c  */
+#line 1101 "go.y"
     {
                (yyval.node) = oldname((yyvsp[(1) - (1)].sym));
                if((yyval.node)->pack != N)
@@ -3704,50 +3912,56 @@ yyreduce:
        }
     break;
 
-  case 160:
-/* Line 1778 of yacc.c  */
-#line 1098 "go.y"
+  case 162:
+
+/* Line 1806 of yacc.c  */
+#line 1121 "go.y"
     {
                yyerror("final argument in variadic function missing type");
                (yyval.node) = nod(ODDD, typenod(typ(TINTER)), N);
        }
     break;
 
-  case 161:
-/* Line 1778 of yacc.c  */
-#line 1103 "go.y"
+  case 163:
+
+/* Line 1806 of yacc.c  */
+#line 1126 "go.y"
     {
                (yyval.node) = nod(ODDD, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 167:
-/* Line 1778 of yacc.c  */
-#line 1114 "go.y"
+  case 169:
+
+/* Line 1806 of yacc.c  */
+#line 1137 "go.y"
     {
                (yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);
        }
     break;
 
-  case 171:
-/* Line 1778 of yacc.c  */
-#line 1123 "go.y"
+  case 173:
+
+/* Line 1806 of yacc.c  */
+#line 1146 "go.y"
     {
                (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 176:
-/* Line 1778 of yacc.c  */
-#line 1133 "go.y"
+  case 178:
+
+/* Line 1806 of yacc.c  */
+#line 1156 "go.y"
     {
                (yyval.node) = nod(OTPAREN, (yyvsp[(2) - (3)].node), N);
        }
     break;
 
-  case 186:
-/* Line 1778 of yacc.c  */
-#line 1154 "go.y"
+  case 188:
+
+/* Line 1806 of yacc.c  */
+#line 1177 "go.y"
     {
                if((yyvsp[(1) - (3)].node)->op == OPACK) {
                        Sym *s;
@@ -3760,69 +3974,77 @@ yyreduce:
        }
     break;
 
-  case 187:
-/* Line 1778 of yacc.c  */
-#line 1167 "go.y"
-    {
+  case 189:
+
+/* Line 1806 of yacc.c  */
+#line 1190 "go.y"
+    {
                (yyval.node) = nod(OTARRAY, (yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node));
        }
     break;
 
-  case 188:
-/* Line 1778 of yacc.c  */
-#line 1171 "go.y"
+  case 190:
+
+/* Line 1806 of yacc.c  */
+#line 1194 "go.y"
     {
                // array literal of nelem
                (yyval.node) = nod(OTARRAY, nod(ODDD, N, N), (yyvsp[(4) - (4)].node));
        }
     break;
 
-  case 189:
-/* Line 1778 of yacc.c  */
-#line 1176 "go.y"
+  case 191:
+
+/* Line 1806 of yacc.c  */
+#line 1199 "go.y"
     {
                (yyval.node) = nod(OTCHAN, (yyvsp[(2) - (2)].node), N);
                (yyval.node)->etype = Cboth;
        }
     break;
 
-  case 190:
-/* Line 1778 of yacc.c  */
-#line 1181 "go.y"
+  case 192:
+
+/* Line 1806 of yacc.c  */
+#line 1204 "go.y"
     {
                (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);
                (yyval.node)->etype = Csend;
        }
     break;
 
-  case 191:
-/* Line 1778 of yacc.c  */
-#line 1186 "go.y"
+  case 193:
+
+/* Line 1806 of yacc.c  */
+#line 1209 "go.y"
     {
                (yyval.node) = nod(OTMAP, (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));
        }
     break;
 
-  case 194:
-/* Line 1778 of yacc.c  */
-#line 1194 "go.y"
+  case 196:
+
+/* Line 1806 of yacc.c  */
+#line 1217 "go.y"
     {
                (yyval.node) = nod(OIND, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 195:
-/* Line 1778 of yacc.c  */
-#line 1200 "go.y"
+  case 197:
+
+/* Line 1806 of yacc.c  */
+#line 1223 "go.y"
     {
                (yyval.node) = nod(OTCHAN, (yyvsp[(3) - (3)].node), N);
                (yyval.node)->etype = Crecv;
        }
     break;
 
-  case 196:
-/* Line 1778 of yacc.c  */
-#line 1207 "go.y"
+  case 198:
+
+/* Line 1806 of yacc.c  */
+#line 1230 "go.y"
     {
                (yyval.node) = nod(OTSTRUCT, N, N);
                (yyval.node)->list = (yyvsp[(3) - (5)].list);
@@ -3830,18 +4052,20 @@ yyreduce:
        }
     break;
 
-  case 197:
-/* Line 1778 of yacc.c  */
-#line 1213 "go.y"
+  case 199:
+
+/* Line 1806 of yacc.c  */
+#line 1236 "go.y"
     {
                (yyval.node) = nod(OTSTRUCT, N, N);
                fixlbrace((yyvsp[(2) - (3)].i));
        }
     break;
 
-  case 198:
-/* Line 1778 of yacc.c  */
-#line 1220 "go.y"
+  case 200:
+
+/* Line 1806 of yacc.c  */
+#line 1243 "go.y"
     {
                (yyval.node) = nod(OTINTER, N, N);
                (yyval.node)->list = (yyvsp[(3) - (5)].list);
@@ -3849,18 +4073,20 @@ yyreduce:
        }
     break;
 
-  case 199:
-/* Line 1778 of yacc.c  */
-#line 1226 "go.y"
+  case 201:
+
+/* Line 1806 of yacc.c  */
+#line 1249 "go.y"
     {
                (yyval.node) = nod(OTINTER, N, N);
                fixlbrace((yyvsp[(2) - (3)].i));
        }
     break;
 
-  case 200:
-/* Line 1778 of yacc.c  */
-#line 1237 "go.y"
+  case 202:
+
+/* Line 1806 of yacc.c  */
+#line 1260 "go.y"
     {
                (yyval.node) = (yyvsp[(2) - (3)].node);
                if((yyval.node) == N)
@@ -3871,9 +4097,10 @@ yyreduce:
        }
     break;
 
-  case 201:
-/* Line 1778 of yacc.c  */
-#line 1248 "go.y"
+  case 203:
+
+/* Line 1806 of yacc.c  */
+#line 1271 "go.y"
     {
                Node *t;
 
@@ -3904,9 +4131,10 @@ yyreduce:
        }
     break;
 
-  case 202:
-/* Line 1778 of yacc.c  */
-#line 1277 "go.y"
+  case 204:
+
+/* Line 1806 of yacc.c  */
+#line 1300 "go.y"
     {
                Node *rcvr, *t;
 
@@ -3946,9 +4174,10 @@ yyreduce:
        }
     break;
 
-  case 203:
-/* Line 1778 of yacc.c  */
-#line 1317 "go.y"
+  case 205:
+
+/* Line 1806 of yacc.c  */
+#line 1340 "go.y"
     {
                Sym *s;
                Type *t;
@@ -3975,9 +4204,10 @@ yyreduce:
        }
     break;
 
-  case 204:
-/* Line 1778 of yacc.c  */
-#line 1342 "go.y"
+  case 206:
+
+/* Line 1806 of yacc.c  */
+#line 1365 "go.y"
     {
                (yyval.node) = methodname1(newname((yyvsp[(4) - (8)].sym)), (yyvsp[(2) - (8)].list)->n->right); 
                (yyval.node)->type = functype((yyvsp[(2) - (8)].list)->n, (yyvsp[(6) - (8)].list), (yyvsp[(8) - (8)].list));
@@ -3995,9 +4225,10 @@ yyreduce:
        }
     break;
 
-  case 205:
-/* Line 1778 of yacc.c  */
-#line 1360 "go.y"
+  case 207:
+
+/* Line 1806 of yacc.c  */
+#line 1383 "go.y"
     {
                (yyvsp[(3) - (5)].list) = checkarglist((yyvsp[(3) - (5)].list), 1);
                (yyval.node) = nod(OTFUNC, N, N);
@@ -4006,17 +4237,19 @@ yyreduce:
        }
     break;
 
-  case 206:
-/* Line 1778 of yacc.c  */
-#line 1368 "go.y"
+  case 208:
+
+/* Line 1806 of yacc.c  */
+#line 1391 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 207:
-/* Line 1778 of yacc.c  */
-#line 1372 "go.y"
+  case 209:
+
+/* Line 1806 of yacc.c  */
+#line 1395 "go.y"
     {
                (yyval.list) = (yyvsp[(2) - (3)].list);
                if((yyval.list) == nil)
@@ -4024,67 +4257,75 @@ yyreduce:
        }
     break;
 
-  case 208:
-/* Line 1778 of yacc.c  */
-#line 1380 "go.y"
+  case 210:
+
+/* Line 1806 of yacc.c  */
+#line 1403 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 209:
-/* Line 1778 of yacc.c  */
-#line 1384 "go.y"
+  case 211:
+
+/* Line 1806 of yacc.c  */
+#line 1407 "go.y"
     {
                (yyval.list) = list1(nod(ODCLFIELD, N, (yyvsp[(1) - (1)].node)));
        }
     break;
 
-  case 210:
-/* Line 1778 of yacc.c  */
-#line 1388 "go.y"
+  case 212:
+
+/* Line 1806 of yacc.c  */
+#line 1411 "go.y"
     {
                (yyvsp[(2) - (3)].list) = checkarglist((yyvsp[(2) - (3)].list), 0);
                (yyval.list) = (yyvsp[(2) - (3)].list);
        }
     break;
 
-  case 211:
-/* Line 1778 of yacc.c  */
-#line 1395 "go.y"
+  case 213:
+
+/* Line 1806 of yacc.c  */
+#line 1418 "go.y"
     {
                closurehdr((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 212:
-/* Line 1778 of yacc.c  */
-#line 1401 "go.y"
+  case 214:
+
+/* Line 1806 of yacc.c  */
+#line 1424 "go.y"
     {
                (yyval.node) = closurebody((yyvsp[(3) - (4)].list));
                fixlbrace((yyvsp[(2) - (4)].i));
        }
     break;
 
-  case 213:
-/* Line 1778 of yacc.c  */
-#line 1406 "go.y"
+  case 215:
+
+/* Line 1806 of yacc.c  */
+#line 1429 "go.y"
     {
                (yyval.node) = closurebody(nil);
        }
     break;
 
-  case 214:
-/* Line 1778 of yacc.c  */
-#line 1417 "go.y"
+  case 216:
+
+/* Line 1806 of yacc.c  */
+#line 1440 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 215:
-/* Line 1778 of yacc.c  */
-#line 1421 "go.y"
+  case 217:
+
+/* Line 1806 of yacc.c  */
+#line 1444 "go.y"
     {
                (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list));
                if(nsyntaxerrors == 0)
@@ -4093,65 +4334,73 @@ yyreduce:
        }
     break;
 
-  case 217:
-/* Line 1778 of yacc.c  */
-#line 1431 "go.y"
+  case 219:
+
+/* Line 1806 of yacc.c  */
+#line 1454 "go.y"
     {
                (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
        }
     break;
 
-  case 219:
-/* Line 1778 of yacc.c  */
-#line 1438 "go.y"
+  case 221:
+
+/* Line 1806 of yacc.c  */
+#line 1461 "go.y"
     {
                (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
        }
     break;
 
-  case 220:
-/* Line 1778 of yacc.c  */
-#line 1444 "go.y"
+  case 222:
+
+/* Line 1806 of yacc.c  */
+#line 1467 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 221:
-/* Line 1778 of yacc.c  */
-#line 1448 "go.y"
+  case 223:
+
+/* Line 1806 of yacc.c  */
+#line 1471 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 223:
-/* Line 1778 of yacc.c  */
-#line 1455 "go.y"
+  case 225:
+
+/* Line 1806 of yacc.c  */
+#line 1478 "go.y"
     {
                (yyval.list) = concat((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].list));
        }
     break;
 
-  case 224:
-/* Line 1778 of yacc.c  */
-#line 1461 "go.y"
+  case 226:
+
+/* Line 1806 of yacc.c  */
+#line 1484 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 225:
-/* Line 1778 of yacc.c  */
-#line 1465 "go.y"
+  case 227:
+
+/* Line 1806 of yacc.c  */
+#line 1488 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 226:
-/* Line 1778 of yacc.c  */
-#line 1471 "go.y"
+  case 228:
+
+/* Line 1806 of yacc.c  */
+#line 1494 "go.y"
     {
                NodeList *l;
 
@@ -4176,18 +4425,20 @@ yyreduce:
        }
     break;
 
-  case 227:
-/* Line 1778 of yacc.c  */
-#line 1494 "go.y"
+  case 229:
+
+/* Line 1806 of yacc.c  */
+#line 1517 "go.y"
     {
                (yyvsp[(1) - (2)].node)->val = (yyvsp[(2) - (2)].val);
                (yyval.list) = list1((yyvsp[(1) - (2)].node));
        }
     break;
 
-  case 228:
-/* Line 1778 of yacc.c  */
-#line 1499 "go.y"
+  case 230:
+
+/* Line 1806 of yacc.c  */
+#line 1522 "go.y"
     {
                (yyvsp[(2) - (4)].node)->val = (yyvsp[(4) - (4)].val);
                (yyval.list) = list1((yyvsp[(2) - (4)].node));
@@ -4195,9 +4446,10 @@ yyreduce:
        }
     break;
 
-  case 229:
-/* Line 1778 of yacc.c  */
-#line 1505 "go.y"
+  case 231:
+
+/* Line 1806 of yacc.c  */
+#line 1528 "go.y"
     {
                (yyvsp[(2) - (3)].node)->right = nod(OIND, (yyvsp[(2) - (3)].node)->right, N);
                (yyvsp[(2) - (3)].node)->val = (yyvsp[(3) - (3)].val);
@@ -4205,9 +4457,10 @@ yyreduce:
        }
     break;
 
-  case 230:
-/* Line 1778 of yacc.c  */
-#line 1511 "go.y"
+  case 232:
+
+/* Line 1806 of yacc.c  */
+#line 1534 "go.y"
     {
                (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);
                (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);
@@ -4216,9 +4469,10 @@ yyreduce:
        }
     break;
 
-  case 231:
-/* Line 1778 of yacc.c  */
-#line 1518 "go.y"
+  case 233:
+
+/* Line 1806 of yacc.c  */
+#line 1541 "go.y"
     {
                (yyvsp[(3) - (5)].node)->right = nod(OIND, (yyvsp[(3) - (5)].node)->right, N);
                (yyvsp[(3) - (5)].node)->val = (yyvsp[(5) - (5)].val);
@@ -4227,9 +4481,10 @@ yyreduce:
        }
     break;
 
-  case 232:
-/* Line 1778 of yacc.c  */
-#line 1527 "go.y"
+  case 234:
+
+/* Line 1806 of yacc.c  */
+#line 1550 "go.y"
     {
                Node *n;
 
@@ -4240,9 +4495,10 @@ yyreduce:
        }
     break;
 
-  case 233:
-/* Line 1778 of yacc.c  */
-#line 1536 "go.y"
+  case 235:
+
+/* Line 1806 of yacc.c  */
+#line 1559 "go.y"
     {
                Pkg *pkg;
 
@@ -4257,43 +4513,48 @@ yyreduce:
        }
     break;
 
-  case 234:
-/* Line 1778 of yacc.c  */
-#line 1551 "go.y"
+  case 236:
+
+/* Line 1806 of yacc.c  */
+#line 1574 "go.y"
     {
                (yyval.node) = embedded((yyvsp[(1) - (1)].sym));
        }
     break;
 
-  case 235:
-/* Line 1778 of yacc.c  */
-#line 1557 "go.y"
+  case 237:
+
+/* Line 1806 of yacc.c  */
+#line 1580 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
                ifacedcl((yyval.node));
        }
     break;
 
-  case 236:
-/* Line 1778 of yacc.c  */
-#line 1562 "go.y"
+  case 238:
+
+/* Line 1806 of yacc.c  */
+#line 1585 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(1) - (1)].sym)));
        }
     break;
 
-  case 237:
-/* Line 1778 of yacc.c  */
-#line 1566 "go.y"
+  case 239:
+
+/* Line 1806 of yacc.c  */
+#line 1589 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, N, oldname((yyvsp[(2) - (3)].sym)));
                yyerror("cannot parenthesize embedded type");
        }
     break;
 
-  case 238:
-/* Line 1778 of yacc.c  */
-#line 1573 "go.y"
+  case 240:
+
+/* Line 1806 of yacc.c  */
+#line 1596 "go.y"
     {
                // without func keyword
                (yyvsp[(2) - (4)].list) = checkarglist((yyvsp[(2) - (4)].list), 1);
@@ -4303,9 +4564,10 @@ yyreduce:
        }
     break;
 
-  case 240:
-/* Line 1778 of yacc.c  */
-#line 1587 "go.y"
+  case 242:
+
+/* Line 1806 of yacc.c  */
+#line 1610 "go.y"
     {
                (yyval.node) = nod(ONONAME, N, N);
                (yyval.node)->sym = (yyvsp[(1) - (2)].sym);
@@ -4313,9 +4575,10 @@ yyreduce:
        }
     break;
 
-  case 241:
-/* Line 1778 of yacc.c  */
-#line 1593 "go.y"
+  case 243:
+
+/* Line 1806 of yacc.c  */
+#line 1616 "go.y"
     {
                (yyval.node) = nod(ONONAME, N, N);
                (yyval.node)->sym = (yyvsp[(1) - (2)].sym);
@@ -4323,74 +4586,83 @@ yyreduce:
        }
     break;
 
-  case 243:
-/* Line 1778 of yacc.c  */
-#line 1602 "go.y"
+  case 245:
+
+/* Line 1806 of yacc.c  */
+#line 1625 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 244:
-/* Line 1778 of yacc.c  */
-#line 1606 "go.y"
+  case 246:
+
+/* Line 1806 of yacc.c  */
+#line 1629 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 245:
-/* Line 1778 of yacc.c  */
-#line 1611 "go.y"
+  case 247:
+
+/* Line 1806 of yacc.c  */
+#line 1634 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 246:
-/* Line 1778 of yacc.c  */
-#line 1615 "go.y"
+  case 248:
+
+/* Line 1806 of yacc.c  */
+#line 1638 "go.y"
     {
                (yyval.list) = (yyvsp[(1) - (2)].list);
        }
     break;
 
-  case 247:
-/* Line 1778 of yacc.c  */
-#line 1623 "go.y"
+  case 249:
+
+/* Line 1806 of yacc.c  */
+#line 1646 "go.y"
     {
                (yyval.node) = N;
        }
     break;
 
-  case 249:
-/* Line 1778 of yacc.c  */
-#line 1628 "go.y"
+  case 251:
+
+/* Line 1806 of yacc.c  */
+#line 1651 "go.y"
     {
                (yyval.node) = liststmt((yyvsp[(1) - (1)].list));
        }
     break;
 
-  case 251:
-/* Line 1778 of yacc.c  */
-#line 1633 "go.y"
+  case 253:
+
+/* Line 1806 of yacc.c  */
+#line 1656 "go.y"
     {
                (yyval.node) = N;
        }
     break;
 
-  case 257:
-/* Line 1778 of yacc.c  */
-#line 1644 "go.y"
+  case 259:
+
+/* Line 1806 of yacc.c  */
+#line 1667 "go.y"
     {
                (yyvsp[(1) - (2)].node) = nod(OLABEL, (yyvsp[(1) - (2)].node), N);
                (yyvsp[(1) - (2)].node)->sym = dclstack;  // context, for goto restrictions
        }
     break;
 
-  case 258:
-/* Line 1778 of yacc.c  */
-#line 1649 "go.y"
+  case 260:
+
+/* Line 1806 of yacc.c  */
+#line 1672 "go.y"
     {
                NodeList *l;
 
@@ -4402,59 +4674,66 @@ yyreduce:
        }
     break;
 
-  case 259:
-/* Line 1778 of yacc.c  */
-#line 1659 "go.y"
+  case 261:
+
+/* Line 1806 of yacc.c  */
+#line 1682 "go.y"
     {
                // will be converted to OFALL
                (yyval.node) = nod(OXFALL, N, N);
        }
     break;
 
-  case 260:
-/* Line 1778 of yacc.c  */
-#line 1664 "go.y"
+  case 262:
+
+/* Line 1806 of yacc.c  */
+#line 1687 "go.y"
     {
                (yyval.node) = nod(OBREAK, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 261:
-/* Line 1778 of yacc.c  */
-#line 1668 "go.y"
+  case 263:
+
+/* Line 1806 of yacc.c  */
+#line 1691 "go.y"
     {
                (yyval.node) = nod(OCONTINUE, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 262:
-/* Line 1778 of yacc.c  */
-#line 1672 "go.y"
+  case 264:
+
+/* Line 1806 of yacc.c  */
+#line 1695 "go.y"
     {
                (yyval.node) = nod(OPROC, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 263:
-/* Line 1778 of yacc.c  */
-#line 1676 "go.y"
+  case 265:
+
+/* Line 1806 of yacc.c  */
+#line 1699 "go.y"
     {
                (yyval.node) = nod(ODEFER, (yyvsp[(2) - (2)].node), N);
        }
     break;
 
-  case 264:
-/* Line 1778 of yacc.c  */
-#line 1680 "go.y"
+  case 266:
+
+/* Line 1806 of yacc.c  */
+#line 1703 "go.y"
     {
                (yyval.node) = nod(OGOTO, (yyvsp[(2) - (2)].node), N);
                (yyval.node)->sym = dclstack;  // context, for goto restrictions
        }
     break;
 
-  case 265:
-/* Line 1778 of yacc.c  */
-#line 1685 "go.y"
+  case 267:
+
+/* Line 1806 of yacc.c  */
+#line 1708 "go.y"
     {
                (yyval.node) = nod(ORETURN, N, N);
                (yyval.node)->list = (yyvsp[(2) - (2)].list);
@@ -4473,9 +4752,10 @@ yyreduce:
        }
     break;
 
-  case 266:
-/* Line 1778 of yacc.c  */
-#line 1704 "go.y"
+  case 268:
+
+/* Line 1806 of yacc.c  */
+#line 1727 "go.y"
     {
                (yyval.list) = nil;
                if((yyvsp[(1) - (1)].node) != N)
@@ -4483,9 +4763,10 @@ yyreduce:
        }
     break;
 
-  case 267:
-/* Line 1778 of yacc.c  */
-#line 1710 "go.y"
+  case 269:
+
+/* Line 1806 of yacc.c  */
+#line 1733 "go.y"
     {
                (yyval.list) = (yyvsp[(1) - (3)].list);
                if((yyvsp[(3) - (3)].node) != N)
@@ -4493,217 +4774,244 @@ yyreduce:
        }
     break;
 
-  case 268:
-/* Line 1778 of yacc.c  */
-#line 1718 "go.y"
+  case 270:
+
+/* Line 1806 of yacc.c  */
+#line 1741 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 269:
-/* Line 1778 of yacc.c  */
-#line 1722 "go.y"
+  case 271:
+
+/* Line 1806 of yacc.c  */
+#line 1745 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 270:
-/* Line 1778 of yacc.c  */
-#line 1728 "go.y"
+  case 272:
+
+/* Line 1806 of yacc.c  */
+#line 1751 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 271:
-/* Line 1778 of yacc.c  */
-#line 1732 "go.y"
+  case 273:
+
+/* Line 1806 of yacc.c  */
+#line 1755 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 272:
-/* Line 1778 of yacc.c  */
-#line 1738 "go.y"
+  case 274:
+
+/* Line 1806 of yacc.c  */
+#line 1761 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 273:
-/* Line 1778 of yacc.c  */
-#line 1742 "go.y"
+  case 275:
+
+/* Line 1806 of yacc.c  */
+#line 1765 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 274:
-/* Line 1778 of yacc.c  */
-#line 1748 "go.y"
+  case 276:
+
+/* Line 1806 of yacc.c  */
+#line 1771 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 275:
-/* Line 1778 of yacc.c  */
-#line 1752 "go.y"
+  case 277:
+
+/* Line 1806 of yacc.c  */
+#line 1775 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 276:
-/* Line 1778 of yacc.c  */
-#line 1761 "go.y"
+  case 278:
+
+/* Line 1806 of yacc.c  */
+#line 1784 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 277:
-/* Line 1778 of yacc.c  */
-#line 1765 "go.y"
+  case 279:
+
+/* Line 1806 of yacc.c  */
+#line 1788 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 278:
-/* Line 1778 of yacc.c  */
-#line 1769 "go.y"
+  case 280:
+
+/* Line 1806 of yacc.c  */
+#line 1792 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 279:
-/* Line 1778 of yacc.c  */
-#line 1773 "go.y"
+  case 281:
+
+/* Line 1806 of yacc.c  */
+#line 1796 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 280:
-/* Line 1778 of yacc.c  */
-#line 1778 "go.y"
+  case 282:
+
+/* Line 1806 of yacc.c  */
+#line 1801 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 281:
-/* Line 1778 of yacc.c  */
-#line 1782 "go.y"
+  case 283:
+
+/* Line 1806 of yacc.c  */
+#line 1805 "go.y"
     {
                (yyval.list) = (yyvsp[(1) - (2)].list);
        }
     break;
 
-  case 286:
-/* Line 1778 of yacc.c  */
-#line 1796 "go.y"
+  case 288:
+
+/* Line 1806 of yacc.c  */
+#line 1819 "go.y"
     {
                (yyval.node) = N;
        }
     break;
 
-  case 288:
-/* Line 1778 of yacc.c  */
-#line 1802 "go.y"
+  case 290:
+
+/* Line 1806 of yacc.c  */
+#line 1825 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 290:
-/* Line 1778 of yacc.c  */
-#line 1808 "go.y"
+  case 292:
+
+/* Line 1806 of yacc.c  */
+#line 1831 "go.y"
     {
                (yyval.node) = N;
        }
     break;
 
-  case 292:
-/* Line 1778 of yacc.c  */
-#line 1814 "go.y"
+  case 294:
+
+/* Line 1806 of yacc.c  */
+#line 1837 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 294:
-/* Line 1778 of yacc.c  */
-#line 1820 "go.y"
+  case 296:
+
+/* Line 1806 of yacc.c  */
+#line 1843 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 296:
-/* Line 1778 of yacc.c  */
-#line 1826 "go.y"
+  case 298:
+
+/* Line 1806 of yacc.c  */
+#line 1849 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 298:
-/* Line 1778 of yacc.c  */
-#line 1832 "go.y"
+  case 300:
+
+/* Line 1806 of yacc.c  */
+#line 1855 "go.y"
     {
                (yyval.val).ctype = CTxxx;
        }
     break;
 
-  case 300:
-/* Line 1778 of yacc.c  */
-#line 1842 "go.y"
+  case 302:
+
+/* Line 1806 of yacc.c  */
+#line 1865 "go.y"
     {
                importimport((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].val).u.sval);
        }
     break;
 
-  case 301:
-/* Line 1778 of yacc.c  */
-#line 1846 "go.y"
+  case 303:
+
+/* Line 1806 of yacc.c  */
+#line 1869 "go.y"
     {
                importvar((yyvsp[(2) - (4)].sym), (yyvsp[(3) - (4)].type));
        }
     break;
 
-  case 302:
-/* Line 1778 of yacc.c  */
-#line 1850 "go.y"
+  case 304:
+
+/* Line 1806 of yacc.c  */
+#line 1873 "go.y"
     {
                importconst((yyvsp[(2) - (5)].sym), types[TIDEAL], (yyvsp[(4) - (5)].node));
        }
     break;
 
-  case 303:
-/* Line 1778 of yacc.c  */
-#line 1854 "go.y"
+  case 305:
+
+/* Line 1806 of yacc.c  */
+#line 1877 "go.y"
     {
                importconst((yyvsp[(2) - (6)].sym), (yyvsp[(3) - (6)].type), (yyvsp[(5) - (6)].node));
        }
     break;
 
-  case 304:
-/* Line 1778 of yacc.c  */
-#line 1858 "go.y"
+  case 306:
+
+/* Line 1806 of yacc.c  */
+#line 1881 "go.y"
     {
                importtype((yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].type));
        }
     break;
 
-  case 305:
-/* Line 1778 of yacc.c  */
-#line 1862 "go.y"
+  case 307:
+
+/* Line 1806 of yacc.c  */
+#line 1885 "go.y"
     {
                if((yyvsp[(2) - (4)].node) == N) {
                        dclcontext = PEXTERN;  // since we skip the funcbody below
@@ -4723,35 +5031,39 @@ yyreduce:
        }
     break;
 
-  case 306:
-/* Line 1778 of yacc.c  */
-#line 1882 "go.y"
+  case 308:
+
+/* Line 1806 of yacc.c  */
+#line 1905 "go.y"
     {
                (yyval.sym) = (yyvsp[(1) - (1)].sym);
                structpkg = (yyval.sym)->pkg;
        }
     break;
 
-  case 307:
-/* Line 1778 of yacc.c  */
-#line 1889 "go.y"
+  case 309:
+
+/* Line 1806 of yacc.c  */
+#line 1912 "go.y"
     {
                (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym));
                importsym((yyvsp[(1) - (1)].sym), OTYPE);
        }
     break;
 
-  case 313:
-/* Line 1778 of yacc.c  */
-#line 1909 "go.y"
+  case 315:
+
+/* Line 1806 of yacc.c  */
+#line 1932 "go.y"
     {
                (yyval.type) = pkgtype((yyvsp[(1) - (1)].sym));
        }
     break;
 
-  case 314:
-/* Line 1778 of yacc.c  */
-#line 1913 "go.y"
+  case 316:
+
+/* Line 1806 of yacc.c  */
+#line 1936 "go.y"
     {
                // predefined name like uint8
                (yyvsp[(1) - (1)].sym) = pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg);
@@ -4763,57 +5075,64 @@ yyreduce:
        }
     break;
 
-  case 315:
-/* Line 1778 of yacc.c  */
-#line 1923 "go.y"
+  case 317:
+
+/* Line 1806 of yacc.c  */
+#line 1946 "go.y"
     {
                (yyval.type) = aindex(N, (yyvsp[(3) - (3)].type));
        }
     break;
 
-  case 316:
-/* Line 1778 of yacc.c  */
-#line 1927 "go.y"
+  case 318:
+
+/* Line 1806 of yacc.c  */
+#line 1950 "go.y"
     {
                (yyval.type) = aindex(nodlit((yyvsp[(2) - (4)].val)), (yyvsp[(4) - (4)].type));
        }
     break;
 
-  case 317:
-/* Line 1778 of yacc.c  */
-#line 1931 "go.y"
+  case 319:
+
+/* Line 1806 of yacc.c  */
+#line 1954 "go.y"
     {
                (yyval.type) = maptype((yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].type));
        }
     break;
 
-  case 318:
-/* Line 1778 of yacc.c  */
-#line 1935 "go.y"
+  case 320:
+
+/* Line 1806 of yacc.c  */
+#line 1958 "go.y"
     {
                (yyval.type) = tostruct((yyvsp[(3) - (4)].list));
        }
     break;
 
-  case 319:
-/* Line 1778 of yacc.c  */
-#line 1939 "go.y"
+  case 321:
+
+/* Line 1806 of yacc.c  */
+#line 1962 "go.y"
     {
                (yyval.type) = tointerface((yyvsp[(3) - (4)].list));
        }
     break;
 
-  case 320:
-/* Line 1778 of yacc.c  */
-#line 1943 "go.y"
+  case 322:
+
+/* Line 1806 of yacc.c  */
+#line 1966 "go.y"
     {
                (yyval.type) = ptrto((yyvsp[(2) - (2)].type));
        }
     break;
 
-  case 321:
-/* Line 1778 of yacc.c  */
-#line 1947 "go.y"
+  case 323:
+
+/* Line 1806 of yacc.c  */
+#line 1970 "go.y"
     {
                (yyval.type) = typ(TCHAN);
                (yyval.type)->type = (yyvsp[(2) - (2)].type);
@@ -4821,9 +5140,10 @@ yyreduce:
        }
     break;
 
-  case 322:
-/* Line 1778 of yacc.c  */
-#line 1953 "go.y"
+  case 324:
+
+/* Line 1806 of yacc.c  */
+#line 1976 "go.y"
     {
                (yyval.type) = typ(TCHAN);
                (yyval.type)->type = (yyvsp[(3) - (4)].type);
@@ -4831,9 +5151,10 @@ yyreduce:
        }
     break;
 
-  case 323:
-/* Line 1778 of yacc.c  */
-#line 1959 "go.y"
+  case 325:
+
+/* Line 1806 of yacc.c  */
+#line 1982 "go.y"
     {
                (yyval.type) = typ(TCHAN);
                (yyval.type)->type = (yyvsp[(3) - (3)].type);
@@ -4841,9 +5162,10 @@ yyreduce:
        }
     break;
 
-  case 324:
-/* Line 1778 of yacc.c  */
-#line 1967 "go.y"
+  case 326:
+
+/* Line 1806 of yacc.c  */
+#line 1990 "go.y"
     {
                (yyval.type) = typ(TCHAN);
                (yyval.type)->type = (yyvsp[(3) - (3)].type);
@@ -4851,17 +5173,19 @@ yyreduce:
        }
     break;
 
-  case 325:
-/* Line 1778 of yacc.c  */
-#line 1975 "go.y"
+  case 327:
+
+/* Line 1806 of yacc.c  */
+#line 1998 "go.y"
     {
                (yyval.type) = functype(nil, (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list));
        }
     break;
 
-  case 326:
-/* Line 1778 of yacc.c  */
-#line 1981 "go.y"
+  case 328:
+
+/* Line 1806 of yacc.c  */
+#line 2004 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(2) - (3)].type)));
                if((yyvsp[(1) - (3)].sym))
@@ -4870,9 +5194,10 @@ yyreduce:
        }
     break;
 
-  case 327:
-/* Line 1778 of yacc.c  */
-#line 1988 "go.y"
+  case 329:
+
+/* Line 1806 of yacc.c  */
+#line 2011 "go.y"
     {
                Type *t;
        
@@ -4888,9 +5213,10 @@ yyreduce:
        }
     break;
 
-  case 328:
-/* Line 1778 of yacc.c  */
-#line 2004 "go.y"
+  case 330:
+
+/* Line 1806 of yacc.c  */
+#line 2027 "go.y"
     {
                Sym *s;
 
@@ -4908,57 +5234,64 @@ yyreduce:
        }
     break;
 
-  case 329:
-/* Line 1778 of yacc.c  */
-#line 2022 "go.y"
+  case 331:
+
+/* Line 1806 of yacc.c  */
+#line 2045 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, newname((yyvsp[(1) - (5)].sym)), typenod(functype(fakethis(), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].list))));
        }
     break;
 
-  case 330:
-/* Line 1778 of yacc.c  */
-#line 2026 "go.y"
+  case 332:
+
+/* Line 1806 of yacc.c  */
+#line 2049 "go.y"
     {
                (yyval.node) = nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type)));
        }
     break;
 
-  case 331:
-/* Line 1778 of yacc.c  */
-#line 2031 "go.y"
+  case 333:
+
+/* Line 1806 of yacc.c  */
+#line 2054 "go.y"
     {
                (yyval.list) = nil;
        }
     break;
 
-  case 333:
-/* Line 1778 of yacc.c  */
-#line 2038 "go.y"
+  case 335:
+
+/* Line 1806 of yacc.c  */
+#line 2061 "go.y"
     {
                (yyval.list) = (yyvsp[(2) - (3)].list);
        }
     break;
 
-  case 334:
-/* Line 1778 of yacc.c  */
-#line 2042 "go.y"
+  case 336:
+
+/* Line 1806 of yacc.c  */
+#line 2065 "go.y"
     {
                (yyval.list) = list1(nod(ODCLFIELD, N, typenod((yyvsp[(1) - (1)].type))));
        }
     break;
 
-  case 335:
-/* Line 1778 of yacc.c  */
-#line 2052 "go.y"
+  case 337:
+
+/* Line 1806 of yacc.c  */
+#line 2075 "go.y"
     {
                (yyval.node) = nodlit((yyvsp[(1) - (1)].val));
        }
     break;
 
-  case 336:
-/* Line 1778 of yacc.c  */
-#line 2056 "go.y"
+  case 338:
+
+/* Line 1806 of yacc.c  */
+#line 2079 "go.y"
     {
                (yyval.node) = nodlit((yyvsp[(2) - (2)].val));
                switch((yyval.node)->val.ctype){
@@ -4975,9 +5308,10 @@ yyreduce:
        }
     break;
 
-  case 337:
-/* Line 1778 of yacc.c  */
-#line 2071 "go.y"
+  case 339:
+
+/* Line 1806 of yacc.c  */
+#line 2094 "go.y"
     {
                (yyval.node) = oldname(pkglookup((yyvsp[(1) - (1)].sym)->name, builtinpkg));
                if((yyval.node)->op != OLITERAL)
@@ -4985,9 +5319,10 @@ yyreduce:
        }
     break;
 
-  case 339:
-/* Line 1778 of yacc.c  */
-#line 2080 "go.y"
+  case 341:
+
+/* Line 1806 of yacc.c  */
+#line 2103 "go.y"
     {
                if((yyvsp[(2) - (5)].node)->val.ctype == CTRUNE && (yyvsp[(4) - (5)].node)->val.ctype == CTINT) {
                        (yyval.node) = (yyvsp[(2) - (5)].node);
@@ -5000,57 +5335,64 @@ yyreduce:
        }
     break;
 
-  case 342:
-/* Line 1778 of yacc.c  */
-#line 2096 "go.y"
+  case 344:
+
+/* Line 1806 of yacc.c  */
+#line 2119 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 343:
-/* Line 1778 of yacc.c  */
-#line 2100 "go.y"
+  case 345:
+
+/* Line 1806 of yacc.c  */
+#line 2123 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 344:
-/* Line 1778 of yacc.c  */
-#line 2106 "go.y"
+  case 346:
+
+/* Line 1806 of yacc.c  */
+#line 2129 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 345:
-/* Line 1778 of yacc.c  */
-#line 2110 "go.y"
+  case 347:
+
+/* Line 1806 of yacc.c  */
+#line 2133 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
-  case 346:
-/* Line 1778 of yacc.c  */
-#line 2116 "go.y"
+  case 348:
+
+/* Line 1806 of yacc.c  */
+#line 2139 "go.y"
     {
                (yyval.list) = list1((yyvsp[(1) - (1)].node));
        }
     break;
 
-  case 347:
-/* Line 1778 of yacc.c  */
-#line 2120 "go.y"
+  case 349:
+
+/* Line 1806 of yacc.c  */
+#line 2143 "go.y"
     {
                (yyval.list) = list((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].node));
        }
     break;
 
 
-/* Line 1778 of yacc.c  */
-#line 5055 "y.tab.c"
+
+/* Line 1806 of yacc.c  */
+#line 5397 "y.tab.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5213,9 +5555,7 @@ yyerrlab1:
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -5239,7 +5579,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined yyoverflow || YYERROR_VERBOSE
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -5281,8 +5621,9 @@ yyreturn:
 }
 
 
-/* Line 2041 of yacc.c  */
-#line 2124 "go.y"
+
+/* Line 2067 of yacc.c  */
+#line 2147 "go.y"
 
 
 static void
@@ -5295,3 +5636,4 @@ fixlbrace(int lbr)
                loophack = 1;
 }
 
+
index 1ed0ff293a617ad372bb7bb99c6171a9538834ea..6eeb831b2540d827fab93966c0395feea876d7d4 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.5.  */
+/* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2011 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
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -150,10 +141,12 @@ extern int yydebug;
 
 
 
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-/* Line 2042 of yacc.c  */
+
+/* Line 2068 of yacc.c  */
 #line 28 "go.y"
 
        Node*           node;
@@ -164,8 +157,9 @@ typedef union YYSTYPE
        int             i;
 
 
-/* Line 2042 of yacc.c  */
-#line 169 "y.tab.h"
+
+/* Line 2068 of yacc.c  */
+#line 163 "y.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -174,18 +168,4 @@ typedef union YYSTYPE
 
 extern YYSTYPE yylval;
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
index ff8410ba0a01b39730b7c6142ef0c66bed9bb798..e7d357f7cab08dc7e89e8f4000c474900b521d8c 100644 (file)
@@ -71,6 +71,6 @@ static struct {
        112, LNAME,
        "nested func not allowed",
 
-       639, ';',
+       641, ';',
        "else must be followed by if or statement block"
 };
diff --git a/test/fixedbugs/issue3925.go b/test/fixedbugs/issue3925.go
new file mode 100644 (file)
index 0000000..2f8786f
--- /dev/null
@@ -0,0 +1,23 @@
+// errorcheck
+
+// Copyright 2012 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 3925: wrong line number for error message "missing key in map literal"
+
+// also a test for correct line number in other malformed composite literals.
+
+package foo
+
+var _ = map[string]string{
+       "1": "2",
+       "3", "4", // ERROR "missing key"
+}
+
+var _ = []string{
+       "foo",
+       "bar",
+       20, // ERROR "cannot use"
+}
+