This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #25824] Segmentation fault with
[perl5.git] / perly.act
1 case 2:
2 #line 88 "perly.y"
3     { yyval.ival = yyvsp[-1].ival; newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); ;}
4     break;
5
6   case 3:
7 #line 93 "perly.y"
8     { if (PL_copline > (line_t)yyvsp[-3].ival)
9                               PL_copline = (line_t)yyvsp[-3].ival;
10                           yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); ;}
11     break;
12
13   case 4:
14 #line 99 "perly.y"
15     { yyval.ival = block_start(TRUE); ;}
16     break;
17
18   case 5:
19 #line 103 "perly.y"
20     {
21                     PL_expect = XSTATE; yyval.ival = block_start(TRUE);
22                 ;}
23     break;
24
25   case 6:
26 #line 110 "perly.y"
27     { if (PL_copline > (line_t)yyvsp[-3].ival)
28                               PL_copline = (line_t)yyvsp[-3].ival;
29                           yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); ;}
30     break;
31
32   case 7:
33 #line 116 "perly.y"
34     { yyval.ival = block_start(FALSE); ;}
35     break;
36
37   case 8:
38 #line 120 "perly.y"
39     { yyval.ival = PL_savestack_ix; ;}
40     break;
41
42   case 9:
43 #line 124 "perly.y"
44     { yyval.opval = Nullop; ;}
45     break;
46
47   case 10:
48 #line 126 "perly.y"
49     { yyval.opval = yyvsp[-1].opval; ;}
50     break;
51
52   case 11:
53 #line 128 "perly.y"
54     {   LEAVE_SCOPE(yyvsp[-1].ival);
55                             yyval.opval = append_list(OP_LINESEQ,
56                                 (LISTOP*)yyvsp[-2].opval, (LISTOP*)yyvsp[0].opval);
57                             PL_pad_reset_pending = TRUE;
58                             if (yyvsp[-2].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; ;}
59     break;
60
61   case 12:
62 #line 137 "perly.y"
63     { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); ;}
64     break;
65
66   case 14:
67 #line 140 "perly.y"
68     { if (yyvsp[-1].pval != Nullch) {
69                               yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
70                             }
71                             else {
72                               yyval.opval = Nullop;
73                               PL_copline = NOLINE;
74                             }
75                             PL_expect = XSTATE; ;}
76     break;
77
78   case 15:
79 #line 149 "perly.y"
80     { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
81                           PL_expect = XSTATE; ;}
82     break;
83
84   case 16:
85 #line 155 "perly.y"
86     { yyval.opval = Nullop; ;}
87     break;
88
89   case 17:
90 #line 157 "perly.y"
91     { yyval.opval = yyvsp[0].opval; ;}
92     break;
93
94   case 18:
95 #line 159 "perly.y"
96     { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); ;}
97     break;
98
99   case 19:
100 #line 161 "perly.y"
101     { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); ;}
102     break;
103
104   case 20:
105 #line 163 "perly.y"
106     { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); ;}
107     break;
108
109   case 21:
110 #line 165 "perly.y"
111     { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);;}
112     break;
113
114   case 22:
115 #line 167 "perly.y"
116     { yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival,
117                                         Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); ;}
118     break;
119
120   case 23:
121 #line 173 "perly.y"
122     { yyval.opval = Nullop; ;}
123     break;
124
125   case 24:
126 #line 175 "perly.y"
127     { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); ;}
128     break;
129
130   case 25:
131 #line 177 "perly.y"
132     { PL_copline = (line_t)yyvsp[-5].ival;
133                             yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval);
134                             PL_hints |= HINT_BLOCK_SCOPE; ;}
135     break;
136
137   case 26:
138 #line 184 "perly.y"
139     { PL_copline = (line_t)yyvsp[-6].ival;
140                             yyval.opval = block_end(yyvsp[-4].ival,
141                                    newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;}
142     break;
143
144   case 27:
145 #line 188 "perly.y"
146     { PL_copline = (line_t)yyvsp[-6].ival;
147                             yyval.opval = block_end(yyvsp[-4].ival,
148                                    newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;}
149     break;
150
151   case 28:
152 #line 195 "perly.y"
153     { yyval.opval = Nullop; ;}
154     break;
155
156   case 29:
157 #line 197 "perly.y"
158     { yyval.opval = scope(yyvsp[0].opval); ;}
159     break;
160
161   case 30:
162 #line 202 "perly.y"
163     { PL_copline = (line_t)yyvsp[-6].ival;
164                             yyval.opval = block_end(yyvsp[-4].ival,
165                                    newSTATEOP(0, yyvsp[-7].pval,
166                                      newWHILEOP(0, 1, (LOOP*)Nullop,
167                                                 yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;}
168     break;
169
170   case 31:
171 #line 208 "perly.y"
172     { PL_copline = (line_t)yyvsp[-6].ival;
173                             yyval.opval = block_end(yyvsp[-4].ival,
174                                    newSTATEOP(0, yyvsp[-7].pval,
175                                      newWHILEOP(0, 1, (LOOP*)Nullop,
176                                                 yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;}
177     break;
178
179   case 32:
180 #line 214 "perly.y"
181     { yyval.opval = block_end(yyvsp[-6].ival,
182                                  newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
183     break;
184
185   case 33:
186 #line 217 "perly.y"
187     { yyval.opval = block_end(yyvsp[-4].ival,
188                                  newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP),
189                                           yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
190     break;
191
192   case 34:
193 #line 221 "perly.y"
194     { yyval.opval = block_end(yyvsp[-4].ival,
195                                  newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
196     break;
197
198   case 35:
199 #line 225 "perly.y"
200     { OP *forop;
201                           PL_copline = (line_t)yyvsp[-9].ival;
202                           forop = newSTATEOP(0, yyvsp[-10].pval,
203                                             newWHILEOP(0, 1, (LOOP*)Nullop,
204                                                 yyvsp[-9].ival, scalar(yyvsp[-4].opval),
205                                                 yyvsp[0].opval, yyvsp[-2].opval));
206                           if (yyvsp[-6].opval) {
207                                 forop = append_elem(OP_LINESEQ,
208                                         newSTATEOP(0, (yyvsp[-10].pval?savepv(yyvsp[-10].pval):Nullch),
209                                                    yyvsp[-6].opval),
210                                         forop);
211                           }
212
213                           yyval.opval = block_end(yyvsp[-7].ival, forop); ;}
214     break;
215
216   case 36:
217 #line 240 "perly.y"
218     { yyval.opval = newSTATEOP(0, yyvsp[-2].pval,
219                                  newWHILEOP(0, 1, (LOOP*)Nullop,
220                                             NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); ;}
221     break;
222
223   case 37:
224 #line 247 "perly.y"
225     { yyval.opval = Nullop; ;}
226     break;
227
228   case 39:
229 #line 253 "perly.y"
230     { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; ;}
231     break;
232
233   case 41:
234 #line 259 "perly.y"
235     { yyval.opval = invert(scalar(yyvsp[0].opval)); ;}
236     break;
237
238   case 42:
239 #line 264 "perly.y"
240     { yyval.opval = yyvsp[0].opval; intro_my(); ;}
241     break;
242
243   case 43:
244 #line 268 "perly.y"
245     { yyval.opval = yyvsp[0].opval; intro_my(); ;}
246     break;
247
248   case 44:
249 #line 272 "perly.y"
250     { yyval.opval = yyvsp[0].opval; intro_my(); ;}
251     break;
252
253   case 45:
254 #line 276 "perly.y"
255     { yyval.opval = yyvsp[0].opval; intro_my(); ;}
256     break;
257
258   case 46:
259 #line 281 "perly.y"
260     { yyval.pval = Nullch; ;}
261     break;
262
263   case 48:
264 #line 287 "perly.y"
265     { yyval.ival = 0; ;}
266     break;
267
268   case 49:
269 #line 289 "perly.y"
270     { yyval.ival = 0; ;}
271     break;
272
273   case 50:
274 #line 291 "perly.y"
275     { yyval.ival = 0; ;}
276     break;
277
278   case 51:
279 #line 293 "perly.y"
280     { yyval.ival = 0; ;}
281     break;
282
283   case 52:
284 #line 295 "perly.y"
285     { yyval.ival = 0; ;}
286     break;
287
288   case 53:
289 #line 299 "perly.y"
290     { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); ;}
291     break;
292
293   case 54:
294 #line 302 "perly.y"
295     { yyval.opval = yyvsp[0].opval; ;}
296     break;
297
298   case 55:
299 #line 303 "perly.y"
300     { yyval.opval = Nullop; ;}
301     break;
302
303   case 56:
304 #line 308 "perly.y"
305     { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
306     break;
307
308   case 57:
309 #line 313 "perly.y"
310     { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
311     break;
312
313   case 58:
314 #line 317 "perly.y"
315     { yyval.ival = start_subparse(FALSE, 0); ;}
316     break;
317
318   case 59:
319 #line 321 "perly.y"
320     { yyval.ival = start_subparse(FALSE, CVf_ANON); ;}
321     break;
322
323   case 60:
324 #line 325 "perly.y"
325     { yyval.ival = start_subparse(TRUE, 0); ;}
326     break;
327
328   case 61:
329 #line 329 "perly.y"
330     { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a);
331                           if (strEQ(name, "BEGIN") || strEQ(name, "END")
332                               || strEQ(name, "INIT") || strEQ(name, "CHECK"))
333                               CvSPECIAL_on(PL_compcv);
334                           yyval.opval = yyvsp[0].opval; ;}
335     break;
336
337   case 62:
338 #line 338 "perly.y"
339     { yyval.opval = Nullop; ;}
340     break;
341
342   case 64:
343 #line 344 "perly.y"
344     { yyval.opval = Nullop; ;}
345     break;
346
347   case 65:
348 #line 346 "perly.y"
349     { yyval.opval = yyvsp[0].opval; ;}
350     break;
351
352   case 66:
353 #line 348 "perly.y"
354     { yyval.opval = Nullop; ;}
355     break;
356
357   case 67:
358 #line 353 "perly.y"
359     { yyval.opval = yyvsp[0].opval; ;}
360     break;
361
362   case 68:
363 #line 355 "perly.y"
364     { yyval.opval = Nullop; ;}
365     break;
366
367   case 69:
368 #line 359 "perly.y"
369     { yyval.opval = yyvsp[0].opval; ;}
370     break;
371
372   case 70:
373 #line 360 "perly.y"
374     { yyval.opval = Nullop; PL_expect = XSTATE; ;}
375     break;
376
377   case 71:
378 #line 364 "perly.y"
379     { package(yyvsp[-1].opval); ;}
380     break;
381
382   case 72:
383 #line 368 "perly.y"
384     { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
385     break;
386
387   case 73:
388 #line 370 "perly.y"
389     { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); ;}
390     break;
391
392   case 74:
393 #line 375 "perly.y"
394     { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
395     break;
396
397   case 75:
398 #line 377 "perly.y"
399     { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
400     break;
401
402   case 76:
403 #line 379 "perly.y"
404     { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
405     break;
406
407   case 78:
408 #line 385 "perly.y"
409     { yyval.opval = yyvsp[-1].opval; ;}
410     break;
411
412   case 79:
413 #line 387 "perly.y"
414     { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); ;}
415     break;
416
417   case 81:
418 #line 393 "perly.y"
419     { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED,
420                                 prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); ;}
421     break;
422
423   case 82:
424 #line 396 "perly.y"
425     { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED,
426                                 prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); ;}
427     break;
428
429   case 83:
430 #line 399 "perly.y"
431     { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
432                                 append_elem(OP_LIST,
433                                     prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval),
434                                     newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); ;}
435     break;
436
437   case 84:
438 #line 404 "perly.y"
439     { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
440                                 append_elem(OP_LIST, scalar(yyvsp[-2].opval),
441                                     newUNOP(OP_METHOD, 0, yyvsp[0].opval))); ;}
442     break;
443
444   case 85:
445 #line 408 "perly.y"
446     { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
447                                 append_elem(OP_LIST,
448                                     prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval),
449                                     newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); ;}
450     break;
451
452   case 86:
453 #line 413 "perly.y"
454     { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
455                                 append_elem(OP_LIST,
456                                     prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval),
457                                     newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); ;}
458     break;
459
460   case 87:
461 #line 418 "perly.y"
462     { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
463     break;
464
465   case 88:
466 #line 420 "perly.y"
467     { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;}
468     break;
469
470   case 89:
471 #line 422 "perly.y"
472     { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); ;}
473     break;
474
475   case 90:
476 #line 424 "perly.y"
477     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
478                                  append_elem(OP_LIST,
479                                    prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); ;}
480     break;
481
482   case 93:
483 #line 438 "perly.y"
484     { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval));
485                             PL_expect = XOPERATOR; ;}
486     break;
487
488   case 94:
489 #line 441 "perly.y"
490     { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); ;}
491     break;
492
493   case 95:
494 #line 443 "perly.y"
495     { yyval.opval = newBINOP(OP_AELEM, 0,
496                                         ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
497                                         scalar(yyvsp[-1].opval));;}
498     break;
499
500   case 96:
501 #line 447 "perly.y"
502     { yyval.opval = newBINOP(OP_AELEM, 0,
503                                         ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
504                                         scalar(yyvsp[-1].opval));;}
505     break;
506
507   case 97:
508 #line 451 "perly.y"
509     { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
510                             PL_expect = XOPERATOR; ;}
511     break;
512
513   case 98:
514 #line 454 "perly.y"
515     { yyval.opval = newBINOP(OP_HELEM, 0,
516                                         ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
517                                         jmaybe(yyvsp[-2].opval));
518                             PL_expect = XOPERATOR; ;}
519     break;
520
521   case 99:
522 #line 459 "perly.y"
523     { yyval.opval = newBINOP(OP_HELEM, 0,
524                                         ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
525                                         jmaybe(yyvsp[-2].opval));
526                             PL_expect = XOPERATOR; ;}
527     break;
528
529   case 100:
530 #line 464 "perly.y"
531     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
532                                    newCVREF(0, scalar(yyvsp[-3].opval))); ;}
533     break;
534
535   case 101:
536 #line 467 "perly.y"
537     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
538                                    append_elem(OP_LIST, yyvsp[-1].opval,
539                                        newCVREF(0, scalar(yyvsp[-4].opval)))); ;}
540     break;
541
542   case 102:
543 #line 472 "perly.y"
544     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
545                                    append_elem(OP_LIST, yyvsp[-1].opval,
546                                                newCVREF(0, scalar(yyvsp[-3].opval)))); ;}
547     break;
548
549   case 103:
550 #line 476 "perly.y"
551     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
552                                    newCVREF(0, scalar(yyvsp[-2].opval))); ;}
553     break;
554
555   case 104:
556 #line 482 "perly.y"
557     { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); ;}
558     break;
559
560   case 105:
561 #line 484 "perly.y"
562     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
563     break;
564
565   case 106:
566 #line 486 "perly.y"
567     {   if (yyvsp[-1].ival != OP_REPEAT)
568                                 scalar(yyvsp[-2].opval);
569                             yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); ;}
570     break;
571
572   case 107:
573 #line 490 "perly.y"
574     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
575     break;
576
577   case 108:
578 #line 492 "perly.y"
579     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
580     break;
581
582   case 109:
583 #line 494 "perly.y"
584     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
585     break;
586
587   case 110:
588 #line 496 "perly.y"
589     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
590     break;
591
592   case 111:
593 #line 498 "perly.y"
594     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
595     break;
596
597   case 112:
598 #line 500 "perly.y"
599     { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
600     break;
601
602   case 113:
603 #line 502 "perly.y"
604     { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));;}
605     break;
606
607   case 114:
608 #line 504 "perly.y"
609     { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
610     break;
611
612   case 115:
613 #line 506 "perly.y"
614     { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
615     break;
616
617   case 116:
618 #line 508 "perly.y"
619     { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
620     break;
621
622   case 117:
623 #line 510 "perly.y"
624     { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); ;}
625     break;
626
627   case 118:
628 #line 515 "perly.y"
629     { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); ;}
630     break;
631
632   case 119:
633 #line 517 "perly.y"
634     { yyval.opval = yyvsp[0].opval; ;}
635     break;
636
637   case 120:
638 #line 519 "perly.y"
639     { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;}
640     break;
641
642   case 121:
643 #line 521 "perly.y"
644     { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));;}
645     break;
646
647   case 122:
648 #line 523 "perly.y"
649     { yyval.opval = newUNOP(OP_POSTINC, 0,
650                                         mod(scalar(yyvsp[-1].opval), OP_POSTINC)); ;}
651     break;
652
653   case 123:
654 #line 526 "perly.y"
655     { yyval.opval = newUNOP(OP_POSTDEC, 0,
656                                         mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); ;}
657     break;
658
659   case 124:
660 #line 529 "perly.y"
661     { yyval.opval = newUNOP(OP_PREINC, 0,
662                                         mod(scalar(yyvsp[0].opval), OP_PREINC)); ;}
663     break;
664
665   case 125:
666 #line 532 "perly.y"
667     { yyval.opval = newUNOP(OP_PREDEC, 0,
668                                         mod(scalar(yyvsp[0].opval), OP_PREDEC)); ;}
669     break;
670
671   case 126:
672 #line 539 "perly.y"
673     { yyval.opval = newANONLIST(yyvsp[-1].opval); ;}
674     break;
675
676   case 127:
677 #line 541 "perly.y"
678     { yyval.opval = newANONLIST(Nullop); ;}
679     break;
680
681   case 128:
682 #line 543 "perly.y"
683     { yyval.opval = newANONHASH(yyvsp[-2].opval); ;}
684     break;
685
686   case 129:
687 #line 545 "perly.y"
688     { yyval.opval = newANONHASH(Nullop); ;}
689     break;
690
691   case 130:
692 #line 547 "perly.y"
693     { yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
694     break;
695
696   case 131:
697 #line 553 "perly.y"
698     { yyval.opval = dofile(yyvsp[0].opval); ;}
699     break;
700
701   case 132:
702 #line 555 "perly.y"
703     { yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); ;}
704     break;
705
706   case 133:
707 #line 557 "perly.y"
708     { yyval.opval = newUNOP(OP_ENTERSUB,
709                             OPf_SPECIAL|OPf_STACKED,
710                             prepend_elem(OP_LIST,
711                                 scalar(newCVREF(
712                                     (OPpENTERSUB_AMPER<<8),
713                                     scalar(yyvsp[-2].opval)
714                                 )),Nullop)); dep();;}
715     break;
716
717   case 134:
718 #line 565 "perly.y"
719     { yyval.opval = newUNOP(OP_ENTERSUB,
720                             OPf_SPECIAL|OPf_STACKED,
721                             append_elem(OP_LIST,
722                                 yyvsp[-1].opval,
723                                 scalar(newCVREF(
724                                     (OPpENTERSUB_AMPER<<8),
725                                     scalar(yyvsp[-3].opval)
726                                 )))); dep();;}
727     break;
728
729   case 135:
730 #line 574 "perly.y"
731     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
732                             prepend_elem(OP_LIST,
733                                 scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();;}
734     break;
735
736   case 136:
737 #line 578 "perly.y"
738     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
739                             prepend_elem(OP_LIST,
740                                 yyvsp[-1].opval,
741                                 scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();;}
742     break;
743
744   case 141:
745 #line 590 "perly.y"
746     { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); ;}
747     break;
748
749   case 142:
750 #line 592 "perly.y"
751     { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); ;}
752     break;
753
754   case 143:
755 #line 594 "perly.y"
756     { yyval.opval = yyvsp[0].opval; ;}
757     break;
758
759   case 144:
760 #line 596 "perly.y"
761     { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;}
762     break;
763
764   case 145:
765 #line 598 "perly.y"
766     { yyval.opval = sawparens(yyvsp[-1].opval); ;}
767     break;
768
769   case 146:
770 #line 600 "perly.y"
771     { yyval.opval = sawparens(newNULLLIST()); ;}
772     break;
773
774   case 147:
775 #line 602 "perly.y"
776     { yyval.opval = yyvsp[0].opval; ;}
777     break;
778
779   case 148:
780 #line 604 "perly.y"
781     { yyval.opval = yyvsp[0].opval; ;}
782     break;
783
784   case 149:
785 #line 606 "perly.y"
786     { yyval.opval = yyvsp[0].opval; ;}
787     break;
788
789   case 150:
790 #line 608 "perly.y"
791     { yyval.opval = yyvsp[0].opval; ;}
792     break;
793
794   case 151:
795 #line 610 "perly.y"
796     { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));;}
797     break;
798
799   case 152:
800 #line 612 "perly.y"
801     { yyval.opval = yyvsp[0].opval; ;}
802     break;
803
804   case 153:
805 #line 614 "perly.y"
806     { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); ;}
807     break;
808
809   case 154:
810 #line 616 "perly.y"
811     { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); ;}
812     break;
813
814   case 155:
815 #line 618 "perly.y"
816     { yyval.opval = prepend_elem(OP_ASLICE,
817                                 newOP(OP_PUSHMARK, 0),
818                                     newLISTOP(OP_ASLICE, 0,
819                                         list(yyvsp[-1].opval),
820                                         ref(yyvsp[-3].opval, OP_ASLICE))); ;}
821     break;
822
823   case 156:
824 #line 624 "perly.y"
825     { yyval.opval = prepend_elem(OP_HSLICE,
826                                 newOP(OP_PUSHMARK, 0),
827                                     newLISTOP(OP_HSLICE, 0,
828                                         list(yyvsp[-2].opval),
829                                         ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
830                             PL_expect = XOPERATOR; ;}
831     break;
832
833   case 157:
834 #line 631 "perly.y"
835     { yyval.opval = yyvsp[0].opval; ;}
836     break;
837
838   case 158:
839 #line 633 "perly.y"
840     { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); ;}
841     break;
842
843   case 159:
844 #line 635 "perly.y"
845     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); ;}
846     break;
847
848   case 160:
849 #line 637 "perly.y"
850     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
851                             append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); ;}
852     break;
853
854   case 161:
855 #line 640 "perly.y"
856     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
857                             append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;}
858     break;
859
860   case 162:
861 #line 643 "perly.y"
862     { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
863                             PL_hints |= HINT_BLOCK_SCOPE; ;}
864     break;
865
866   case 163:
867 #line 646 "perly.y"
868     { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); ;}
869     break;
870
871   case 164:
872 #line 648 "perly.y"
873     { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;}
874     break;
875
876   case 165:
877 #line 650 "perly.y"
878     { yyval.opval = newOP(yyvsp[0].ival, 0); ;}
879     break;
880
881   case 166:
882 #line 652 "perly.y"
883     { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
884     break;
885
886   case 167:
887 #line 654 "perly.y"
888     { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
889     break;
890
891   case 168:
892 #line 656 "perly.y"
893     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
894                             append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;}
895     break;
896
897   case 169:
898 #line 659 "perly.y"
899     { yyval.opval = newOP(yyvsp[0].ival, 0); ;}
900     break;
901
902   case 170:
903 #line 661 "perly.y"
904     { yyval.opval = newOP(yyvsp[-2].ival, 0); ;}
905     break;
906
907   case 171:
908 #line 663 "perly.y"
909     { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
910                                 scalar(yyvsp[0].opval)); ;}
911     break;
912
913   case 172:
914 #line 666 "perly.y"
915     { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); ;}
916     break;
917
918   case 173:
919 #line 668 "perly.y"
920     { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;}
921     break;
922
923   case 174:
924 #line 670 "perly.y"
925     { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); ;}
926     break;
927
928   case 175:
929 #line 672 "perly.y"
930     { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); ;}
931     break;
932
933   case 178:
934 #line 679 "perly.y"
935     { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); ;}
936     break;
937
938   case 179:
939 #line 681 "perly.y"
940     { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;}
941     break;
942
943   case 180:
944 #line 686 "perly.y"
945     { yyval.opval = sawparens(yyvsp[-1].opval); ;}
946     break;
947
948   case 181:
949 #line 688 "perly.y"
950     { yyval.opval = sawparens(newNULLLIST()); ;}
951     break;
952
953   case 182:
954 #line 690 "perly.y"
955     { yyval.opval = yyvsp[0].opval; ;}
956     break;
957
958   case 183:
959 #line 692 "perly.y"
960     { yyval.opval = yyvsp[0].opval; ;}
961     break;
962
963   case 184:
964 #line 694 "perly.y"
965     { yyval.opval = yyvsp[0].opval; ;}
966     break;
967
968   case 185:
969 #line 699 "perly.y"
970     { yyval.opval = Nullop; ;}
971     break;
972
973   case 186:
974 #line 701 "perly.y"
975     { yyval.opval = yyvsp[0].opval; ;}
976     break;
977
978   case 187:
979 #line 705 "perly.y"
980     { yyval.opval = Nullop; ;}
981     break;
982
983   case 188:
984 #line 707 "perly.y"
985     { yyval.opval = yyvsp[0].opval; ;}
986     break;
987
988   case 189:
989 #line 709 "perly.y"
990     { yyval.opval = yyvsp[-1].opval; ;}
991     break;
992
993   case 190:
994 #line 715 "perly.y"
995     { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); ;}
996     break;
997
998   case 191:
999 #line 719 "perly.y"
1000     { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); ;}
1001     break;
1002
1003   case 192:
1004 #line 723 "perly.y"
1005     { yyval.opval = newSVREF(yyvsp[0].opval); ;}
1006     break;
1007
1008   case 193:
1009 #line 727 "perly.y"
1010     { yyval.opval = newAVREF(yyvsp[0].opval); ;}
1011     break;
1012
1013   case 194:
1014 #line 731 "perly.y"
1015     { yyval.opval = newHVREF(yyvsp[0].opval); ;}
1016     break;
1017
1018   case 195:
1019 #line 735 "perly.y"
1020     { yyval.opval = newAVREF(yyvsp[0].opval); ;}
1021     break;
1022
1023   case 196:
1024 #line 739 "perly.y"
1025     { yyval.opval = newGVREF(0,yyvsp[0].opval); ;}
1026     break;
1027
1028   case 197:
1029 #line 744 "perly.y"
1030     { yyval.opval = scalar(yyvsp[0].opval); ;}
1031     break;
1032
1033   case 198:
1034 #line 746 "perly.y"
1035     { yyval.opval = scalar(yyvsp[0].opval);  ;}
1036     break;
1037
1038   case 199:
1039 #line 748 "perly.y"
1040     { yyval.opval = scope(yyvsp[0].opval); ;}
1041     break;
1042
1043   case 200:
1044 #line 751 "perly.y"
1045     { yyval.opval = yyvsp[0].opval; ;}
1046     break;
1047
1048
1049