This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
e2b00cd0be6dd8e701bf2dadc44bb365f41cd28f
[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                               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