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