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