github.com/rsc/go@v0.0.0-20150416155037-e040fd465409/src/cmd/internal/gc/y.go (about)

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