github.com/rsc/tmp@v0.0.0-20240517235954-6deaab19748b/bootstrap/internal/gc/y.go (about)

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