//line go.y:21 package gc import __yyfmt__ "fmt" //line go.y:21 import ( "strings" ) //line go.y:27 type yySymType struct { yys int node *Node list *NodeList typ *Type sym *Sym val Val i int } const LLITERAL = 57346 const LASOP = 57347 const LCOLAS = 57348 const LBREAK = 57349 const LCASE = 57350 const LCHAN = 57351 const LCONST = 57352 const LCONTINUE = 57353 const LDDD = 57354 const LDEFAULT = 57355 const LDEFER = 57356 const LELSE = 57357 const LFALL = 57358 const LFOR = 57359 const LFUNC = 57360 const LGO = 57361 const LGOTO = 57362 const LIF = 57363 const LIMPORT = 57364 const LINTERFACE = 57365 const LMAP = 57366 const LNAME = 57367 const LPACKAGE = 57368 const LRANGE = 57369 const LRETURN = 57370 const LSELECT = 57371 const LSTRUCT = 57372 const LSWITCH = 57373 const LTYPE = 57374 const LVAR = 57375 const LANDAND = 57376 const LANDNOT = 57377 const LBODY = 57378 const LCOMM = 57379 const LDEC = 57380 const LEQ = 57381 const LGE = 57382 const LGT = 57383 const LIGNORE = 57384 const LINC = 57385 const LLE = 57386 const LLSH = 57387 const LLT = 57388 const LNE = 57389 const LOROR = 57390 const LRSH = 57391 const NotPackage = 57392 const NotParen = 57393 const PreferToRightParen = 57394 var yyToknames = []string{ "LLITERAL", "LASOP", "LCOLAS", "LBREAK", "LCASE", "LCHAN", "LCONST", "LCONTINUE", "LDDD", "LDEFAULT", "LDEFER", "LELSE", "LFALL", "LFOR", "LFUNC", "LGO", "LGOTO", "LIF", "LIMPORT", "LINTERFACE", "LMAP", "LNAME", "LPACKAGE", "LRANGE", "LRETURN", "LSELECT", "LSTRUCT", "LSWITCH", "LTYPE", "LVAR", "LANDAND", "LANDNOT", "LBODY", "LCOMM", "LDEC", "LEQ", "LGE", "LGT", "LIGNORE", "LINC", "LLE", "LLSH", "LLT", "LNE", "LOROR", "LRSH", "'+'", "'-'", "'|'", "'^'", "'*'", "'/'", "'%'", "'&'", "NotPackage", "NotParen", "'('", "')'", "PreferToRightParen", } var yyStatenames = []string{} const yyEofCode = 1 const yyErrCode = 2 const yyMaxDepth = 200 //line go.y:2242 func fixlbrace(lbr int) { // If the opening brace was an LBODY, // set up for another one now that we're done. // See comment in lex.C about loophack. if lbr == LBODY { loophack = 1 } } //line yacctab:1 var yyExca = []int{ -1, 1, 1, -1, -2, 0, -1, 17, 1, 1, 63, 23, -2, 0, -1, 48, 6, 276, 66, 276, 76, 276, -2, 49, -1, 56, 67, 153, -2, 162, -1, 74, 60, 181, -2, 215, -1, 75, 60, 182, -2, 183, -1, 121, 60, 134, 64, 134, 68, 134, 72, 134, -2, 266, -1, 125, 60, 134, 64, 134, 68, 134, 72, 134, -2, 267, -1, 176, 2, 215, 36, 215, 60, 181, 68, 215, -2, 173, -1, 177, 36, 183, 60, 182, 68, 183, -2, 174, -1, 184, 63, 251, 69, 251, -2, 0, -1, 242, 63, 251, 69, 251, -2, 0, -1, 252, 8, 251, 13, 251, 63, 251, 69, 251, -2, 0, -1, 325, 4, 236, 63, 236, 69, 236, -2, 157, -1, 407, 36, 176, 60, 176, 68, 176, -2, 167, -1, 408, 36, 177, 60, 177, 68, 177, -2, 168, -1, 409, 36, 178, 60, 178, 68, 178, -2, 169, -1, 410, 36, 179, 60, 179, 68, 179, -2, 170, -1, 416, 8, 251, 13, 251, 63, 251, 69, 251, -2, 0, -1, 417, 63, 251, 69, 251, -2, 0, -1, 497, 63, 251, 69, 251, -2, 0, -1, 552, 60, 157, -2, 318, -1, 553, 60, 158, -2, 317, -1, 578, 8, 251, 13, 251, 63, 251, 69, 251, -2, 0, -1, 592, 36, 180, 60, 180, 68, 180, -2, 171, } const yyNprod = 352 const yyPrivate = 57344 var yyTokenNames []string var yyStates []string const yyLast = 2282 var yyAct = []int{ 74, 381, 304, 285, 291, 486, 610, 398, 545, 478, 549, 296, 186, 75, 400, 229, 302, 401, 103, 389, 458, 356, 290, 318, 457, 34, 303, 338, 230, 245, 466, 109, 339, 101, 337, 332, 85, 104, 374, 248, 246, 174, 467, 286, 14, 324, 479, 328, 241, 212, 108, 6, 325, 155, 243, 469, 226, 181, 468, 516, 413, 320, 373, 392, 325, 219, 13, 208, 176, 10, 11, 584, 172, 469, 651, 385, 599, 583, 106, 191, 13, 177, 460, 541, 422, 160, 310, 331, 613, 161, 309, 446, 192, 322, 193, 626, 327, 162, 198, 321, 88, 12, 13, 10, 227, 238, 662, 194, 317, 227, 632, 448, 227, 12, 13, 227, 209, 228, 12, 13, 447, 10, 228, 203, 175, 228, 108, 393, 228, 461, 54, 660, 205, 445, 184, 384, 222, 460, 459, 204, 199, 200, 239, 88, 506, 155, 214, 216, 218, 507, 427, 631, 12, 13, 233, 625, 624, 202, 10, 88, 90, 176, 55, 288, 10, 627, 213, 213, 213, 213, 12, 13, 118, 118, 177, 295, 126, 154, 308, 176, 10, 416, 282, 282, 461, 282, 603, 620, 416, 10, 600, 227, 177, 301, 593, 416, 227, 227, 404, 227, 280, 484, 444, 90, 228, 622, 536, 12, 13, 228, 228, 506, 228, 12, 13, 86, 507, 175, 527, 90, 298, 163, 164, 165, 166, 167, 168, 169, 170, 12, 13, 523, 227, 580, 515, 175, 182, 153, 12, 13, 242, 171, 325, 397, 416, 228, 330, 155, 227, 334, 415, 227, 227, 116, 227, 185, 358, 367, 463, 371, 360, 228, 355, 362, 228, 228, 353, 228, 183, 365, 210, 322, 504, 369, 434, 314, 68, 321, 91, 379, 614, 78, 416, 340, 609, 340, 340, 376, 375, 182, 124, 12, 13, 604, 176, 83, 79, 10, 394, 325, 407, 336, 82, 351, 352, 10, 378, 177, 380, 414, 227, 227, 601, 408, 574, 409, 608, 10, 568, 558, 227, 183, 48, 228, 228, 465, 10, 464, 410, 391, 323, 329, 67, 228, 331, 348, 443, 656, 442, 412, 293, 163, 170, 605, 77, 436, 12, 13, 12, 13, 175, 424, 423, 234, 12, 13, 388, 383, 370, 366, 359, 114, 435, 333, 655, 227, 12, 13, 100, 129, 441, 99, 10, 490, 227, 12, 13, 439, 228, 84, 454, 20, 453, 429, 432, 480, 491, 228, 492, 654, 173, 10, 508, 473, 176, 10, 653, 645, 511, 619, 188, 493, 483, 494, 616, 607, 227, 177, 221, 282, 514, 606, 227, 597, 282, 519, 520, 340, 340, 228, 596, 12, 13, 227, 595, 228, 110, 498, 340, 489, 107, 510, 502, 592, 525, 449, 228, 582, 517, 227, 12, 13, 562, 524, 12, 13, 470, 539, 528, 531, 175, 522, 228, 254, 513, 512, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 129, 129, 277, 554, 559, 227, 330, 173, 537, 294, 509, 557, 561, 227, 69, 564, 532, 538, 228, 534, 490, 490, 496, 495, 482, 572, 228, 300, 476, 475, 472, 176, 440, 491, 491, 492, 492, 567, 573, 340, 10, 340, 420, 553, 177, 577, 372, 340, 493, 493, 340, 590, 591, 579, 297, 585, 570, 540, 586, 542, 456, 551, 431, 438, 249, 555, 340, 571, 556, 354, 253, 129, 251, 180, 431, 102, 489, 489, 382, 323, 501, 530, 287, 129, 566, 117, 7, 175, 70, 12, 13, 329, 5, 197, 431, 227, 211, 433, 24, 16, 529, 19, 617, 430, 650, 455, 364, 533, 228, 428, 560, 480, 305, 335, 207, 206, 21, 93, 197, 623, 252, 629, 490, 197, 282, 630, 197, 635, 120, 197, 26, 386, 121, 125, 637, 491, 340, 492, 641, 639, 173, 340, 621, 402, 57, 565, 306, 76, 402, 618, 493, 158, 176, 642, 598, 387, 511, 340, 157, 602, 640, 665, 652, 581, 28, 177, 390, 643, 223, 644, 490, 159, 156, 235, 96, 657, 240, 661, 489, 497, 578, 417, 98, 491, 663, 492, 94, 664, 122, 122, 31, 22, 667, 666, 340, 15, 97, 95, 493, 553, 23, 201, 340, 49, 18, 197, 594, 129, 175, 3, 197, 197, 636, 197, 129, 282, 8, 551, 4, 2, 1, 450, 215, 543, 544, 547, 489, 548, 611, 92, 487, 129, 129, 189, 80, 81, 437, 72, 71, 237, 173, 615, 477, 316, 188, 220, 197, 326, 340, 244, 128, 340, 648, 628, 649, 311, 127, 17, 399, 319, 312, 313, 197, 315, 25, 197, 197, 27, 197, 36, 633, 634, 78, 37, 281, 66, 111, 638, 39, 38, 35, 124, 279, 278, 73, 217, 83, 79, 10, 113, 587, 149, 503, 82, 505, 87, 363, 0, 123, 0, 232, 150, 0, 0, 9, 151, 141, 142, 143, 144, 145, 146, 147, 148, 197, 377, 56, 196, 89, 0, 0, 0, 0, 231, 197, 197, 0, 0, 0, 105, 105, 112, 115, 0, 197, 77, 0, 12, 13, 426, 119, 119, 0, 0, 119, 0, 575, 576, 0, 0, 0, 0, 0, 173, 0, 0, 0, 275, 276, 0, 283, 0, 0, 402, 406, 588, 402, 402, 0, 0, 0, 0, 0, 0, 418, 419, 0, 0, 0, 197, 0, 0, 78, 0, 425, 89, 0, 197, 197, 0, 0, 124, 0, 0, 0, 0, 83, 79, 10, 0, 0, 105, 149, 82, 0, 0, 105, 0, 0, 112, 232, 0, 150, 247, 0, 0, 151, 0, 0, 0, 197, 145, 146, 147, 148, 0, 197, 196, 361, 406, 0, 188, 0, 231, 0, 0, 0, 197, 0, 236, 368, 78, 0, 0, 250, 77, 0, 12, 13, 225, 124, 0, 0, 197, 0, 83, 79, 10, 0, 0, 292, 0, 82, 0, 0, 0, 0, 0, 0, 232, 311, 0, 646, 647, 173, 0, 521, 402, 0, 0, 0, 0, 0, 56, 0, 0, 196, 526, 0, 0, 0, 0, 231, 0, 0, 197, 0, 0, 119, 119, 0, 0, 0, 197, 77, 0, 12, 13, 0, 0, 197, 197, 0, 0, 0, 0, 134, 149, 357, 152, 0, 135, 139, 140, 105, 0, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 0, 56, 0, 0, 0, 569, 0, 0, 0, 0, 247, 56, 247, 0, 68, 0, 0, 0, 413, 78, 0, 0, 0, 78, 474, 0, 0, 0, 124, 0, 0, 481, 124, 83, 79, 10, 0, 83, 79, 10, 82, 0, 0, 0, 82, 197, 0, 65, 275, 276, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 58, 0, 0, 59, 196, 0, 67, 0, 197, 421, 488, 0, 0, 0, 403, 0, 62, 63, 77, 0, 12, 13, 77, 0, 12, 13, 0, 68, 89, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 347, 0, 462, 83, 79, 10, 357, 0, 0, 349, 82, 105, 0, 197, 345, 343, 341, 65, 105, 0, 0, 344, 112, 0, 485, 247, 0, 0, 348, 0, 60, 61, 0, 64, 58, 0, 0, 59, 0, 0, 67, 0, 0, 0, 78, 346, 0, 0, 589, 0, 62, 63, 77, 124, 12, 13, 0, 350, 83, 79, 10, 0, 0, 342, 0, 82, 13, 0, 56, 56, 0, 0, 232, 0, 0, 0, 119, 0, 119, 0, 0, 0, 0, 0, 0, 0, 535, 0, 119, 196, 247, 0, 0, 0, 0, 231, 0, 0, 0, 546, 550, 0, 0, 0, 0, 0, 0, 77, 357, 12, 13, 462, 0, 0, 0, 462, 0, 0, 0, 0, 563, 357, 0, 0, 0, 0, 0, 0, 0, 307, 0, 68, 0, 0, 41, 0, 78, 47, 42, 0, 247, 44, 0, 40, 50, 124, 43, 45, 53, 56, 83, 79, 10, 0, 0, 46, 52, 82, 51, 32, 30, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 58, 0, 0, 59, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 308, 0, 62, 63, 77, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 105, 68, 247, 0, 41, 0, 78, 47, 42, 0, 56, 44, 0, 40, 50, 33, 43, 45, 53, 0, 83, 79, 10, 0, 0, 46, 52, 82, 51, 32, 30, 0, 0, 546, 65, 0, 550, 357, 0, 0, 462, 0, 0, 0, 357, 0, 357, 60, 61, 0, 64, 58, 0, 0, 59, 0, 68, 67, 0, 0, 0, 78, 0, 0, 0, 0, 0, 62, 63, 77, 124, 12, 13, 0, 0, 83, 79, 10, 0, 500, 0, 0, 82, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 58, 0, 0, 59, 0, 68, 67, 0, 0, 0, 78, 0, 0, 0, 0, 0, 62, 63, 77, 124, 12, 13, 0, 0, 83, 79, 10, 0, 499, 0, 0, 82, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 58, 0, 0, 59, 0, 68, 67, 0, 0, 0, 78, 0, 0, 0, 299, 0, 62, 63, 77, 124, 12, 13, 0, 124, 83, 79, 10, 0, 83, 79, 10, 82, 0, 395, 0, 82, 0, 0, 179, 0, 0, 0, 232, 0, 0, 0, 0, 0, 68, 0, 0, 60, 61, 78, 64, 178, 0, 0, 59, 196, 0, 67, 124, 0, 0, 231, 0, 83, 79, 10, 0, 62, 63, 77, 82, 12, 13, 77, 0, 12, 13, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 178, 0, 0, 59, 0, 68, 67, 289, 0, 0, 78, 0, 0, 0, 0, 0, 62, 63, 77, 124, 12, 13, 0, 0, 83, 79, 10, 0, 284, 0, 0, 82, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 60, 61, 78, 64, 58, 187, 0, 59, 0, 0, 67, 124, 0, 0, 0, 0, 83, 79, 10, 0, 62, 63, 77, 82, 12, 13, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 60, 61, 78, 64, 58, 0, 0, 59, 0, 0, 67, 124, 0, 0, 0, 0, 83, 79, 10, 0, 62, 63, 77, 82, 12, 13, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 60, 61, 78, 64, 58, 0, 0, 59, 0, 0, 67, 124, 0, 0, 0, 0, 83, 79, 10, 0, 62, 63, 77, 82, 12, 13, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 61, 0, 64, 178, 0, 0, 59, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 77, 0, 12, 13, 134, 149, 0, 152, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 68, 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, 124, 396, 347, 0, 0, 83, 79, 10, 0, 0, 0, 349, 82, 78, 0, 0, 345, 343, 552, 65, 0, 0, 124, 344, 0, 0, 0, 83, 79, 10, 348, 0, 60, 61, 82, 64, 58, 0, 0, 59, 0, 232, 67, 0, 0, 0, 0, 346, 0, 0, 0, 0, 62, 63, 77, 0, 12, 13, 196, 0, 0, 0, 0, 0, 231, 342, 0, 12, 13, 0, 224, 0, 0, 0, 0, 0, 77, 0, 12, 13, 225, 134, 149, 0, 152, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 134, 149, 0, 152, 0, 135, 139, 140, 0, 659, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 134, 149, 0, 152, 0, 135, 139, 140, 0, 658, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 0, 78, 0, 0, 0, 78, 0, 0, 0, 518, 124, 0, 0, 0, 124, 83, 79, 10, 0, 83, 79, 10, 82, 0, 0, 0, 82, 347, 0, 405, 0, 0, 0, 190, 0, 0, 349, 0, 0, 0, 0, 345, 343, 341, 0, 0, 196, 0, 344, 0, 196, 0, 411, 0, 0, 348, 195, 0, 0, 0, 347, 0, 0, 471, 77, 0, 12, 13, 77, 349, 12, 13, 346, 0, 345, 343, 341, 0, 612, 0, 347, 344, 0, 0, 0, 0, 0, 0, 348, 349, 342, 0, 0, 13, 345, 343, 341, 0, 0, 0, 347, 344, 0, 0, 0, 346, 0, 0, 452, 349, 0, 0, 0, 0, 345, 343, 341, 0, 0, 0, 0, 344, 0, 342, 0, 346, 13, 0, 348, 0, 0, 451, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 342, 0, 346, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 342, 134, 149, 13, 152, 132, 135, 139, 140, 0, 131, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 134, 149, 0, 152, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 134, 149, 0, 0, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 133, 151, 141, 142, 143, 144, 145, 146, 147, 148, 134, 149, 0, 0, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 0, 151, 141, 142, 143, 144, 145, 146, 147, 148, 149, 0, 0, 0, 135, 139, 140, 0, 0, 138, 150, 137, 136, 0, 151, 141, 142, 143, 144, 145, 146, 147, 148, } var yyPact = []int{ -1000, -1000, 542, 536, -1000, 164, -1000, 550, 555, 318, -1000, -1000, -1000, 588, -1000, -1000, 549, 1340, 316, 155, -1000, 214, 640, 308, -1000, 305, -1000, -1000, -1000, -1000, 491, 370, 366, 301, -1000, -1000, -1000, -1000, -1000, 186, -1000, 164, 164, 272, 272, 164, 1689, -1000, 2129, 171, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 25, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 173, 1732, -1000, -1000, -1000, 489, 200, -1000, -1000, -1000, 253, 1646, 1995, 26, -1000, -1000, 200, 200, -1000, -1000, 96, 536, -1000, 587, 586, 42, 205, -1000, 547, -9, -9, -9, 5, -1000, -1000, -1000, 347, 1850, -1000, -1000, -1000, 292, 849, -1000, 44, 1158, -1000, 172, 908, 488, -1000, -1000, -1000, -1000, -1000, -1000, 25, -1000, 486, -1000, -1000, -1000, -23, 2153, 1689, -1000, -1000, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1603, 1689, 522, 1689, 1548, 280, 1689, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 469, 2153, -1000, -1000, -1000, -1000, 1732, 1828, 1689, -1000, -1000, -1000, 1250, -1000, 17, 13, 2153, -1000, 1158, -1000, -1000, -1000, -1000, 1158, 1158, 211, 1158, 39, 27, 300, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 585, 2090, -1000, 1114, 2090, -1000, 172, 485, 164, 297, -1000, -1000, 194, 1689, 164, -1000, -1000, -1000, -1000, -1000, 1158, 573, 296, -1000, 191, 1689, 295, -1000, -1000, -1000, -1000, 1250, 461, -14, -1000, -1000, 908, -1000, -1000, 1158, 908, 1250, 908, 2153, 2201, 2224, 732, 732, 732, 732, 732, 732, 843, 843, 843, 843, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2177, -23, -23, 2153, -1000, 518, 294, -1000, -1000, 69, 1689, -1000, 293, -1000, -1000, -1000, 51, -1000, -1000, 1505, 1774, 176, 1026, 130, -1000, 1991, 958, 1026, 181, -1000, -1000, -1000, -1000, -1000, -1000, 1158, 1158, -1000, 457, -1000, 164, 11, 288, -1000, -1000, 739, 581, 525, 513, -1000, -1000, 210, 282, -1000, -1000, 479, -1000, 545, 447, 139, -1000, 275, 273, -1000, -1000, -1000, -1000, -1000, 129, 19, 52, 43, 2090, 2070, 572, 476, 78, 192, 264, 262, 164, -3, -1000, 2050, 445, 164, 1689, -23, -1000, 444, 1158, 443, 164, 1689, -23, 439, 164, 132, 1030, 908, -1000, -1000, -1000, -1000, 438, -1000, 437, -1000, -1000, 1689, 1450, 1395, 2153, 520, 1689, 203, 518, 425, -16, 1732, 394, 393, -1000, 1689, 165, -17, -1000, -1000, 1941, -1000, -1000, 1509, -1000, -1000, -1000, -1000, -1000, 1158, 390, -1000, 162, -1000, 1250, 1250, -1000, -1000, -1000, -1000, 1158, 149, 217, 581, 164, -1000, -1000, 388, 545, 210, 581, 545, 164, 137, 274, -1000, 908, 386, -1000, -1000, -1000, -1000, 2090, 10, 2090, 164, 1839, -1000, -1000, 298, 2090, -1000, -1000, 2090, 164, 256, -1000, 133, -1000, 582, -1000, 78, -1000, -1000, 381, -21, 164, 164, 581, 2090, -1000, -1000, -23, -1000, -1000, 255, -1000, -1000, 849, -23, -1000, -1000, -1000, 472, -1000, -1000, 908, -1000, -1000, -1000, -1000, -1000, -1000, 1030, 1030, 1250, 251, 1689, 1689, -1000, -1000, -1000, -1000, -1000, 1732, 166, -1000, -1000, 376, -1000, -1000, -1000, 4, -1000, 1026, -1000, 1103, 1026, 1026, 372, -1000, -1000, -1000, 125, -1000, -1000, -1000, -1000, -1000, 581, 363, -1000, 359, -1000, -1000, -1000, 352, -1000, -1000, 2090, 3, 121, 249, -1000, 2090, 117, 230, -1000, 283, -1000, -1000, -1000, 350, -1000, -1000, 344, -1000, 266, -1000, 221, 2017, 220, -1000, -1000, 581, 343, 164, 191, 908, 338, -1000, 118, 1689, 2153, 2153, 136, 1250, 89, -1000, -1000, -1000, -1000, 1689, -1000, -1000, -1000, 2153, -1000, 82, 41, -1000, -1000, -1000, 581, 581, 1030, -1000, 2090, -1000, 164, 581, -1000, 1839, 164, -1000, 2017, 133, -1000, -1000, -1000, 164, -1000, 164, -1000, -1000, -1000, 336, -1000, -1000, -1000, -1000, 219, -1000, 1689, 1689, 1732, 565, 1, 1026, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 335, -1000, 328, 303, 276, 1030, 1917, 1893, -1000, -1000, 110, -1000, 37, 2017, -1000, -1000, 2017, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1689, 518, -1000, } var yyPgo = []int{ 0, 57, 771, 774, 45, 150, 26, 540, 29, 770, 768, 2, 28, 61, 322, 766, 17, 4, 765, 761, 760, 759, 758, 756, 3, 755, 622, 47, 14, 754, 490, 40, 41, 130, 37, 12, 752, 561, 43, 620, 751, 564, 750, 749, 25, 745, 162, 743, 31, 11, 740, 48, 5, 1, 18, 735, 679, 734, 7, 22, 733, 732, 19, 730, 729, 728, 16, 54, 725, 723, 33, 721, 23, 719, 588, 46, 9, 718, 715, 714, 713, 39, 712, 711, 710, 15, 56, 709, 13, 706, 0, 70, 49, 24, 20, 21, 10, 8, 704, 6, 42, 30, 703, 701, 700, 699, 88, 34, 698, 32, 27, 697, 696, 695, 694, 692, 685, 51, 44, 680, 36, 677, 35, 676, 671, 667, 666, 657, 656, 655, 648, 647, 642, 639, 637, 634, 631, 627, 38, 623, 596, 593, } var yyR1 = []int{ 0, 112, 114, 114, 116, 113, 115, 115, 119, 119, 119, 120, 120, 121, 121, 2, 2, 2, 117, 123, 123, 124, 118, 50, 50, 50, 50, 50, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 126, 70, 70, 70, 75, 75, 76, 76, 76, 36, 48, 44, 44, 44, 44, 44, 44, 9, 9, 9, 9, 127, 11, 128, 10, 62, 62, 129, 53, 42, 42, 42, 22, 22, 22, 21, 130, 23, 24, 24, 131, 132, 133, 25, 134, 63, 64, 64, 65, 65, 135, 136, 45, 137, 43, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 46, 46, 46, 46, 46, 46, 46, 46, 46, 41, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 49, 28, 16, 16, 15, 15, 39, 39, 17, 17, 31, 1, 1, 33, 34, 37, 37, 3, 3, 3, 91, 91, 30, 29, 81, 81, 7, 7, 7, 7, 7, 7, 32, 32, 32, 32, 87, 87, 87, 87, 87, 79, 79, 80, 89, 89, 89, 89, 89, 12, 12, 88, 88, 88, 88, 88, 88, 88, 85, 86, 84, 84, 83, 83, 47, 18, 18, 19, 19, 90, 51, 51, 52, 52, 52, 139, 20, 20, 60, 60, 71, 71, 77, 77, 78, 78, 73, 73, 69, 69, 72, 72, 72, 72, 72, 72, 4, 4, 13, 27, 27, 27, 82, 8, 8, 8, 8, 68, 68, 67, 67, 6, 6, 6, 6, 6, 26, 26, 26, 26, 26, 140, 26, 26, 26, 26, 26, 26, 26, 26, 66, 66, 55, 55, 54, 54, 56, 56, 59, 59, 57, 57, 57, 57, 58, 58, 122, 122, 138, 138, 35, 35, 61, 61, 38, 38, 101, 101, 105, 105, 103, 103, 5, 5, 141, 141, 141, 141, 141, 141, 92, 108, 106, 106, 106, 111, 111, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 110, 109, 95, 95, 97, 96, 96, 99, 99, 98, 98, 94, 94, 94, 93, 93, 125, 125, 100, 100, 104, 104, 102, 102, } var yyR2 = []int{ 0, 4, 0, 3, 0, 3, 0, 3, 2, 5, 3, 3, 2, 1, 3, 1, 2, 2, 4, 0, 1, 0, 4, 0, 1, 1, 1, 1, 2, 5, 3, 2, 5, 7, 3, 2, 5, 3, 1, 2, 4, 3, 4, 3, 1, 2, 1, 1, 2, 1, 3, 3, 3, 2, 2, 3, 5, 5, 2, 0, 4, 0, 3, 0, 2, 0, 4, 4, 4, 2, 5, 1, 1, 2, 0, 3, 1, 3, 0, 0, 0, 8, 0, 5, 0, 2, 0, 2, 0, 0, 7, 0, 5, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 5, 6, 1, 1, 3, 5, 5, 4, 6, 8, 1, 5, 5, 5, 7, 1, 0, 3, 1, 4, 1, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 4, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 2, 3, 5, 1, 1, 2, 3, 5, 3, 5, 3, 3, 5, 8, 5, 8, 5, 0, 3, 0, 1, 3, 1, 4, 2, 0, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 2, 4, 3, 5, 5, 1, 3, 1, 2, 1, 3, 4, 1, 2, 2, 1, 1, 3, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 3, 3, 0, 2, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 4, 4, 5, 6, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 5, 4, 4, 2, 2, 4, 3, 3, 5, 3, 4, 3, 5, 1, 0, 1, 3, 1, 1, 2, 1, 1, 5, 0, 2, 1, 3, 1, 3, 1, 3, } var yyChk = []int{ -1000, -112, -113, -116, -114, 26, -117, 26, -115, -3, 25, -91, 74, 75, -118, -124, 25, -60, -119, 22, 63, 4, -125, -123, 25, -50, -74, -47, -26, 2, 33, -126, 32, 18, -44, -23, -45, -43, -25, -29, 16, 7, 11, 19, 14, 20, 28, 10, -14, -56, 17, 31, 29, 21, -33, -46, -3, -39, 54, 57, 50, 51, 70, 71, 53, 37, -40, 60, 4, -30, -41, -79, -80, -20, -90, -88, -139, 72, 9, 24, -84, -83, 30, 23, 63, -120, 60, -2, 4, -3, 64, 64, 65, -141, 22, 33, 10, 32, 18, 63, 63, -70, 60, -54, -34, -3, -75, 60, -54, -48, 60, -36, -3, -18, 60, -3, 67, -37, -33, -3, -37, -41, -39, -3, 18, -41, -33, -61, -56, -14, 5, 43, 38, 48, 34, 39, 47, 46, 44, 40, 41, 50, 51, 52, 53, 54, 55, 56, 57, 35, 45, 49, 37, 66, 6, 76, -130, -135, -137, -131, 60, 64, 72, -46, -46, -46, -46, -46, -46, -46, -46, 68, -17, -14, -32, -86, -90, -88, 54, 37, 60, -1, 36, 68, -1, 2, -35, 12, -14, -87, 37, -90, -88, -85, -12, 60, 54, -30, 72, -1, -1, -121, 61, -120, -117, -118, 4, 4, 25, 74, 65, 25, -92, -91, -92, -108, -92, -19, -92, 60, -71, 61, -70, -7, 66, 76, -86, -90, -88, -85, -12, 60, 37, -75, 61, -7, 66, -78, 61, -48, -7, -51, 68, -67, -68, -8, -31, -3, -81, -7, 12, 60, -140, 60, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -56, -56, -14, -21, -22, -38, -42, -44, -56, 27, -24, -38, 36, -24, 61, -59, -17, -3, 60, -14, -35, -49, 61, -32, 9, -14, -49, -66, -6, -11, -74, -26, 2, 68, 73, 73, -7, -7, -7, 64, -7, -73, 69, -72, -55, -13, 60, 54, -33, -4, 25, -69, 69, -27, -33, -4, 60, -122, 63, -118, 4, -106, -107, -110, -109, -91, 25, 72, 24, 30, 23, 54, 9, 37, 18, 66, -106, -106, -51, 60, -100, -95, -3, -122, 63, 66, -56, -34, -7, 9, -122, 63, 66, -56, -122, 63, -66, 61, 76, -138, -31, -81, -7, -67, -6, -67, -53, 36, 63, 66, 6, -14, -136, 63, -62, -132, -138, 12, 76, -17, 32, 73, 67, -58, -57, -28, -16, -14, 68, 68, 37, -7, -90, -88, -85, -12, 60, -138, 76, -58, 69, 63, -127, -7, -7, 61, -3, 73, -122, 63, -7, 76, -5, 4, -13, 54, 25, -13, 60, 64, -122, 63, -82, 60, -4, 61, -120, 63, 63, 73, 4, 72, 68, 68, -106, -111, 60, 37, -107, -109, 9, 60, -93, -94, 60, 4, 51, -3, 66, 63, 63, -101, -100, 61, 76, -106, 12, 61, -70, -56, 61, 61, -77, -76, -75, -54, -56, 61, -48, 69, -3, -52, -89, 60, -86, -90, -88, -85, -12, -8, 61, 61, -129, -38, 27, 27, 36, -38, -10, 69, -9, 8, 13, -53, 61, -138, -17, 61, 61, -35, 69, 76, -138, 67, -49, -49, -7, 61, 69, -6, -66, -7, 69, -72, -5, -33, 61, -13, -5, -13, -3, 69, -27, -67, 61, -106, 73, -106, -105, -104, -97, -3, -103, -102, -96, -3, -106, 25, -91, -110, -106, -106, -101, 63, -94, 4, -93, 61, -3, -95, -5, -106, -122, 63, -7, 60, -67, -52, -66, 63, -14, -14, -62, -128, -59, 67, -133, 61, 73, 67, -28, -16, -15, -14, 68, -58, -58, 61, 69, -5, 61, 61, 61, -106, 73, 69, 63, -106, 69, 63, 60, 61, 61, 50, 63, -99, -98, 60, -106, 60, -5, 61, -76, -67, 61, 69, -38, 69, -66, 67, 66, 6, 76, -64, -35, -49, 69, 69, -5, -5, -52, -106, -97, -5, -96, -101, -99, -94, -101, -101, 61, -14, -14, -65, -63, 15, 73, -58, 61, 61, 61, 61, -52, 67, 67, 21, -11, 69, -99, -99, -134, -24, -53, } var yyDef = []int{ 4, -2, 2, 0, 6, 0, 21, 0, 218, 0, 157, 158, 159, 0, 5, 344, 19, -2, 0, 0, 3, 0, 0, 0, 20, 0, 24, 25, 26, 27, 0, 0, 0, 0, 256, 257, 258, 259, 260, 0, 263, 155, 155, 0, 0, 0, 292, 38, -2, 0, 74, 88, 91, 78, 163, 93, -2, 114, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 126, 127, 134, 0, 0, 139, -2, -2, 0, 290, 0, 0, 196, 197, 0, 0, 7, 8, 0, 21, 15, 0, 0, 0, 0, 345, 0, 0, 0, 0, 0, 18, 219, 28, 0, 0, 274, 154, 31, 0, 0, 35, 0, 0, 47, 210, 249, 0, 261, 264, 156, 153, 265, -2, 0, 162, 0, -2, 268, 269, 293, 276, 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 294, 0, 294, 0, 0, 290, 115, 116, 117, 118, 119, 120, 121, 122, 140, 0, 148, 149, 172, -2, -2, 0, 0, 0, 140, 151, 152, -2, 217, 0, 0, 291, 193, 0, 176, 177, 178, 179, 0, 0, 189, 0, 0, 0, 286, 10, 13, 21, 12, 16, 17, 160, 161, 22, 0, 0, 310, 0, 0, 311, 210, 0, 0, 286, 30, 220, 39, 0, 0, 166, 167, 168, 169, 170, 0, 0, 286, 34, 0, 0, 286, 37, 224, 48, 204, -2, 0, 288, 247, 243, 162, 246, 150, 164, 249, -2, 249, 50, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 51, 52, 277, 75, 0, 71, 72, 295, 0, 0, 89, 76, 63, 79, 123, 288, 278, 128, 0, 291, 0, 284, 147, 175, 0, 288, 284, 0, 270, 252, 253, 254, 255, 59, 0, 0, 194, 0, 198, 0, 0, 286, 201, 226, 0, 302, 0, 0, 272, 238, -2, 286, 203, 228, 0, 240, 0, 0, 287, 11, 0, 0, 312, 313, 314, 317, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 346, 0, 0, 287, 0, 41, 275, 0, 0, 0, 287, 0, 43, 0, 287, 0, 212, 289, 250, 244, 245, 165, 0, 262, 0, 73, 65, 294, 0, 0, 69, 0, 294, 0, 0, 0, 288, 289, 0, 0, 131, 290, 0, 288, 280, 281, 142, 140, 140, 0, 199, -2, -2, -2, -2, 0, 0, 289, 0, 216, -2, -2, 191, 192, 180, 190, 0, 0, 287, 302, 0, 231, 303, 0, 0, 236, 302, 0, 0, 0, 287, 239, 249, 0, 9, 14, 304, 305, 0, 0, 0, 298, 300, 324, 325, 0, 0, 315, 316, 0, 296, 0, 342, 0, 339, 0, 341, 0, 308, 309, 0, 297, 0, 0, 302, 0, 29, 221, 40, 171, 32, 286, 222, 44, 46, 42, 36, 225, 211, 162, 209, 213, 249, 184, 185, 186, 187, 188, 248, 212, 212, -2, 0, 0, 0, 63, 77, 64, 92, 61, 0, 0, 80, 124, 0, 279, 129, 130, 0, 137, 289, 285, 0, 284, 284, 0, 135, 136, 271, 0, 195, 200, 227, 230, 273, 302, 0, 233, 0, 237, 202, 229, 0, 241, 319, 0, 0, 0, 299, 348, 0, 0, 301, 350, 0, 334, -2, -2, 0, 327, 328, 0, 306, 0, 340, 0, 335, 0, 347, 330, 302, 0, 287, 45, 249, 0, 205, 0, 294, 67, 68, 0, -2, 0, 58, 84, 125, 132, 290, 282, 283, 141, 144, 140, 0, 0, -2, 60, 232, 302, 302, 212, 320, 0, 322, 0, 302, 323, 0, 296, 326, 335, 0, 307, 207, 336, 296, 338, 296, 331, 33, 223, 0, 214, 66, 70, 90, 62, 55, 0, 0, 0, 86, 0, 284, 143, 138, 234, 235, 242, 321, 349, 332, 351, 0, 329, 0, 0, 0, 212, 0, 0, 81, 85, 0, 133, 0, 335, 343, 337, 335, 206, 56, 57, 82, 87, 145, 333, 208, 294, 0, 83, } var yyTok1 = []int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 70, 3, 3, 65, 56, 57, 3, 60, 61, 54, 50, 76, 51, 64, 55, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 67, 63, 3, 66, 3, 74, 75, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 72, 3, 73, 53, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 68, 52, 69, 71, } var yyTok2 = []int{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 58, 59, 62, } var yyTok3 = []int{ 0, } //line yaccpar:1 /* parser for yacc output */ var yyDebug = 0 type yyLexer interface { Lex(lval *yySymType) int Error(s string) } type yyParser interface { Parse(yyLexer) int Lookahead() int } type yyParserImpl struct { lookahead func() int } func (p *yyParserImpl) Lookahead() int { return p.lookahead() } func yyNewParser() yyParser { p := &yyParserImpl{ lookahead: func() int { return -1 }, } return p } const yyFlag = -1000 func yyTokname(c int) string { // 4 is TOKSTART above if c >= 4 && c-4 < len(yyToknames) { if yyToknames[c-4] != "" { return yyToknames[c-4] } } return __yyfmt__.Sprintf("tok-%v", c) } func yyStatname(s int) string { if s >= 0 && s < len(yyStatenames) { if yyStatenames[s] != "" { return yyStatenames[s] } } return __yyfmt__.Sprintf("state-%v", s) } func yylex1(lex yyLexer, lval *yySymType) (char, token int) { token = 0 char = lex.Lex(lval) if char <= 0 { token = yyTok1[0] goto out } if char < len(yyTok1) { token = yyTok1[char] goto out } if char >= yyPrivate { if char < yyPrivate+len(yyTok2) { token = yyTok2[char-yyPrivate] goto out } } for i := 0; i < len(yyTok3); i += 2 { token = yyTok3[i+0] if token == char { token = yyTok3[i+1] goto out } } out: if token == 0 { token = yyTok2[1] /* unknown char */ } if yyDebug >= 3 { __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char)) } return char, token } func yyParse(yylex yyLexer) int { return yyNewParser().Parse(yylex) } func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int { var yyn int var yylval yySymType var yyVAL yySymType var yyDollar []yySymType yyS := make([]yySymType, yyMaxDepth) Nerrs := 0 /* number of errors */ Errflag := 0 /* error recovery flag */ yystate := 0 yychar := -1 yytoken := -1 // yychar translated into internal numbering yyrcvr.lookahead = func() int { return yychar } defer func() { // Make sure we report no lookahead when not parsing. yychar = -1 yytoken = -1 }() yyp := -1 goto yystack ret0: return 0 ret1: return 1 yystack: /* put a state and value onto the stack */ if yyDebug >= 4 { __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate)) } yyp++ if yyp >= len(yyS) { nyys := make([]yySymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys } yyS[yyp] = yyVAL yyS[yyp].yys = yystate yynewstate: yyn = yyPact[yystate] if yyn <= yyFlag { goto yydefault /* simple state */ } if yychar < 0 { yychar, yytoken = yylex1(yylex, &yylval) } yyn += yytoken if yyn < 0 || yyn >= yyLast { goto yydefault } yyn = yyAct[yyn] if yyChk[yyn] == yytoken { /* valid shift */ yychar = -1 yytoken = -1 yyVAL = yylval yystate = yyn if Errflag > 0 { Errflag-- } goto yystack } yydefault: /* default state action */ yyn = yyDef[yystate] if yyn == -2 { if yychar < 0 { yychar, yytoken = yylex1(yylex, &yylval) } /* look through exception table */ xi := 0 for { if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate { break } xi += 2 } for xi += 2; ; xi += 2 { yyn = yyExca[xi+0] if yyn < 0 || yyn == yytoken { break } } yyn = yyExca[xi+1] if yyn < 0 { goto ret0 } } if yyn == 0 { /* error ... attempt to resume parsing */ switch Errflag { case 0: /* brand new error */ yylex.Error("syntax error") Nerrs++ if yyDebug >= 1 { __yyfmt__.Printf("%s", yyStatname(yystate)) __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken)) } fallthrough case 1, 2: /* incompletely recovered error ... try again */ Errflag = 3 /* find a state where "error" is a legal shift action */ for yyp >= 0 { yyn = yyPact[yyS[yyp].yys] + yyErrCode if yyn >= 0 && yyn < yyLast { yystate = yyAct[yyn] /* simulate a shift of "error" */ if yyChk[yystate] == yyErrCode { goto yystack } } /* the current p has no shift on "error", pop stack */ if yyDebug >= 2 { __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) } yyp-- } /* there is no state on the stack with an error shift ... abort */ goto ret1 case 3: /* no shift yet; clobber input char */ if yyDebug >= 2 { __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken)) } if yytoken == yyEofCode { goto ret1 } yychar = -1 yytoken = -1 goto yynewstate /* try again in the same state */ } } /* reduction by production yyn */ if yyDebug >= 2 { __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate)) } yynt := yyn yypt := yyp _ = yypt // guard against "declared and not used" yyp -= yyR2[yyn] // yyp is now the index of $0. Perform the default action. Iff the // reduced production is ε, $1 is possibly out of range. if yyp+1 >= len(yyS) { nyys := make([]yySymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys } yyVAL = yyS[yyp+1] /* consult goto table to find next state */ yyn = yyR1[yyn] yyg := yyPgo[yyn] yyj := yyg + yyS[yyp].yys + 1 if yyj >= yyLast { yystate = yyAct[yyg] } else { yystate = yyAct[yyj] if yyChk[yystate] != -yyn { yystate = yyAct[yyg] } } // dummy call; replaced with literal code switch yynt { case 1: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:127 { xtop = concat(xtop, yyDollar[4].list) } case 2: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:133 { prevlineno = lineno Yyerror("package statement must be first") errorexit() } case 3: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:139 { mkpackage(yyDollar[2].sym.Name) } case 4: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:149 { importpkg = Runtimepkg if Debug['A'] != 0 { cannedimports("runtime.Builtin", "package runtime\n\n$$\n\n") } else { cannedimports("runtime.Builtin", runtimeimport) } curio.importsafe = true } case 5: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:161 { importpkg = nil } case 11: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:175 { ipkg := importpkg my := importmyname importpkg = nil importmyname = nil if my == nil { my = Lookup(ipkg.Name) } pack := Nod(OPACK, nil, nil) pack.Sym = my pack.Pkg = ipkg pack.Lineno = int32(yyDollar[1].i) if strings.HasPrefix(my.Name, ".") { importdot(ipkg, pack) break } if my.Name == "init" { Yyerror("cannot import package as init - init must be a func") break } if my.Name == "_" { break } if my.Def != nil { lineno = int32(yyDollar[1].i) redeclare(my, "as imported package name") } my.Def = pack my.Lastlineno = int32(yyDollar[1].i) my.Block = 1 // at top level } case 12: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:210 { // When an invalid import path is passed to importfile, // it calls Yyerror and then sets up a fake import with // no package statement. This allows us to test more // than one invalid import statement in a single file. if nerrors == 0 { Fatal("phase error in import") } } case 15: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:226 { // import with original name yyVAL.i = parserline() importmyname = nil importfile(&yyDollar[1].val, yyVAL.i) } case 16: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:233 { // import with given name yyVAL.i = parserline() importmyname = yyDollar[1].sym importfile(&yyDollar[2].val, yyVAL.i) } case 17: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:240 { // import into my name space yyVAL.i = parserline() importmyname = Lookup(".") importfile(&yyDollar[2].val, yyVAL.i) } case 18: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:249 { if importpkg.Name == "" { importpkg.Name = yyDollar[2].sym.Name numImport[yyDollar[2].sym.Name]++ } else if importpkg.Name != yyDollar[2].sym.Name { Yyerror("conflicting names %s and %s for package %q", importpkg.Name, yyDollar[2].sym.Name, importpkg.Path) } importpkg.Direct = 1 importpkg.Safe = curio.importsafe if safemode != 0 && !curio.importsafe { Yyerror("cannot import unsafe package %q", importpkg.Path) } } case 20: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:266 { if yyDollar[1].sym.Name == "safe" { curio.importsafe = true } } case 21: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:273 { defercheckwidth() } case 22: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:277 { resumecheckwidth() unimportfile() } case 23: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:286 { Yyerror("empty top-level declaration") yyVAL.list = nil } case 24: yyVAL.list = yyS[yypt-0].list case 25: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:292 { yyVAL.list = list1(yyDollar[1].node) } case 26: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:296 { Yyerror("non-declaration statement outside function body") yyVAL.list = nil } case 27: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:301 { yyVAL.list = nil } case 28: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:307 { yyVAL.list = yyDollar[2].list } case 29: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:311 { yyVAL.list = yyDollar[3].list } case 30: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:315 { yyVAL.list = nil } case 31: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:319 { yyVAL.list = yyDollar[2].list iota_ = -100000 lastconst = nil } case 32: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:325 { yyVAL.list = yyDollar[3].list iota_ = -100000 lastconst = nil } case 33: yyDollar = yyS[yypt-7 : yypt+1] //line go.y:331 { yyVAL.list = concat(yyDollar[3].list, yyDollar[5].list) iota_ = -100000 lastconst = nil } case 34: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:337 { yyVAL.list = nil iota_ = -100000 } case 35: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:342 { yyVAL.list = list1(yyDollar[2].node) } case 36: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:346 { yyVAL.list = yyDollar[3].list } case 37: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:350 { yyVAL.list = nil } case 38: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:356 { iota_ = 0 } case 39: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:362 { yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, nil) } case 40: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:366 { yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list) } case 41: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:370 { yyVAL.list = variter(yyDollar[1].list, nil, yyDollar[3].list) } case 42: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:376 { yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list) } case 43: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:380 { yyVAL.list = constiter(yyDollar[1].list, nil, yyDollar[3].list) } case 44: yyVAL.list = yyS[yypt-0].list case 45: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:387 { yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, nil) } case 46: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:391 { yyVAL.list = constiter(yyDollar[1].list, nil, nil) } case 47: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:397 { // different from dclname because the name // becomes visible right here, not at the end // of the declaration. yyVAL.node = typedcl0(yyDollar[1].sym) } case 48: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:406 { yyVAL.node = typedcl1(yyDollar[1].node, yyDollar[2].node, 1) } case 49: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:412 { yyVAL.node = yyDollar[1].node // These nodes do not carry line numbers. // Since a bare name used as an expression is an error, // introduce a wrapper node to give the correct line. switch yyVAL.node.Op { case ONAME, ONONAME, OTYPE, OPACK, OLITERAL: yyVAL.node = Nod(OPAREN, yyVAL.node, nil) yyVAL.node.Implicit = 1 break } } case 50: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:426 { yyVAL.node = Nod(OASOP, yyDollar[1].node, yyDollar[3].node) yyVAL.node.Etype = uint8(yyDollar[2].i) // rathole to pass opcode } case 51: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:431 { if yyDollar[1].list.Next == nil && yyDollar[3].list.Next == nil { // simple yyVAL.node = Nod(OAS, yyDollar[1].list.N, yyDollar[3].list.N) break } // multiple yyVAL.node = Nod(OAS2, nil, nil) yyVAL.node.List = yyDollar[1].list yyVAL.node.Rlist = yyDollar[3].list } case 52: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:443 { if yyDollar[3].list.N.Op == OTYPESW { yyVAL.node = Nod(OTYPESW, nil, yyDollar[3].list.N.Right) if yyDollar[3].list.Next != nil { Yyerror("expr.(type) must be alone in list") } if yyDollar[1].list.Next != nil { Yyerror("argument count mismatch: %d = %d", count(yyDollar[1].list), 1) } 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) { Yyerror("invalid variable name %s in type switch", Nconv(yyDollar[1].list.N, 0)) } else { yyVAL.node.Left = dclname(yyDollar[1].list.N.Sym) } // it's a colas, so must not re-use an oldname. break } yyVAL.node = colas(yyDollar[1].list, yyDollar[3].list, int32(yyDollar[2].i)) } case 53: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:461 { yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1)) yyVAL.node.Implicit = 1 yyVAL.node.Etype = OADD } case 54: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:467 { yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1)) yyVAL.node.Implicit = 1 yyVAL.node.Etype = OSUB } case 55: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:475 { var n, nn *Node // will be converted to OCASE // right will point to next case // done in casebody() markdcl() yyVAL.node = Nod(OXCASE, nil, nil) yyVAL.node.List = yyDollar[2].list if typesw != nil && typesw.Right != nil { n = typesw.Right.Left if n != nil { // type switch - declare variable nn = newname(n.Sym) declare(nn, dclcontext) yyVAL.node.Nname = nn // keep track of the instances for reporting unused nn.Defn = typesw.Right } } } case 56: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:498 { var n *Node // will be converted to OCASE // right will point to next case // done in casebody() markdcl() yyVAL.node = Nod(OXCASE, nil, nil) if yyDollar[2].list.Next == nil { n = Nod(OAS, yyDollar[2].list.N, yyDollar[4].node) } else { n = Nod(OAS2, nil, nil) n.List = yyDollar[2].list n.Rlist = list1(yyDollar[4].node) } yyVAL.node.List = list1(n) } case 57: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:516 { // will be converted to OCASE // right will point to next case // done in casebody() markdcl() yyVAL.node = Nod(OXCASE, nil, nil) yyVAL.node.List = list1(colas(yyDollar[2].list, list1(yyDollar[4].node), int32(yyDollar[3].i))) } case 58: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:525 { var n, nn *Node markdcl() yyVAL.node = Nod(OXCASE, nil, nil) if typesw != nil && typesw.Right != nil { n = typesw.Right.Left if n != nil { // type switch - declare variable nn = newname(n.Sym) declare(nn, dclcontext) yyVAL.node.Nname = nn // keep track of the instances for reporting unused nn.Defn = typesw.Right } } } case 59: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:546 { markdcl() } case 60: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:550 { if yyDollar[3].list == nil { yyVAL.node = Nod(OEMPTY, nil, nil) } else { yyVAL.node = liststmt(yyDollar[3].list) } popdcl() } case 61: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:561 { // If the last token read by the lexer was consumed // as part of the case, clear it (parser has cleared yychar). // If the last token read by the lexer was the lookahead // leave it alone (parser has it cached in yychar). // This is so that the stmt_list action doesn't look at // the case tokens if the stmt_list is empty. yylast = yychar yyDollar[1].node.Xoffset = int64(block) } case 62: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:572 { // This is the only place in the language where a statement // list is not allowed to drop the final semicolon, because // it's the only place where a statement list is not followed // by a closing brace. Handle the error for pedantry. // Find the final token of the statement list. // yylast is lookahead; yyprev is last of stmt_list last := yyprev if last > 0 && last != ';' && yychar != '}' { Yyerror("missing statement after label") } yyVAL.node = yyDollar[1].node yyVAL.node.Nbody = yyDollar[3].list popdcl() } case 63: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:591 { yyVAL.list = nil } case 64: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:595 { yyVAL.list = list(yyDollar[1].list, yyDollar[2].node) } case 65: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:601 { markdcl() } case 66: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:605 { yyVAL.list = yyDollar[3].list popdcl() } case 67: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:612 { yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node) yyVAL.node.List = yyDollar[1].list yyVAL.node.Etype = 0 // := flag } case 68: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:618 { yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node) yyVAL.node.List = yyDollar[1].list yyVAL.node.Colas = 1 colasdefn(yyDollar[1].list, yyVAL.node) } case 69: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:625 { yyVAL.node = Nod(ORANGE, nil, yyDollar[2].node) yyVAL.node.Etype = 0 // := flag } case 70: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:632 { // init ; test ; incr if yyDollar[5].node != nil && yyDollar[5].node.Colas != 0 { Yyerror("cannot declare in the for-increment") } yyVAL.node = Nod(OFOR, nil, nil) if yyDollar[1].node != nil { yyVAL.node.Ninit = list1(yyDollar[1].node) } yyVAL.node.Ntest = yyDollar[3].node yyVAL.node.Nincr = yyDollar[5].node } case 71: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:645 { // normal test yyVAL.node = Nod(OFOR, nil, nil) yyVAL.node.Ntest = yyDollar[1].node } case 72: yyVAL.node = yyS[yypt-0].node case 73: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:654 { yyVAL.node = yyDollar[1].node yyVAL.node.Nbody = concat(yyVAL.node.Nbody, yyDollar[2].list) } case 74: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:661 { markdcl() } case 75: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:665 { yyVAL.node = yyDollar[3].node popdcl() } case 76: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:672 { // test yyVAL.node = Nod(OIF, nil, nil) yyVAL.node.Ntest = yyDollar[1].node } case 77: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:678 { // init ; test yyVAL.node = Nod(OIF, nil, nil) if yyDollar[1].node != nil { yyVAL.node.Ninit = list1(yyDollar[1].node) } yyVAL.node.Ntest = yyDollar[3].node } case 78: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:690 { markdcl() } case 79: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:694 { if yyDollar[3].node.Ntest == nil { Yyerror("missing condition in if statement") } } case 80: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:700 { yyDollar[3].node.Nbody = yyDollar[5].list } case 81: yyDollar = yyS[yypt-8 : yypt+1] //line go.y:704 { var n *Node var nn *NodeList yyVAL.node = yyDollar[3].node n = yyDollar[3].node popdcl() for nn = concat(yyDollar[7].list, yyDollar[8].list); nn != nil; nn = nn.Next { if nn.N.Op == OIF { popdcl() } n.Nelse = list1(nn.N) n = nn.N } } case 82: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:722 { markdcl() } case 83: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:726 { if yyDollar[4].node.Ntest == nil { Yyerror("missing condition in if statement") } yyDollar[4].node.Nbody = yyDollar[5].list yyVAL.list = list1(yyDollar[4].node) } case 84: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:735 { yyVAL.list = nil } case 85: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:739 { yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list) } case 86: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:744 { yyVAL.list = nil } case 87: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:748 { l := &NodeList{N: yyDollar[2].node} l.End = l yyVAL.list = l } case 88: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:756 { markdcl() } case 89: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:760 { var n *Node n = yyDollar[3].node.Ntest if n != nil && n.Op != OTYPESW { n = nil } typesw = Nod(OXXX, typesw, n) } case 90: yyDollar = yyS[yypt-7 : yypt+1] //line go.y:769 { yyVAL.node = yyDollar[3].node yyVAL.node.Op = OSWITCH yyVAL.node.List = yyDollar[6].list typesw = typesw.Left popdcl() } case 91: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:779 { typesw = Nod(OXXX, typesw, nil) } case 92: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:783 { yyVAL.node = Nod(OSELECT, nil, nil) yyVAL.node.Lineno = typesw.Lineno yyVAL.node.List = yyDollar[4].list typesw = typesw.Left } case 93: yyVAL.node = yyS[yypt-0].node case 94: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:796 { yyVAL.node = Nod(OOROR, yyDollar[1].node, yyDollar[3].node) } case 95: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:800 { yyVAL.node = Nod(OANDAND, yyDollar[1].node, yyDollar[3].node) } case 96: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:804 { yyVAL.node = Nod(OEQ, yyDollar[1].node, yyDollar[3].node) } case 97: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:808 { yyVAL.node = Nod(ONE, yyDollar[1].node, yyDollar[3].node) } case 98: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:812 { yyVAL.node = Nod(OLT, yyDollar[1].node, yyDollar[3].node) } case 99: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:816 { yyVAL.node = Nod(OLE, yyDollar[1].node, yyDollar[3].node) } case 100: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:820 { yyVAL.node = Nod(OGE, yyDollar[1].node, yyDollar[3].node) } case 101: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:824 { yyVAL.node = Nod(OGT, yyDollar[1].node, yyDollar[3].node) } case 102: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:828 { yyVAL.node = Nod(OADD, yyDollar[1].node, yyDollar[3].node) } case 103: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:832 { yyVAL.node = Nod(OSUB, yyDollar[1].node, yyDollar[3].node) } case 104: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:836 { yyVAL.node = Nod(OOR, yyDollar[1].node, yyDollar[3].node) } case 105: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:840 { yyVAL.node = Nod(OXOR, yyDollar[1].node, yyDollar[3].node) } case 106: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:844 { yyVAL.node = Nod(OMUL, yyDollar[1].node, yyDollar[3].node) } case 107: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:848 { yyVAL.node = Nod(ODIV, yyDollar[1].node, yyDollar[3].node) } case 108: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:852 { yyVAL.node = Nod(OMOD, yyDollar[1].node, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:856 { yyVAL.node = Nod(OAND, yyDollar[1].node, yyDollar[3].node) } case 110: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:860 { yyVAL.node = Nod(OANDNOT, yyDollar[1].node, yyDollar[3].node) } case 111: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:864 { yyVAL.node = Nod(OLSH, yyDollar[1].node, yyDollar[3].node) } case 112: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:868 { yyVAL.node = Nod(ORSH, yyDollar[1].node, yyDollar[3].node) } case 113: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:873 { yyVAL.node = Nod(OSEND, yyDollar[1].node, yyDollar[3].node) } case 114: yyVAL.node = yyS[yypt-0].node case 115: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:880 { yyVAL.node = Nod(OIND, yyDollar[2].node, nil) } case 116: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:884 { if yyDollar[2].node.Op == OCOMPLIT { // Special case for &T{...}: turn into (*T){...}. yyVAL.node = yyDollar[2].node yyVAL.node.Right = Nod(OIND, yyVAL.node.Right, nil) yyVAL.node.Right.Implicit = 1 } else { yyVAL.node = Nod(OADDR, yyDollar[2].node, nil) } } case 117: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:895 { yyVAL.node = Nod(OPLUS, yyDollar[2].node, nil) } case 118: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:899 { yyVAL.node = Nod(OMINUS, yyDollar[2].node, nil) } case 119: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:903 { yyVAL.node = Nod(ONOT, yyDollar[2].node, nil) } case 120: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:907 { Yyerror("the bitwise complement operator is ^") yyVAL.node = Nod(OCOM, yyDollar[2].node, nil) } case 121: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:912 { yyVAL.node = Nod(OCOM, yyDollar[2].node, nil) } case 122: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:916 { yyVAL.node = Nod(ORECV, yyDollar[2].node, nil) } case 123: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:926 { yyVAL.node = Nod(OCALL, yyDollar[1].node, nil) } case 124: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:930 { yyVAL.node = Nod(OCALL, yyDollar[1].node, nil) yyVAL.node.List = yyDollar[3].list } case 125: yyDollar = yyS[yypt-6 : yypt+1] //line go.y:935 { yyVAL.node = Nod(OCALL, yyDollar[1].node, nil) yyVAL.node.List = yyDollar[3].list yyVAL.node.Isddd = 1 } case 126: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:943 { yyVAL.node = nodlit(yyDollar[1].val) } case 127: yyVAL.node = yyS[yypt-0].node case 128: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:948 { if yyDollar[1].node.Op == OPACK { var s *Sym s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Pkg) yyDollar[1].node.Used = 1 yyVAL.node = oldname(s) break } yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym)) } case 129: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:959 { yyVAL.node = Nod(ODOTTYPE, yyDollar[1].node, yyDollar[4].node) } case 130: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:963 { yyVAL.node = Nod(OTYPESW, nil, yyDollar[1].node) } case 131: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:967 { yyVAL.node = Nod(OINDEX, yyDollar[1].node, yyDollar[3].node) } case 132: yyDollar = yyS[yypt-6 : yypt+1] //line go.y:971 { yyVAL.node = Nod(OSLICE, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, yyDollar[5].node)) } case 133: yyDollar = yyS[yypt-8 : yypt+1] //line go.y:975 { if yyDollar[5].node == nil { Yyerror("middle index required in 3-index slice") } if yyDollar[7].node == nil { Yyerror("final index required in 3-index slice") } yyVAL.node = Nod(OSLICE3, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, Nod(OKEY, yyDollar[5].node, yyDollar[7].node))) } case 134: yyVAL.node = yyS[yypt-0].node case 135: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:986 { // conversion yyVAL.node = Nod(OCALL, yyDollar[1].node, nil) yyVAL.node.List = list1(yyDollar[3].node) } case 136: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:992 { yyVAL.node = yyDollar[3].node yyVAL.node.Right = yyDollar[1].node yyVAL.node.List = yyDollar[4].list fixlbrace(yyDollar[2].i) } case 137: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:999 { yyVAL.node = yyDollar[3].node yyVAL.node.Right = yyDollar[1].node yyVAL.node.List = yyDollar[4].list } case 138: yyDollar = yyS[yypt-7 : yypt+1] //line go.y:1005 { Yyerror("cannot parenthesize type in composite literal") yyVAL.node = yyDollar[5].node yyVAL.node.Right = yyDollar[2].node yyVAL.node.List = yyDollar[6].list } case 139: yyVAL.node = yyS[yypt-0].node case 140: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1014 { // composite expression. // make node early so we get the right line number. yyVAL.node = Nod(OCOMPLIT, nil, nil) } case 141: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1022 { yyVAL.node = Nod(OKEY, yyDollar[1].node, yyDollar[3].node) } case 142: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1028 { // These nodes do not carry line numbers. // Since a composite literal commonly spans several lines, // the line number on errors may be misleading. // Introduce a wrapper node to give the correct line. yyVAL.node = yyDollar[1].node switch yyVAL.node.Op { case ONAME, ONONAME, OTYPE, OPACK, OLITERAL: yyVAL.node = Nod(OPAREN, yyVAL.node, nil) yyVAL.node.Implicit = 1 } } case 143: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1041 { yyVAL.node = yyDollar[2].node yyVAL.node.List = yyDollar[3].list } case 144: yyVAL.node = yyS[yypt-0].node case 145: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1049 { yyVAL.node = yyDollar[2].node yyVAL.node.List = yyDollar[3].list } case 146: yyVAL.node = yyS[yypt-0].node case 147: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1057 { yyVAL.node = yyDollar[2].node // Need to know on lhs of := whether there are ( ). // Don't bother with the OPAREN in other cases: // it's just a waste of memory and time. switch yyVAL.node.Op { case ONAME, ONONAME, OPACK, OTYPE, OLITERAL, OTYPESW: yyVAL.node = Nod(OPAREN, yyVAL.node, nil) } } case 148: yyVAL.node = yyS[yypt-0].node case 149: yyVAL.node = yyS[yypt-0].node case 150: yyVAL.node = yyS[yypt-0].node case 151: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1078 { yyVAL.i = LBODY } case 152: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1082 { yyVAL.i = '{' } case 153: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1093 { if yyDollar[1].sym == nil { yyVAL.node = nil } else { yyVAL.node = newname(yyDollar[1].sym) } } case 154: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1103 { yyVAL.node = dclname(yyDollar[1].sym) } case 155: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1108 { yyVAL.node = nil } case 156: yyVAL.node = yyS[yypt-0].node case 157: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1115 { yyVAL.sym = yyDollar[1].sym // during imports, unqualified non-exported identifiers are from builtinpkg if importpkg != nil && !exportname(yyDollar[1].sym.Name) { yyVAL.sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg) } } case 158: yyVAL.sym = yyS[yypt-0].sym case 159: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1124 { yyVAL.sym = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1130 { var p *Pkg if yyDollar[2].val.U.Sval == "" { p = importpkg } else { if isbadimport(yyDollar[2].val.U.Sval) { errorexit() } p = mkpkg(yyDollar[2].val.U.Sval) } yyVAL.sym = Pkglookup(yyDollar[4].sym.Name, p) } case 161: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1144 { var p *Pkg if yyDollar[2].val.U.Sval == "" { p = importpkg } else { if isbadimport(yyDollar[2].val.U.Sval) { errorexit() } p = mkpkg(yyDollar[2].val.U.Sval) } yyVAL.sym = Pkglookup("?", p) } case 162: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1160 { yyVAL.node = oldname(yyDollar[1].sym) if yyVAL.node.Pack != nil { yyVAL.node.Pack.Used = 1 } } case 163: yyVAL.node = yyS[yypt-0].node case 164: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1181 { Yyerror("final argument in variadic function missing type") yyVAL.node = Nod(ODDD, typenod(typ(TINTER)), nil) } case 165: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1186 { yyVAL.node = Nod(ODDD, yyDollar[2].node, nil) } case 166: yyVAL.node = yyS[yypt-0].node case 167: yyVAL.node = yyS[yypt-0].node case 168: yyVAL.node = yyS[yypt-0].node case 169: yyVAL.node = yyS[yypt-0].node case 170: yyVAL.node = yyS[yypt-0].node case 171: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1197 { yyVAL.node = yyDollar[2].node } case 172: yyVAL.node = yyS[yypt-0].node case 173: yyVAL.node = yyS[yypt-0].node case 174: yyVAL.node = yyS[yypt-0].node case 175: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1206 { yyVAL.node = Nod(OIND, yyDollar[2].node, nil) } case 176: yyVAL.node = yyS[yypt-0].node case 177: yyVAL.node = yyS[yypt-0].node case 178: yyVAL.node = yyS[yypt-0].node case 179: yyVAL.node = yyS[yypt-0].node case 180: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1216 { yyVAL.node = yyDollar[2].node } case 181: yyVAL.node = yyS[yypt-0].node case 182: yyVAL.node = yyS[yypt-0].node case 183: yyVAL.node = yyS[yypt-0].node case 184: yyVAL.node = yyS[yypt-0].node case 185: yyVAL.node = yyS[yypt-0].node case 186: yyVAL.node = yyS[yypt-0].node case 187: yyVAL.node = yyS[yypt-0].node case 188: yyVAL.node = yyS[yypt-0].node case 189: yyVAL.node = yyS[yypt-0].node case 190: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1237 { if yyDollar[1].node.Op == OPACK { var s *Sym s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Pkg) yyDollar[1].node.Used = 1 yyVAL.node = oldname(s) break } yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym)) } case 191: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1250 { yyVAL.node = Nod(OTARRAY, yyDollar[2].node, yyDollar[4].node) } case 192: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1254 { // array literal of nelem yyVAL.node = Nod(OTARRAY, Nod(ODDD, nil, nil), yyDollar[4].node) } case 193: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1259 { yyVAL.node = Nod(OTCHAN, yyDollar[2].node, nil) yyVAL.node.Etype = Cboth } case 194: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1264 { yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil) yyVAL.node.Etype = Csend } case 195: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1269 { yyVAL.node = Nod(OTMAP, yyDollar[3].node, yyDollar[5].node) } case 196: yyVAL.node = yyS[yypt-0].node case 197: yyVAL.node = yyS[yypt-0].node case 198: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1277 { yyVAL.node = Nod(OIND, yyDollar[2].node, nil) } case 199: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1283 { yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil) yyVAL.node.Etype = Crecv } case 200: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1290 { yyVAL.node = Nod(OTSTRUCT, nil, nil) yyVAL.node.List = yyDollar[3].list fixlbrace(yyDollar[2].i) } case 201: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1296 { yyVAL.node = Nod(OTSTRUCT, nil, nil) fixlbrace(yyDollar[2].i) } case 202: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1303 { yyVAL.node = Nod(OTINTER, nil, nil) yyVAL.node.List = yyDollar[3].list fixlbrace(yyDollar[2].i) } case 203: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1309 { yyVAL.node = Nod(OTINTER, nil, nil) fixlbrace(yyDollar[2].i) } case 204: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1320 { yyVAL.node = yyDollar[2].node if yyVAL.node == nil { break } if noescape && yyDollar[3].list != nil { Yyerror("can only use //go:noescape with external func implementations") } yyVAL.node.Nbody = yyDollar[3].list yyVAL.node.Endlineno = lineno yyVAL.node.Noescape = noescape yyVAL.node.Nosplit = nosplit yyVAL.node.Nowritebarrier = nowritebarrier funcbody(yyVAL.node) } case 205: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1338 { var t *Node yyVAL.node = nil yyDollar[3].list = checkarglist(yyDollar[3].list, 1) if yyDollar[1].sym.Name == "init" { yyDollar[1].sym = renameinit() if yyDollar[3].list != nil || yyDollar[5].list != nil { Yyerror("func init must have no arguments and no return values") } } if localpkg.Name == "main" && yyDollar[1].sym.Name == "main" { if yyDollar[3].list != nil || yyDollar[5].list != nil { Yyerror("func main must have no arguments and no return values") } } t = Nod(OTFUNC, nil, nil) t.List = yyDollar[3].list t.Rlist = yyDollar[5].list yyVAL.node = Nod(ODCLFUNC, nil, nil) yyVAL.node.Nname = newname(yyDollar[1].sym) yyVAL.node.Nname.Defn = yyVAL.node yyVAL.node.Nname.Ntype = t // TODO: check if nname already has an ntype declare(yyVAL.node.Nname, PFUNC) funchdr(yyVAL.node) } case 206: yyDollar = yyS[yypt-8 : yypt+1] //line go.y:1369 { var rcvr, t *Node yyVAL.node = nil yyDollar[2].list = checkarglist(yyDollar[2].list, 0) yyDollar[6].list = checkarglist(yyDollar[6].list, 1) if yyDollar[2].list == nil { Yyerror("method has no receiver") break } if yyDollar[2].list.Next != nil { Yyerror("method has multiple receivers") break } rcvr = yyDollar[2].list.N if rcvr.Op != ODCLFIELD { Yyerror("bad receiver in method") break } t = Nod(OTFUNC, rcvr, nil) t.List = yyDollar[6].list t.Rlist = yyDollar[8].list yyVAL.node = Nod(ODCLFUNC, nil, nil) yyVAL.node.Shortname = newname(yyDollar[4].sym) yyVAL.node.Nname = methodname1(yyVAL.node.Shortname, rcvr.Right) yyVAL.node.Nname.Defn = yyVAL.node yyVAL.node.Nname.Ntype = t yyVAL.node.Nname.Nointerface = nointerface declare(yyVAL.node.Nname, PFUNC) funchdr(yyVAL.node) } case 207: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1407 { var s *Sym var t *Type yyVAL.node = nil s = yyDollar[1].sym t = functype(nil, yyDollar[3].list, yyDollar[5].list) importsym(s, ONAME) if s.Def != nil && s.Def.Op == ONAME { if Eqtype(t, s.Def.Type) { dclcontext = PDISCARD // since we skip funchdr below break } Yyerror("inconsistent definition for func %v during import\n\t%v\n\t%v", Sconv(s, 0), Tconv(s.Def.Type, 0), Tconv(t, 0)) } yyVAL.node = newname(s) yyVAL.node.Type = t declare(yyVAL.node, PFUNC) funchdr(yyVAL.node) } case 208: yyDollar = yyS[yypt-8 : yypt+1] //line go.y:1432 { yyVAL.node = methodname1(newname(yyDollar[4].sym), yyDollar[2].list.N.Right) yyVAL.node.Type = functype(yyDollar[2].list.N, yyDollar[6].list, yyDollar[8].list) checkwidth(yyVAL.node.Type) addmethod(yyDollar[4].sym, yyVAL.node.Type, false, nointerface) nointerface = false funchdr(yyVAL.node) // inl.C's inlnode in on a dotmeth node expects to find the inlineable body as // (dotmeth's type).Nname.Inl, and dotmeth's type has been pulled // out by typecheck's lookdot as this $$.ttype. So by providing // this back link here we avoid special casing there. yyVAL.node.Type.Nname = yyVAL.node } case 209: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1450 { yyDollar[3].list = checkarglist(yyDollar[3].list, 1) yyVAL.node = Nod(OTFUNC, nil, nil) yyVAL.node.List = yyDollar[3].list yyVAL.node.Rlist = yyDollar[5].list } case 210: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1458 { yyVAL.list = nil } case 211: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1462 { yyVAL.list = yyDollar[2].list if yyVAL.list == nil { yyVAL.list = list1(Nod(OEMPTY, nil, nil)) } } case 212: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1471 { yyVAL.list = nil } case 213: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1475 { yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node)) } case 214: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1479 { yyDollar[2].list = checkarglist(yyDollar[2].list, 0) yyVAL.list = yyDollar[2].list } case 215: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1486 { closurehdr(yyDollar[1].node) } case 216: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1492 { yyVAL.node = closurebody(yyDollar[3].list) fixlbrace(yyDollar[2].i) } case 217: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1497 { yyVAL.node = closurebody(nil) } case 218: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1508 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1512 { yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list) if nsyntaxerrors == 0 { testdclstack() } nointerface = false noescape = false nosplit = false nowritebarrier = false } case 220: yyVAL.list = yyS[yypt-0].list case 221: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1526 { yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list) } case 222: yyVAL.list = yyS[yypt-0].list case 223: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1533 { yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list) } case 224: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1539 { yyVAL.list = list1(yyDollar[1].node) } case 225: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1543 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 226: yyVAL.list = yyS[yypt-0].list case 227: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1550 { yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list) } case 228: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1556 { yyVAL.list = list1(yyDollar[1].node) } case 229: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1560 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 230: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1566 { var l *NodeList var n *Node l = yyDollar[1].list if l == nil { // ? symbol, during import (list1(nil) == nil) n = yyDollar[2].node if n.Op == OIND { n = n.Left } n = embedded(n.Sym, importpkg) n.Right = yyDollar[2].node n.Val = yyDollar[3].val yyVAL.list = list1(n) break } for l = yyDollar[1].list; l != nil; l = l.Next { l.N = Nod(ODCLFIELD, l.N, yyDollar[2].node) l.N.Val = yyDollar[3].val } } case 231: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1590 { yyDollar[1].node.Val = yyDollar[2].val yyVAL.list = list1(yyDollar[1].node) } case 232: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1595 { yyDollar[2].node.Val = yyDollar[4].val yyVAL.list = list1(yyDollar[2].node) Yyerror("cannot parenthesize embedded type") } case 233: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1601 { yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil) yyDollar[2].node.Val = yyDollar[3].val yyVAL.list = list1(yyDollar[2].node) } case 234: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1607 { yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil) yyDollar[3].node.Val = yyDollar[5].val yyVAL.list = list1(yyDollar[3].node) Yyerror("cannot parenthesize embedded type") } case 235: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1614 { yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil) yyDollar[3].node.Val = yyDollar[5].val yyVAL.list = list1(yyDollar[3].node) Yyerror("cannot parenthesize embedded type") } case 236: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1623 { var n *Node yyVAL.sym = yyDollar[1].sym n = oldname(yyDollar[1].sym) if n.Pack != nil { n.Pack.Used = 1 } } case 237: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1633 { var pkg *Pkg if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OPACK { Yyerror("%v is not a package", Sconv(yyDollar[1].sym, 0)) pkg = localpkg } else { yyDollar[1].sym.Def.Used = 1 pkg = yyDollar[1].sym.Def.Pkg } yyVAL.sym = restrictlookup(yyDollar[3].sym.Name, pkg) } case 238: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1648 { yyVAL.node = embedded(yyDollar[1].sym, localpkg) } case 239: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1654 { yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node) ifacedcl(yyVAL.node) } case 240: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1659 { yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym)) } case 241: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1663 { yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[2].sym)) Yyerror("cannot parenthesize embedded type") } case 242: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1670 { // without func keyword yyDollar[2].list = checkarglist(yyDollar[2].list, 1) yyVAL.node = Nod(OTFUNC, fakethis(), nil) yyVAL.node.List = yyDollar[2].list yyVAL.node.Rlist = yyDollar[4].list } case 243: yyVAL.node = yyS[yypt-0].node case 244: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1684 { yyVAL.node = Nod(ONONAME, nil, nil) yyVAL.node.Sym = yyDollar[1].sym yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node) } case 245: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1690 { yyVAL.node = Nod(ONONAME, nil, nil) yyVAL.node.Sym = yyDollar[1].sym yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node) } case 246: yyVAL.node = yyS[yypt-0].node case 247: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1699 { yyVAL.list = list1(yyDollar[1].node) } case 248: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1703 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 249: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1708 { yyVAL.list = nil } case 250: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1712 { yyVAL.list = yyDollar[1].list } case 251: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1720 { yyVAL.node = nil } case 252: yyVAL.node = yyS[yypt-0].node case 253: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1725 { yyVAL.node = liststmt(yyDollar[1].list) } case 254: yyVAL.node = yyS[yypt-0].node case 255: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1730 { yyVAL.node = nil } case 256: yyVAL.node = yyS[yypt-0].node case 257: yyVAL.node = yyS[yypt-0].node case 258: yyVAL.node = yyS[yypt-0].node case 259: yyVAL.node = yyS[yypt-0].node case 260: yyVAL.node = yyS[yypt-0].node case 261: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1741 { yyDollar[1].node = Nod(OLABEL, yyDollar[1].node, nil) yyDollar[1].node.Sym = dclstack // context, for goto restrictions } case 262: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1746 { var l *NodeList yyDollar[1].node.Defn = yyDollar[4].node l = list1(yyDollar[1].node) if yyDollar[4].node != nil { l = list(l, yyDollar[4].node) } yyVAL.node = liststmt(l) } case 263: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1757 { // will be converted to OFALL yyVAL.node = Nod(OXFALL, nil, nil) yyVAL.node.Xoffset = int64(block) } case 264: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1763 { yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil) } case 265: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1767 { yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil) } case 266: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1771 { yyVAL.node = Nod(OPROC, yyDollar[2].node, nil) } case 267: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1775 { yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil) } case 268: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1779 { yyVAL.node = Nod(OGOTO, yyDollar[2].node, nil) yyVAL.node.Sym = dclstack // context, for goto restrictions } case 269: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1784 { yyVAL.node = Nod(ORETURN, nil, nil) yyVAL.node.List = yyDollar[2].list if yyVAL.node.List == nil && Curfn != nil { var l *NodeList for l = Curfn.Dcl; l != nil; l = l.Next { if l.N.Class == PPARAM { continue } if l.N.Class != PPARAMOUT { break } if l.N.Sym.Def != l.N { Yyerror("%s is shadowed during return", l.N.Sym.Name) } } } } case 270: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1806 { yyVAL.list = nil if yyDollar[1].node != nil { yyVAL.list = list1(yyDollar[1].node) } } case 271: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1813 { yyVAL.list = yyDollar[1].list if yyDollar[3].node != nil { yyVAL.list = list(yyVAL.list, yyDollar[3].node) } } case 272: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1822 { yyVAL.list = list1(yyDollar[1].node) } case 273: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1826 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 274: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1832 { yyVAL.list = list1(yyDollar[1].node) } case 275: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1836 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 276: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1842 { yyVAL.list = list1(yyDollar[1].node) } case 277: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1846 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 278: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1852 { yyVAL.list = list1(yyDollar[1].node) } case 279: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1856 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 280: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1865 { yyVAL.list = list1(yyDollar[1].node) } case 281: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1869 { yyVAL.list = list1(yyDollar[1].node) } case 282: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1873 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 283: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:1877 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 284: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1882 { yyVAL.list = nil } case 285: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:1886 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1900 { yyVAL.node = nil } case 291: yyVAL.node = yyS[yypt-0].node case 292: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1906 { yyVAL.list = nil } case 293: yyVAL.list = yyS[yypt-0].list case 294: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1912 { yyVAL.node = nil } case 295: yyVAL.node = yyS[yypt-0].node case 296: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1918 { yyVAL.list = nil } case 297: yyVAL.list = yyS[yypt-0].list case 298: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1924 { yyVAL.list = nil } case 299: yyVAL.list = yyS[yypt-0].list case 300: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1930 { yyVAL.list = nil } case 301: yyVAL.list = yyS[yypt-0].list case 302: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:1936 { yyVAL.val.Ctype = CTxxx } case 303: yyVAL.val = yyS[yypt-0].val case 304: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1946 { importimport(yyDollar[2].sym, yyDollar[3].val.U.Sval) } case 305: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1950 { importvar(yyDollar[2].sym, yyDollar[3].typ) } case 306: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:1954 { importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node) } case 307: yyDollar = yyS[yypt-6 : yypt+1] //line go.y:1958 { importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node) } case 308: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1962 { importtype(yyDollar[2].typ, yyDollar[3].typ) } case 309: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:1966 { if yyDollar[2].node == nil { dclcontext = PEXTERN // since we skip the funcbody below break } yyDollar[2].node.Inl = yyDollar[3].list funcbody(yyDollar[2].node) importlist = list(importlist, yyDollar[2].node) if Debug['E'] > 0 { print("import [%q] func %lN \n", importpkg.Path, yyDollar[2].node) if Debug['m'] > 2 && yyDollar[2].node.Inl != nil { print("inl body:%+H\n", yyDollar[2].node.Inl) } } } case 310: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1987 { yyVAL.sym = yyDollar[1].sym structpkg = yyVAL.sym.Pkg } case 311: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:1994 { yyVAL.typ = pkgtype(yyDollar[1].sym) importsym(yyDollar[1].sym, OTYPE) } case 312: yyVAL.typ = yyS[yypt-0].typ case 313: yyVAL.typ = yyS[yypt-0].typ case 314: yyVAL.typ = yyS[yypt-0].typ case 315: yyVAL.typ = yyS[yypt-0].typ case 316: yyVAL.typ = yyS[yypt-0].typ case 317: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2014 { yyVAL.typ = pkgtype(yyDollar[1].sym) } case 318: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2018 { // predefined name like uint8 yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg) if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OTYPE { Yyerror("%s is not a type", yyDollar[1].sym.Name) yyVAL.typ = nil } else { yyVAL.typ = yyDollar[1].sym.Def.Type } } case 319: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2029 { yyVAL.typ = aindex(nil, yyDollar[3].typ) } case 320: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:2033 { yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ) } case 321: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:2037 { yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ) } case 322: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:2041 { yyVAL.typ = tostruct(yyDollar[3].list) } case 323: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:2045 { yyVAL.typ = tointerface(yyDollar[3].list) } case 324: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:2049 { yyVAL.typ = Ptrto(yyDollar[2].typ) } case 325: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:2053 { yyVAL.typ = typ(TCHAN) yyVAL.typ.Type = yyDollar[2].typ yyVAL.typ.Chan = Cboth } case 326: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:2059 { yyVAL.typ = typ(TCHAN) yyVAL.typ.Type = yyDollar[3].typ yyVAL.typ.Chan = Cboth } case 327: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2065 { yyVAL.typ = typ(TCHAN) yyVAL.typ.Type = yyDollar[3].typ yyVAL.typ.Chan = Csend } case 328: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2073 { yyVAL.typ = typ(TCHAN) yyVAL.typ.Type = yyDollar[3].typ yyVAL.typ.Chan = Crecv } case 329: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:2081 { yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list) } case 330: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2087 { yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ)) if yyDollar[1].sym != nil { yyVAL.node.Left = newname(yyDollar[1].sym) } yyVAL.node.Val = yyDollar[3].val } case 331: yyDollar = yyS[yypt-4 : yypt+1] //line go.y:2095 { var t *Type t = typ(TARRAY) t.Bound = -1 t.Type = yyDollar[3].typ yyVAL.node = Nod(ODCLFIELD, nil, typenod(t)) if yyDollar[1].sym != nil { yyVAL.node.Left = newname(yyDollar[1].sym) } yyVAL.node.Isddd = 1 yyVAL.node.Val = yyDollar[4].val } case 332: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2112 { var s *Sym var p *Pkg if yyDollar[1].sym != nil && yyDollar[1].sym.Name != "?" { yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(yyDollar[2].typ)) yyVAL.node.Val = yyDollar[3].val } else { s = yyDollar[2].typ.Sym if s == nil && Isptr[yyDollar[2].typ.Etype] { s = yyDollar[2].typ.Type.Sym } p = importpkg if yyDollar[1].sym != nil { p = yyDollar[1].sym.Pkg } yyVAL.node = embedded(s, p) yyVAL.node.Right = typenod(yyDollar[2].typ) yyVAL.node.Val = yyDollar[3].val } } case 333: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:2136 { yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(functype(fakethis(), yyDollar[3].list, yyDollar[5].list))) } case 334: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2140 { yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)) } case 335: yyDollar = yyS[yypt-0 : yypt+1] //line go.y:2145 { yyVAL.list = nil } case 336: yyVAL.list = yyS[yypt-0].list case 337: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2152 { yyVAL.list = yyDollar[2].list } case 338: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2156 { yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))) } case 339: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2166 { yyVAL.node = nodlit(yyDollar[1].val) } case 340: yyDollar = yyS[yypt-2 : yypt+1] //line go.y:2170 { yyVAL.node = nodlit(yyDollar[2].val) switch yyVAL.node.Val.Ctype { case CTINT, CTRUNE: mpnegfix(yyVAL.node.Val.U.Xval) break case CTFLT: mpnegflt(yyVAL.node.Val.U.Fval) break case CTCPLX: mpnegflt(&yyVAL.node.Val.U.Cval.Real) mpnegflt(&yyVAL.node.Val.U.Cval.Imag) break default: Yyerror("bad negated constant") } } case 341: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2188 { yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg)) if yyVAL.node.Op != OLITERAL { Yyerror("bad constant %v", Sconv(yyVAL.node.Sym, 0)) } } case 342: yyVAL.node = yyS[yypt-0].node case 343: yyDollar = yyS[yypt-5 : yypt+1] //line go.y:2198 { if yyDollar[2].node.Val.Ctype == CTRUNE && yyDollar[4].node.Val.Ctype == CTINT { yyVAL.node = yyDollar[2].node mpaddfixfix(yyDollar[2].node.Val.U.Xval, yyDollar[4].node.Val.U.Xval, 0) break } yyDollar[4].node.Val.U.Cval.Real = yyDollar[4].node.Val.U.Cval.Imag Mpmovecflt(&yyDollar[4].node.Val.U.Cval.Imag, 0.0) yyVAL.node = nodcplxlit(yyDollar[2].node.Val, yyDollar[4].node.Val) } case 346: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2214 { yyVAL.list = list1(yyDollar[1].node) } case 347: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2218 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 348: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2224 { yyVAL.list = list1(yyDollar[1].node) } case 349: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2228 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } case 350: yyDollar = yyS[yypt-1 : yypt+1] //line go.y:2234 { yyVAL.list = list1(yyDollar[1].node) } case 351: yyDollar = yyS[yypt-3 : yypt+1] //line go.y:2238 { yyVAL.list = list(yyDollar[1].list, yyDollar[3].node) } } goto yystack /* stack new state and value */ }