github.com/peggyl/go@v0.0.0-20151008231540-ae315999c2d5/src/cmd/compile/internal/gc/y.go (about)

     1  //line go.y:21
     2  package gc
     3  
     4  import __yyfmt__ "fmt"
     5  
     6  //line go.y:21
     7  import (
     8  	"fmt"
     9  	"strings"
    10  )
    11  
    12  //line go.y:28
    13  type yySymType struct {
    14  	yys  int
    15  	node *Node
    16  	list *NodeList
    17  	typ  *Type
    18  	sym  *Sym
    19  	val  Val
    20  	i    int
    21  }
    22  
    23  const LLITERAL = 57346
    24  const LASOP = 57347
    25  const LCOLAS = 57348
    26  const LBREAK = 57349
    27  const LCASE = 57350
    28  const LCHAN = 57351
    29  const LCONST = 57352
    30  const LCONTINUE = 57353
    31  const LDDD = 57354
    32  const LDEFAULT = 57355
    33  const LDEFER = 57356
    34  const LELSE = 57357
    35  const LFALL = 57358
    36  const LFOR = 57359
    37  const LFUNC = 57360
    38  const LGO = 57361
    39  const LGOTO = 57362
    40  const LIF = 57363
    41  const LIMPORT = 57364
    42  const LINTERFACE = 57365
    43  const LMAP = 57366
    44  const LNAME = 57367
    45  const LPACKAGE = 57368
    46  const LRANGE = 57369
    47  const LRETURN = 57370
    48  const LSELECT = 57371
    49  const LSTRUCT = 57372
    50  const LSWITCH = 57373
    51  const LTYPE = 57374
    52  const LVAR = 57375
    53  const LANDAND = 57376
    54  const LANDNOT = 57377
    55  const LBODY = 57378
    56  const LCOMM = 57379
    57  const LDEC = 57380
    58  const LEQ = 57381
    59  const LGE = 57382
    60  const LGT = 57383
    61  const LIGNORE = 57384
    62  const LINC = 57385
    63  const LLE = 57386
    64  const LLSH = 57387
    65  const LLT = 57388
    66  const LNE = 57389
    67  const LOROR = 57390
    68  const LRSH = 57391
    69  const NotPackage = 57392
    70  const NotParen = 57393
    71  const PreferToRightParen = 57394
    72  
    73  var yyToknames = [...]string{
    74  	"$end",
    75  	"error",
    76  	"$unk",
    77  	"LLITERAL",
    78  	"LASOP",
    79  	"LCOLAS",
    80  	"LBREAK",
    81  	"LCASE",
    82  	"LCHAN",
    83  	"LCONST",
    84  	"LCONTINUE",
    85  	"LDDD",
    86  	"LDEFAULT",
    87  	"LDEFER",
    88  	"LELSE",
    89  	"LFALL",
    90  	"LFOR",
    91  	"LFUNC",
    92  	"LGO",
    93  	"LGOTO",
    94  	"LIF",
    95  	"LIMPORT",
    96  	"LINTERFACE",
    97  	"LMAP",
    98  	"LNAME",
    99  	"LPACKAGE",
   100  	"LRANGE",
   101  	"LRETURN",
   102  	"LSELECT",
   103  	"LSTRUCT",
   104  	"LSWITCH",
   105  	"LTYPE",
   106  	"LVAR",
   107  	"LANDAND",
   108  	"LANDNOT",
   109  	"LBODY",
   110  	"LCOMM",
   111  	"LDEC",
   112  	"LEQ",
   113  	"LGE",
   114  	"LGT",
   115  	"LIGNORE",
   116  	"LINC",
   117  	"LLE",
   118  	"LLSH",
   119  	"LLT",
   120  	"LNE",
   121  	"LOROR",
   122  	"LRSH",
   123  	"'+'",
   124  	"'-'",
   125  	"'|'",
   126  	"'^'",
   127  	"'*'",
   128  	"'/'",
   129  	"'%'",
   130  	"'&'",
   131  	"NotPackage",
   132  	"NotParen",
   133  	"'('",
   134  	"')'",
   135  	"PreferToRightParen",
   136  	"';'",
   137  	"'.'",
   138  	"'$'",
   139  	"'='",
   140  	"':'",
   141  	"'{'",
   142  	"'}'",
   143  	"'!'",
   144  	"'~'",
   145  	"'['",
   146  	"']'",
   147  	"'?'",
   148  	"'@'",
   149  	"','",
   150  }
   151  var yyStatenames = [...]string{}
   152  
   153  const yyEofCode = 1
   154  const yyErrCode = 2
   155  const yyMaxDepth = 200
   156  
   157  //line go.y:2308
   158  func fixlbrace(lbr int) {
   159  	// If the opening brace was an LBODY,
   160  	// set up for another one now that we're done.
   161  	// See comment in lex.C about loophack.
   162  	if lbr == LBODY {
   163  		loophack = true
   164  	}
   165  }
   166  
   167  //line yacctab:1
   168  var yyExca = [...]int{
   169  	-1, 1,
   170  	1, -1,
   171  	-2, 0,
   172  	-1, 17,
   173  	1, 1,
   174  	63, 23,
   175  	-2, 0,
   176  	-1, 48,
   177  	6, 276,
   178  	66, 276,
   179  	76, 276,
   180  	-2, 49,
   181  	-1, 56,
   182  	67, 153,
   183  	-2, 162,
   184  	-1, 74,
   185  	60, 181,
   186  	-2, 215,
   187  	-1, 75,
   188  	60, 182,
   189  	-2, 183,
   190  	-1, 121,
   191  	60, 134,
   192  	64, 134,
   193  	68, 134,
   194  	72, 134,
   195  	-2, 266,
   196  	-1, 125,
   197  	60, 134,
   198  	64, 134,
   199  	68, 134,
   200  	72, 134,
   201  	-2, 267,
   202  	-1, 176,
   203  	2, 215,
   204  	36, 215,
   205  	60, 181,
   206  	68, 215,
   207  	-2, 173,
   208  	-1, 177,
   209  	36, 183,
   210  	60, 182,
   211  	68, 183,
   212  	-2, 174,
   213  	-1, 184,
   214  	63, 251,
   215  	69, 251,
   216  	-2, 0,
   217  	-1, 242,
   218  	63, 251,
   219  	69, 251,
   220  	-2, 0,
   221  	-1, 252,
   222  	8, 251,
   223  	13, 251,
   224  	63, 251,
   225  	69, 251,
   226  	-2, 0,
   227  	-1, 325,
   228  	4, 236,
   229  	63, 236,
   230  	69, 236,
   231  	-2, 157,
   232  	-1, 403,
   233  	67, 144,
   234  	-2, 142,
   235  	-1, 408,
   236  	36, 176,
   237  	60, 176,
   238  	68, 176,
   239  	-2, 167,
   240  	-1, 409,
   241  	36, 177,
   242  	60, 177,
   243  	68, 177,
   244  	-2, 168,
   245  	-1, 410,
   246  	36, 178,
   247  	60, 178,
   248  	68, 178,
   249  	-2, 169,
   250  	-1, 411,
   251  	36, 179,
   252  	60, 179,
   253  	68, 179,
   254  	-2, 170,
   255  	-1, 417,
   256  	8, 251,
   257  	13, 251,
   258  	63, 251,
   259  	69, 251,
   260  	-2, 0,
   261  	-1, 418,
   262  	63, 251,
   263  	69, 251,
   264  	-2, 0,
   265  	-1, 498,
   266  	63, 251,
   267  	69, 251,
   268  	-2, 0,
   269  	-1, 553,
   270  	60, 157,
   271  	-2, 318,
   272  	-1, 554,
   273  	60, 158,
   274  	-2, 317,
   275  	-1, 579,
   276  	8, 251,
   277  	13, 251,
   278  	63, 251,
   279  	69, 251,
   280  	-2, 0,
   281  	-1, 593,
   282  	36, 180,
   283  	60, 180,
   284  	68, 180,
   285  	-2, 171,
   286  	-1, 632,
   287  	67, 145,
   288  	-2, 143,
   289  }
   290  
   291  const yyNprod = 352
   292  const yyPrivate = 57344
   293  
   294  var yyTokenNames []string
   295  var yyStates []string
   296  
   297  const yyLast = 2321
   298  
   299  var yyAct = [...]int{
   300  
   301  	74, 304, 381, 291, 487, 611, 459, 285, 546, 229,
   302  	398, 467, 34, 296, 75, 302, 402, 550, 290, 186,
   303  	286, 479, 458, 356, 400, 401, 389, 338, 103, 318,
   304  	328, 245, 303, 339, 324, 243, 337, 468, 101, 374,
   305  	109, 104, 248, 85, 14, 246, 241, 174, 480, 212,
   306  	6, 181, 325, 155, 470, 469, 325, 385, 332, 517,
   307  	108, 627, 414, 373, 13, 208, 585, 11, 176, 461,
   308  	470, 172, 584, 461, 652, 600, 230, 219, 392, 191,
   309  	106, 322, 177, 542, 226, 322, 423, 321, 193, 88,
   310  	10, 321, 13, 192, 10, 310, 317, 309, 154, 160,
   311  	447, 12, 13, 161, 227, 12, 13, 446, 198, 227,
   312  	10, 162, 227, 320, 209, 227, 462, 384, 228, 663,
   313  	462, 626, 625, 228, 55, 460, 228, 155, 184, 228,
   314  	203, 628, 205, 633, 199, 200, 108, 632, 204, 12,
   315  	13, 222, 393, 12, 13, 86, 214, 216, 218, 90,
   316  	604, 239, 175, 10, 449, 194, 233, 88, 153, 12,
   317  	13, 176, 661, 213, 213, 213, 213, 288, 155, 282,
   318  	282, 601, 282, 537, 417, 177, 445, 280, 10, 176,
   319  	621, 528, 295, 163, 164, 165, 166, 167, 168, 169,
   320  	170, 227, 417, 177, 417, 301, 227, 227, 594, 227,
   321  	485, 88, 12, 13, 185, 228, 417, 524, 48, 308,
   322  	228, 228, 416, 228, 202, 347, 516, 90, 472, 448,
   323  	405, 428, 10, 242, 349, 171, 298, 12, 13, 345,
   324  	343, 341, 227, 581, 507, 330, 344, 507, 182, 508,
   325  	519, 397, 508, 348, 116, 175, 228, 367, 227, 334,
   326  	464, 227, 227, 360, 227, 129, 325, 355, 371, 210,
   327  	346, 90, 228, 175, 353, 228, 228, 362, 228, 182,
   328  	183, 12, 13, 54, 435, 314, 173, 10, 342, 358,
   329  	340, 13, 340, 340, 91, 379, 188, 378, 325, 380,
   330  	376, 331, 365, 375, 176, 623, 369, 394, 505, 417,
   331  	408, 183, 610, 163, 170, 12, 13, 605, 177, 410,
   332  	227, 227, 415, 238, 409, 118, 118, 602, 575, 126,
   333  	227, 569, 559, 331, 228, 228, 12, 13, 466, 465,
   334  	391, 444, 327, 443, 228, 437, 425, 12, 13, 254,
   335  	413, 388, 255, 256, 257, 258, 259, 260, 261, 262,
   336  	263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
   337  	273, 274, 129, 129, 277, 227, 440, 383, 370, 173,
   338  	366, 294, 359, 491, 227, 424, 411, 442, 175, 228,
   339  	10, 455, 493, 333, 454, 436, 100, 492, 228, 300,
   340  	99, 84, 10, 509, 176, 481, 282, 512, 474, 20,
   341  	657, 282, 656, 655, 499, 495, 614, 227, 177, 503,
   342  	654, 484, 10, 227, 340, 340, 234, 515, 520, 521,
   343  	646, 228, 620, 617, 227, 340, 608, 228, 221, 12,
   344  	13, 607, 511, 129, 526, 430, 433, 69, 228, 518,
   345  	227, 12, 13, 598, 597, 129, 596, 293, 96, 494,
   346  	525, 593, 583, 563, 228, 529, 98, 490, 540, 532,
   347  	94, 12, 13, 523, 514, 513, 510, 560, 538, 558,
   348  	97, 95, 330, 323, 329, 539, 497, 496, 175, 483,
   349  	555, 477, 227, 476, 10, 473, 441, 562, 432, 421,
   350  	227, 372, 297, 386, 565, 615, 228, 491, 491, 606,
   351  	571, 573, 173, 92, 228, 403, 493, 493, 176, 10,
   352  	403, 492, 492, 340, 574, 340, 197, 554, 10, 114,
   353  	457, 340, 177, 434, 340, 572, 580, 439, 10, 578,
   354  	354, 591, 592, 12, 13, 253, 588, 568, 251, 180,
   355  	340, 197, 586, 587, 110, 533, 197, 609, 535, 197,
   356  	432, 348, 197, 107, 117, 382, 70, 502, 12, 13,
   357  	287, 7, 5, 102, 432, 211, 24, 12, 13, 129,
   358  	16, 19, 227, 494, 494, 651, 129, 12, 13, 431,
   359  	456, 490, 490, 364, 429, 561, 228, 335, 282, 207,
   360  	206, 618, 175, 129, 129, 624, 622, 120, 481, 491,
   361  	121, 125, 173, 636, 631, 630, 188, 619, 493, 21,
   362  	340, 638, 305, 492, 642, 340, 643, 306, 641, 336,
   363  	57, 351, 352, 640, 93, 644, 252, 645, 197, 176,
   364  	26, 340, 512, 197, 197, 28, 197, 76, 158, 387,
   365  	157, 666, 653, 177, 582, 390, 159, 491, 530, 156,
   366  	498, 658, 579, 662, 418, 534, 493, 31, 22, 15,
   367  	664, 492, 23, 665, 122, 122, 201, 18, 340, 197,
   368  	668, 3, 123, 554, 667, 494, 340, 8, 9, 282,
   369  	4, 2, 1, 490, 451, 197, 215, 544, 197, 197,
   370  	56, 197, 89, 566, 545, 548, 549, 612, 488, 323,
   371  	249, 531, 189, 105, 105, 112, 115, 80, 81, 576,
   372  	577, 329, 438, 175, 119, 119, 173, 72, 119, 71,
   373  	237, 478, 340, 494, 149, 340, 403, 316, 589, 403,
   374  	403, 490, 220, 326, 150, 244, 649, 197, 151, 141,
   375  	142, 143, 144, 145, 146, 147, 148, 197, 197, 629,
   376  	650, 127, 17, 450, 595, 399, 319, 197, 25, 89,
   377  	27, 36, 37, 78, 471, 281, 49, 66, 111, 39,
   378  	38, 35, 124, 279, 278, 105, 149, 83, 79, 10,
   379  	105, 73, 217, 112, 82, 113, 150, 247, 504, 616,
   380  	151, 232, 506, 87, 188, 145, 146, 147, 148, 0,
   381  	0, 0, 197, 0, 223, 0, 0, 0, 196, 235,
   382  	197, 197, 240, 128, 231, 0, 0, 0, 634, 635,
   383  	236, 0, 0, 0, 0, 639, 77, 0, 12, 13,
   384  	225, 0, 0, 0, 292, 647, 648, 173, 0, 0,
   385  	403, 0, 0, 0, 197, 0, 0, 0, 0, 0,
   386  	197, 0, 541, 0, 543, 0, 552, 56, 0, 0,
   387  	556, 197, 0, 557, 0, 0, 0, 347, 0, 0,
   388  	0, 0, 119, 119, 0, 0, 349, 197, 0, 567,
   389  	0, 345, 343, 341, 0, 0, 0, 0, 344, 0,
   390  	0, 311, 357, 0, 0, 348, 312, 313, 105, 315,
   391  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   392  	0, 0, 346, 0, 0, 56, 0, 0, 613, 197,
   393  	275, 276, 0, 283, 247, 56, 247, 197, 0, 0,
   394  	342, 0, 363, 13, 197, 197, 0, 0, 0, 0,
   395  	0, 0, 0, 0, 0, 0, 0, 0, 0, 599,
   396  	0, 377, 134, 149, 603, 152, 0, 135, 139, 140,
   397  	0, 0, 138, 150, 137, 136, 133, 151, 141, 142,
   398  	143, 144, 145, 146, 147, 148, 0, 0, 0, 0,
   399  	0, 0, 0, 0, 0, 0, 0, 422, 0, 0,
   400  	0, 361, 0, 0, 414, 0, 0, 0, 0, 0,
   401  	407, 0, 0, 368, 0, 0, 89, 637, 0, 197,
   402  	419, 420, 552, 0, 0, 0, 0, 0, 0, 347,
   403  	426, 0, 0, 463, 0, 0, 0, 357, 349, 0,
   404  	0, 0, 105, 345, 343, 341, 197, 0, 0, 105,
   405  	344, 0, 0, 112, 0, 486, 247, 348, 0, 0,
   406  	0, 0, 0, 0, 0, 0, 134, 149, 0, 152,
   407  	0, 135, 139, 140, 346, 407, 138, 150, 137, 136,
   408  	133, 151, 141, 142, 143, 144, 145, 146, 147, 148,
   409  	0, 0, 342, 0, 197, 13, 0, 0, 0, 0,
   410  	56, 56, 0, 0, 0, 396, 0, 0, 119, 0,
   411  	119, 0, 0, 0, 0, 0, 0, 311, 536, 0,
   412  	119, 0, 247, 522, 0, 0, 0, 0, 0, 0,
   413  	0, 547, 551, 0, 527, 0, 0, 475, 0, 0,
   414  	357, 0, 0, 463, 482, 0, 0, 463, 0, 0,
   415  	0, 0, 564, 357, 0, 0, 0, 0, 0, 0,
   416  	0, 275, 276, 0, 0, 0, 0, 0, 307, 0,
   417  	68, 0, 247, 41, 0, 78, 47, 42, 0, 0,
   418  	44, 56, 40, 50, 124, 43, 45, 53, 0, 83,
   419  	79, 10, 570, 0, 46, 52, 82, 51, 32, 30,
   420  	0, 0, 0, 65, 0, 0, 0, 0, 0, 0,
   421  	0, 0, 0, 0, 0, 0, 60, 61, 0, 64,
   422  	58, 0, 0, 59, 0, 0, 67, 0, 0, 0,
   423  	0, 0, 0, 0, 308, 0, 62, 63, 77, 0,
   424  	12, 13, 0, 0, 0, 0, 0, 0, 0, 0,
   425  	0, 29, 105, 68, 247, 0, 41, 0, 78, 47,
   426  	42, 0, 56, 44, 0, 40, 50, 33, 43, 45,
   427  	53, 0, 83, 79, 10, 0, 0, 46, 52, 82,
   428  	51, 32, 30, 0, 0, 547, 65, 0, 551, 357,
   429  	0, 0, 463, 0, 0, 0, 357, 0, 357, 60,
   430  	61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
   431  	0, 0, 0, 78, 0, 0, 0, 0, 0, 62,
   432  	63, 77, 124, 12, 13, 0, 0, 83, 79, 10,
   433  	68, 0, 0, 0, 82, 78, 0, 0, 0, 0,
   434  	0, 65, 0, 0, 124, 0, 0, 0, 0, 83,
   435  	79, 10, 0, 0, 60, 61, 82, 64, 58, 0,
   436  	0, 59, 0, 68, 67, 0, 0, 0, 78, 0,
   437  	0, 0, 404, 0, 62, 63, 77, 124, 12, 13,
   438  	0, 0, 83, 79, 10, 0, 67, 0, 0, 82,
   439  	0, 0, 0, 0, 0, 0, 65, 0, 77, 0,
   440  	12, 13, 0, 0, 0, 0, 0, 0, 0, 60,
   441  	61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
   442  	0, 0, 0, 78, 0, 0, 0, 590, 0, 62,
   443  	63, 77, 124, 12, 13, 0, 0, 83, 79, 10,
   444  	0, 501, 0, 0, 82, 0, 0, 0, 0, 0,
   445  	0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
   446  	0, 0, 0, 0, 60, 61, 0, 64, 58, 0,
   447  	0, 59, 0, 68, 67, 0, 0, 0, 78, 0,
   448  	0, 0, 0, 0, 62, 63, 77, 124, 12, 13,
   449  	0, 0, 83, 79, 10, 0, 500, 0, 0, 82,
   450  	0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
   451  	0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
   452  	61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
   453  	0, 0, 0, 78, 0, 0, 0, 78, 0, 62,
   454  	63, 77, 124, 12, 13, 0, 124, 83, 79, 10,
   455  	0, 83, 79, 10, 82, 0, 395, 0, 82, 0,
   456  	0, 179, 0, 0, 0, 232, 0, 0, 0, 0,
   457  	0, 68, 0, 0, 60, 61, 78, 64, 178, 0,
   458  	0, 59, 196, 0, 67, 124, 0, 0, 489, 0,
   459  	83, 79, 10, 0, 62, 63, 77, 82, 12, 13,
   460  	77, 0, 12, 13, 179, 0, 0, 0, 0, 0,
   461  	0, 0, 0, 0, 0, 0, 0, 60, 61, 0,
   462  	64, 178, 0, 0, 59, 0, 68, 67, 289, 0,
   463  	0, 78, 0, 0, 0, 0, 0, 62, 63, 77,
   464  	124, 12, 13, 0, 0, 83, 79, 10, 0, 284,
   465  	0, 0, 82, 0, 0, 0, 0, 0, 0, 65,
   466  	0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
   467  	0, 0, 60, 61, 78, 64, 58, 187, 0, 59,
   468  	0, 0, 67, 124, 0, 0, 0, 0, 83, 79,
   469  	10, 0, 62, 63, 77, 82, 12, 13, 0, 0,
   470  	0, 0, 65, 0, 0, 0, 0, 0, 0, 0,
   471  	0, 0, 68, 0, 0, 60, 61, 78, 64, 58,
   472  	0, 0, 59, 0, 0, 67, 124, 0, 0, 0,
   473  	0, 83, 79, 10, 0, 62, 63, 77, 82, 12,
   474  	13, 0, 0, 0, 0, 65, 0, 0, 0, 0,
   475  	0, 0, 0, 0, 0, 68, 0, 0, 60, 61,
   476  	78, 64, 58, 0, 0, 59, 0, 0, 67, 124,
   477  	0, 0, 0, 0, 83, 79, 10, 0, 62, 63,
   478  	77, 82, 12, 13, 0, 0, 0, 0, 179, 0,
   479  	0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
   480  	0, 60, 61, 299, 64, 178, 0, 0, 59, 0,
   481  	0, 67, 124, 0, 0, 0, 0, 83, 79, 10,
   482  	0, 62, 63, 77, 82, 12, 13, 0, 0, 0,
   483  	0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
   484  	0, 0, 0, 0, 60, 61, 78, 64, 58, 0,
   485  	0, 59, 0, 0, 67, 124, 0, 0, 0, 0,
   486  	83, 79, 10, 0, 62, 63, 77, 82, 12, 13,
   487  	0, 78, 0, 0, 232, 0, 0, 0, 0, 0,
   488  	124, 0, 0, 0, 0, 83, 79, 10, 0, 0,
   489  	0, 196, 82, 0, 0, 0, 0, 231, 0, 232,
   490  	0, 0, 0, 224, 0, 0, 0, 0, 0, 77,
   491  	0, 12, 13, 225, 0, 0, 196, 0, 0, 0,
   492  	0, 0, 231, 0, 0, 0, 0, 0, 0, 0,
   493  	0, 0, 0, 0, 77, 0, 12, 13, 427, 134,
   494  	149, 0, 152, 0, 135, 139, 140, 0, 0, 138,
   495  	150, 137, 136, 133, 151, 141, 142, 143, 144, 145,
   496  	146, 147, 148, 134, 149, 0, 152, 0, 135, 139,
   497  	140, 0, 660, 138, 150, 137, 136, 133, 151, 141,
   498  	142, 143, 144, 145, 146, 147, 148, 0, 78, 0,
   499  	0, 250, 78, 0, 0, 0, 659, 124, 0, 0,
   500  	0, 124, 83, 79, 10, 0, 83, 79, 10, 82,
   501  	0, 0, 0, 82, 299, 0, 232, 0, 0, 0,
   502  	232, 0, 0, 124, 0, 0, 0, 0, 83, 79,
   503  	10, 0, 0, 196, 0, 82, 0, 196, 0, 231,
   504  	0, 0, 232, 231, 0, 0, 0, 78, 0, 0,
   505  	0, 77, 0, 12, 13, 77, 124, 12, 13, 196,
   506  	0, 83, 79, 10, 0, 231, 0, 0, 82, 78,
   507  	0, 0, 0, 347, 0, 406, 0, 77, 124, 12,
   508  	13, 0, 349, 83, 79, 10, 0, 345, 343, 553,
   509  	82, 0, 196, 0, 344, 0, 0, 190, 412, 0,
   510  	0, 348, 0, 0, 0, 0, 0, 0, 0, 0,
   511  	77, 0, 12, 13, 196, 0, 0, 0, 346, 0,
   512  	195, 0, 0, 0, 0, 0, 0, 0, 347, 0,
   513  	0, 0, 77, 0, 12, 13, 342, 349, 12, 13,
   514  	0, 0, 345, 343, 341, 0, 0, 0, 347, 344,
   515  	0, 0, 0, 0, 0, 0, 453, 349, 0, 0,
   516  	0, 0, 345, 343, 341, 0, 0, 0, 0, 344,
   517  	0, 0, 0, 346, 0, 0, 348, 0, 0, 452,
   518  	0, 0, 0, 130, 0, 0, 0, 0, 0, 0,
   519  	0, 342, 0, 346, 13, 0, 0, 0, 0, 0,
   520  	0, 0, 0, 0, 0, 350, 0, 0, 0, 0,
   521  	0, 342, 134, 149, 13, 152, 132, 135, 139, 140,
   522  	0, 131, 138, 150, 137, 136, 133, 151, 141, 142,
   523  	143, 144, 145, 146, 147, 148, 134, 149, 0, 152,
   524  	0, 135, 139, 140, 0, 0, 138, 150, 137, 136,
   525  	133, 151, 141, 142, 143, 144, 145, 146, 147, 148,
   526  	134, 149, 0, 0, 0, 135, 139, 140, 0, 0,
   527  	138, 150, 137, 136, 133, 151, 141, 142, 143, 144,
   528  	145, 146, 147, 148, 134, 149, 0, 0, 0, 135,
   529  	139, 140, 0, 0, 138, 150, 137, 136, 0, 151,
   530  	141, 142, 143, 144, 145, 146, 147, 148, 149, 0,
   531  	0, 0, 135, 139, 140, 0, 0, 138, 150, 137,
   532  	136, 0, 151, 141, 142, 143, 144, 145, 146, 147,
   533  	148,
   534  }
   535  var yyPact = [...]int{
   536  
   537  	-1000, -1000, 536, 535, -1000, 128, -1000, 545, 549, 336,
   538  	-1000, -1000, -1000, 605, -1000, -1000, 541, 1239, 328, 85,
   539  	-1000, 220, 438, 327, -1000, 323, -1000, -1000, -1000, -1000,
   540  	503, 493, 484, 459, -1000, -1000, -1000, -1000, -1000, 177,
   541  	-1000, 128, 128, 1316, 1316, 128, 1698, -1000, 2168, 92,
   542  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, 39, 1698, 1698,
   543  	1698, 1698, 1698, 1698, 1698, 1698, 157, 1741, -1000, -1000,
   544  	-1000, 479, 233, -1000, -1000, -1000, 202, 1655, 2050, 36,
   545  	-1000, -1000, 233, 233, -1000, -1000, 153, 535, -1000, 586,
   546  	585, 40, 194, -1000, 540, -11, -11, -11, 17, -1000,
   547  	-1000, -1000, 367, 1827, -1000, -1000, -1000, 355, 754, -1000,
   548  	252, 1973, -1000, 155, 1969, 478, -1000, -1000, -1000, -1000,
   549  	-1000, -1000, 39, -1000, 475, -1000, -1000, -1000, -23, 2192,
   550  	1698, -1000, -1000, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
   551  	1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
   552  	1698, 1698, 1698, 1698, 1698, 1698, 1612, 1698, 524, 1698,
   553  	1557, 387, 1698, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   554  	-1000, -1000, 431, 2192, -1000, -1000, -1000, -1000, 1741, 1784,
   555  	1698, -1000, -1000, -1000, 1156, -1000, 24, 22, 2192, -1000,
   556  	1973, -1000, -1000, -1000, -1000, 1973, 1973, 211, 1973, 27,
   557  	263, 320, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   558  	-1000, 583, 1010, -1000, 2129, 1010, -1000, 155, 470, 128,
   559  	309, -1000, -1000, 187, 1698, 128, -1000, -1000, -1000, -1000,
   560  	-1000, 1973, 574, 307, -1000, 181, 1698, 305, -1000, -1000,
   561  	-1000, -1000, 1156, 430, -13, -1000, -1000, 1969, -1000, -1000,
   562  	1973, 1969, 1156, 1969, 2192, 2240, 2263, 689, 689, 689,
   563  	689, 689, 689, 741, 741, 741, 741, -1000, -1000, -1000,
   564  	-1000, -1000, -1000, -1000, 2216, -23, -23, 2192, -1000, 519,
   565  	304, -1000, -1000, 51, 1698, -1000, 278, -1000, -1000, -1000,
   566  	66, -1000, -1000, 1514, 1022, 174, 1294, 152, -1000, 2028,
   567  	918, 1294, 143, -1000, -1000, -1000, -1000, -1000, -1000, 1973,
   568  	1973, -1000, 428, -1000, 128, 13, 273, -1000, -1000, 1852,
   569  	580, 525, 463, -1000, -1000, 210, 272, -1000, -1000, 467,
   570  	-1000, 539, 425, 197, -1000, 270, 268, -1000, -1000, -1000,
   571  	-1000, -1000, 103, 28, 151, 86, 1010, 2109, 571, 460,
   572  	65, 184, 266, 265, 128, -6, -1000, 206, 424, 128,
   573  	1698, -23, -1000, 422, 1973, 420, 128, 1698, -23, 418,
   574  	128, 131, 1518, 1969, -1000, -1000, -1000, -1000, 416, -1000,
   575  	415, -1000, -1000, 1698, 1459, 1404, 2192, 521, 1698, 229,
   576  	519, 405, -14, 1741, 404, 403, -1000, 1698, 147, -17,
   577  	-1000, -1000, 173, 2192, -1000, -1000, 1995, -1000, -1000, -1000,
   578  	-1000, -1000, 1973, 402, -1000, 138, -1000, 1156, 1156, -1000,
   579  	-1000, -1000, -1000, 1973, 112, 31, 580, 128, -1000, -1000,
   580  	398, 539, 210, 580, 539, 128, 104, 231, -1000, 1969,
   581  	397, -1000, -1000, -1000, -1000, 1010, 10, 1010, 128, 2054,
   582  	-1000, -1000, 514, 1010, -1000, -1000, 1010, 128, 259, -1000,
   583  	69, -1000, 581, -1000, 65, -1000, -1000, 392, -22, 128,
   584  	128, 580, 1010, -1000, -1000, -23, -1000, -1000, 258, -1000,
   585  	-1000, 754, -23, -1000, -1000, -1000, 440, -1000, -1000, 1969,
   586  	-1000, -1000, -1000, -1000, -1000, -1000, 1518, 1518, 1156, 255,
   587  	1698, 1698, -1000, -1000, -1000, -1000, -1000, 1741, 166, -1000,
   588  	-1000, 391, -1000, -1000, -1000, -1, -1000, 1294, -1000, 1349,
   589  	1294, 1294, 390, -1000, -1000, -1000, 129, -1000, -1000, -1000,
   590  	-1000, -1000, 580, 385, -1000, 383, -1000, -1000, -1000, 382,
   591  	-1000, -1000, 1010, 2, 102, 254, -1000, 1010, 81, 244,
   592  	-1000, 439, -1000, -1000, -1000, 370, -1000, -1000, 365, -1000,
   593  	497, -1000, 239, 858, 435, -1000, -1000, 580, 362, 128,
   594  	181, 1969, 361, -1000, 111, 1698, 2192, 2192, 226, 1156,
   595  	55, -1000, -1000, -1000, -1000, 1698, -1000, -1000, -1000, 2192,
   596  	-1000, 68, 64, -1000, -1000, -1000, 580, 580, 1518, -1000,
   597  	1010, -1000, 128, 580, -1000, 2054, 128, -1000, 858, 69,
   598  	-1000, -1000, -1000, 128, -1000, 128, -1000, -1000, -1000, 359,
   599  	-1000, -1000, -1000, -1000, 236, -1000, 1698, 1698, 1741, 560,
   600  	1, 1294, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   601  	-1000, 349, -1000, 342, 341, 339, 1518, 1919, 1895, -1000,
   602  	-1000, 141, -1000, 50, 858, -1000, -1000, 858, -1000, -1000,
   603  	-1000, -1000, -1000, -1000, -1000, -1000, 1698, 519, -1000,
   604  }
   605  var yyPgo = [...]int{
   606  
   607  	0, 51, 793, 672, 34, 221, 32, 700, 31, 792,
   608  	788, 1, 76, 113, 208, 16, 25, 3, 785, 782,
   609  	781, 774, 773, 771, 7, 770, 617, 30, 24, 769,
   610  	437, 45, 47, 273, 41, 19, 768, 554, 20, 620,
   611  	767, 556, 765, 762, 12, 761, 124, 760, 40, 13,
   612  	758, 46, 4, 2, 28, 756, 766, 755, 10, 18,
   613  	752, 751, 26, 750, 749, 736, 15, 35, 735, 733,
   614  	38, 732, 29, 727, 612, 48, 21, 721, 720, 719,
   615  	717, 42, 712, 708, 707, 9, 84, 702, 14, 698,
   616  	0, 67, 49, 22, 6, 23, 17, 8, 697, 5,
   617  	37, 11, 696, 695, 694, 687, 406, 36, 686, 33,
   618  	27, 684, 682, 681, 680, 677, 671, 50, 44, 667,
   619  	43, 666, 58, 662, 659, 658, 657, 654, 652, 650,
   620  	649, 646, 645, 644, 641, 640, 639, 638, 39, 637,
   621  	626, 624,
   622  }
   623  var yyR1 = [...]int{
   624  
   625  	0, 112, 114, 114, 116, 113, 115, 115, 119, 119,
   626  	119, 120, 120, 121, 121, 2, 2, 2, 117, 123,
   627  	123, 124, 118, 50, 50, 50, 50, 50, 74, 74,
   628  	74, 74, 74, 74, 74, 74, 74, 74, 126, 70,
   629  	70, 70, 75, 75, 76, 76, 76, 36, 48, 44,
   630  	44, 44, 44, 44, 44, 9, 9, 9, 9, 127,
   631  	11, 128, 10, 62, 62, 129, 53, 42, 42, 42,
   632  	22, 22, 22, 21, 130, 23, 24, 24, 131, 132,
   633  	133, 25, 134, 63, 64, 64, 65, 65, 135, 136,
   634  	45, 137, 43, 14, 14, 14, 14, 14, 14, 14,
   635  	14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
   636  	14, 14, 14, 14, 46, 46, 46, 46, 46, 46,
   637  	46, 46, 46, 41, 41, 41, 40, 40, 40, 40,
   638  	40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
   639  	49, 28, 16, 16, 15, 15, 39, 39, 17, 17,
   640  	31, 1, 1, 33, 34, 37, 37, 3, 3, 3,
   641  	91, 91, 30, 29, 81, 81, 7, 7, 7, 7,
   642  	7, 7, 32, 32, 32, 32, 87, 87, 87, 87,
   643  	87, 79, 79, 80, 89, 89, 89, 89, 89, 12,
   644  	12, 88, 88, 88, 88, 88, 88, 88, 85, 86,
   645  	84, 84, 83, 83, 47, 18, 18, 19, 19, 90,
   646  	51, 51, 52, 52, 52, 139, 20, 20, 60, 60,
   647  	71, 71, 77, 77, 78, 78, 73, 73, 69, 69,
   648  	72, 72, 72, 72, 72, 72, 4, 4, 13, 27,
   649  	27, 27, 82, 8, 8, 8, 8, 68, 68, 67,
   650  	67, 6, 6, 6, 6, 6, 26, 26, 26, 26,
   651  	26, 140, 26, 26, 26, 26, 26, 26, 26, 26,
   652  	66, 66, 55, 55, 54, 54, 56, 56, 59, 59,
   653  	57, 57, 57, 57, 58, 58, 122, 122, 138, 138,
   654  	35, 35, 61, 61, 38, 38, 101, 101, 105, 105,
   655  	103, 103, 5, 5, 141, 141, 141, 141, 141, 141,
   656  	92, 108, 106, 106, 106, 111, 111, 107, 107, 107,
   657  	107, 107, 107, 107, 107, 107, 107, 107, 110, 109,
   658  	95, 95, 97, 96, 96, 99, 99, 98, 98, 94,
   659  	94, 94, 93, 93, 125, 125, 100, 100, 104, 104,
   660  	102, 102,
   661  }
   662  var yyR2 = [...]int{
   663  
   664  	0, 4, 0, 3, 0, 3, 0, 3, 2, 5,
   665  	3, 3, 2, 1, 3, 1, 2, 2, 4, 0,
   666  	1, 0, 4, 0, 1, 1, 1, 1, 2, 5,
   667  	3, 2, 5, 7, 3, 2, 5, 3, 1, 2,
   668  	4, 3, 4, 3, 1, 2, 1, 1, 2, 1,
   669  	3, 3, 3, 2, 2, 3, 5, 5, 2, 0,
   670  	4, 0, 3, 0, 2, 0, 4, 4, 4, 2,
   671  	5, 1, 1, 2, 0, 3, 1, 3, 0, 0,
   672  	0, 8, 0, 5, 0, 2, 0, 2, 0, 0,
   673  	7, 0, 5, 1, 3, 3, 3, 3, 3, 3,
   674  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   675  	3, 3, 3, 3, 1, 2, 2, 2, 2, 2,
   676  	2, 2, 2, 3, 5, 6, 1, 1, 3, 5,
   677  	5, 4, 6, 8, 1, 5, 5, 5, 7, 1,
   678  	0, 3, 1, 4, 1, 4, 1, 3, 1, 1,
   679  	1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
   680  	4, 4, 1, 1, 1, 2, 1, 1, 1, 1,
   681  	1, 3, 1, 1, 1, 2, 1, 1, 1, 1,
   682  	3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   683  	3, 4, 4, 2, 3, 5, 1, 1, 2, 3,
   684  	5, 3, 5, 3, 3, 5, 8, 5, 8, 5,
   685  	0, 3, 0, 1, 3, 1, 4, 2, 0, 3,
   686  	1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
   687  	3, 2, 4, 3, 5, 5, 1, 3, 1, 2,
   688  	1, 3, 4, 1, 2, 2, 1, 1, 3, 0,
   689  	2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
   690  	1, 0, 4, 1, 2, 2, 2, 2, 2, 2,
   691  	1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
   692  	1, 1, 3, 3, 0, 2, 0, 1, 0, 1,
   693  	0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
   694  	0, 1, 0, 1, 4, 4, 5, 6, 4, 4,
   695  	1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
   696  	4, 5, 4, 4, 2, 2, 4, 3, 3, 5,
   697  	3, 4, 3, 5, 1, 0, 1, 3, 1, 1,
   698  	2, 1, 1, 5, 0, 2, 1, 3, 1, 3,
   699  	1, 3,
   700  }
   701  var yyChk = [...]int{
   702  
   703  	-1000, -112, -113, -116, -114, 26, -117, 26, -115, -3,
   704  	25, -91, 74, 75, -118, -124, 25, -60, -119, 22,
   705  	63, 4, -125, -123, 25, -50, -74, -47, -26, 2,
   706  	33, -126, 32, 18, -44, -23, -45, -43, -25, -29,
   707  	16, 7, 11, 19, 14, 20, 28, 10, -14, -56,
   708  	17, 31, 29, 21, -33, -46, -3, -39, 54, 57,
   709  	50, 51, 70, 71, 53, 37, -40, 60, 4, -30,
   710  	-41, -79, -80, -20, -90, -88, -139, 72, 9, 24,
   711  	-84, -83, 30, 23, 63, -120, 60, -2, 4, -3,
   712  	64, 64, 65, -141, 22, 33, 10, 32, 18, 63,
   713  	63, -70, 60, -54, -34, -3, -75, 60, -54, -48,
   714  	60, -36, -3, -18, 60, -3, 67, -37, -33, -3,
   715  	-37, -41, -39, -3, 18, -41, -33, -61, -56, -14,
   716  	5, 43, 38, 48, 34, 39, 47, 46, 44, 40,
   717  	41, 50, 51, 52, 53, 54, 55, 56, 57, 35,
   718  	45, 49, 37, 66, 6, 76, -130, -135, -137, -131,
   719  	60, 64, 72, -46, -46, -46, -46, -46, -46, -46,
   720  	-46, 68, -17, -14, -32, -86, -90, -88, 54, 37,
   721  	60, -1, 36, 68, -1, 2, -35, 12, -14, -87,
   722  	37, -90, -88, -85, -12, 60, 54, -30, 72, -1,
   723  	-1, -121, 61, -120, -117, -118, 4, 4, 25, 74,
   724  	65, 25, -92, -91, -92, -108, -92, -19, -92, 60,
   725  	-71, 61, -70, -7, 66, 76, -86, -90, -88, -85,
   726  	-12, 60, 37, -75, 61, -7, 66, -78, 61, -48,
   727  	-7, -51, 68, -67, -68, -8, -31, -3, -81, -7,
   728  	12, 60, -140, 60, -14, -14, -14, -14, -14, -14,
   729  	-14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
   730  	-14, -14, -14, -14, -14, -56, -56, -14, -21, -22,
   731  	-38, -42, -44, -56, 27, -24, -38, 36, -24, 61,
   732  	-59, -17, -3, 60, -14, -35, -49, 61, -32, 9,
   733  	-14, -49, -66, -6, -11, -74, -26, 2, 68, 73,
   734  	73, -7, -7, -7, 64, -7, -73, 69, -72, -55,
   735  	-13, 60, 54, -33, -4, 25, -69, 69, -27, -33,
   736  	-4, 60, -122, 63, -118, 4, -106, -107, -110, -109,
   737  	-91, 25, 72, 24, 30, 23, 54, 9, 37, 18,
   738  	66, -106, -106, -51, 60, -100, -95, -3, -122, 63,
   739  	66, -56, -34, -7, 9, -122, 63, 66, -56, -122,
   740  	63, -66, 61, 76, -138, -31, -81, -7, -67, -6,
   741  	-67, -53, 36, 63, 66, 6, -14, -136, 63, -62,
   742  	-132, -138, 12, 76, -17, 32, 73, 67, -58, -57,
   743  	-28, -16, -15, -14, 68, 68, 37, -7, -90, -88,
   744  	-85, -12, 60, -138, 76, -58, 69, 63, -127, -7,
   745  	-7, 61, -3, 73, -122, 63, -7, 76, -5, 4,
   746  	-13, 54, 25, -13, 60, 64, -122, 63, -82, 60,
   747  	-4, 61, -120, 63, 63, 73, 4, 72, 68, 68,
   748  	-106, -111, 60, 37, -107, -109, 9, 60, -93, -94,
   749  	60, 4, 51, -3, 66, 63, 63, -101, -100, 61,
   750  	76, -106, 12, 61, -70, -56, 61, 61, -77, -76,
   751  	-75, -54, -56, 61, -48, 69, -3, -52, -89, 60,
   752  	-86, -90, -88, -85, -12, -8, 61, 61, -129, -38,
   753  	27, 27, 36, -38, -10, 69, -9, 8, 13, -53,
   754  	61, -138, -17, 61, 61, -35, 69, 76, -138, 67,
   755  	-49, -49, -7, 61, 69, -6, -66, -7, 69, -72,
   756  	-5, -33, 61, -13, -5, -13, -3, 69, -27, -67,
   757  	61, -106, 73, -106, -105, -104, -97, -3, -103, -102,
   758  	-96, -3, -106, 25, -91, -110, -106, -106, -101, 63,
   759  	-94, 4, -93, 61, -3, -95, -5, -106, -122, 63,
   760  	-7, 60, -67, -52, -66, 63, -14, -14, -62, -128,
   761  	-59, 67, -133, 61, 73, 67, -28, -16, -15, -14,
   762  	68, -58, -58, 61, 69, -5, 61, 61, 61, -106,
   763  	73, 69, 63, -106, 69, 63, 60, 61, 61, 50,
   764  	63, -99, -98, 60, -106, 60, -5, 61, -76, -67,
   765  	61, 69, -38, 69, -66, 67, 66, 6, 76, -64,
   766  	-35, -49, 69, 69, -5, -5, -52, -106, -97, -5,
   767  	-96, -101, -99, -94, -101, -101, 61, -14, -14, -65,
   768  	-63, 15, 73, -58, 61, 61, 61, 61, -52, 67,
   769  	67, 21, -11, 69, -99, -99, -134, -24, -53,
   770  }
   771  var yyDef = [...]int{
   772  
   773  	4, -2, 2, 0, 6, 0, 21, 0, 218, 0,
   774  	157, 158, 159, 0, 5, 344, 19, -2, 0, 0,
   775  	3, 0, 0, 0, 20, 0, 24, 25, 26, 27,
   776  	0, 0, 0, 0, 256, 257, 258, 259, 260, 0,
   777  	263, 155, 155, 0, 0, 0, 292, 38, -2, 0,
   778  	74, 88, 91, 78, 163, 93, -2, 114, 0, 0,
   779  	0, 0, 0, 0, 0, 0, 146, 0, 126, 127,
   780  	134, 0, 0, 139, -2, -2, 0, 290, 0, 0,
   781  	196, 197, 0, 0, 7, 8, 0, 21, 15, 0,
   782  	0, 0, 0, 345, 0, 0, 0, 0, 0, 18,
   783  	219, 28, 0, 0, 274, 154, 31, 0, 0, 35,
   784  	0, 0, 47, 210, 249, 0, 261, 264, 156, 153,
   785  	265, -2, 0, 162, 0, -2, 268, 269, 293, 276,
   786  	0, 53, 54, 0, 0, 0, 0, 0, 0, 0,
   787  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   788  	0, 0, 0, 0, 0, 0, 294, 294, 0, 294,
   789  	0, 0, 290, 115, 116, 117, 118, 119, 120, 121,
   790  	122, 140, 0, 148, 149, 172, -2, -2, 0, 0,
   791  	0, 140, 151, 152, -2, 217, 0, 0, 291, 193,
   792  	0, 176, 177, 178, 179, 0, 0, 189, 0, 0,
   793  	0, 286, 10, 13, 21, 12, 16, 17, 160, 161,
   794  	22, 0, 0, 310, 0, 0, 311, 210, 0, 0,
   795  	286, 30, 220, 39, 0, 0, 166, 167, 168, 169,
   796  	170, 0, 0, 286, 34, 0, 0, 286, 37, 224,
   797  	48, 204, -2, 0, 288, 247, 243, 162, 246, 150,
   798  	164, 249, -2, 249, 50, 94, 95, 96, 97, 98,
   799  	99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
   800  	109, 110, 111, 112, 113, 51, 52, 277, 75, 0,
   801  	71, 72, 295, 0, 0, 89, 76, 63, 79, 123,
   802  	288, 278, 128, 0, 291, 0, 284, 147, 175, 0,
   803  	288, 284, 0, 270, 252, 253, 254, 255, 59, 0,
   804  	0, 194, 0, 198, 0, 0, 286, 201, 226, 0,
   805  	302, 0, 0, 272, 238, -2, 286, 203, 228, 0,
   806  	240, 0, 0, 287, 11, 0, 0, 312, 313, 314,
   807  	317, 318, 0, 0, 0, 0, 0, 0, 0, 0,
   808  	0, 0, 0, 0, 296, 0, 346, 0, 0, 287,
   809  	0, 41, 275, 0, 0, 0, 287, 0, 43, 0,
   810  	287, 0, 212, 289, 250, 244, 245, 165, 0, 262,
   811  	0, 73, 65, 294, 0, 0, 69, 0, 294, 0,
   812  	0, 0, 288, 289, 0, 0, 131, 290, 0, 288,
   813  	280, 281, 0, -2, 140, 140, 0, 199, -2, -2,
   814  	-2, -2, 0, 0, 289, 0, 216, -2, -2, 191,
   815  	192, 180, 190, 0, 0, 287, 302, 0, 231, 303,
   816  	0, 0, 236, 302, 0, 0, 0, 287, 239, 249,
   817  	0, 9, 14, 304, 305, 0, 0, 0, 298, 300,
   818  	324, 325, 0, 0, 315, 316, 0, 296, 0, 342,
   819  	0, 339, 0, 341, 0, 308, 309, 0, 297, 0,
   820  	0, 302, 0, 29, 221, 40, 171, 32, 286, 222,
   821  	44, 46, 42, 36, 225, 211, 162, 209, 213, 249,
   822  	184, 185, 186, 187, 188, 248, 212, 212, -2, 0,
   823  	0, 0, 63, 77, 64, 92, 61, 0, 0, 80,
   824  	124, 0, 279, 129, 130, 0, 137, 289, 285, 0,
   825  	284, 284, 0, 135, 136, 271, 0, 195, 200, 227,
   826  	230, 273, 302, 0, 233, 0, 237, 202, 229, 0,
   827  	241, 319, 0, 0, 0, 299, 348, 0, 0, 301,
   828  	350, 0, 334, -2, -2, 0, 327, 328, 0, 306,
   829  	0, 340, 0, 335, 0, 347, 330, 302, 0, 287,
   830  	45, 249, 0, 205, 0, 294, 67, 68, 0, -2,
   831  	0, 58, 84, 125, 132, 290, 282, 283, 141, 144,
   832  	140, 0, 0, -2, 60, 232, 302, 302, 212, 320,
   833  	0, 322, 0, 302, 323, 0, 296, 326, 335, 0,
   834  	307, 207, 336, 296, 338, 296, 331, 33, 223, 0,
   835  	214, 66, 70, 90, 62, 55, 0, 0, 0, 86,
   836  	0, 284, -2, 138, 234, 235, 242, 321, 349, 332,
   837  	351, 0, 329, 0, 0, 0, 212, 0, 0, 81,
   838  	85, 0, 133, 0, 335, 343, 337, 335, 206, 56,
   839  	57, 82, 87, 145, 333, 208, 294, 0, 83,
   840  }
   841  var yyTok1 = [...]int{
   842  
   843  	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   844  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   845  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   846  	3, 3, 3, 70, 3, 3, 65, 56, 57, 3,
   847  	60, 61, 54, 50, 76, 51, 64, 55, 3, 3,
   848  	3, 3, 3, 3, 3, 3, 3, 3, 67, 63,
   849  	3, 66, 3, 74, 75, 3, 3, 3, 3, 3,
   850  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   851  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   852  	3, 72, 3, 73, 53, 3, 3, 3, 3, 3,
   853  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   854  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   855  	3, 3, 3, 68, 52, 69, 71,
   856  }
   857  var yyTok2 = [...]int{
   858  
   859  	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
   860  	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
   861  	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
   862  	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
   863  	42, 43, 44, 45, 46, 47, 48, 49, 58, 59,
   864  	62,
   865  }
   866  var yyTok3 = [...]int{
   867  	0,
   868  }
   869  
   870  var yyErrorMessages = [...]struct {
   871  	state int
   872  	token int
   873  	msg   string
   874  }{
   875  	{332, 76, "unexpected comma during import block"},
   876  	{89, 63, "missing import path; require quoted string"},
   877  	{390, 63, "missing { after if clause"},
   878  	{387, 63, "missing { after switch clause"},
   879  	{279, 63, "missing { after for clause"},
   880  	{499, 36, "missing { after for clause"},
   881  	{17, 68, "unexpected semicolon or newline before {"},
   882  	{111, 63, "unexpected semicolon or newline in type declaration"},
   883  	{78, 69, "unexpected } in channel type"},
   884  	{78, 61, "unexpected ) in channel type"},
   885  	{78, 76, "unexpected comma in channel type"},
   886  	{417, 15, "unexpected semicolon or newline before else"},
   887  	{329, 76, "name list not allowed in interface type"},
   888  	{279, 33, "var declaration not allowed in for initializer"},
   889  	{25, 68, "unexpected { at end of statement"},
   890  	{371, 68, "unexpected { at end of statement"},
   891  	{122, 63, "argument to go/defer must be function call"},
   892  	{398, 63, "need trailing comma before newline in composite literal"},
   893  	{415, 63, "need trailing comma before newline in composite literal"},
   894  	{124, 25, "nested func not allowed"},
   895  	{651, 63, "else must be followed by if or statement block"},
   896  }
   897  
   898  //line yaccpar:1
   899  
   900  /*	parser for yacc output	*/
   901  
   902  var (
   903  	yyDebug        = 0
   904  	yyErrorVerbose = false
   905  )
   906  
   907  type yyLexer interface {
   908  	Lex(lval *yySymType) int
   909  	Error(s string)
   910  }
   911  
   912  type yyParser interface {
   913  	Parse(yyLexer) int
   914  	Lookahead() int
   915  }
   916  
   917  type yyParserImpl struct {
   918  	lookahead func() int
   919  }
   920  
   921  func (p *yyParserImpl) Lookahead() int {
   922  	return p.lookahead()
   923  }
   924  
   925  func yyNewParser() yyParser {
   926  	p := &yyParserImpl{
   927  		lookahead: func() int { return -1 },
   928  	}
   929  	return p
   930  }
   931  
   932  const yyFlag = -1000
   933  
   934  func yyTokname(c int) string {
   935  	if c >= 1 && c-1 < len(yyToknames) {
   936  		if yyToknames[c-1] != "" {
   937  			return yyToknames[c-1]
   938  		}
   939  	}
   940  	return __yyfmt__.Sprintf("tok-%v", c)
   941  }
   942  
   943  func yyStatname(s int) string {
   944  	if s >= 0 && s < len(yyStatenames) {
   945  		if yyStatenames[s] != "" {
   946  			return yyStatenames[s]
   947  		}
   948  	}
   949  	return __yyfmt__.Sprintf("state-%v", s)
   950  }
   951  
   952  func yyErrorMessage(state, lookAhead int) string {
   953  	const TOKSTART = 4
   954  
   955  	if !yyErrorVerbose {
   956  		return "syntax error"
   957  	}
   958  
   959  	for _, e := range yyErrorMessages {
   960  		if e.state == state && e.token == lookAhead {
   961  			return "syntax error: " + e.msg
   962  		}
   963  	}
   964  
   965  	res := "syntax error: unexpected " + yyTokname(lookAhead)
   966  
   967  	// To match Bison, suggest at most four expected tokens.
   968  	expected := make([]int, 0, 4)
   969  
   970  	// Look for shiftable tokens.
   971  	base := yyPact[state]
   972  	for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
   973  		if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
   974  			if len(expected) == cap(expected) {
   975  				return res
   976  			}
   977  			expected = append(expected, tok)
   978  		}
   979  	}
   980  
   981  	if yyDef[state] == -2 {
   982  		i := 0
   983  		for yyExca[i] != -1 || yyExca[i+1] != state {
   984  			i += 2
   985  		}
   986  
   987  		// Look for tokens that we accept or reduce.
   988  		for i += 2; yyExca[i] >= 0; i += 2 {
   989  			tok := yyExca[i]
   990  			if tok < TOKSTART || yyExca[i+1] == 0 {
   991  				continue
   992  			}
   993  			if len(expected) == cap(expected) {
   994  				return res
   995  			}
   996  			expected = append(expected, tok)
   997  		}
   998  
   999  		// If the default action is to accept or reduce, give up.
  1000  		if yyExca[i+1] != 0 {
  1001  			return res
  1002  		}
  1003  	}
  1004  
  1005  	for i, tok := range expected {
  1006  		if i == 0 {
  1007  			res += ", expecting "
  1008  		} else {
  1009  			res += " or "
  1010  		}
  1011  		res += yyTokname(tok)
  1012  	}
  1013  	return res
  1014  }
  1015  
  1016  func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
  1017  	token = 0
  1018  	char = lex.Lex(lval)
  1019  	if char <= 0 {
  1020  		token = yyTok1[0]
  1021  		goto out
  1022  	}
  1023  	if char < len(yyTok1) {
  1024  		token = yyTok1[char]
  1025  		goto out
  1026  	}
  1027  	if char >= yyPrivate {
  1028  		if char < yyPrivate+len(yyTok2) {
  1029  			token = yyTok2[char-yyPrivate]
  1030  			goto out
  1031  		}
  1032  	}
  1033  	for i := 0; i < len(yyTok3); i += 2 {
  1034  		token = yyTok3[i+0]
  1035  		if token == char {
  1036  			token = yyTok3[i+1]
  1037  			goto out
  1038  		}
  1039  	}
  1040  
  1041  out:
  1042  	if token == 0 {
  1043  		token = yyTok2[1] /* unknown char */
  1044  	}
  1045  	if yyDebug >= 3 {
  1046  		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
  1047  	}
  1048  	return char, token
  1049  }
  1050  
  1051  func yyParse(yylex yyLexer) int {
  1052  	return yyNewParser().Parse(yylex)
  1053  }
  1054  
  1055  func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
  1056  	var yyn int
  1057  	var yylval yySymType
  1058  	var yyVAL yySymType
  1059  	var yyDollar []yySymType
  1060  	_ = yyDollar // silence set and not used
  1061  	yyS := make([]yySymType, yyMaxDepth)
  1062  
  1063  	Nerrs := 0   /* number of errors */
  1064  	Errflag := 0 /* error recovery flag */
  1065  	yystate := 0
  1066  	yychar := -1
  1067  	yytoken := -1 // yychar translated into internal numbering
  1068  	yyrcvr.lookahead = func() int { return yychar }
  1069  	defer func() {
  1070  		// Make sure we report no lookahead when not parsing.
  1071  		yystate = -1
  1072  		yychar = -1
  1073  		yytoken = -1
  1074  	}()
  1075  	yyp := -1
  1076  	goto yystack
  1077  
  1078  ret0:
  1079  	return 0
  1080  
  1081  ret1:
  1082  	return 1
  1083  
  1084  yystack:
  1085  	/* put a state and value onto the stack */
  1086  	if yyDebug >= 4 {
  1087  		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
  1088  	}
  1089  
  1090  	yyp++
  1091  	if yyp >= len(yyS) {
  1092  		nyys := make([]yySymType, len(yyS)*2)
  1093  		copy(nyys, yyS)
  1094  		yyS = nyys
  1095  	}
  1096  	yyS[yyp] = yyVAL
  1097  	yyS[yyp].yys = yystate
  1098  
  1099  yynewstate:
  1100  	yyn = yyPact[yystate]
  1101  	if yyn <= yyFlag {
  1102  		goto yydefault /* simple state */
  1103  	}
  1104  	if yychar < 0 {
  1105  		yychar, yytoken = yylex1(yylex, &yylval)
  1106  	}
  1107  	yyn += yytoken
  1108  	if yyn < 0 || yyn >= yyLast {
  1109  		goto yydefault
  1110  	}
  1111  	yyn = yyAct[yyn]
  1112  	if yyChk[yyn] == yytoken { /* valid shift */
  1113  		yychar = -1
  1114  		yytoken = -1
  1115  		yyVAL = yylval
  1116  		yystate = yyn
  1117  		if Errflag > 0 {
  1118  			Errflag--
  1119  		}
  1120  		goto yystack
  1121  	}
  1122  
  1123  yydefault:
  1124  	/* default state action */
  1125  	yyn = yyDef[yystate]
  1126  	if yyn == -2 {
  1127  		if yychar < 0 {
  1128  			yychar, yytoken = yylex1(yylex, &yylval)
  1129  		}
  1130  
  1131  		/* look through exception table */
  1132  		xi := 0
  1133  		for {
  1134  			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
  1135  				break
  1136  			}
  1137  			xi += 2
  1138  		}
  1139  		for xi += 2; ; xi += 2 {
  1140  			yyn = yyExca[xi+0]
  1141  			if yyn < 0 || yyn == yytoken {
  1142  				break
  1143  			}
  1144  		}
  1145  		yyn = yyExca[xi+1]
  1146  		if yyn < 0 {
  1147  			goto ret0
  1148  		}
  1149  	}
  1150  	if yyn == 0 {
  1151  		/* error ... attempt to resume parsing */
  1152  		switch Errflag {
  1153  		case 0: /* brand new error */
  1154  			yylex.Error(yyErrorMessage(yystate, yytoken))
  1155  			Nerrs++
  1156  			if yyDebug >= 1 {
  1157  				__yyfmt__.Printf("%s", yyStatname(yystate))
  1158  				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
  1159  			}
  1160  			fallthrough
  1161  
  1162  		case 1, 2: /* incompletely recovered error ... try again */
  1163  			Errflag = 3
  1164  
  1165  			/* find a state where "error" is a legal shift action */
  1166  			for yyp >= 0 {
  1167  				yyn = yyPact[yyS[yyp].yys] + yyErrCode
  1168  				if yyn >= 0 && yyn < yyLast {
  1169  					yystate = yyAct[yyn] /* simulate a shift of "error" */
  1170  					if yyChk[yystate] == yyErrCode {
  1171  						goto yystack
  1172  					}
  1173  				}
  1174  
  1175  				/* the current p has no shift on "error", pop stack */
  1176  				if yyDebug >= 2 {
  1177  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  1178  				}
  1179  				yyp--
  1180  			}
  1181  			/* there is no state on the stack with an error shift ... abort */
  1182  			goto ret1
  1183  
  1184  		case 3: /* no shift yet; clobber input char */
  1185  			if yyDebug >= 2 {
  1186  				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
  1187  			}
  1188  			if yytoken == yyEofCode {
  1189  				goto ret1
  1190  			}
  1191  			yychar = -1
  1192  			yytoken = -1
  1193  			goto yynewstate /* try again in the same state */
  1194  		}
  1195  	}
  1196  
  1197  	/* reduction by production yyn */
  1198  	if yyDebug >= 2 {
  1199  		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
  1200  	}
  1201  
  1202  	yynt := yyn
  1203  	yypt := yyp
  1204  	_ = yypt // guard against "declared and not used"
  1205  
  1206  	yyp -= yyR2[yyn]
  1207  	// yyp is now the index of $0. Perform the default action. Iff the
  1208  	// reduced production is ε, $1 is possibly out of range.
  1209  	if yyp+1 >= len(yyS) {
  1210  		nyys := make([]yySymType, len(yyS)*2)
  1211  		copy(nyys, yyS)
  1212  		yyS = nyys
  1213  	}
  1214  	yyVAL = yyS[yyp+1]
  1215  
  1216  	/* consult goto table to find next state */
  1217  	yyn = yyR1[yyn]
  1218  	yyg := yyPgo[yyn]
  1219  	yyj := yyg + yyS[yyp].yys + 1
  1220  
  1221  	if yyj >= yyLast {
  1222  		yystate = yyAct[yyg]
  1223  	} else {
  1224  		yystate = yyAct[yyj]
  1225  		if yyChk[yystate] != -yyn {
  1226  			yystate = yyAct[yyg]
  1227  		}
  1228  	}
  1229  	// dummy call; replaced with literal code
  1230  	switch yynt {
  1231  
  1232  	case 1:
  1233  		yyDollar = yyS[yypt-4 : yypt+1]
  1234  		//line go.y:189
  1235  		{
  1236  			xtop = concat(xtop, yyDollar[4].list)
  1237  		}
  1238  	case 2:
  1239  		yyDollar = yyS[yypt-0 : yypt+1]
  1240  		//line go.y:195
  1241  		{
  1242  			prevlineno = lineno
  1243  			Yyerror("package statement must be first")
  1244  			errorexit()
  1245  		}
  1246  	case 3:
  1247  		yyDollar = yyS[yypt-3 : yypt+1]
  1248  		//line go.y:201
  1249  		{
  1250  			mkpackage(yyDollar[2].sym.Name)
  1251  		}
  1252  	case 4:
  1253  		yyDollar = yyS[yypt-0 : yypt+1]
  1254  		//line go.y:211
  1255  		{
  1256  			importpkg = Runtimepkg
  1257  
  1258  			if Debug['A'] != 0 {
  1259  				cannedimports("runtime.Builtin", "package runtime\n\n$$\n\n")
  1260  			} else {
  1261  				cannedimports("runtime.Builtin", runtimeimport)
  1262  			}
  1263  			curio.importsafe = true
  1264  		}
  1265  	case 5:
  1266  		yyDollar = yyS[yypt-3 : yypt+1]
  1267  		//line go.y:223
  1268  		{
  1269  			importpkg = nil
  1270  		}
  1271  	case 11:
  1272  		yyDollar = yyS[yypt-3 : yypt+1]
  1273  		//line go.y:237
  1274  		{
  1275  			ipkg := importpkg
  1276  			my := importmyname
  1277  			importpkg = nil
  1278  			importmyname = nil
  1279  
  1280  			if my == nil {
  1281  				my = Lookup(ipkg.Name)
  1282  			}
  1283  
  1284  			pack := Nod(OPACK, nil, nil)
  1285  			pack.Sym = my
  1286  			pack.Name.Pkg = ipkg
  1287  			pack.Lineno = int32(yyDollar[1].i)
  1288  
  1289  			if strings.HasPrefix(my.Name, ".") {
  1290  				importdot(ipkg, pack)
  1291  				break
  1292  			}
  1293  			if my.Name == "init" {
  1294  				Yyerror("cannot import package as init - init must be a func")
  1295  				break
  1296  			}
  1297  			if my.Name == "_" {
  1298  				break
  1299  			}
  1300  			if my.Def != nil {
  1301  				lineno = int32(yyDollar[1].i)
  1302  				redeclare(my, "as imported package name")
  1303  			}
  1304  			my.Def = pack
  1305  			my.Lastlineno = int32(yyDollar[1].i)
  1306  			my.Block = 1 // at top level
  1307  		}
  1308  	case 12:
  1309  		yyDollar = yyS[yypt-2 : yypt+1]
  1310  		//line go.y:272
  1311  		{
  1312  			// When an invalid import path is passed to importfile,
  1313  			// it calls Yyerror and then sets up a fake import with
  1314  			// no package statement. This allows us to test more
  1315  			// than one invalid import statement in a single file.
  1316  			if nerrors == 0 {
  1317  				Fatalf("phase error in import")
  1318  			}
  1319  		}
  1320  	case 15:
  1321  		yyDollar = yyS[yypt-1 : yypt+1]
  1322  		//line go.y:288
  1323  		{
  1324  			// import with original name
  1325  			yyVAL.i = parserline()
  1326  			importmyname = nil
  1327  			importfile(&yyDollar[1].val, yyVAL.i)
  1328  		}
  1329  	case 16:
  1330  		yyDollar = yyS[yypt-2 : yypt+1]
  1331  		//line go.y:295
  1332  		{
  1333  			// import with given name
  1334  			yyVAL.i = parserline()
  1335  			importmyname = yyDollar[1].sym
  1336  			importfile(&yyDollar[2].val, yyVAL.i)
  1337  		}
  1338  	case 17:
  1339  		yyDollar = yyS[yypt-2 : yypt+1]
  1340  		//line go.y:302
  1341  		{
  1342  			// import into my name space
  1343  			yyVAL.i = parserline()
  1344  			importmyname = Lookup(".")
  1345  			importfile(&yyDollar[2].val, yyVAL.i)
  1346  		}
  1347  	case 18:
  1348  		yyDollar = yyS[yypt-4 : yypt+1]
  1349  		//line go.y:311
  1350  		{
  1351  			if importpkg.Name == "" {
  1352  				importpkg.Name = yyDollar[2].sym.Name
  1353  				numImport[yyDollar[2].sym.Name]++
  1354  			} else if importpkg.Name != yyDollar[2].sym.Name {
  1355  				Yyerror("conflicting names %s and %s for package %q", importpkg.Name, yyDollar[2].sym.Name, importpkg.Path)
  1356  			}
  1357  			importpkg.Direct = true
  1358  			importpkg.Safe = curio.importsafe
  1359  
  1360  			if safemode != 0 && !curio.importsafe {
  1361  				Yyerror("cannot import unsafe package %q", importpkg.Path)
  1362  			}
  1363  		}
  1364  	case 20:
  1365  		yyDollar = yyS[yypt-1 : yypt+1]
  1366  		//line go.y:328
  1367  		{
  1368  			if yyDollar[1].sym.Name == "safe" {
  1369  				curio.importsafe = true
  1370  			}
  1371  		}
  1372  	case 21:
  1373  		yyDollar = yyS[yypt-0 : yypt+1]
  1374  		//line go.y:335
  1375  		{
  1376  			defercheckwidth()
  1377  		}
  1378  	case 22:
  1379  		yyDollar = yyS[yypt-4 : yypt+1]
  1380  		//line go.y:339
  1381  		{
  1382  			resumecheckwidth()
  1383  			unimportfile()
  1384  		}
  1385  	case 23:
  1386  		yyDollar = yyS[yypt-0 : yypt+1]
  1387  		//line go.y:348
  1388  		{
  1389  			Yyerror("empty top-level declaration")
  1390  			yyVAL.list = nil
  1391  		}
  1392  	case 25:
  1393  		yyDollar = yyS[yypt-1 : yypt+1]
  1394  		//line go.y:354
  1395  		{
  1396  			yyVAL.list = list1(yyDollar[1].node)
  1397  		}
  1398  	case 26:
  1399  		yyDollar = yyS[yypt-1 : yypt+1]
  1400  		//line go.y:358
  1401  		{
  1402  			Yyerror("non-declaration statement outside function body")
  1403  			yyVAL.list = nil
  1404  		}
  1405  	case 27:
  1406  		yyDollar = yyS[yypt-1 : yypt+1]
  1407  		//line go.y:363
  1408  		{
  1409  			yyVAL.list = nil
  1410  		}
  1411  	case 28:
  1412  		yyDollar = yyS[yypt-2 : yypt+1]
  1413  		//line go.y:369
  1414  		{
  1415  			yyVAL.list = yyDollar[2].list
  1416  		}
  1417  	case 29:
  1418  		yyDollar = yyS[yypt-5 : yypt+1]
  1419  		//line go.y:373
  1420  		{
  1421  			yyVAL.list = yyDollar[3].list
  1422  		}
  1423  	case 30:
  1424  		yyDollar = yyS[yypt-3 : yypt+1]
  1425  		//line go.y:377
  1426  		{
  1427  			yyVAL.list = nil
  1428  		}
  1429  	case 31:
  1430  		yyDollar = yyS[yypt-2 : yypt+1]
  1431  		//line go.y:381
  1432  		{
  1433  			yyVAL.list = yyDollar[2].list
  1434  			iota_ = -100000
  1435  			lastconst = nil
  1436  		}
  1437  	case 32:
  1438  		yyDollar = yyS[yypt-5 : yypt+1]
  1439  		//line go.y:387
  1440  		{
  1441  			yyVAL.list = yyDollar[3].list
  1442  			iota_ = -100000
  1443  			lastconst = nil
  1444  		}
  1445  	case 33:
  1446  		yyDollar = yyS[yypt-7 : yypt+1]
  1447  		//line go.y:393
  1448  		{
  1449  			yyVAL.list = concat(yyDollar[3].list, yyDollar[5].list)
  1450  			iota_ = -100000
  1451  			lastconst = nil
  1452  		}
  1453  	case 34:
  1454  		yyDollar = yyS[yypt-3 : yypt+1]
  1455  		//line go.y:399
  1456  		{
  1457  			yyVAL.list = nil
  1458  			iota_ = -100000
  1459  		}
  1460  	case 35:
  1461  		yyDollar = yyS[yypt-2 : yypt+1]
  1462  		//line go.y:404
  1463  		{
  1464  			yyVAL.list = list1(yyDollar[2].node)
  1465  		}
  1466  	case 36:
  1467  		yyDollar = yyS[yypt-5 : yypt+1]
  1468  		//line go.y:408
  1469  		{
  1470  			yyVAL.list = yyDollar[3].list
  1471  		}
  1472  	case 37:
  1473  		yyDollar = yyS[yypt-3 : yypt+1]
  1474  		//line go.y:412
  1475  		{
  1476  			yyVAL.list = nil
  1477  		}
  1478  	case 38:
  1479  		yyDollar = yyS[yypt-1 : yypt+1]
  1480  		//line go.y:418
  1481  		{
  1482  			iota_ = 0
  1483  		}
  1484  	case 39:
  1485  		yyDollar = yyS[yypt-2 : yypt+1]
  1486  		//line go.y:424
  1487  		{
  1488  			yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, nil)
  1489  		}
  1490  	case 40:
  1491  		yyDollar = yyS[yypt-4 : yypt+1]
  1492  		//line go.y:428
  1493  		{
  1494  			yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
  1495  		}
  1496  	case 41:
  1497  		yyDollar = yyS[yypt-3 : yypt+1]
  1498  		//line go.y:432
  1499  		{
  1500  			yyVAL.list = variter(yyDollar[1].list, nil, yyDollar[3].list)
  1501  		}
  1502  	case 42:
  1503  		yyDollar = yyS[yypt-4 : yypt+1]
  1504  		//line go.y:438
  1505  		{
  1506  			yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
  1507  		}
  1508  	case 43:
  1509  		yyDollar = yyS[yypt-3 : yypt+1]
  1510  		//line go.y:442
  1511  		{
  1512  			yyVAL.list = constiter(yyDollar[1].list, nil, yyDollar[3].list)
  1513  		}
  1514  	case 45:
  1515  		yyDollar = yyS[yypt-2 : yypt+1]
  1516  		//line go.y:449
  1517  		{
  1518  			yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, nil)
  1519  		}
  1520  	case 46:
  1521  		yyDollar = yyS[yypt-1 : yypt+1]
  1522  		//line go.y:453
  1523  		{
  1524  			yyVAL.list = constiter(yyDollar[1].list, nil, nil)
  1525  		}
  1526  	case 47:
  1527  		yyDollar = yyS[yypt-1 : yypt+1]
  1528  		//line go.y:459
  1529  		{
  1530  			// different from dclname because the name
  1531  			// becomes visible right here, not at the end
  1532  			// of the declaration.
  1533  			yyVAL.node = typedcl0(yyDollar[1].sym)
  1534  		}
  1535  	case 48:
  1536  		yyDollar = yyS[yypt-2 : yypt+1]
  1537  		//line go.y:468
  1538  		{
  1539  			yyVAL.node = typedcl1(yyDollar[1].node, yyDollar[2].node, true)
  1540  		}
  1541  	case 49:
  1542  		yyDollar = yyS[yypt-1 : yypt+1]
  1543  		//line go.y:474
  1544  		{
  1545  			yyVAL.node = yyDollar[1].node
  1546  
  1547  			// These nodes do not carry line numbers.
  1548  			// Since a bare name used as an expression is an error,
  1549  			// introduce a wrapper node to give the correct line.
  1550  			switch yyVAL.node.Op {
  1551  			case ONAME, ONONAME, OTYPE, OPACK, OLITERAL:
  1552  				yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
  1553  				yyVAL.node.Implicit = true
  1554  				break
  1555  			}
  1556  		}
  1557  	case 50:
  1558  		yyDollar = yyS[yypt-3 : yypt+1]
  1559  		//line go.y:488
  1560  		{
  1561  			yyVAL.node = Nod(OASOP, yyDollar[1].node, yyDollar[3].node)
  1562  			yyVAL.node.Etype = uint8(yyDollar[2].i) // rathole to pass opcode
  1563  		}
  1564  	case 51:
  1565  		yyDollar = yyS[yypt-3 : yypt+1]
  1566  		//line go.y:493
  1567  		{
  1568  			if yyDollar[1].list.Next == nil && yyDollar[3].list.Next == nil {
  1569  				// simple
  1570  				yyVAL.node = Nod(OAS, yyDollar[1].list.N, yyDollar[3].list.N)
  1571  				break
  1572  			}
  1573  			// multiple
  1574  			yyVAL.node = Nod(OAS2, nil, nil)
  1575  			yyVAL.node.List = yyDollar[1].list
  1576  			yyVAL.node.Rlist = yyDollar[3].list
  1577  		}
  1578  	case 52:
  1579  		yyDollar = yyS[yypt-3 : yypt+1]
  1580  		//line go.y:505
  1581  		{
  1582  			if yyDollar[3].list.N.Op == OTYPESW {
  1583  				yyVAL.node = Nod(OTYPESW, nil, yyDollar[3].list.N.Right)
  1584  				if yyDollar[3].list.Next != nil {
  1585  					Yyerror("expr.(type) must be alone in list")
  1586  				}
  1587  				if yyDollar[1].list.Next != nil {
  1588  					Yyerror("argument count mismatch: %d = %d", count(yyDollar[1].list), 1)
  1589  				} else if (yyDollar[1].list.N.Op != ONAME && yyDollar[1].list.N.Op != OTYPE && yyDollar[1].list.N.Op != ONONAME) || isblank(yyDollar[1].list.N) {
  1590  					Yyerror("invalid variable name %s in type switch", yyDollar[1].list.N)
  1591  				} else {
  1592  					yyVAL.node.Left = dclname(yyDollar[1].list.N.Sym)
  1593  				} // it's a colas, so must not re-use an oldname.
  1594  				break
  1595  			}
  1596  			yyVAL.node = colas(yyDollar[1].list, yyDollar[3].list, int32(yyDollar[2].i))
  1597  		}
  1598  	case 53:
  1599  		yyDollar = yyS[yypt-2 : yypt+1]
  1600  		//line go.y:523
  1601  		{
  1602  			yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
  1603  			yyVAL.node.Implicit = true
  1604  			yyVAL.node.Etype = OADD
  1605  		}
  1606  	case 54:
  1607  		yyDollar = yyS[yypt-2 : yypt+1]
  1608  		//line go.y:529
  1609  		{
  1610  			yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
  1611  			yyVAL.node.Implicit = true
  1612  			yyVAL.node.Etype = OSUB
  1613  		}
  1614  	case 55:
  1615  		yyDollar = yyS[yypt-3 : yypt+1]
  1616  		//line go.y:537
  1617  		{
  1618  			var n, nn *Node
  1619  
  1620  			// will be converted to OCASE
  1621  			// right will point to next case
  1622  			// done in casebody()
  1623  			markdcl()
  1624  			yyVAL.node = Nod(OXCASE, nil, nil)
  1625  			yyVAL.node.List = yyDollar[2].list
  1626  			if typesw != nil && typesw.Right != nil {
  1627  				n = typesw.Right.Left
  1628  				if n != nil {
  1629  					// type switch - declare variable
  1630  					nn = newname(n.Sym)
  1631  					declare(nn, dclcontext)
  1632  					yyVAL.node.Rlist = list1(nn)
  1633  
  1634  					// keep track of the instances for reporting unused
  1635  					nn.Name.Defn = typesw.Right
  1636  				}
  1637  			}
  1638  		}
  1639  	case 56:
  1640  		yyDollar = yyS[yypt-5 : yypt+1]
  1641  		//line go.y:560
  1642  		{
  1643  			var n *Node
  1644  
  1645  			// will be converted to OCASE
  1646  			// right will point to next case
  1647  			// done in casebody()
  1648  			markdcl()
  1649  			yyVAL.node = Nod(OXCASE, nil, nil)
  1650  			if yyDollar[2].list.Next == nil {
  1651  				n = Nod(OAS, yyDollar[2].list.N, yyDollar[4].node)
  1652  			} else {
  1653  				n = Nod(OAS2, nil, nil)
  1654  				n.List = yyDollar[2].list
  1655  				n.Rlist = list1(yyDollar[4].node)
  1656  			}
  1657  			yyVAL.node.List = list1(n)
  1658  		}
  1659  	case 57:
  1660  		yyDollar = yyS[yypt-5 : yypt+1]
  1661  		//line go.y:578
  1662  		{
  1663  			// will be converted to OCASE
  1664  			// right will point to next case
  1665  			// done in casebody()
  1666  			markdcl()
  1667  			yyVAL.node = Nod(OXCASE, nil, nil)
  1668  			yyVAL.node.List = list1(colas(yyDollar[2].list, list1(yyDollar[4].node), int32(yyDollar[3].i)))
  1669  		}
  1670  	case 58:
  1671  		yyDollar = yyS[yypt-2 : yypt+1]
  1672  		//line go.y:587
  1673  		{
  1674  			var n, nn *Node
  1675  
  1676  			markdcl()
  1677  			yyVAL.node = Nod(OXCASE, nil, nil)
  1678  			if typesw != nil && typesw.Right != nil {
  1679  				n = typesw.Right.Left
  1680  				if n != nil {
  1681  					// type switch - declare variable
  1682  					nn = newname(n.Sym)
  1683  					declare(nn, dclcontext)
  1684  					yyVAL.node.Rlist = list1(nn)
  1685  
  1686  					// keep track of the instances for reporting unused
  1687  					nn.Name.Defn = typesw.Right
  1688  				}
  1689  			}
  1690  		}
  1691  	case 59:
  1692  		yyDollar = yyS[yypt-1 : yypt+1]
  1693  		//line go.y:608
  1694  		{
  1695  			markdcl()
  1696  		}
  1697  	case 60:
  1698  		yyDollar = yyS[yypt-4 : yypt+1]
  1699  		//line go.y:612
  1700  		{
  1701  			if yyDollar[3].list == nil {
  1702  				yyVAL.node = Nod(OEMPTY, nil, nil)
  1703  			} else {
  1704  				yyVAL.node = liststmt(yyDollar[3].list)
  1705  			}
  1706  			popdcl()
  1707  		}
  1708  	case 61:
  1709  		yyDollar = yyS[yypt-1 : yypt+1]
  1710  		//line go.y:623
  1711  		{
  1712  			// If the last token read by the lexer was consumed
  1713  			// as part of the case, clear it (parser has cleared yychar).
  1714  			// If the last token read by the lexer was the lookahead
  1715  			// leave it alone (parser has it cached in yychar).
  1716  			// This is so that the stmt_list action doesn't look at
  1717  			// the case tokens if the stmt_list is empty.
  1718  			yylast = yychar
  1719  			yyDollar[1].node.Xoffset = int64(block)
  1720  		}
  1721  	case 62:
  1722  		yyDollar = yyS[yypt-3 : yypt+1]
  1723  		//line go.y:634
  1724  		{
  1725  			// This is the only place in the language where a statement
  1726  			// list is not allowed to drop the final semicolon, because
  1727  			// it's the only place where a statement list is not followed
  1728  			// by a closing brace.  Handle the error for pedantry.
  1729  
  1730  			// Find the final token of the statement list.
  1731  			// yylast is lookahead; yyprev is last of stmt_list
  1732  			last := yyprev
  1733  
  1734  			if last > 0 && last != ';' && yychar != '}' {
  1735  				Yyerror("missing statement after label")
  1736  			}
  1737  			yyVAL.node = yyDollar[1].node
  1738  			yyVAL.node.Nbody = yyDollar[3].list
  1739  			popdcl()
  1740  		}
  1741  	case 63:
  1742  		yyDollar = yyS[yypt-0 : yypt+1]
  1743  		//line go.y:653
  1744  		{
  1745  			yyVAL.list = nil
  1746  		}
  1747  	case 64:
  1748  		yyDollar = yyS[yypt-2 : yypt+1]
  1749  		//line go.y:657
  1750  		{
  1751  			yyVAL.list = list(yyDollar[1].list, yyDollar[2].node)
  1752  		}
  1753  	case 65:
  1754  		yyDollar = yyS[yypt-1 : yypt+1]
  1755  		//line go.y:663
  1756  		{
  1757  			markdcl()
  1758  		}
  1759  	case 66:
  1760  		yyDollar = yyS[yypt-4 : yypt+1]
  1761  		//line go.y:667
  1762  		{
  1763  			yyVAL.list = yyDollar[3].list
  1764  			popdcl()
  1765  		}
  1766  	case 67:
  1767  		yyDollar = yyS[yypt-4 : yypt+1]
  1768  		//line go.y:674
  1769  		{
  1770  			yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
  1771  			yyVAL.node.List = yyDollar[1].list
  1772  			yyVAL.node.Etype = 0 // := flag
  1773  		}
  1774  	case 68:
  1775  		yyDollar = yyS[yypt-4 : yypt+1]
  1776  		//line go.y:680
  1777  		{
  1778  			yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
  1779  			yyVAL.node.List = yyDollar[1].list
  1780  			yyVAL.node.Colas = true
  1781  			colasdefn(yyDollar[1].list, yyVAL.node)
  1782  		}
  1783  	case 69:
  1784  		yyDollar = yyS[yypt-2 : yypt+1]
  1785  		//line go.y:687
  1786  		{
  1787  			yyVAL.node = Nod(ORANGE, nil, yyDollar[2].node)
  1788  			yyVAL.node.Etype = 0 // := flag
  1789  		}
  1790  	case 70:
  1791  		yyDollar = yyS[yypt-5 : yypt+1]
  1792  		//line go.y:694
  1793  		{
  1794  			// init ; test ; incr
  1795  			if yyDollar[5].node != nil && yyDollar[5].node.Colas {
  1796  				Yyerror("cannot declare in the for-increment")
  1797  			}
  1798  			yyVAL.node = Nod(OFOR, nil, nil)
  1799  			if yyDollar[1].node != nil {
  1800  				yyVAL.node.Ninit = list1(yyDollar[1].node)
  1801  			}
  1802  			yyVAL.node.Left = yyDollar[3].node
  1803  			yyVAL.node.Right = yyDollar[5].node
  1804  		}
  1805  	case 71:
  1806  		yyDollar = yyS[yypt-1 : yypt+1]
  1807  		//line go.y:707
  1808  		{
  1809  			// normal test
  1810  			yyVAL.node = Nod(OFOR, nil, nil)
  1811  			yyVAL.node.Left = yyDollar[1].node
  1812  		}
  1813  	case 73:
  1814  		yyDollar = yyS[yypt-2 : yypt+1]
  1815  		//line go.y:716
  1816  		{
  1817  			yyVAL.node = yyDollar[1].node
  1818  			yyVAL.node.Nbody = concat(yyVAL.node.Nbody, yyDollar[2].list)
  1819  		}
  1820  	case 74:
  1821  		yyDollar = yyS[yypt-1 : yypt+1]
  1822  		//line go.y:723
  1823  		{
  1824  			markdcl()
  1825  		}
  1826  	case 75:
  1827  		yyDollar = yyS[yypt-3 : yypt+1]
  1828  		//line go.y:727
  1829  		{
  1830  			yyVAL.node = yyDollar[3].node
  1831  			popdcl()
  1832  		}
  1833  	case 76:
  1834  		yyDollar = yyS[yypt-1 : yypt+1]
  1835  		//line go.y:734
  1836  		{
  1837  			// test
  1838  			yyVAL.node = Nod(OIF, nil, nil)
  1839  			yyVAL.node.Left = yyDollar[1].node
  1840  		}
  1841  	case 77:
  1842  		yyDollar = yyS[yypt-3 : yypt+1]
  1843  		//line go.y:740
  1844  		{
  1845  			// init ; test
  1846  			yyVAL.node = Nod(OIF, nil, nil)
  1847  			if yyDollar[1].node != nil {
  1848  				yyVAL.node.Ninit = list1(yyDollar[1].node)
  1849  			}
  1850  			yyVAL.node.Left = yyDollar[3].node
  1851  		}
  1852  	case 78:
  1853  		yyDollar = yyS[yypt-1 : yypt+1]
  1854  		//line go.y:752
  1855  		{
  1856  			markdcl()
  1857  		}
  1858  	case 79:
  1859  		yyDollar = yyS[yypt-3 : yypt+1]
  1860  		//line go.y:756
  1861  		{
  1862  			if yyDollar[3].node.Left == nil {
  1863  				Yyerror("missing condition in if statement")
  1864  			}
  1865  		}
  1866  	case 80:
  1867  		yyDollar = yyS[yypt-5 : yypt+1]
  1868  		//line go.y:762
  1869  		{
  1870  			yyDollar[3].node.Nbody = yyDollar[5].list
  1871  		}
  1872  	case 81:
  1873  		yyDollar = yyS[yypt-8 : yypt+1]
  1874  		//line go.y:766
  1875  		{
  1876  			var n *Node
  1877  			var nn *NodeList
  1878  
  1879  			yyVAL.node = yyDollar[3].node
  1880  			n = yyDollar[3].node
  1881  			popdcl()
  1882  			for nn = concat(yyDollar[7].list, yyDollar[8].list); nn != nil; nn = nn.Next {
  1883  				if nn.N.Op == OIF {
  1884  					popdcl()
  1885  				}
  1886  				n.Rlist = list1(nn.N)
  1887  				n = nn.N
  1888  			}
  1889  		}
  1890  	case 82:
  1891  		yyDollar = yyS[yypt-2 : yypt+1]
  1892  		//line go.y:784
  1893  		{
  1894  			markdcl()
  1895  		}
  1896  	case 83:
  1897  		yyDollar = yyS[yypt-5 : yypt+1]
  1898  		//line go.y:788
  1899  		{
  1900  			if yyDollar[4].node.Left == nil {
  1901  				Yyerror("missing condition in if statement")
  1902  			}
  1903  			yyDollar[4].node.Nbody = yyDollar[5].list
  1904  			yyVAL.list = list1(yyDollar[4].node)
  1905  		}
  1906  	case 84:
  1907  		yyDollar = yyS[yypt-0 : yypt+1]
  1908  		//line go.y:797
  1909  		{
  1910  			yyVAL.list = nil
  1911  		}
  1912  	case 85:
  1913  		yyDollar = yyS[yypt-2 : yypt+1]
  1914  		//line go.y:801
  1915  		{
  1916  			yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
  1917  		}
  1918  	case 86:
  1919  		yyDollar = yyS[yypt-0 : yypt+1]
  1920  		//line go.y:806
  1921  		{
  1922  			yyVAL.list = nil
  1923  		}
  1924  	case 87:
  1925  		yyDollar = yyS[yypt-2 : yypt+1]
  1926  		//line go.y:810
  1927  		{
  1928  			l := &NodeList{N: yyDollar[2].node}
  1929  			l.End = l
  1930  			yyVAL.list = l
  1931  		}
  1932  	case 88:
  1933  		yyDollar = yyS[yypt-1 : yypt+1]
  1934  		//line go.y:818
  1935  		{
  1936  			markdcl()
  1937  		}
  1938  	case 89:
  1939  		yyDollar = yyS[yypt-3 : yypt+1]
  1940  		//line go.y:822
  1941  		{
  1942  			var n *Node
  1943  			n = yyDollar[3].node.Left
  1944  			if n != nil && n.Op != OTYPESW {
  1945  				n = nil
  1946  			}
  1947  			typesw = Nod(OXXX, typesw, n)
  1948  		}
  1949  	case 90:
  1950  		yyDollar = yyS[yypt-7 : yypt+1]
  1951  		//line go.y:831
  1952  		{
  1953  			yyVAL.node = yyDollar[3].node
  1954  			yyVAL.node.Op = OSWITCH
  1955  			yyVAL.node.List = yyDollar[6].list
  1956  			typesw = typesw.Left
  1957  			popdcl()
  1958  		}
  1959  	case 91:
  1960  		yyDollar = yyS[yypt-1 : yypt+1]
  1961  		//line go.y:841
  1962  		{
  1963  			typesw = Nod(OXXX, typesw, nil)
  1964  		}
  1965  	case 92:
  1966  		yyDollar = yyS[yypt-5 : yypt+1]
  1967  		//line go.y:845
  1968  		{
  1969  			yyVAL.node = Nod(OSELECT, nil, nil)
  1970  			yyVAL.node.Lineno = typesw.Lineno
  1971  			yyVAL.node.List = yyDollar[4].list
  1972  			typesw = typesw.Left
  1973  		}
  1974  	case 94:
  1975  		yyDollar = yyS[yypt-3 : yypt+1]
  1976  		//line go.y:858
  1977  		{
  1978  			yyVAL.node = Nod(OOROR, yyDollar[1].node, yyDollar[3].node)
  1979  		}
  1980  	case 95:
  1981  		yyDollar = yyS[yypt-3 : yypt+1]
  1982  		//line go.y:862
  1983  		{
  1984  			yyVAL.node = Nod(OANDAND, yyDollar[1].node, yyDollar[3].node)
  1985  		}
  1986  	case 96:
  1987  		yyDollar = yyS[yypt-3 : yypt+1]
  1988  		//line go.y:866
  1989  		{
  1990  			yyVAL.node = Nod(OEQ, yyDollar[1].node, yyDollar[3].node)
  1991  		}
  1992  	case 97:
  1993  		yyDollar = yyS[yypt-3 : yypt+1]
  1994  		//line go.y:870
  1995  		{
  1996  			yyVAL.node = Nod(ONE, yyDollar[1].node, yyDollar[3].node)
  1997  		}
  1998  	case 98:
  1999  		yyDollar = yyS[yypt-3 : yypt+1]
  2000  		//line go.y:874
  2001  		{
  2002  			yyVAL.node = Nod(OLT, yyDollar[1].node, yyDollar[3].node)
  2003  		}
  2004  	case 99:
  2005  		yyDollar = yyS[yypt-3 : yypt+1]
  2006  		//line go.y:878
  2007  		{
  2008  			yyVAL.node = Nod(OLE, yyDollar[1].node, yyDollar[3].node)
  2009  		}
  2010  	case 100:
  2011  		yyDollar = yyS[yypt-3 : yypt+1]
  2012  		//line go.y:882
  2013  		{
  2014  			yyVAL.node = Nod(OGE, yyDollar[1].node, yyDollar[3].node)
  2015  		}
  2016  	case 101:
  2017  		yyDollar = yyS[yypt-3 : yypt+1]
  2018  		//line go.y:886
  2019  		{
  2020  			yyVAL.node = Nod(OGT, yyDollar[1].node, yyDollar[3].node)
  2021  		}
  2022  	case 102:
  2023  		yyDollar = yyS[yypt-3 : yypt+1]
  2024  		//line go.y:890
  2025  		{
  2026  			yyVAL.node = Nod(OADD, yyDollar[1].node, yyDollar[3].node)
  2027  		}
  2028  	case 103:
  2029  		yyDollar = yyS[yypt-3 : yypt+1]
  2030  		//line go.y:894
  2031  		{
  2032  			yyVAL.node = Nod(OSUB, yyDollar[1].node, yyDollar[3].node)
  2033  		}
  2034  	case 104:
  2035  		yyDollar = yyS[yypt-3 : yypt+1]
  2036  		//line go.y:898
  2037  		{
  2038  			yyVAL.node = Nod(OOR, yyDollar[1].node, yyDollar[3].node)
  2039  		}
  2040  	case 105:
  2041  		yyDollar = yyS[yypt-3 : yypt+1]
  2042  		//line go.y:902
  2043  		{
  2044  			yyVAL.node = Nod(OXOR, yyDollar[1].node, yyDollar[3].node)
  2045  		}
  2046  	case 106:
  2047  		yyDollar = yyS[yypt-3 : yypt+1]
  2048  		//line go.y:906
  2049  		{
  2050  			yyVAL.node = Nod(OMUL, yyDollar[1].node, yyDollar[3].node)
  2051  		}
  2052  	case 107:
  2053  		yyDollar = yyS[yypt-3 : yypt+1]
  2054  		//line go.y:910
  2055  		{
  2056  			yyVAL.node = Nod(ODIV, yyDollar[1].node, yyDollar[3].node)
  2057  		}
  2058  	case 108:
  2059  		yyDollar = yyS[yypt-3 : yypt+1]
  2060  		//line go.y:914
  2061  		{
  2062  			yyVAL.node = Nod(OMOD, yyDollar[1].node, yyDollar[3].node)
  2063  		}
  2064  	case 109:
  2065  		yyDollar = yyS[yypt-3 : yypt+1]
  2066  		//line go.y:918
  2067  		{
  2068  			yyVAL.node = Nod(OAND, yyDollar[1].node, yyDollar[3].node)
  2069  		}
  2070  	case 110:
  2071  		yyDollar = yyS[yypt-3 : yypt+1]
  2072  		//line go.y:922
  2073  		{
  2074  			yyVAL.node = Nod(OANDNOT, yyDollar[1].node, yyDollar[3].node)
  2075  		}
  2076  	case 111:
  2077  		yyDollar = yyS[yypt-3 : yypt+1]
  2078  		//line go.y:926
  2079  		{
  2080  			yyVAL.node = Nod(OLSH, yyDollar[1].node, yyDollar[3].node)
  2081  		}
  2082  	case 112:
  2083  		yyDollar = yyS[yypt-3 : yypt+1]
  2084  		//line go.y:930
  2085  		{
  2086  			yyVAL.node = Nod(ORSH, yyDollar[1].node, yyDollar[3].node)
  2087  		}
  2088  	case 113:
  2089  		yyDollar = yyS[yypt-3 : yypt+1]
  2090  		//line go.y:935
  2091  		{
  2092  			yyVAL.node = Nod(OSEND, yyDollar[1].node, yyDollar[3].node)
  2093  		}
  2094  	case 115:
  2095  		yyDollar = yyS[yypt-2 : yypt+1]
  2096  		//line go.y:942
  2097  		{
  2098  			yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
  2099  		}
  2100  	case 116:
  2101  		yyDollar = yyS[yypt-2 : yypt+1]
  2102  		//line go.y:946
  2103  		{
  2104  			if yyDollar[2].node.Op == OCOMPLIT {
  2105  				// Special case for &T{...}: turn into (*T){...}.
  2106  				yyVAL.node = yyDollar[2].node
  2107  				yyVAL.node.Right = Nod(OIND, yyVAL.node.Right, nil)
  2108  				yyVAL.node.Right.Implicit = true
  2109  			} else {
  2110  				yyVAL.node = Nod(OADDR, yyDollar[2].node, nil)
  2111  			}
  2112  		}
  2113  	case 117:
  2114  		yyDollar = yyS[yypt-2 : yypt+1]
  2115  		//line go.y:957
  2116  		{
  2117  			yyVAL.node = Nod(OPLUS, yyDollar[2].node, nil)
  2118  		}
  2119  	case 118:
  2120  		yyDollar = yyS[yypt-2 : yypt+1]
  2121  		//line go.y:961
  2122  		{
  2123  			yyVAL.node = Nod(OMINUS, yyDollar[2].node, nil)
  2124  		}
  2125  	case 119:
  2126  		yyDollar = yyS[yypt-2 : yypt+1]
  2127  		//line go.y:965
  2128  		{
  2129  			yyVAL.node = Nod(ONOT, yyDollar[2].node, nil)
  2130  		}
  2131  	case 120:
  2132  		yyDollar = yyS[yypt-2 : yypt+1]
  2133  		//line go.y:969
  2134  		{
  2135  			Yyerror("the bitwise complement operator is ^")
  2136  			yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
  2137  		}
  2138  	case 121:
  2139  		yyDollar = yyS[yypt-2 : yypt+1]
  2140  		//line go.y:974
  2141  		{
  2142  			yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
  2143  		}
  2144  	case 122:
  2145  		yyDollar = yyS[yypt-2 : yypt+1]
  2146  		//line go.y:978
  2147  		{
  2148  			yyVAL.node = Nod(ORECV, yyDollar[2].node, nil)
  2149  		}
  2150  	case 123:
  2151  		yyDollar = yyS[yypt-3 : yypt+1]
  2152  		//line go.y:988
  2153  		{
  2154  			yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
  2155  		}
  2156  	case 124:
  2157  		yyDollar = yyS[yypt-5 : yypt+1]
  2158  		//line go.y:992
  2159  		{
  2160  			yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
  2161  			yyVAL.node.List = yyDollar[3].list
  2162  		}
  2163  	case 125:
  2164  		yyDollar = yyS[yypt-6 : yypt+1]
  2165  		//line go.y:997
  2166  		{
  2167  			yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
  2168  			yyVAL.node.List = yyDollar[3].list
  2169  			yyVAL.node.Isddd = true
  2170  		}
  2171  	case 126:
  2172  		yyDollar = yyS[yypt-1 : yypt+1]
  2173  		//line go.y:1005
  2174  		{
  2175  			yyVAL.node = nodlit(yyDollar[1].val)
  2176  		}
  2177  	case 128:
  2178  		yyDollar = yyS[yypt-3 : yypt+1]
  2179  		//line go.y:1010
  2180  		{
  2181  			if yyDollar[1].node.Op == OPACK {
  2182  				var s *Sym
  2183  				s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Name.Pkg)
  2184  				yyDollar[1].node.Used = true
  2185  				yyVAL.node = oldname(s)
  2186  				break
  2187  			}
  2188  			yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym))
  2189  		}
  2190  	case 129:
  2191  		yyDollar = yyS[yypt-5 : yypt+1]
  2192  		//line go.y:1021
  2193  		{
  2194  			yyVAL.node = Nod(ODOTTYPE, yyDollar[1].node, yyDollar[4].node)
  2195  		}
  2196  	case 130:
  2197  		yyDollar = yyS[yypt-5 : yypt+1]
  2198  		//line go.y:1025
  2199  		{
  2200  			yyVAL.node = Nod(OTYPESW, nil, yyDollar[1].node)
  2201  		}
  2202  	case 131:
  2203  		yyDollar = yyS[yypt-4 : yypt+1]
  2204  		//line go.y:1029
  2205  		{
  2206  			yyVAL.node = Nod(OINDEX, yyDollar[1].node, yyDollar[3].node)
  2207  		}
  2208  	case 132:
  2209  		yyDollar = yyS[yypt-6 : yypt+1]
  2210  		//line go.y:1033
  2211  		{
  2212  			yyVAL.node = Nod(OSLICE, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, yyDollar[5].node))
  2213  		}
  2214  	case 133:
  2215  		yyDollar = yyS[yypt-8 : yypt+1]
  2216  		//line go.y:1037
  2217  		{
  2218  			if yyDollar[5].node == nil {
  2219  				Yyerror("middle index required in 3-index slice")
  2220  			}
  2221  			if yyDollar[7].node == nil {
  2222  				Yyerror("final index required in 3-index slice")
  2223  			}
  2224  			yyVAL.node = Nod(OSLICE3, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, Nod(OKEY, yyDollar[5].node, yyDollar[7].node)))
  2225  		}
  2226  	case 135:
  2227  		yyDollar = yyS[yypt-5 : yypt+1]
  2228  		//line go.y:1048
  2229  		{
  2230  			// conversion
  2231  			yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
  2232  			yyVAL.node.List = list1(yyDollar[3].node)
  2233  		}
  2234  	case 136:
  2235  		yyDollar = yyS[yypt-5 : yypt+1]
  2236  		//line go.y:1054
  2237  		{
  2238  			yyVAL.node = yyDollar[3].node
  2239  			yyVAL.node.Right = yyDollar[1].node
  2240  			yyVAL.node.List = yyDollar[4].list
  2241  			fixlbrace(yyDollar[2].i)
  2242  		}
  2243  	case 137:
  2244  		yyDollar = yyS[yypt-5 : yypt+1]
  2245  		//line go.y:1061
  2246  		{
  2247  			yyVAL.node = yyDollar[3].node
  2248  			yyVAL.node.Right = yyDollar[1].node
  2249  			yyVAL.node.List = yyDollar[4].list
  2250  		}
  2251  	case 138:
  2252  		yyDollar = yyS[yypt-7 : yypt+1]
  2253  		//line go.y:1067
  2254  		{
  2255  			Yyerror("cannot parenthesize type in composite literal")
  2256  			yyVAL.node = yyDollar[5].node
  2257  			yyVAL.node.Right = yyDollar[2].node
  2258  			yyVAL.node.List = yyDollar[6].list
  2259  		}
  2260  	case 140:
  2261  		yyDollar = yyS[yypt-0 : yypt+1]
  2262  		//line go.y:1076
  2263  		{
  2264  			// composite expression.
  2265  			// make node early so we get the right line number.
  2266  			yyVAL.node = Nod(OCOMPLIT, nil, nil)
  2267  		}
  2268  	case 141:
  2269  		yyDollar = yyS[yypt-3 : yypt+1]
  2270  		//line go.y:1084
  2271  		{
  2272  			yyVAL.node = Nod(OKEY, yyDollar[1].node, yyDollar[3].node)
  2273  		}
  2274  	case 142:
  2275  		yyDollar = yyS[yypt-1 : yypt+1]
  2276  		//line go.y:1090
  2277  		{
  2278  			// These nodes do not carry line numbers.
  2279  			// Since a composite literal commonly spans several lines,
  2280  			// the line number on errors may be misleading.
  2281  			// Introduce a wrapper node to give the correct line.
  2282  			yyVAL.node = yyDollar[1].node
  2283  			switch yyVAL.node.Op {
  2284  			case ONAME, ONONAME, OTYPE, OPACK, OLITERAL:
  2285  				yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
  2286  				yyVAL.node.Implicit = true
  2287  			}
  2288  		}
  2289  	case 143:
  2290  		yyDollar = yyS[yypt-4 : yypt+1]
  2291  		//line go.y:1103
  2292  		{
  2293  			yyVAL.node = yyDollar[2].node
  2294  			yyVAL.node.List = yyDollar[3].list
  2295  		}
  2296  	case 145:
  2297  		yyDollar = yyS[yypt-4 : yypt+1]
  2298  		//line go.y:1111
  2299  		{
  2300  			yyVAL.node = yyDollar[2].node
  2301  			yyVAL.node.List = yyDollar[3].list
  2302  		}
  2303  	case 147:
  2304  		yyDollar = yyS[yypt-3 : yypt+1]
  2305  		//line go.y:1119
  2306  		{
  2307  			yyVAL.node = yyDollar[2].node
  2308  
  2309  			// Need to know on lhs of := whether there are ( ).
  2310  			// Don't bother with the OPAREN in other cases:
  2311  			// it's just a waste of memory and time.
  2312  			switch yyVAL.node.Op {
  2313  			case ONAME, ONONAME, OPACK, OTYPE, OLITERAL, OTYPESW:
  2314  				yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
  2315  			}
  2316  		}
  2317  	case 151:
  2318  		yyDollar = yyS[yypt-1 : yypt+1]
  2319  		//line go.y:1140
  2320  		{
  2321  			yyVAL.i = LBODY
  2322  		}
  2323  	case 152:
  2324  		yyDollar = yyS[yypt-1 : yypt+1]
  2325  		//line go.y:1144
  2326  		{
  2327  			yyVAL.i = '{'
  2328  		}
  2329  	case 153:
  2330  		yyDollar = yyS[yypt-1 : yypt+1]
  2331  		//line go.y:1155
  2332  		{
  2333  			if yyDollar[1].sym == nil {
  2334  				yyVAL.node = nil
  2335  			} else {
  2336  				yyVAL.node = newname(yyDollar[1].sym)
  2337  			}
  2338  		}
  2339  	case 154:
  2340  		yyDollar = yyS[yypt-1 : yypt+1]
  2341  		//line go.y:1165
  2342  		{
  2343  			yyVAL.node = dclname(yyDollar[1].sym)
  2344  		}
  2345  	case 155:
  2346  		yyDollar = yyS[yypt-0 : yypt+1]
  2347  		//line go.y:1170
  2348  		{
  2349  			yyVAL.node = nil
  2350  		}
  2351  	case 157:
  2352  		yyDollar = yyS[yypt-1 : yypt+1]
  2353  		//line go.y:1177
  2354  		{
  2355  			yyVAL.sym = yyDollar[1].sym
  2356  			// during imports, unqualified non-exported identifiers are from builtinpkg
  2357  			if importpkg != nil && !exportname(yyDollar[1].sym.Name) {
  2358  				yyVAL.sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
  2359  			}
  2360  		}
  2361  	case 159:
  2362  		yyDollar = yyS[yypt-1 : yypt+1]
  2363  		//line go.y:1186
  2364  		{
  2365  			yyVAL.sym = nil
  2366  		}
  2367  	case 160:
  2368  		yyDollar = yyS[yypt-4 : yypt+1]
  2369  		//line go.y:1192
  2370  		{
  2371  			var p *Pkg
  2372  
  2373  			if yyDollar[2].val.U.(string) == "" {
  2374  				p = importpkg
  2375  			} else {
  2376  				if isbadimport(yyDollar[2].val.U.(string)) {
  2377  					errorexit()
  2378  				}
  2379  				p = mkpkg(yyDollar[2].val.U.(string))
  2380  			}
  2381  			yyVAL.sym = Pkglookup(yyDollar[4].sym.Name, p)
  2382  		}
  2383  	case 161:
  2384  		yyDollar = yyS[yypt-4 : yypt+1]
  2385  		//line go.y:1206
  2386  		{
  2387  			var p *Pkg
  2388  
  2389  			if yyDollar[2].val.U.(string) == "" {
  2390  				p = importpkg
  2391  			} else {
  2392  				if isbadimport(yyDollar[2].val.U.(string)) {
  2393  					errorexit()
  2394  				}
  2395  				p = mkpkg(yyDollar[2].val.U.(string))
  2396  			}
  2397  			yyVAL.sym = Pkglookup("?", p)
  2398  		}
  2399  	case 162:
  2400  		yyDollar = yyS[yypt-1 : yypt+1]
  2401  		//line go.y:1222
  2402  		{
  2403  			yyVAL.node = oldname(yyDollar[1].sym)
  2404  			if yyVAL.node.Name != nil && yyVAL.node.Name.Pack != nil {
  2405  				yyVAL.node.Name.Pack.Used = true
  2406  			}
  2407  		}
  2408  	case 164:
  2409  		yyDollar = yyS[yypt-1 : yypt+1]
  2410  		//line go.y:1243
  2411  		{
  2412  			Yyerror("final argument in variadic function missing type")
  2413  			yyVAL.node = Nod(ODDD, typenod(typ(TINTER)), nil)
  2414  		}
  2415  	case 165:
  2416  		yyDollar = yyS[yypt-2 : yypt+1]
  2417  		//line go.y:1248
  2418  		{
  2419  			yyVAL.node = Nod(ODDD, yyDollar[2].node, nil)
  2420  		}
  2421  	case 171:
  2422  		yyDollar = yyS[yypt-3 : yypt+1]
  2423  		//line go.y:1259
  2424  		{
  2425  			yyVAL.node = yyDollar[2].node
  2426  		}
  2427  	case 175:
  2428  		yyDollar = yyS[yypt-2 : yypt+1]
  2429  		//line go.y:1268
  2430  		{
  2431  			yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
  2432  		}
  2433  	case 180:
  2434  		yyDollar = yyS[yypt-3 : yypt+1]
  2435  		//line go.y:1278
  2436  		{
  2437  			yyVAL.node = yyDollar[2].node
  2438  		}
  2439  	case 190:
  2440  		yyDollar = yyS[yypt-3 : yypt+1]
  2441  		//line go.y:1299
  2442  		{
  2443  			if yyDollar[1].node.Op == OPACK {
  2444  				var s *Sym
  2445  				s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Name.Pkg)
  2446  				yyDollar[1].node.Used = true
  2447  				yyVAL.node = oldname(s)
  2448  				break
  2449  			}
  2450  			yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym))
  2451  		}
  2452  	case 191:
  2453  		yyDollar = yyS[yypt-4 : yypt+1]
  2454  		//line go.y:1312
  2455  		{
  2456  			yyVAL.node = Nod(OTARRAY, yyDollar[2].node, yyDollar[4].node)
  2457  		}
  2458  	case 192:
  2459  		yyDollar = yyS[yypt-4 : yypt+1]
  2460  		//line go.y:1316
  2461  		{
  2462  			// array literal of nelem
  2463  			yyVAL.node = Nod(OTARRAY, Nod(ODDD, nil, nil), yyDollar[4].node)
  2464  		}
  2465  	case 193:
  2466  		yyDollar = yyS[yypt-2 : yypt+1]
  2467  		//line go.y:1321
  2468  		{
  2469  			yyVAL.node = Nod(OTCHAN, yyDollar[2].node, nil)
  2470  			yyVAL.node.Etype = Cboth
  2471  		}
  2472  	case 194:
  2473  		yyDollar = yyS[yypt-3 : yypt+1]
  2474  		//line go.y:1326
  2475  		{
  2476  			yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
  2477  			yyVAL.node.Etype = Csend
  2478  		}
  2479  	case 195:
  2480  		yyDollar = yyS[yypt-5 : yypt+1]
  2481  		//line go.y:1331
  2482  		{
  2483  			yyVAL.node = Nod(OTMAP, yyDollar[3].node, yyDollar[5].node)
  2484  		}
  2485  	case 198:
  2486  		yyDollar = yyS[yypt-2 : yypt+1]
  2487  		//line go.y:1339
  2488  		{
  2489  			yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
  2490  		}
  2491  	case 199:
  2492  		yyDollar = yyS[yypt-3 : yypt+1]
  2493  		//line go.y:1345
  2494  		{
  2495  			yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
  2496  			yyVAL.node.Etype = Crecv
  2497  		}
  2498  	case 200:
  2499  		yyDollar = yyS[yypt-5 : yypt+1]
  2500  		//line go.y:1352
  2501  		{
  2502  			yyVAL.node = Nod(OTSTRUCT, nil, nil)
  2503  			yyVAL.node.List = yyDollar[3].list
  2504  			fixlbrace(yyDollar[2].i)
  2505  		}
  2506  	case 201:
  2507  		yyDollar = yyS[yypt-3 : yypt+1]
  2508  		//line go.y:1358
  2509  		{
  2510  			yyVAL.node = Nod(OTSTRUCT, nil, nil)
  2511  			fixlbrace(yyDollar[2].i)
  2512  		}
  2513  	case 202:
  2514  		yyDollar = yyS[yypt-5 : yypt+1]
  2515  		//line go.y:1365
  2516  		{
  2517  			yyVAL.node = Nod(OTINTER, nil, nil)
  2518  			yyVAL.node.List = yyDollar[3].list
  2519  			fixlbrace(yyDollar[2].i)
  2520  		}
  2521  	case 203:
  2522  		yyDollar = yyS[yypt-3 : yypt+1]
  2523  		//line go.y:1371
  2524  		{
  2525  			yyVAL.node = Nod(OTINTER, nil, nil)
  2526  			fixlbrace(yyDollar[2].i)
  2527  		}
  2528  	case 204:
  2529  		yyDollar = yyS[yypt-3 : yypt+1]
  2530  		//line go.y:1382
  2531  		{
  2532  			yyVAL.node = yyDollar[2].node
  2533  			if yyVAL.node == nil {
  2534  				break
  2535  			}
  2536  			if noescape && yyDollar[3].list != nil {
  2537  				Yyerror("can only use //go:noescape with external func implementations")
  2538  			}
  2539  			yyVAL.node.Nbody = yyDollar[3].list
  2540  			yyVAL.node.Func.Endlineno = lineno
  2541  			yyVAL.node.Noescape = noescape
  2542  			yyVAL.node.Func.Norace = norace
  2543  			yyVAL.node.Func.Nosplit = nosplit
  2544  			yyVAL.node.Func.Nowritebarrier = nowritebarrier
  2545  			yyVAL.node.Func.Systemstack = systemstack
  2546  			funcbody(yyVAL.node)
  2547  		}
  2548  	case 205:
  2549  		yyDollar = yyS[yypt-5 : yypt+1]
  2550  		//line go.y:1402
  2551  		{
  2552  			var t *Node
  2553  
  2554  			yyVAL.node = nil
  2555  			yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
  2556  
  2557  			if yyDollar[1].sym.Name == "init" {
  2558  				yyDollar[1].sym = renameinit()
  2559  				if yyDollar[3].list != nil || yyDollar[5].list != nil {
  2560  					Yyerror("func init must have no arguments and no return values")
  2561  				}
  2562  			}
  2563  			if localpkg.Name == "main" && yyDollar[1].sym.Name == "main" {
  2564  				if yyDollar[3].list != nil || yyDollar[5].list != nil {
  2565  					Yyerror("func main must have no arguments and no return values")
  2566  				}
  2567  			}
  2568  
  2569  			t = Nod(OTFUNC, nil, nil)
  2570  			t.List = yyDollar[3].list
  2571  			t.Rlist = yyDollar[5].list
  2572  
  2573  			yyVAL.node = Nod(ODCLFUNC, nil, nil)
  2574  			yyVAL.node.Func.Nname = newfuncname(yyDollar[1].sym)
  2575  			yyVAL.node.Func.Nname.Name.Defn = yyVAL.node
  2576  			yyVAL.node.Func.Nname.Name.Param.Ntype = t // TODO: check if nname already has an ntype
  2577  			declare(yyVAL.node.Func.Nname, PFUNC)
  2578  
  2579  			funchdr(yyVAL.node)
  2580  		}
  2581  	case 206:
  2582  		yyDollar = yyS[yypt-8 : yypt+1]
  2583  		//line go.y:1433
  2584  		{
  2585  			var rcvr, t *Node
  2586  
  2587  			yyVAL.node = nil
  2588  			yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
  2589  			yyDollar[6].list = checkarglist(yyDollar[6].list, 1)
  2590  
  2591  			if yyDollar[2].list == nil {
  2592  				Yyerror("method has no receiver")
  2593  				break
  2594  			}
  2595  			if yyDollar[2].list.Next != nil {
  2596  				Yyerror("method has multiple receivers")
  2597  				break
  2598  			}
  2599  			rcvr = yyDollar[2].list.N
  2600  			if rcvr.Op != ODCLFIELD {
  2601  				Yyerror("bad receiver in method")
  2602  				break
  2603  			}
  2604  
  2605  			t = Nod(OTFUNC, rcvr, nil)
  2606  			t.List = yyDollar[6].list
  2607  			t.Rlist = yyDollar[8].list
  2608  
  2609  			yyVAL.node = Nod(ODCLFUNC, nil, nil)
  2610  			yyVAL.node.Func.Shortname = newfuncname(yyDollar[4].sym)
  2611  			yyVAL.node.Func.Nname = methodname1(yyVAL.node.Func.Shortname, rcvr.Right)
  2612  			yyVAL.node.Func.Nname.Name.Defn = yyVAL.node
  2613  			yyVAL.node.Func.Nname.Name.Param.Ntype = t
  2614  			yyVAL.node.Func.Nname.Nointerface = nointerface
  2615  			declare(yyVAL.node.Func.Nname, PFUNC)
  2616  
  2617  			funchdr(yyVAL.node)
  2618  		}
  2619  	case 207:
  2620  		yyDollar = yyS[yypt-5 : yypt+1]
  2621  		//line go.y:1471
  2622  		{
  2623  			var s *Sym
  2624  			var t *Type
  2625  
  2626  			yyVAL.node = nil
  2627  
  2628  			s = yyDollar[1].sym
  2629  			t = functype(nil, yyDollar[3].list, yyDollar[5].list)
  2630  
  2631  			importsym(s, ONAME)
  2632  			if s.Def != nil && s.Def.Op == ONAME {
  2633  				if Eqtype(t, s.Def.Type) {
  2634  					dclcontext = PDISCARD // since we skip funchdr below
  2635  					break
  2636  				}
  2637  				Yyerror("inconsistent definition for func %v during import\n\t%v\n\t%v", s, s.Def.Type, t)
  2638  			}
  2639  
  2640  			yyVAL.node = newfuncname(s)
  2641  			yyVAL.node.Type = t
  2642  			declare(yyVAL.node, PFUNC)
  2643  
  2644  			funchdr(yyVAL.node)
  2645  		}
  2646  	case 208:
  2647  		yyDollar = yyS[yypt-8 : yypt+1]
  2648  		//line go.y:1496
  2649  		{
  2650  			yyVAL.node = methodname1(newname(yyDollar[4].sym), yyDollar[2].list.N.Right)
  2651  			yyVAL.node.Type = functype(yyDollar[2].list.N, yyDollar[6].list, yyDollar[8].list)
  2652  
  2653  			checkwidth(yyVAL.node.Type)
  2654  			addmethod(yyDollar[4].sym, yyVAL.node.Type, false, nointerface)
  2655  			nointerface = false
  2656  			funchdr(yyVAL.node)
  2657  
  2658  			// inl.C's inlnode in on a dotmeth node expects to find the inlineable body as
  2659  			// (dotmeth's type).Nname.Inl, and dotmeth's type has been pulled
  2660  			// out by typecheck's lookdot as this $$.ttype.  So by providing
  2661  			// this back link here we avoid special casing there.
  2662  			yyVAL.node.Type.Nname = yyVAL.node
  2663  		}
  2664  	case 209:
  2665  		yyDollar = yyS[yypt-5 : yypt+1]
  2666  		//line go.y:1514
  2667  		{
  2668  			yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
  2669  			yyVAL.node = Nod(OTFUNC, nil, nil)
  2670  			yyVAL.node.List = yyDollar[3].list
  2671  			yyVAL.node.Rlist = yyDollar[5].list
  2672  		}
  2673  	case 210:
  2674  		yyDollar = yyS[yypt-0 : yypt+1]
  2675  		//line go.y:1522
  2676  		{
  2677  			yyVAL.list = nil
  2678  		}
  2679  	case 211:
  2680  		yyDollar = yyS[yypt-3 : yypt+1]
  2681  		//line go.y:1526
  2682  		{
  2683  			yyVAL.list = yyDollar[2].list
  2684  			if yyVAL.list == nil {
  2685  				yyVAL.list = list1(Nod(OEMPTY, nil, nil))
  2686  			}
  2687  		}
  2688  	case 212:
  2689  		yyDollar = yyS[yypt-0 : yypt+1]
  2690  		//line go.y:1535
  2691  		{
  2692  			yyVAL.list = nil
  2693  		}
  2694  	case 213:
  2695  		yyDollar = yyS[yypt-1 : yypt+1]
  2696  		//line go.y:1539
  2697  		{
  2698  			yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node))
  2699  		}
  2700  	case 214:
  2701  		yyDollar = yyS[yypt-3 : yypt+1]
  2702  		//line go.y:1543
  2703  		{
  2704  			yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
  2705  			yyVAL.list = yyDollar[2].list
  2706  		}
  2707  	case 215:
  2708  		yyDollar = yyS[yypt-1 : yypt+1]
  2709  		//line go.y:1550
  2710  		{
  2711  			closurehdr(yyDollar[1].node)
  2712  		}
  2713  	case 216:
  2714  		yyDollar = yyS[yypt-4 : yypt+1]
  2715  		//line go.y:1556
  2716  		{
  2717  			yyVAL.node = closurebody(yyDollar[3].list)
  2718  			fixlbrace(yyDollar[2].i)
  2719  		}
  2720  	case 217:
  2721  		yyDollar = yyS[yypt-2 : yypt+1]
  2722  		//line go.y:1561
  2723  		{
  2724  			yyVAL.node = closurebody(nil)
  2725  		}
  2726  	case 218:
  2727  		yyDollar = yyS[yypt-0 : yypt+1]
  2728  		//line go.y:1572
  2729  		{
  2730  			yyVAL.list = nil
  2731  		}
  2732  	case 219:
  2733  		yyDollar = yyS[yypt-3 : yypt+1]
  2734  		//line go.y:1576
  2735  		{
  2736  			yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
  2737  			if nsyntaxerrors == 0 {
  2738  				testdclstack()
  2739  			}
  2740  			nointerface = false
  2741  			noescape = false
  2742  			norace = false
  2743  			nosplit = false
  2744  			nowritebarrier = false
  2745  			systemstack = false
  2746  		}
  2747  	case 221:
  2748  		yyDollar = yyS[yypt-3 : yypt+1]
  2749  		//line go.y:1592
  2750  		{
  2751  			yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
  2752  		}
  2753  	case 223:
  2754  		yyDollar = yyS[yypt-3 : yypt+1]
  2755  		//line go.y:1599
  2756  		{
  2757  			yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
  2758  		}
  2759  	case 224:
  2760  		yyDollar = yyS[yypt-1 : yypt+1]
  2761  		//line go.y:1605
  2762  		{
  2763  			yyVAL.list = list1(yyDollar[1].node)
  2764  		}
  2765  	case 225:
  2766  		yyDollar = yyS[yypt-3 : yypt+1]
  2767  		//line go.y:1609
  2768  		{
  2769  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  2770  		}
  2771  	case 227:
  2772  		yyDollar = yyS[yypt-3 : yypt+1]
  2773  		//line go.y:1616
  2774  		{
  2775  			yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
  2776  		}
  2777  	case 228:
  2778  		yyDollar = yyS[yypt-1 : yypt+1]
  2779  		//line go.y:1622
  2780  		{
  2781  			yyVAL.list = list1(yyDollar[1].node)
  2782  		}
  2783  	case 229:
  2784  		yyDollar = yyS[yypt-3 : yypt+1]
  2785  		//line go.y:1626
  2786  		{
  2787  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  2788  		}
  2789  	case 230:
  2790  		yyDollar = yyS[yypt-3 : yypt+1]
  2791  		//line go.y:1632
  2792  		{
  2793  			var l *NodeList
  2794  
  2795  			var n *Node
  2796  			l = yyDollar[1].list
  2797  			if l == nil || l.N.Sym.Name == "?" {
  2798  				// ? symbol, during import (list1(nil) == nil)
  2799  				n = yyDollar[2].node
  2800  				if n.Op == OIND {
  2801  					n = n.Left
  2802  				}
  2803  				n = embedded(n.Sym, importpkg)
  2804  				n.Right = yyDollar[2].node
  2805  				n.SetVal(yyDollar[3].val)
  2806  				yyVAL.list = list1(n)
  2807  				break
  2808  			}
  2809  
  2810  			for l = yyDollar[1].list; l != nil; l = l.Next {
  2811  				l.N = Nod(ODCLFIELD, l.N, yyDollar[2].node)
  2812  				l.N.SetVal(yyDollar[3].val)
  2813  			}
  2814  		}
  2815  	case 231:
  2816  		yyDollar = yyS[yypt-2 : yypt+1]
  2817  		//line go.y:1656
  2818  		{
  2819  			yyDollar[1].node.SetVal(yyDollar[2].val)
  2820  			yyVAL.list = list1(yyDollar[1].node)
  2821  		}
  2822  	case 232:
  2823  		yyDollar = yyS[yypt-4 : yypt+1]
  2824  		//line go.y:1661
  2825  		{
  2826  			yyDollar[2].node.SetVal(yyDollar[4].val)
  2827  			yyVAL.list = list1(yyDollar[2].node)
  2828  			Yyerror("cannot parenthesize embedded type")
  2829  		}
  2830  	case 233:
  2831  		yyDollar = yyS[yypt-3 : yypt+1]
  2832  		//line go.y:1667
  2833  		{
  2834  			yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil)
  2835  			yyDollar[2].node.SetVal(yyDollar[3].val)
  2836  			yyVAL.list = list1(yyDollar[2].node)
  2837  		}
  2838  	case 234:
  2839  		yyDollar = yyS[yypt-5 : yypt+1]
  2840  		//line go.y:1673
  2841  		{
  2842  			yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
  2843  			yyDollar[3].node.SetVal(yyDollar[5].val)
  2844  			yyVAL.list = list1(yyDollar[3].node)
  2845  			Yyerror("cannot parenthesize embedded type")
  2846  		}
  2847  	case 235:
  2848  		yyDollar = yyS[yypt-5 : yypt+1]
  2849  		//line go.y:1680
  2850  		{
  2851  			yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
  2852  			yyDollar[3].node.SetVal(yyDollar[5].val)
  2853  			yyVAL.list = list1(yyDollar[3].node)
  2854  			Yyerror("cannot parenthesize embedded type")
  2855  		}
  2856  	case 236:
  2857  		yyDollar = yyS[yypt-1 : yypt+1]
  2858  		//line go.y:1689
  2859  		{
  2860  			var n *Node
  2861  
  2862  			yyVAL.sym = yyDollar[1].sym
  2863  			n = oldname(yyDollar[1].sym)
  2864  			if n.Name != nil && n.Name.Pack != nil {
  2865  				n.Name.Pack.Used = true
  2866  			}
  2867  		}
  2868  	case 237:
  2869  		yyDollar = yyS[yypt-3 : yypt+1]
  2870  		//line go.y:1699
  2871  		{
  2872  			var pkg *Pkg
  2873  
  2874  			if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OPACK {
  2875  				Yyerror("%v is not a package", yyDollar[1].sym)
  2876  				pkg = localpkg
  2877  			} else {
  2878  				yyDollar[1].sym.Def.Used = true
  2879  				pkg = yyDollar[1].sym.Def.Name.Pkg
  2880  			}
  2881  			yyVAL.sym = restrictlookup(yyDollar[3].sym.Name, pkg)
  2882  		}
  2883  	case 238:
  2884  		yyDollar = yyS[yypt-1 : yypt+1]
  2885  		//line go.y:1714
  2886  		{
  2887  			yyVAL.node = embedded(yyDollar[1].sym, localpkg)
  2888  		}
  2889  	case 239:
  2890  		yyDollar = yyS[yypt-2 : yypt+1]
  2891  		//line go.y:1720
  2892  		{
  2893  			yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node)
  2894  			ifacedcl(yyVAL.node)
  2895  		}
  2896  	case 240:
  2897  		yyDollar = yyS[yypt-1 : yypt+1]
  2898  		//line go.y:1725
  2899  		{
  2900  			yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym))
  2901  		}
  2902  	case 241:
  2903  		yyDollar = yyS[yypt-3 : yypt+1]
  2904  		//line go.y:1729
  2905  		{
  2906  			yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[2].sym))
  2907  			Yyerror("cannot parenthesize embedded type")
  2908  		}
  2909  	case 242:
  2910  		yyDollar = yyS[yypt-4 : yypt+1]
  2911  		//line go.y:1736
  2912  		{
  2913  			// without func keyword
  2914  			yyDollar[2].list = checkarglist(yyDollar[2].list, 1)
  2915  			yyVAL.node = Nod(OTFUNC, fakethis(), nil)
  2916  			yyVAL.node.List = yyDollar[2].list
  2917  			yyVAL.node.Rlist = yyDollar[4].list
  2918  		}
  2919  	case 244:
  2920  		yyDollar = yyS[yypt-2 : yypt+1]
  2921  		//line go.y:1750
  2922  		{
  2923  			yyVAL.node = Nod(ONONAME, nil, nil)
  2924  			yyVAL.node.Sym = yyDollar[1].sym
  2925  			yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node)
  2926  		}
  2927  	case 245:
  2928  		yyDollar = yyS[yypt-2 : yypt+1]
  2929  		//line go.y:1756
  2930  		{
  2931  			yyVAL.node = Nod(ONONAME, nil, nil)
  2932  			yyVAL.node.Sym = yyDollar[1].sym
  2933  			yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node)
  2934  		}
  2935  	case 247:
  2936  		yyDollar = yyS[yypt-1 : yypt+1]
  2937  		//line go.y:1765
  2938  		{
  2939  			yyVAL.list = list1(yyDollar[1].node)
  2940  		}
  2941  	case 248:
  2942  		yyDollar = yyS[yypt-3 : yypt+1]
  2943  		//line go.y:1769
  2944  		{
  2945  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  2946  		}
  2947  	case 249:
  2948  		yyDollar = yyS[yypt-0 : yypt+1]
  2949  		//line go.y:1774
  2950  		{
  2951  			yyVAL.list = nil
  2952  		}
  2953  	case 250:
  2954  		yyDollar = yyS[yypt-2 : yypt+1]
  2955  		//line go.y:1778
  2956  		{
  2957  			yyVAL.list = yyDollar[1].list
  2958  		}
  2959  	case 251:
  2960  		yyDollar = yyS[yypt-0 : yypt+1]
  2961  		//line go.y:1786
  2962  		{
  2963  			yyVAL.node = nil
  2964  		}
  2965  	case 253:
  2966  		yyDollar = yyS[yypt-1 : yypt+1]
  2967  		//line go.y:1791
  2968  		{
  2969  			yyVAL.node = liststmt(yyDollar[1].list)
  2970  		}
  2971  	case 255:
  2972  		yyDollar = yyS[yypt-1 : yypt+1]
  2973  		//line go.y:1796
  2974  		{
  2975  			yyVAL.node = nil
  2976  		}
  2977  	case 261:
  2978  		yyDollar = yyS[yypt-2 : yypt+1]
  2979  		//line go.y:1807
  2980  		{
  2981  			yyDollar[1].node = Nod(OLABEL, yyDollar[1].node, nil)
  2982  			yyDollar[1].node.Sym = dclstack // context, for goto restrictions
  2983  		}
  2984  	case 262:
  2985  		yyDollar = yyS[yypt-4 : yypt+1]
  2986  		//line go.y:1812
  2987  		{
  2988  			var l *NodeList
  2989  
  2990  			yyDollar[1].node.Name.Defn = yyDollar[4].node
  2991  			l = list1(yyDollar[1].node)
  2992  			if yyDollar[4].node != nil {
  2993  				l = list(l, yyDollar[4].node)
  2994  			}
  2995  			yyVAL.node = liststmt(l)
  2996  		}
  2997  	case 263:
  2998  		yyDollar = yyS[yypt-1 : yypt+1]
  2999  		//line go.y:1823
  3000  		{
  3001  			// will be converted to OFALL
  3002  			yyVAL.node = Nod(OXFALL, nil, nil)
  3003  			yyVAL.node.Xoffset = int64(block)
  3004  		}
  3005  	case 264:
  3006  		yyDollar = yyS[yypt-2 : yypt+1]
  3007  		//line go.y:1829
  3008  		{
  3009  			yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil)
  3010  		}
  3011  	case 265:
  3012  		yyDollar = yyS[yypt-2 : yypt+1]
  3013  		//line go.y:1833
  3014  		{
  3015  			yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil)
  3016  		}
  3017  	case 266:
  3018  		yyDollar = yyS[yypt-2 : yypt+1]
  3019  		//line go.y:1837
  3020  		{
  3021  			yyVAL.node = Nod(OPROC, yyDollar[2].node, nil)
  3022  		}
  3023  	case 267:
  3024  		yyDollar = yyS[yypt-2 : yypt+1]
  3025  		//line go.y:1841
  3026  		{
  3027  			yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil)
  3028  		}
  3029  	case 268:
  3030  		yyDollar = yyS[yypt-2 : yypt+1]
  3031  		//line go.y:1845
  3032  		{
  3033  			yyVAL.node = Nod(OGOTO, yyDollar[2].node, nil)
  3034  			yyVAL.node.Sym = dclstack // context, for goto restrictions
  3035  		}
  3036  	case 269:
  3037  		yyDollar = yyS[yypt-2 : yypt+1]
  3038  		//line go.y:1850
  3039  		{
  3040  			yyVAL.node = Nod(ORETURN, nil, nil)
  3041  			yyVAL.node.List = yyDollar[2].list
  3042  			if yyVAL.node.List == nil && Curfn != nil {
  3043  				var l *NodeList
  3044  
  3045  				for l = Curfn.Func.Dcl; l != nil; l = l.Next {
  3046  					if l.N.Class == PPARAM {
  3047  						continue
  3048  					}
  3049  					if l.N.Class != PPARAMOUT {
  3050  						break
  3051  					}
  3052  					if l.N.Sym.Def != l.N {
  3053  						Yyerror("%s is shadowed during return", l.N.Sym.Name)
  3054  					}
  3055  				}
  3056  			}
  3057  		}
  3058  	case 270:
  3059  		yyDollar = yyS[yypt-1 : yypt+1]
  3060  		//line go.y:1872
  3061  		{
  3062  			yyVAL.list = nil
  3063  			if yyDollar[1].node != nil {
  3064  				yyVAL.list = list1(yyDollar[1].node)
  3065  			}
  3066  		}
  3067  	case 271:
  3068  		yyDollar = yyS[yypt-3 : yypt+1]
  3069  		//line go.y:1879
  3070  		{
  3071  			yyVAL.list = yyDollar[1].list
  3072  			if yyDollar[3].node != nil {
  3073  				yyVAL.list = list(yyVAL.list, yyDollar[3].node)
  3074  			}
  3075  		}
  3076  	case 272:
  3077  		yyDollar = yyS[yypt-1 : yypt+1]
  3078  		//line go.y:1888
  3079  		{
  3080  			yyVAL.list = list1(yyDollar[1].node)
  3081  		}
  3082  	case 273:
  3083  		yyDollar = yyS[yypt-3 : yypt+1]
  3084  		//line go.y:1892
  3085  		{
  3086  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3087  		}
  3088  	case 274:
  3089  		yyDollar = yyS[yypt-1 : yypt+1]
  3090  		//line go.y:1898
  3091  		{
  3092  			yyVAL.list = list1(yyDollar[1].node)
  3093  		}
  3094  	case 275:
  3095  		yyDollar = yyS[yypt-3 : yypt+1]
  3096  		//line go.y:1902
  3097  		{
  3098  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3099  		}
  3100  	case 276:
  3101  		yyDollar = yyS[yypt-1 : yypt+1]
  3102  		//line go.y:1908
  3103  		{
  3104  			yyVAL.list = list1(yyDollar[1].node)
  3105  		}
  3106  	case 277:
  3107  		yyDollar = yyS[yypt-3 : yypt+1]
  3108  		//line go.y:1912
  3109  		{
  3110  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3111  		}
  3112  	case 278:
  3113  		yyDollar = yyS[yypt-1 : yypt+1]
  3114  		//line go.y:1918
  3115  		{
  3116  			yyVAL.list = list1(yyDollar[1].node)
  3117  		}
  3118  	case 279:
  3119  		yyDollar = yyS[yypt-3 : yypt+1]
  3120  		//line go.y:1922
  3121  		{
  3122  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3123  		}
  3124  	case 280:
  3125  		yyDollar = yyS[yypt-1 : yypt+1]
  3126  		//line go.y:1931
  3127  		{
  3128  			yyVAL.list = list1(yyDollar[1].node)
  3129  		}
  3130  	case 281:
  3131  		yyDollar = yyS[yypt-1 : yypt+1]
  3132  		//line go.y:1935
  3133  		{
  3134  			yyVAL.list = list1(yyDollar[1].node)
  3135  		}
  3136  	case 282:
  3137  		yyDollar = yyS[yypt-3 : yypt+1]
  3138  		//line go.y:1939
  3139  		{
  3140  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3141  		}
  3142  	case 283:
  3143  		yyDollar = yyS[yypt-3 : yypt+1]
  3144  		//line go.y:1943
  3145  		{
  3146  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3147  		}
  3148  	case 284:
  3149  		yyDollar = yyS[yypt-0 : yypt+1]
  3150  		//line go.y:1948
  3151  		{
  3152  			yyVAL.list = nil
  3153  		}
  3154  	case 285:
  3155  		yyDollar = yyS[yypt-2 : yypt+1]
  3156  		//line go.y:1952
  3157  		{
  3158  			yyVAL.list = yyDollar[1].list
  3159  		}
  3160  	case 290:
  3161  		yyDollar = yyS[yypt-0 : yypt+1]
  3162  		//line go.y:1966
  3163  		{
  3164  			yyVAL.node = nil
  3165  		}
  3166  	case 292:
  3167  		yyDollar = yyS[yypt-0 : yypt+1]
  3168  		//line go.y:1972
  3169  		{
  3170  			yyVAL.list = nil
  3171  		}
  3172  	case 294:
  3173  		yyDollar = yyS[yypt-0 : yypt+1]
  3174  		//line go.y:1978
  3175  		{
  3176  			yyVAL.node = nil
  3177  		}
  3178  	case 296:
  3179  		yyDollar = yyS[yypt-0 : yypt+1]
  3180  		//line go.y:1984
  3181  		{
  3182  			yyVAL.list = nil
  3183  		}
  3184  	case 298:
  3185  		yyDollar = yyS[yypt-0 : yypt+1]
  3186  		//line go.y:1990
  3187  		{
  3188  			yyVAL.list = nil
  3189  		}
  3190  	case 300:
  3191  		yyDollar = yyS[yypt-0 : yypt+1]
  3192  		//line go.y:1996
  3193  		{
  3194  			yyVAL.list = nil
  3195  		}
  3196  	case 302:
  3197  		yyDollar = yyS[yypt-0 : yypt+1]
  3198  		//line go.y:2002
  3199  		{
  3200  			yyVAL.val.U = nil
  3201  		}
  3202  	case 304:
  3203  		yyDollar = yyS[yypt-4 : yypt+1]
  3204  		//line go.y:2012
  3205  		{
  3206  			importimport(yyDollar[2].sym, yyDollar[3].val.U.(string))
  3207  		}
  3208  	case 305:
  3209  		yyDollar = yyS[yypt-4 : yypt+1]
  3210  		//line go.y:2016
  3211  		{
  3212  			importvar(yyDollar[2].sym, yyDollar[3].typ)
  3213  		}
  3214  	case 306:
  3215  		yyDollar = yyS[yypt-5 : yypt+1]
  3216  		//line go.y:2020
  3217  		{
  3218  			importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node)
  3219  		}
  3220  	case 307:
  3221  		yyDollar = yyS[yypt-6 : yypt+1]
  3222  		//line go.y:2024
  3223  		{
  3224  			importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node)
  3225  		}
  3226  	case 308:
  3227  		yyDollar = yyS[yypt-4 : yypt+1]
  3228  		//line go.y:2028
  3229  		{
  3230  			importtype(yyDollar[2].typ, yyDollar[3].typ)
  3231  		}
  3232  	case 309:
  3233  		yyDollar = yyS[yypt-4 : yypt+1]
  3234  		//line go.y:2032
  3235  		{
  3236  			if yyDollar[2].node == nil {
  3237  				dclcontext = PEXTERN // since we skip the funcbody below
  3238  				break
  3239  			}
  3240  
  3241  			yyDollar[2].node.Func.Inl = yyDollar[3].list
  3242  
  3243  			funcbody(yyDollar[2].node)
  3244  			importlist = append(importlist, yyDollar[2].node)
  3245  
  3246  			if Debug['E'] > 0 {
  3247  				fmt.Printf("import [%q] func %v \n", importpkg.Path, yyDollar[2].node)
  3248  				if Debug['m'] > 2 && yyDollar[2].node.Func.Inl != nil {
  3249  					fmt.Printf("inl body:%v\n", yyDollar[2].node.Func.Inl)
  3250  				}
  3251  			}
  3252  		}
  3253  	case 310:
  3254  		yyDollar = yyS[yypt-1 : yypt+1]
  3255  		//line go.y:2053
  3256  		{
  3257  			yyVAL.sym = yyDollar[1].sym
  3258  			structpkg = yyVAL.sym.Pkg
  3259  		}
  3260  	case 311:
  3261  		yyDollar = yyS[yypt-1 : yypt+1]
  3262  		//line go.y:2060
  3263  		{
  3264  			yyVAL.typ = pkgtype(yyDollar[1].sym)
  3265  			importsym(yyDollar[1].sym, OTYPE)
  3266  		}
  3267  	case 317:
  3268  		yyDollar = yyS[yypt-1 : yypt+1]
  3269  		//line go.y:2080
  3270  		{
  3271  			yyVAL.typ = pkgtype(yyDollar[1].sym)
  3272  		}
  3273  	case 318:
  3274  		yyDollar = yyS[yypt-1 : yypt+1]
  3275  		//line go.y:2084
  3276  		{
  3277  			// predefined name like uint8
  3278  			yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
  3279  			if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OTYPE {
  3280  				Yyerror("%s is not a type", yyDollar[1].sym.Name)
  3281  				yyVAL.typ = nil
  3282  			} else {
  3283  				yyVAL.typ = yyDollar[1].sym.Def.Type
  3284  			}
  3285  		}
  3286  	case 319:
  3287  		yyDollar = yyS[yypt-3 : yypt+1]
  3288  		//line go.y:2095
  3289  		{
  3290  			yyVAL.typ = aindex(nil, yyDollar[3].typ)
  3291  		}
  3292  	case 320:
  3293  		yyDollar = yyS[yypt-4 : yypt+1]
  3294  		//line go.y:2099
  3295  		{
  3296  			yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ)
  3297  		}
  3298  	case 321:
  3299  		yyDollar = yyS[yypt-5 : yypt+1]
  3300  		//line go.y:2103
  3301  		{
  3302  			yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ)
  3303  		}
  3304  	case 322:
  3305  		yyDollar = yyS[yypt-4 : yypt+1]
  3306  		//line go.y:2107
  3307  		{
  3308  			yyVAL.typ = tostruct(yyDollar[3].list)
  3309  		}
  3310  	case 323:
  3311  		yyDollar = yyS[yypt-4 : yypt+1]
  3312  		//line go.y:2111
  3313  		{
  3314  			yyVAL.typ = tointerface(yyDollar[3].list)
  3315  		}
  3316  	case 324:
  3317  		yyDollar = yyS[yypt-2 : yypt+1]
  3318  		//line go.y:2115
  3319  		{
  3320  			yyVAL.typ = Ptrto(yyDollar[2].typ)
  3321  		}
  3322  	case 325:
  3323  		yyDollar = yyS[yypt-2 : yypt+1]
  3324  		//line go.y:2119
  3325  		{
  3326  			yyVAL.typ = typ(TCHAN)
  3327  			yyVAL.typ.Type = yyDollar[2].typ
  3328  			yyVAL.typ.Chan = Cboth
  3329  		}
  3330  	case 326:
  3331  		yyDollar = yyS[yypt-4 : yypt+1]
  3332  		//line go.y:2125
  3333  		{
  3334  			yyVAL.typ = typ(TCHAN)
  3335  			yyVAL.typ.Type = yyDollar[3].typ
  3336  			yyVAL.typ.Chan = Cboth
  3337  		}
  3338  	case 327:
  3339  		yyDollar = yyS[yypt-3 : yypt+1]
  3340  		//line go.y:2131
  3341  		{
  3342  			yyVAL.typ = typ(TCHAN)
  3343  			yyVAL.typ.Type = yyDollar[3].typ
  3344  			yyVAL.typ.Chan = Csend
  3345  		}
  3346  	case 328:
  3347  		yyDollar = yyS[yypt-3 : yypt+1]
  3348  		//line go.y:2139
  3349  		{
  3350  			yyVAL.typ = typ(TCHAN)
  3351  			yyVAL.typ.Type = yyDollar[3].typ
  3352  			yyVAL.typ.Chan = Crecv
  3353  		}
  3354  	case 329:
  3355  		yyDollar = yyS[yypt-5 : yypt+1]
  3356  		//line go.y:2147
  3357  		{
  3358  			yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list)
  3359  		}
  3360  	case 330:
  3361  		yyDollar = yyS[yypt-3 : yypt+1]
  3362  		//line go.y:2153
  3363  		{
  3364  			yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ))
  3365  			if yyDollar[1].sym != nil {
  3366  				yyVAL.node.Left = newname(yyDollar[1].sym)
  3367  			}
  3368  			yyVAL.node.SetVal(yyDollar[3].val)
  3369  		}
  3370  	case 331:
  3371  		yyDollar = yyS[yypt-4 : yypt+1]
  3372  		//line go.y:2161
  3373  		{
  3374  			var t *Type
  3375  
  3376  			t = typ(TARRAY)
  3377  			t.Bound = -1
  3378  			t.Type = yyDollar[3].typ
  3379  
  3380  			yyVAL.node = Nod(ODCLFIELD, nil, typenod(t))
  3381  			if yyDollar[1].sym != nil {
  3382  				yyVAL.node.Left = newname(yyDollar[1].sym)
  3383  			}
  3384  			yyVAL.node.Isddd = true
  3385  			yyVAL.node.SetVal(yyDollar[4].val)
  3386  		}
  3387  	case 332:
  3388  		yyDollar = yyS[yypt-3 : yypt+1]
  3389  		//line go.y:2178
  3390  		{
  3391  			var s *Sym
  3392  			var p *Pkg
  3393  
  3394  			if yyDollar[1].sym != nil && yyDollar[1].sym.Name != "?" {
  3395  				yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(yyDollar[2].typ))
  3396  				yyVAL.node.SetVal(yyDollar[3].val)
  3397  			} else {
  3398  				s = yyDollar[2].typ.Sym
  3399  				if s == nil && Isptr[yyDollar[2].typ.Etype] {
  3400  					s = yyDollar[2].typ.Type.Sym
  3401  				}
  3402  				p = importpkg
  3403  				if yyDollar[1].sym != nil {
  3404  					p = yyDollar[1].sym.Pkg
  3405  				}
  3406  				yyVAL.node = embedded(s, p)
  3407  				yyVAL.node.Right = typenod(yyDollar[2].typ)
  3408  				yyVAL.node.SetVal(yyDollar[3].val)
  3409  			}
  3410  		}
  3411  	case 333:
  3412  		yyDollar = yyS[yypt-5 : yypt+1]
  3413  		//line go.y:2202
  3414  		{
  3415  			yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(functype(fakethis(), yyDollar[3].list, yyDollar[5].list)))
  3416  		}
  3417  	case 334:
  3418  		yyDollar = yyS[yypt-1 : yypt+1]
  3419  		//line go.y:2206
  3420  		{
  3421  			yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))
  3422  		}
  3423  	case 335:
  3424  		yyDollar = yyS[yypt-0 : yypt+1]
  3425  		//line go.y:2211
  3426  		{
  3427  			yyVAL.list = nil
  3428  		}
  3429  	case 337:
  3430  		yyDollar = yyS[yypt-3 : yypt+1]
  3431  		//line go.y:2218
  3432  		{
  3433  			yyVAL.list = yyDollar[2].list
  3434  		}
  3435  	case 338:
  3436  		yyDollar = yyS[yypt-1 : yypt+1]
  3437  		//line go.y:2222
  3438  		{
  3439  			yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)))
  3440  		}
  3441  	case 339:
  3442  		yyDollar = yyS[yypt-1 : yypt+1]
  3443  		//line go.y:2232
  3444  		{
  3445  			yyVAL.node = nodlit(yyDollar[1].val)
  3446  		}
  3447  	case 340:
  3448  		yyDollar = yyS[yypt-2 : yypt+1]
  3449  		//line go.y:2236
  3450  		{
  3451  			yyVAL.node = nodlit(yyDollar[2].val)
  3452  			switch yyVAL.node.Val().Ctype() {
  3453  			case CTINT, CTRUNE:
  3454  				mpnegfix(yyVAL.node.Val().U.(*Mpint))
  3455  				break
  3456  			case CTFLT:
  3457  				mpnegflt(yyVAL.node.Val().U.(*Mpflt))
  3458  				break
  3459  			case CTCPLX:
  3460  				mpnegflt(&yyVAL.node.Val().U.(*Mpcplx).Real)
  3461  				mpnegflt(&yyVAL.node.Val().U.(*Mpcplx).Imag)
  3462  				break
  3463  			default:
  3464  				Yyerror("bad negated constant")
  3465  			}
  3466  		}
  3467  	case 341:
  3468  		yyDollar = yyS[yypt-1 : yypt+1]
  3469  		//line go.y:2254
  3470  		{
  3471  			yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg))
  3472  			if yyVAL.node.Op != OLITERAL {
  3473  				Yyerror("bad constant %v", yyVAL.node.Sym)
  3474  			}
  3475  		}
  3476  	case 343:
  3477  		yyDollar = yyS[yypt-5 : yypt+1]
  3478  		//line go.y:2264
  3479  		{
  3480  			if yyDollar[2].node.Val().Ctype() == CTRUNE && yyDollar[4].node.Val().Ctype() == CTINT {
  3481  				yyVAL.node = yyDollar[2].node
  3482  				mpaddfixfix(yyDollar[2].node.Val().U.(*Mpint), yyDollar[4].node.Val().U.(*Mpint), 0)
  3483  				break
  3484  			}
  3485  			yyDollar[4].node.Val().U.(*Mpcplx).Real = yyDollar[4].node.Val().U.(*Mpcplx).Imag
  3486  			Mpmovecflt(&yyDollar[4].node.Val().U.(*Mpcplx).Imag, 0.0)
  3487  			yyVAL.node = nodcplxlit(yyDollar[2].node.Val(), yyDollar[4].node.Val())
  3488  		}
  3489  	case 346:
  3490  		yyDollar = yyS[yypt-1 : yypt+1]
  3491  		//line go.y:2280
  3492  		{
  3493  			yyVAL.list = list1(yyDollar[1].node)
  3494  		}
  3495  	case 347:
  3496  		yyDollar = yyS[yypt-3 : yypt+1]
  3497  		//line go.y:2284
  3498  		{
  3499  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3500  		}
  3501  	case 348:
  3502  		yyDollar = yyS[yypt-1 : yypt+1]
  3503  		//line go.y:2290
  3504  		{
  3505  			yyVAL.list = list1(yyDollar[1].node)
  3506  		}
  3507  	case 349:
  3508  		yyDollar = yyS[yypt-3 : yypt+1]
  3509  		//line go.y:2294
  3510  		{
  3511  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3512  		}
  3513  	case 350:
  3514  		yyDollar = yyS[yypt-1 : yypt+1]
  3515  		//line go.y:2300
  3516  		{
  3517  			yyVAL.list = list1(yyDollar[1].node)
  3518  		}
  3519  	case 351:
  3520  		yyDollar = yyS[yypt-3 : yypt+1]
  3521  		//line go.y:2304
  3522  		{
  3523  			yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
  3524  		}
  3525  	}
  3526  	goto yystack /* stack new state and value */
  3527  }