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