This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document the limitation of Attribute::Handlers w.r.t. UNITCHECK blocks.
[perl5.git] / perly.act
1 case 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                               || strEQ(name, "UNITCHECK"))
377                               CvSPECIAL_on(PL_compcv);
378                           (yyval.opval) = (yyvsp[0].opval); ;}
379     break;
380
381   case 68:
382 #line 390 "perly.y"
383     { (yyval.opval) = Nullop; ;}
384     break;
385
386   case 70:
387 #line 396 "perly.y"
388     { (yyval.opval) = Nullop; ;}
389     break;
390
391   case 71:
392 #line 398 "perly.y"
393     { (yyval.opval) = (yyvsp[0].opval); ;}
394     break;
395
396   case 72:
397 #line 400 "perly.y"
398     { (yyval.opval) = Nullop; ;}
399     break;
400
401   case 73:
402 #line 405 "perly.y"
403     { (yyval.opval) = (yyvsp[0].opval); ;}
404     break;
405
406   case 74:
407 #line 407 "perly.y"
408     { (yyval.opval) = Nullop; ;}
409     break;
410
411   case 75:
412 #line 411 "perly.y"
413     { (yyval.opval) = (yyvsp[0].opval); ;}
414     break;
415
416   case 76:
417 #line 412 "perly.y"
418     { (yyval.opval) = Nullop; PL_expect = XSTATE; ;}
419     break;
420
421   case 77:
422 #line 416 "perly.y"
423     { package((yyvsp[-1].opval)); ;}
424     break;
425
426   case 78:
427 #line 420 "perly.y"
428     { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
429     break;
430
431   case 79:
432 #line 422 "perly.y"
433     { SvREFCNT_inc(PL_compcv);
434                            utilize((yyvsp[-6].ival), (yyvsp[-5].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval)); ;}
435     break;
436
437   case 80:
438 #line 428 "perly.y"
439     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
440     break;
441
442   case 81:
443 #line 430 "perly.y"
444     { (yyval.opval) = newLOGOP((yyvsp[-1].ival), 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
445     break;
446
447   case 82:
448 #line 432 "perly.y"
449     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
450     break;
451
452   case 84:
453 #line 438 "perly.y"
454     { (yyval.opval) = (yyvsp[-1].opval); ;}
455     break;
456
457   case 85:
458 #line 440 "perly.y"
459     { (yyval.opval) = append_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
460     break;
461
462   case 87:
463 #line 446 "perly.y"
464     { (yyval.opval) = convert((yyvsp[-2].ival), OPf_STACKED,
465                                 prepend_elem(OP_LIST, newGVREF((yyvsp[-2].ival),(yyvsp[-1].opval)), (yyvsp[0].opval)) ); ;}
466     break;
467
468   case 88:
469 #line 449 "perly.y"
470     { (yyval.opval) = convert((yyvsp[-4].ival), OPf_STACKED,
471                                 prepend_elem(OP_LIST, newGVREF((yyvsp[-4].ival),(yyvsp[-2].opval)), (yyvsp[-1].opval)) ); ;}
472     break;
473
474   case 89:
475 #line 452 "perly.y"
476     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
477                                 append_elem(OP_LIST,
478                                     prepend_elem(OP_LIST, scalar((yyvsp[-5].opval)), (yyvsp[-1].opval)),
479                                     newUNOP(OP_METHOD, 0, (yyvsp[-3].opval)))); ;}
480     break;
481
482   case 90:
483 #line 457 "perly.y"
484     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
485                                 append_elem(OP_LIST, scalar((yyvsp[-2].opval)),
486                                     newUNOP(OP_METHOD, 0, (yyvsp[0].opval)))); ;}
487     break;
488
489   case 91:
490 #line 461 "perly.y"
491     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
492                                 append_elem(OP_LIST,
493                                     prepend_elem(OP_LIST, (yyvsp[-1].opval), (yyvsp[0].opval)),
494                                     newUNOP(OP_METHOD, 0, (yyvsp[-2].opval)))); ;}
495     break;
496
497   case 92:
498 #line 466 "perly.y"
499     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
500                                 append_elem(OP_LIST,
501                                     prepend_elem(OP_LIST, (yyvsp[-3].opval), (yyvsp[-1].opval)),
502                                     newUNOP(OP_METHOD, 0, (yyvsp[-4].opval)))); ;}
503     break;
504
505   case 93:
506 #line 471 "perly.y"
507     { (yyval.opval) = convert((yyvsp[-1].ival), 0, (yyvsp[0].opval)); ;}
508     break;
509
510   case 94:
511 #line 473 "perly.y"
512     { (yyval.opval) = convert((yyvsp[-3].ival), 0, (yyvsp[-1].opval)); ;}
513     break;
514
515   case 95:
516 #line 475 "perly.y"
517     { SvREFCNT_inc(PL_compcv);
518                           (yyvsp[0].opval) = newANONATTRSUB((yyvsp[-1].ival), 0, Nullop, (yyvsp[0].opval)); ;}
519     break;
520
521   case 96:
522 #line 478 "perly.y"
523     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
524                                  append_elem(OP_LIST,
525                                    prepend_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)), (yyvsp[-4].opval))); ;}
526     break;
527
528   case 99:
529 #line 492 "perly.y"
530     { (yyval.opval) = newBINOP(OP_GELEM, 0, (yyvsp[-4].opval), scalar((yyvsp[-2].opval)));
531                             PL_expect = XOPERATOR; ;}
532     break;
533
534   case 100:
535 #line 495 "perly.y"
536     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((yyvsp[-3].opval)), scalar((yyvsp[-1].opval))); ;}
537     break;
538
539   case 101:
540 #line 497 "perly.y"
541     { (yyval.opval) = newBINOP(OP_AELEM, 0,
542                                         ref(newAVREF((yyvsp[-4].opval)),OP_RV2AV),
543                                         scalar((yyvsp[-1].opval)));;}
544     break;
545
546   case 102:
547 #line 501 "perly.y"
548     { (yyval.opval) = newBINOP(OP_AELEM, 0,
549                                         ref(newAVREF((yyvsp[-3].opval)),OP_RV2AV),
550                                         scalar((yyvsp[-1].opval)));;}
551     break;
552
553   case 103:
554 #line 505 "perly.y"
555     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((yyvsp[-4].opval)), jmaybe((yyvsp[-2].opval)));
556                             PL_expect = XOPERATOR; ;}
557     break;
558
559   case 104:
560 #line 508 "perly.y"
561     { (yyval.opval) = newBINOP(OP_HELEM, 0,
562                                         ref(newHVREF((yyvsp[-5].opval)),OP_RV2HV),
563                                         jmaybe((yyvsp[-2].opval)));
564                             PL_expect = XOPERATOR; ;}
565     break;
566
567   case 105:
568 #line 513 "perly.y"
569     { (yyval.opval) = newBINOP(OP_HELEM, 0,
570                                         ref(newHVREF((yyvsp[-4].opval)),OP_RV2HV),
571                                         jmaybe((yyvsp[-2].opval)));
572                             PL_expect = XOPERATOR; ;}
573     break;
574
575   case 106:
576 #line 518 "perly.y"
577     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
578                                    newCVREF(0, scalar((yyvsp[-3].opval)))); ;}
579     break;
580
581   case 107:
582 #line 521 "perly.y"
583     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
584                                    append_elem(OP_LIST, (yyvsp[-1].opval),
585                                        newCVREF(0, scalar((yyvsp[-4].opval))))); ;}
586     break;
587
588   case 108:
589 #line 526 "perly.y"
590     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
591                                    append_elem(OP_LIST, (yyvsp[-1].opval),
592                                                newCVREF(0, scalar((yyvsp[-3].opval))))); ;}
593     break;
594
595   case 109:
596 #line 530 "perly.y"
597     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
598                                    newCVREF(0, scalar((yyvsp[-2].opval)))); ;}
599     break;
600
601   case 110:
602 #line 533 "perly.y"
603     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), (yyvsp[-4].opval)); ;}
604     break;
605
606   case 111:
607 #line 535 "perly.y"
608     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), Nullop); ;}
609     break;
610
611   case 112:
612 #line 540 "perly.y"
613     { (yyval.opval) = newASSIGNOP(OPf_STACKED, (yyvsp[-2].opval), (yyvsp[-1].ival), (yyvsp[0].opval)); ;}
614     break;
615
616   case 113:
617 #line 542 "perly.y"
618     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
619     break;
620
621   case 114:
622 #line 544 "perly.y"
623     {   if ((yyvsp[-1].ival) != OP_REPEAT)
624                                 scalar((yyvsp[-2].opval));
625                             (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, (yyvsp[-2].opval), scalar((yyvsp[0].opval))); ;}
626     break;
627
628   case 115:
629 #line 548 "perly.y"
630     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
631     break;
632
633   case 116:
634 #line 550 "perly.y"
635     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
636     break;
637
638   case 117:
639 #line 552 "perly.y"
640     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
641     break;
642
643   case 118:
644 #line 554 "perly.y"
645     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
646     break;
647
648   case 119:
649 #line 556 "perly.y"
650     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
651     break;
652
653   case 120:
654 #line 558 "perly.y"
655     { (yyval.opval) = newBINOP((yyvsp[-1].ival), 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval))); ;}
656     break;
657
658   case 121:
659 #line 560 "perly.y"
660     { (yyval.opval) = newRANGE((yyvsp[-1].ival), scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));;}
661     break;
662
663   case 122:
664 #line 562 "perly.y"
665     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
666     break;
667
668   case 123:
669 #line 564 "perly.y"
670     { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
671     break;
672
673   case 124:
674 #line 566 "perly.y"
675     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
676     break;
677
678   case 125:
679 #line 568 "perly.y"
680     { (yyval.opval) = bind_match((yyvsp[-1].ival), (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
681     break;
682
683   case 126:
684 #line 573 "perly.y"
685     { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[0].opval))); ;}
686     break;
687
688   case 127:
689 #line 575 "perly.y"
690     { (yyval.opval) = (yyvsp[0].opval); ;}
691     break;
692
693   case 128:
694 #line 577 "perly.y"
695     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval))); ;}
696     break;
697
698   case 129:
699 #line 579 "perly.y"
700     { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[0].opval)));;}
701     break;
702
703   case 130:
704 #line 581 "perly.y"
705     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
706                                         mod(scalar((yyvsp[-1].opval)), OP_POSTINC)); ;}
707     break;
708
709   case 131:
710 #line 584 "perly.y"
711     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
712                                         mod(scalar((yyvsp[-1].opval)), OP_POSTDEC)); ;}
713     break;
714
715   case 132:
716 #line 587 "perly.y"
717     { (yyval.opval) = newUNOP(OP_PREINC, 0,
718                                         mod(scalar((yyvsp[0].opval)), OP_PREINC)); ;}
719     break;
720
721   case 133:
722 #line 590 "perly.y"
723     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
724                                         mod(scalar((yyvsp[0].opval)), OP_PREDEC)); ;}
725     break;
726
727   case 134:
728 #line 597 "perly.y"
729     { (yyval.opval) = newANONLIST((yyvsp[-1].opval)); ;}
730     break;
731
732   case 135:
733 #line 599 "perly.y"
734     { (yyval.opval) = newANONLIST(Nullop); ;}
735     break;
736
737   case 136:
738 #line 601 "perly.y"
739     { (yyval.opval) = newANONHASH((yyvsp[-2].opval)); ;}
740     break;
741
742   case 137:
743 #line 603 "perly.y"
744     { (yyval.opval) = newANONHASH(Nullop); ;}
745     break;
746
747   case 138:
748 #line 605 "perly.y"
749     { SvREFCNT_inc(PL_compcv);
750                           (yyval.opval) = newANONATTRSUB((yyvsp[-3].ival), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval)); ;}
751     break;
752
753   case 139:
754 #line 612 "perly.y"
755     { (yyval.opval) = dofile((yyvsp[0].opval), (yyvsp[-1].ival)); ;}
756     break;
757
758   case 140:
759 #line 614 "perly.y"
760     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[0].opval))); ;}
761     break;
762
763   case 141:
764 #line 616 "perly.y"
765     { (yyval.opval) = newUNOP(OP_ENTERSUB,
766                             OPf_SPECIAL|OPf_STACKED,
767                             prepend_elem(OP_LIST,
768                                 scalar(newCVREF(
769                                     (OPpENTERSUB_AMPER<<8),
770                                     scalar((yyvsp[-2].opval))
771                                 )),Nullop)); dep();;}
772     break;
773
774   case 142:
775 #line 624 "perly.y"
776     { (yyval.opval) = newUNOP(OP_ENTERSUB,
777                             OPf_SPECIAL|OPf_STACKED,
778                             append_elem(OP_LIST,
779                                 (yyvsp[-1].opval),
780                                 scalar(newCVREF(
781                                     (OPpENTERSUB_AMPER<<8),
782                                     scalar((yyvsp[-3].opval))
783                                 )))); dep();;}
784     break;
785
786   case 143:
787 #line 633 "perly.y"
788     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
789                             prepend_elem(OP_LIST,
790                                 scalar(newCVREF(0,scalar((yyvsp[-2].opval)))), Nullop)); dep();;}
791     break;
792
793   case 144:
794 #line 637 "perly.y"
795     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
796                             prepend_elem(OP_LIST,
797                                 (yyvsp[-1].opval),
798                                 scalar(newCVREF(0,scalar((yyvsp[-3].opval)))))); dep();;}
799     break;
800
801   case 149:
802 #line 649 "perly.y"
803     { (yyval.opval) = newCONDOP(0, (yyvsp[-4].opval), (yyvsp[-2].opval), (yyvsp[0].opval)); ;}
804     break;
805
806   case 150:
807 #line 651 "perly.y"
808     { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[0].opval),OP_REFGEN)); ;}
809     break;
810
811   case 151:
812 #line 653 "perly.y"
813     { (yyval.opval) = (yyvsp[0].opval); ;}
814     break;
815
816   case 152:
817 #line 655 "perly.y"
818     { (yyval.opval) = localize((yyvsp[0].opval),(yyvsp[-1].ival)); ;}
819     break;
820
821   case 153:
822 #line 657 "perly.y"
823     { (yyval.opval) = sawparens((yyvsp[-1].opval)); ;}
824     break;
825
826   case 154:
827 #line 659 "perly.y"
828     { (yyval.opval) = sawparens(newNULLLIST()); ;}
829     break;
830
831   case 155:
832 #line 661 "perly.y"
833     { (yyval.opval) = (yyvsp[0].opval); ;}
834     break;
835
836   case 156:
837 #line 663 "perly.y"
838     { (yyval.opval) = (yyvsp[0].opval); ;}
839     break;
840
841   case 157:
842 #line 665 "perly.y"
843     { (yyval.opval) = (yyvsp[0].opval); ;}
844     break;
845
846   case 158:
847 #line 667 "perly.y"
848     { (yyval.opval) = (yyvsp[0].opval); ;}
849     break;
850
851   case 159:
852 #line 669 "perly.y"
853     { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[0].opval), OP_AV2ARYLEN));;}
854     break;
855
856   case 160:
857 #line 671 "perly.y"
858     { (yyval.opval) = (yyvsp[0].opval); ;}
859     break;
860
861   case 161:
862 #line 673 "perly.y"
863     { (yyval.opval) = prepend_elem(OP_ASLICE,
864                                 newOP(OP_PUSHMARK, 0),
865                                     newLISTOP(OP_ASLICE, 0,
866                                         list((yyvsp[-1].opval)),
867                                         ref((yyvsp[-3].opval), OP_ASLICE))); ;}
868     break;
869
870   case 162:
871 #line 679 "perly.y"
872     { (yyval.opval) = prepend_elem(OP_HSLICE,
873                                 newOP(OP_PUSHMARK, 0),
874                                     newLISTOP(OP_HSLICE, 0,
875                                         list((yyvsp[-2].opval)),
876                                         ref(oopsHV((yyvsp[-4].opval)), OP_HSLICE)));
877                             PL_expect = XOPERATOR; ;}
878     break;
879
880   case 163:
881 #line 686 "perly.y"
882     { (yyval.opval) = (yyvsp[0].opval); ;}
883     break;
884
885   case 164:
886 #line 688 "perly.y"
887     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[0].opval))); ;}
888     break;
889
890   case 165:
891 #line 690 "perly.y"
892     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[-2].opval))); ;}
893     break;
894
895   case 166:
896 #line 692 "perly.y"
897     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
898                             append_elem(OP_LIST, (yyvsp[-1].opval), scalar((yyvsp[-3].opval)))); ;}
899     break;
900
901   case 167:
902 #line 695 "perly.y"
903     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
904                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;}
905     break;
906
907   case 168:
908 #line 698 "perly.y"
909     { (yyval.opval) = newOP((yyvsp[0].ival), OPf_SPECIAL);
910                             PL_hints |= HINT_BLOCK_SCOPE; ;}
911     break;
912
913   case 169:
914 #line 701 "perly.y"
915     { (yyval.opval) = newLOOPEX((yyvsp[-1].ival),(yyvsp[0].opval)); ;}
916     break;
917
918   case 170:
919 #line 703 "perly.y"
920     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval))); ;}
921     break;
922
923   case 171:
924 #line 705 "perly.y"
925     { (yyval.opval) = newOP((yyvsp[0].ival), 0); ;}
926     break;
927
928   case 172:
929 #line 707 "perly.y"
930     { (yyval.opval) = newUNOP((yyvsp[-1].ival), 0, (yyvsp[0].opval)); ;}
931     break;
932
933   case 173:
934 #line 709 "perly.y"
935     { (yyval.opval) = newUNOP((yyvsp[-1].ival), 0, (yyvsp[0].opval)); ;}
936     break;
937
938   case 174:
939 #line 711 "perly.y"
940     { (yyval.opval) = newOP(OP_REQUIRE, (yyvsp[0].ival) ? OPf_SPECIAL : 0); ;}
941     break;
942
943   case 175:
944 #line 713 "perly.y"
945     { (yyval.opval) = newUNOP(OP_REQUIRE, (yyvsp[-1].ival) ? OPf_SPECIAL : 0, (yyvsp[0].opval)); ;}
946     break;
947
948   case 176:
949 #line 715 "perly.y"
950     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
951                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;}
952     break;
953
954   case 177:
955 #line 718 "perly.y"
956     { (yyval.opval) = newOP((yyvsp[0].ival), 0); ;}
957     break;
958
959   case 178:
960 #line 720 "perly.y"
961     { (yyval.opval) = newOP((yyvsp[-2].ival), 0); ;}
962     break;
963
964   case 179:
965 #line 722 "perly.y"
966     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
967                                 scalar((yyvsp[0].opval))); ;}
968     break;
969
970   case 180:
971 #line 725 "perly.y"
972     { (yyval.opval) = (yyvsp[-2].ival) == OP_NOT ? newUNOP((yyvsp[-2].ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
973                                             : newOP((yyvsp[-2].ival), OPf_SPECIAL); ;}
974     break;
975
976   case 181:
977 #line 728 "perly.y"
978     { (yyval.opval) = newUNOP((yyvsp[-3].ival), 0, (yyvsp[-1].opval)); ;}
979     break;
980
981   case 182:
982 #line 730 "perly.y"
983     { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1); ;}
984     break;
985
986   case 185:
987 #line 737 "perly.y"
988     { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval)); ;}
989     break;
990
991   case 186:
992 #line 739 "perly.y"
993     { (yyval.opval) = localize((yyvsp[0].opval),(yyvsp[-1].ival)); ;}
994     break;
995
996   case 187:
997 #line 744 "perly.y"
998     { (yyval.opval) = sawparens((yyvsp[-1].opval)); ;}
999     break;
1000
1001   case 188:
1002 #line 746 "perly.y"
1003     { (yyval.opval) = sawparens(newNULLLIST()); ;}
1004     break;
1005
1006   case 189:
1007 #line 748 "perly.y"
1008     { (yyval.opval) = (yyvsp[0].opval); ;}
1009     break;
1010
1011   case 190:
1012 #line 750 "perly.y"
1013     { (yyval.opval) = (yyvsp[0].opval); ;}
1014     break;
1015
1016   case 191:
1017 #line 752 "perly.y"
1018     { (yyval.opval) = (yyvsp[0].opval); ;}
1019     break;
1020
1021   case 192:
1022 #line 757 "perly.y"
1023     { (yyval.opval) = Nullop; ;}
1024     break;
1025
1026   case 193:
1027 #line 759 "perly.y"
1028     { (yyval.opval) = (yyvsp[0].opval); ;}
1029     break;
1030
1031   case 194:
1032 #line 763 "perly.y"
1033     { (yyval.opval) = Nullop; ;}
1034     break;
1035
1036   case 195:
1037 #line 765 "perly.y"
1038     { (yyval.opval) = (yyvsp[0].opval); ;}
1039     break;
1040
1041   case 196:
1042 #line 767 "perly.y"
1043     { (yyval.opval) = (yyvsp[-1].opval); ;}
1044     break;
1045
1046   case 197:
1047 #line 773 "perly.y"
1048     { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;}
1049     break;
1050
1051   case 198:
1052 #line 777 "perly.y"
1053     { (yyval.opval) = newCVREF((yyvsp[-1].ival),(yyvsp[0].opval)); ;}
1054     break;
1055
1056   case 199:
1057 #line 781 "perly.y"
1058     { (yyval.opval) = newSVREF((yyvsp[0].opval)); ;}
1059     break;
1060
1061   case 200:
1062 #line 785 "perly.y"
1063     { (yyval.opval) = newAVREF((yyvsp[0].opval)); ;}
1064     break;
1065
1066   case 201:
1067 #line 789 "perly.y"
1068     { (yyval.opval) = newHVREF((yyvsp[0].opval)); ;}
1069     break;
1070
1071   case 202:
1072 #line 793 "perly.y"
1073     { (yyval.opval) = newAVREF((yyvsp[0].opval)); ;}
1074     break;
1075
1076   case 203:
1077 #line 797 "perly.y"
1078     { (yyval.opval) = newGVREF(0,(yyvsp[0].opval)); ;}
1079     break;
1080
1081   case 204:
1082 #line 802 "perly.y"
1083     { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1084     break;
1085
1086   case 205:
1087 #line 804 "perly.y"
1088     { (yyval.opval) = scalar((yyvsp[0].opval));  ;}
1089     break;
1090
1091   case 206:
1092 #line 806 "perly.y"
1093     { (yyval.opval) = scope((yyvsp[0].opval)); ;}
1094     break;
1095
1096   case 207:
1097 #line 809 "perly.y"
1098     { (yyval.opval) = (yyvsp[0].opval); ;}
1099     break;
1100
1101
1102       default: break;
1103