This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PATCH: [perl #121292] wrong perlunicode BOM claims
[perl5.git] / perly.act
... / ...
CommitLineData
1/* -*- buffer-read-only: t -*-
2 !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
3 This file is built by regen_perly.pl from perly.y.
4 Any changes made here will be lost!
5 */
6
7case 2:
8#line 118 "perly.y" /* yacc.c:1646 */
9 {
10 parser->expect = XSTATE;
11 }
12
13 break;
14
15 case 3:
16#line 122 "perly.y" /* yacc.c:1646 */
17 {
18 newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
19 PL_compiling.cop_seq = 0;
20 (yyval.ival) = 0;
21 }
22
23 break;
24
25 case 4:
26#line 128 "perly.y" /* yacc.c:1646 */
27 {
28 parser->expect = XTERM;
29 }
30
31 break;
32
33 case 5:
34#line 132 "perly.y" /* yacc.c:1646 */
35 {
36 PL_eval_root = (ps[0].val.opval);
37 (yyval.ival) = 0;
38 }
39
40 break;
41
42 case 6:
43#line 137 "perly.y" /* yacc.c:1646 */
44 {
45 parser->expect = XBLOCK;
46 }
47
48 break;
49
50 case 7:
51#line 141 "perly.y" /* yacc.c:1646 */
52 {
53 PL_pad_reset_pending = TRUE;
54 PL_eval_root = (ps[0].val.opval);
55 (yyval.ival) = 0;
56 yyunlex();
57 parser->yychar = yytoken = YYEOF;
58 }
59
60 break;
61
62 case 8:
63#line 149 "perly.y" /* yacc.c:1646 */
64 {
65 parser->expect = XSTATE;
66 }
67
68 break;
69
70 case 9:
71#line 153 "perly.y" /* yacc.c:1646 */
72 {
73 PL_pad_reset_pending = TRUE;
74 PL_eval_root = (ps[0].val.opval);
75 (yyval.ival) = 0;
76 yyunlex();
77 parser->yychar = yytoken = YYEOF;
78 }
79
80 break;
81
82 case 10:
83#line 161 "perly.y" /* yacc.c:1646 */
84 {
85 parser->expect = XSTATE;
86 }
87
88 break;
89
90 case 11:
91#line 165 "perly.y" /* yacc.c:1646 */
92 {
93 PL_pad_reset_pending = TRUE;
94 PL_eval_root = (ps[0].val.opval);
95 (yyval.ival) = 0;
96 yyunlex();
97 parser->yychar = yytoken = YYEOF;
98 }
99
100 break;
101
102 case 12:
103#line 173 "perly.y" /* yacc.c:1646 */
104 {
105 parser->expect = XSTATE;
106 }
107
108 break;
109
110 case 13:
111#line 177 "perly.y" /* yacc.c:1646 */
112 {
113 PL_eval_root = (ps[0].val.opval);
114 (yyval.ival) = 0;
115 }
116
117 break;
118
119 case 14:
120#line 185 "perly.y" /* yacc.c:1646 */
121 { if (parser->copline > (line_t)(ps[-3].val.ival))
122 parser->copline = (line_t)(ps[-3].val.ival);
123 (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
124 }
125
126 break;
127
128 case 15:
129#line 193 "perly.y" /* yacc.c:1646 */
130 { if (parser->copline > (line_t)(ps[-6].val.ival))
131 parser->copline = (line_t)(ps[-6].val.ival);
132 (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
133 }
134
135 break;
136
137 case 16:
138#line 200 "perly.y" /* yacc.c:1646 */
139 { (yyval.ival) = block_start(TRUE);
140 parser->parsed_sub = 0; }
141
142 break;
143
144 case 17:
145#line 205 "perly.y" /* yacc.c:1646 */
146 { if (parser->copline > (line_t)(ps[-3].val.ival))
147 parser->copline = (line_t)(ps[-3].val.ival);
148 (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
149 }
150
151 break;
152
153 case 18:
154#line 212 "perly.y" /* yacc.c:1646 */
155 { (yyval.ival) = block_start(FALSE);
156 parser->parsed_sub = 0; }
157
158 break;
159
160 case 19:
161#line 218 "perly.y" /* yacc.c:1646 */
162 { (yyval.opval) = NULL; }
163
164 break;
165
166 case 20:
167#line 220 "perly.y" /* yacc.c:1646 */
168 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
169 PL_pad_reset_pending = TRUE;
170 if ((ps[-1].val.opval) && (ps[0].val.opval))
171 PL_hints |= HINT_BLOCK_SCOPE;
172 }
173
174 break;
175
176 case 21:
177#line 229 "perly.y" /* yacc.c:1646 */
178 { (yyval.opval) = NULL; }
179
180 break;
181
182 case 22:
183#line 231 "perly.y" /* yacc.c:1646 */
184 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
185 PL_pad_reset_pending = TRUE;
186 if ((ps[-1].val.opval) && (ps[0].val.opval))
187 PL_hints |= HINT_BLOCK_SCOPE;
188 }
189
190 break;
191
192 case 23:
193#line 240 "perly.y" /* yacc.c:1646 */
194 {
195 (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
196 }
197
198 break;
199
200 case 24:
201#line 244 "perly.y" /* yacc.c:1646 */
202 { (yyval.opval) = (ps[0].val.opval); }
203
204 break;
205
206 case 25:
207#line 248 "perly.y" /* yacc.c:1646 */
208 {
209 (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
210 }
211
212 break;
213
214 case 26:
215#line 252 "perly.y" /* yacc.c:1646 */
216 {
217 (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
218 }
219
220 break;
221
222 case 27:
223#line 259 "perly.y" /* yacc.c:1646 */
224 { (yyval.opval) = (ps[0].val.opval); }
225
226 break;
227
228 case 28:
229#line 261 "perly.y" /* yacc.c:1646 */
230 {
231 CV *fmtcv = PL_compcv;
232 newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
233 (yyval.opval) = NULL;
234 if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
235 pad_add_weakref(fmtcv);
236 }
237 parser->parsed_sub = 1;
238 }
239
240 break;
241
242 case 29:
243#line 271 "perly.y" /* yacc.c:1646 */
244 {
245 if ((ps[-1].val.opval)->op_type == OP_CONST) {
246 const char *const name =
247 SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
248 if (strEQ(name, "BEGIN") || strEQ(name, "END")
249 || strEQ(name, "INIT") || strEQ(name, "CHECK")
250 || strEQ(name, "UNITCHECK"))
251 CvSPECIAL_on(PL_compcv);
252 }
253 else
254 /* State subs inside anonymous subs need to be
255 clonable themselves. */
256 if (CvANON(CvOUTSIDE(PL_compcv))
257 || CvCLONE(CvOUTSIDE(PL_compcv))
258 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
259 CvOUTSIDE(PL_compcv)
260 ))[(ps[-1].val.opval)->op_targ]))
261 CvCLONE_on(PL_compcv);
262 parser->in_my = 0;
263 parser->in_my_stash = NULL;
264 }
265
266 break;
267
268 case 30:
269#line 293 "perly.y" /* yacc.c:1646 */
270 {
271 SvREFCNT_inc_simple_void(PL_compcv);
272 (ps[-5].val.opval)->op_type == OP_CONST
273 ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
274 : newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
275 ;
276 (yyval.opval) = NULL;
277 intro_my();
278 parser->parsed_sub = 1;
279 }
280
281 break;
282
283 case 31:
284#line 304 "perly.y" /* yacc.c:1646 */
285 {
286 if ((ps[-1].val.opval)->op_type == OP_CONST) {
287 const char *const name =
288 SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
289 if (strEQ(name, "BEGIN") || strEQ(name, "END")
290 || strEQ(name, "INIT") || strEQ(name, "CHECK")
291 || strEQ(name, "UNITCHECK"))
292 CvSPECIAL_on(PL_compcv);
293 }
294 else
295 /* State subs inside anonymous subs need to be
296 clonable themselves. */
297 if (CvANON(CvOUTSIDE(PL_compcv))
298 || CvCLONE(CvOUTSIDE(PL_compcv))
299 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
300 CvOUTSIDE(PL_compcv)
301 ))[(ps[-1].val.opval)->op_targ]))
302 CvCLONE_on(PL_compcv);
303 parser->in_my = 0;
304 parser->in_my_stash = NULL;
305 }
306
307 break;
308
309 case 32:
310#line 326 "perly.y" /* yacc.c:1646 */
311 {
312 OP *body;
313 if (parser->copline > (line_t)(ps[-2].val.ival))
314 parser->copline = (line_t)(ps[-2].val.ival);
315 body = block_end((ps[-5].val.ival),
316 op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
317
318 SvREFCNT_inc_simple_void(PL_compcv);
319 (ps[-8].val.opval)->op_type == OP_CONST
320 ? newATTRSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
321 : newMYSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
322 ;
323 (yyval.opval) = NULL;
324 intro_my();
325 parser->parsed_sub = 1;
326 }
327
328 break;
329
330 case 33:
331#line 343 "perly.y" /* yacc.c:1646 */
332 {
333 package((ps[-1].val.opval));
334 if ((ps[-2].val.opval))
335 package_version((ps[-2].val.opval));
336 (yyval.opval) = NULL;
337 }
338
339 break;
340
341 case 34:
342#line 350 "perly.y" /* yacc.c:1646 */
343 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
344
345 break;
346
347 case 35:
348#line 352 "perly.y" /* yacc.c:1646 */
349 {
350 SvREFCNT_inc_simple_void(PL_compcv);
351 utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
352 parser->parsed_sub = 1;
353 (yyval.opval) = NULL;
354 }
355
356 break;
357
358 case 36:
359#line 359 "perly.y" /* yacc.c:1646 */
360 {
361 (yyval.opval) = block_end((ps[-4].val.ival),
362 newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
363 parser->copline = (line_t)(ps[-6].val.ival);
364 }
365
366 break;
367
368 case 37:
369#line 365 "perly.y" /* yacc.c:1646 */
370 {
371 (yyval.opval) = block_end((ps[-4].val.ival),
372 newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
373 parser->copline = (line_t)(ps[-6].val.ival);
374 }
375
376 break;
377
378 case 38:
379#line 371 "perly.y" /* yacc.c:1646 */
380 {
381 (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
382 parser->copline = (line_t)(ps[-5].val.ival);
383 }
384
385 break;
386
387 case 39:
388#line 376 "perly.y" /* yacc.c:1646 */
389 { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
390
391 break;
392
393 case 40:
394#line 378 "perly.y" /* yacc.c:1646 */
395 { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
396
397 break;
398
399 case 41:
400#line 380 "perly.y" /* yacc.c:1646 */
401 {
402 (yyval.opval) = block_end((ps[-5].val.ival),
403 newWHILEOP(0, 1, NULL,
404 (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
405 parser->copline = (line_t)(ps[-7].val.ival);
406 }
407
408 break;
409
410 case 42:
411#line 387 "perly.y" /* yacc.c:1646 */
412 {
413 (yyval.opval) = block_end((ps[-5].val.ival),
414 newWHILEOP(0, 1, NULL,
415 (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
416 parser->copline = (line_t)(ps[-7].val.ival);
417 }
418
419 break;
420
421 case 43:
422#line 394 "perly.y" /* yacc.c:1646 */
423 { parser->expect = XTERM; }
424
425 break;
426
427 case 44:
428#line 396 "perly.y" /* yacc.c:1646 */
429 { parser->expect = XTERM; }
430
431 break;
432
433 case 45:
434#line 399 "perly.y" /* yacc.c:1646 */
435 {
436 OP *initop = (ps[-9].val.opval);
437 OP *forop = newWHILEOP(0, 1, NULL,
438 scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
439 if (initop) {
440 forop = op_prepend_elem(OP_LINESEQ, initop,
441 op_append_elem(OP_LINESEQ,
442 newOP(OP_UNSTACK, OPf_SPECIAL),
443 forop));
444 }
445 PL_hints |= HINT_BLOCK_SCOPE;
446 (yyval.opval) = block_end((ps[-10].val.ival), forop);
447 parser->copline = (line_t)(ps[-12].val.ival);
448 }
449
450 break;
451
452 case 46:
453#line 414 "perly.y" /* yacc.c:1646 */
454 {
455 (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
456 parser->copline = (line_t)(ps[-8].val.ival);
457 }
458
459 break;
460
461 case 47:
462#line 419 "perly.y" /* yacc.c:1646 */
463 {
464 (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
465 op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
466 parser->copline = (line_t)(ps[-7].val.ival);
467 }
468
469 break;
470
471 case 48:
472#line 425 "perly.y" /* yacc.c:1646 */
473 { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
474
475 break;
476
477 case 49:
478#line 427 "perly.y" /* yacc.c:1646 */
479 {
480 (yyval.opval) = block_end(
481 (ps[-7].val.ival),
482 newFOROP(0,
483 op_lvalue(
484 newUNOP(OP_REFGEN, 0,
485 (ps[-5].val.opval)),
486 OP_ENTERLOOP),
487 (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
488 );
489 parser->copline = (line_t)(ps[-9].val.ival);
490 }
491
492 break;
493
494 case 50:
495#line 440 "perly.y" /* yacc.c:1646 */
496 {
497 (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
498 0, op_lvalue(newUNOP(OP_REFGEN, 0,
499 (ps[-6].val.opval)),
500 OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
501 parser->copline = (line_t)(ps[-8].val.ival);
502 }
503
504 break;
505
506 case 51:
507#line 448 "perly.y" /* yacc.c:1646 */
508 {
509 (yyval.opval) = block_end((ps[-4].val.ival),
510 newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
511 parser->copline = (line_t)(ps[-6].val.ival);
512 }
513
514 break;
515
516 case 52:
517#line 454 "perly.y" /* yacc.c:1646 */
518 {
519 /* a block is a loop that happens once */
520 (yyval.opval) = newWHILEOP(0, 1, NULL,
521 NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
522 }
523
524 break;
525
526 case 53:
527#line 460 "perly.y" /* yacc.c:1646 */
528 {
529 package((ps[-2].val.opval));
530 if ((ps[-3].val.opval)) {
531 package_version((ps[-3].val.opval));
532 }
533 }
534
535 break;
536
537 case 54:
538#line 467 "perly.y" /* yacc.c:1646 */
539 {
540 /* a block is a loop that happens once */
541 (yyval.opval) = newWHILEOP(0, 1, NULL,
542 NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0);
543 if (parser->copline > (line_t)(ps[-4].val.ival))
544 parser->copline = (line_t)(ps[-4].val.ival);
545 }
546
547 break;
548
549 case 55:
550#line 475 "perly.y" /* yacc.c:1646 */
551 {
552 (yyval.opval) = (ps[-1].val.opval);
553 }
554
555 break;
556
557 case 56:
558#line 479 "perly.y" /* yacc.c:1646 */
559 {
560 (yyval.opval) = NULL;
561 parser->copline = NOLINE;
562 }
563
564 break;
565
566 case 57:
567#line 487 "perly.y" /* yacc.c:1646 */
568 { OP *list;
569 if ((ps[0].val.opval)) {
570 OP *term = (ps[0].val.opval);
571 list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
572 }
573 else {
574 list = (ps[-1].val.opval);
575 }
576 if (parser->copline == NOLINE)
577 parser->copline = CopLINE(PL_curcop)-1;
578 else parser->copline--;
579 (yyval.opval) = newSTATEOP(0, NULL,
580 op_convert_list(OP_FORMLINE, 0, list));
581 }
582
583 break;
584
585 case 58:
586#line 504 "perly.y" /* yacc.c:1646 */
587 { (yyval.opval) = NULL; }
588
589 break;
590
591 case 59:
592#line 506 "perly.y" /* yacc.c:1646 */
593 { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
594
595 break;
596
597 case 60:
598#line 511 "perly.y" /* yacc.c:1646 */
599 { (yyval.opval) = NULL; }
600
601 break;
602
603 case 61:
604#line 513 "perly.y" /* yacc.c:1646 */
605 { (yyval.opval) = (ps[0].val.opval); }
606
607 break;
608
609 case 62:
610#line 515 "perly.y" /* yacc.c:1646 */
611 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
612
613 break;
614
615 case 63:
616#line 517 "perly.y" /* yacc.c:1646 */
617 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
618
619 break;
620
621 case 64:
622#line 519 "perly.y" /* yacc.c:1646 */
623 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
624
625 break;
626
627 case 65:
628#line 521 "perly.y" /* yacc.c:1646 */
629 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
630
631 break;
632
633 case 66:
634#line 523 "perly.y" /* yacc.c:1646 */
635 { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL);
636 parser->copline = (line_t)(ps[-1].val.ival); }
637
638 break;
639
640 case 67:
641#line 526 "perly.y" /* yacc.c:1646 */
642 { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
643
644 break;
645
646 case 68:
647#line 531 "perly.y" /* yacc.c:1646 */
648 { (yyval.opval) = NULL; }
649
650 break;
651
652 case 69:
653#line 533 "perly.y" /* yacc.c:1646 */
654 {
655 ((ps[0].val.opval))->op_flags |= OPf_PARENS;
656 (yyval.opval) = op_scope((ps[0].val.opval));
657 }
658
659 break;
660
661 case 70:
662#line 538 "perly.y" /* yacc.c:1646 */
663 { parser->copline = (line_t)(ps[-5].val.ival);
664 (yyval.opval) = newCONDOP(0,
665 newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
666 op_scope((ps[-1].val.opval)), (ps[0].val.opval));
667 PL_hints |= HINT_BLOCK_SCOPE;
668 }
669
670 break;
671
672 case 71:
673#line 548 "perly.y" /* yacc.c:1646 */
674 { (yyval.opval) = NULL; }
675
676 break;
677
678 case 72:
679#line 550 "perly.y" /* yacc.c:1646 */
680 { (yyval.opval) = op_scope((ps[0].val.opval)); }
681
682 break;
683
684 case 73:
685#line 555 "perly.y" /* yacc.c:1646 */
686 { (yyval.ival) = (PL_min_intro_pending &&
687 PL_max_intro_pending >= PL_min_intro_pending);
688 intro_my(); }
689
690 break;
691
692 case 74:
693#line 561 "perly.y" /* yacc.c:1646 */
694 { (yyval.opval) = NULL; }
695
696 break;
697
698 case 76:
699#line 567 "perly.y" /* yacc.c:1646 */
700 { YYSTYPE tmplval;
701 (void)scan_num("1", &tmplval);
702 (yyval.opval) = tmplval.opval; }
703
704 break;
705
706 case 78:
707#line 575 "perly.y" /* yacc.c:1646 */
708 { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
709
710 break;
711
712 case 79:
713#line 580 "perly.y" /* yacc.c:1646 */
714 { (yyval.opval) = (ps[0].val.opval); intro_my(); }
715
716 break;
717
718 case 80:
719#line 584 "perly.y" /* yacc.c:1646 */
720 { (yyval.opval) = (ps[0].val.opval); intro_my(); }
721
722 break;
723
724 case 81:
725#line 587 "perly.y" /* yacc.c:1646 */
726 { (yyval.opval) = (ps[0].val.opval); }
727
728 break;
729
730 case 82:
731#line 588 "perly.y" /* yacc.c:1646 */
732 { (yyval.opval) = NULL; }
733
734 break;
735
736 case 83:
737#line 592 "perly.y" /* yacc.c:1646 */
738 { (yyval.ival) = start_subparse(FALSE, 0);
739 SAVEFREESV(PL_compcv); }
740
741 break;
742
743 case 84:
744#line 598 "perly.y" /* yacc.c:1646 */
745 { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
746 SAVEFREESV(PL_compcv); }
747
748 break;
749
750 case 85:
751#line 603 "perly.y" /* yacc.c:1646 */
752 { (yyval.ival) = start_subparse(TRUE, 0);
753 SAVEFREESV(PL_compcv); }
754
755 break;
756
757 case 88:
758#line 614 "perly.y" /* yacc.c:1646 */
759 { (yyval.opval) = NULL; }
760
761 break;
762
763 case 90:
764#line 620 "perly.y" /* yacc.c:1646 */
765 { (yyval.opval) = NULL; }
766
767 break;
768
769 case 91:
770#line 622 "perly.y" /* yacc.c:1646 */
771 { (yyval.opval) = (ps[0].val.opval); }
772
773 break;
774
775 case 92:
776#line 624 "perly.y" /* yacc.c:1646 */
777 { (yyval.opval) = NULL; }
778
779 break;
780
781 case 93:
782#line 629 "perly.y" /* yacc.c:1646 */
783 { (yyval.opval) = (ps[0].val.opval); }
784
785 break;
786
787 case 94:
788#line 631 "perly.y" /* yacc.c:1646 */
789 { (yyval.opval) = NULL; }
790
791 break;
792
793 case 95:
794#line 642 "perly.y" /* yacc.c:1646 */
795 { parser->in_my = 0; (yyval.opval) = NULL; }
796
797 break;
798
799 case 96:
800#line 644 "perly.y" /* yacc.c:1646 */
801 { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
802
803 break;
804
805 case 97:
806#line 649 "perly.y" /* yacc.c:1646 */
807 { (yyval.ival) = '@'; }
808
809 break;
810
811 case 98:
812#line 651 "perly.y" /* yacc.c:1646 */
813 { (yyval.ival) = '%'; }
814
815 break;
816
817 case 99:
818#line 655 "perly.y" /* yacc.c:1646 */
819 {
820 I32 sigil = (ps[-2].val.ival);
821 OP *var = (ps[-1].val.opval);
822 OP *defexpr = (ps[0].val.opval);
823
824 if (parser->sig_slurpy)
825 yyerror("Multiple slurpy parameters not allowed");
826 parser->sig_slurpy = (char)sigil;
827
828 if (defexpr)
829 yyerror("A slurpy parameter may not have "
830 "a default value");
831
832 (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL;
833 }
834
835 break;
836
837 case 100:
838#line 674 "perly.y" /* yacc.c:1646 */
839 { (yyval.opval) = NULL; }
840
841 break;
842
843 case 101:
844#line 676 "perly.y" /* yacc.c:1646 */
845 { (yyval.opval) = newOP(OP_NULL, 0); }
846
847 break;
848
849 case 102:
850#line 678 "perly.y" /* yacc.c:1646 */
851 { (yyval.opval) = (ps[0].val.opval); }
852
853 break;
854
855 case 103:
856#line 684 "perly.y" /* yacc.c:1646 */
857 {
858 OP *var = (ps[-1].val.opval);
859 OP *defexpr = (ps[0].val.opval);
860
861 if (parser->sig_slurpy)
862 yyerror("Slurpy parameter not last");
863
864 parser->sig_elems++;
865
866 if (defexpr) {
867 parser->sig_optelems++;
868
869 if ( defexpr->op_type == OP_NULL
870 && !(defexpr->op_flags & OPf_KIDS))
871 {
872 /* handle '$=' special case */
873 if (var)
874 yyerror("Optional parameter "
875 "lacks default expression");
876 op_free(defexpr);
877 }
878 else {
879 /* a normal '=default' expression */
880 OP *defop = (OP*)alloc_LOGOP(OP_ARGDEFELEM,
881 defexpr,
882 LINKLIST(defexpr));
883 /* re-purpose op_targ to hold @_ index */
884 defop->op_targ =
885 (PADOFFSET)(parser->sig_elems - 1);
886
887 if (var) {
888 var->op_flags |= OPf_STACKED;
889 (void)op_sibling_splice(var,
890 NULL, 0, defop);
891 scalar(defop);
892 }
893 else
894 var = newUNOP(OP_NULL, 0, defop);
895
896 LINKLIST(var);
897 /* NB: normally the first child of a
898 * logop is executed before the logop,
899 * and it pushes a boolean result
900 * ready for the logop. For ARGDEFELEM,
901 * the op itself does the boolean
902 * calculation, so set the first op to
903 * it instead.
904 */
905 var->op_next = defop;
906 defexpr->op_next = var;
907 }
908 }
909 else {
910 if (parser->sig_optelems)
911 yyerror("Mandatory parameter "
912 "follows optional parameter");
913 }
914
915 (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL;
916 }
917
918 break;
919
920 case 104:
921#line 749 "perly.y" /* yacc.c:1646 */
922 { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
923
924 break;
925
926 case 105:
927#line 751 "perly.y" /* yacc.c:1646 */
928 { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
929
930 break;
931
932 case 106:
933#line 757 "perly.y" /* yacc.c:1646 */
934 { (yyval.opval) = (ps[-1].val.opval); }
935
936 break;
937
938 case 107:
939#line 759 "perly.y" /* yacc.c:1646 */
940 {
941 (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval));
942 }
943
944 break;
945
946 case 108:
947#line 763 "perly.y" /* yacc.c:1646 */
948 { (yyval.opval) = (ps[0].val.opval); }
949
950 break;
951
952 case 109:
953#line 768 "perly.y" /* yacc.c:1646 */
954 { (yyval.opval) = NULL; }
955
956 break;
957
958 case 110:
959#line 770 "perly.y" /* yacc.c:1646 */
960 { (yyval.opval) = (ps[0].val.opval); }
961
962 break;
963
964 case 111:
965#line 774 "perly.y" /* yacc.c:1646 */
966 {
967 ENTER;
968 SAVEIV(parser->sig_elems);
969 SAVEIV(parser->sig_optelems);
970 SAVEI8(parser->sig_slurpy);
971 parser->sig_elems = 0;
972 parser->sig_optelems = 0;
973 parser->sig_slurpy = 0;
974 parser->in_my = KEY_sigvar;
975 }
976
977 break;
978
979 case 112:
980#line 786 "perly.y" /* yacc.c:1646 */
981 {
982 OP *sigops = (ps[-1].val.opval);
983 UNOP_AUX_item *aux;
984 OP *check;
985
986 if (!parser->error_count) {
987 assert(FEATURE_SIGNATURES_IS_ENABLED);
988 }
989
990 /* We shouldn't get here otherwise */
991 Perl_ck_warner_d(aTHX_
992 packWARN(WARN_EXPERIMENTAL__SIGNATURES),
993 "The signatures feature is experimental");
994
995 aux = (UNOP_AUX_item*)PerlMemShared_malloc(
996 sizeof(UNOP_AUX_item) * 3);
997 aux[0].iv = parser->sig_elems;
998 aux[1].iv = parser->sig_optelems;
999 aux[2].iv = parser->sig_slurpy;
1000 check = newUNOP_AUX(OP_ARGCHECK, 0, NULL, aux);
1001 sigops = op_prepend_elem(OP_LINESEQ, check, sigops);
1002 sigops = op_prepend_elem(OP_LINESEQ,
1003 newSTATEOP(0, NULL, NULL),
1004 sigops);
1005 /* a nextstate at the end handles context
1006 * correctly for an empty sub body */
1007 (yyval.opval) = op_append_elem(OP_LINESEQ,
1008 sigops,
1009 newSTATEOP(0, NULL, NULL));
1010
1011 parser->in_my = 0;
1012 parser->expect = XATTRBLOCK;
1013 LEAVE;
1014 }
1015
1016 break;
1017
1018 case 114:
1019#line 826 "perly.y" /* yacc.c:1646 */
1020 { (yyval.opval) = NULL; }
1021
1022 break;
1023
1024 case 115:
1025#line 831 "perly.y" /* yacc.c:1646 */
1026 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1027
1028 break;
1029
1030 case 116:
1031#line 833 "perly.y" /* yacc.c:1646 */
1032 { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1033
1034 break;
1035
1036 case 117:
1037#line 835 "perly.y" /* yacc.c:1646 */
1038 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1039
1040 break;
1041
1042 case 119:
1043#line 841 "perly.y" /* yacc.c:1646 */
1044 { (yyval.opval) = (ps[-1].val.opval); }
1045
1046 break;
1047
1048 case 120:
1049#line 843 "perly.y" /* yacc.c:1646 */
1050 {
1051 OP* term = (ps[0].val.opval);
1052 (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
1053 }
1054
1055 break;
1056
1057 case 122:
1058#line 852 "perly.y" /* yacc.c:1646 */
1059 { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
1060 op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
1061 }
1062
1063 break;
1064
1065 case 123:
1066#line 856 "perly.y" /* yacc.c:1646 */
1067 { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
1068 op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
1069 }
1070
1071 break;
1072
1073 case 124:
1074#line 860 "perly.y" /* yacc.c:1646 */
1075 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1076 op_append_elem(OP_LIST,
1077 op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
1078 newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
1079 }
1080
1081 break;
1082
1083 case 125:
1084#line 866 "perly.y" /* yacc.c:1646 */
1085 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1086 op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
1087 newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
1088 }
1089
1090 break;
1091
1092 case 126:
1093#line 871 "perly.y" /* yacc.c:1646 */
1094 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1095 op_append_elem(OP_LIST,
1096 op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
1097 newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
1098 }
1099
1100 break;
1101
1102 case 127:
1103#line 877 "perly.y" /* yacc.c:1646 */
1104 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1105 op_append_elem(OP_LIST,
1106 op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
1107 newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
1108 }
1109
1110 break;
1111
1112 case 128:
1113#line 883 "perly.y" /* yacc.c:1646 */
1114 { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1115
1116 break;
1117
1118 case 129:
1119#line 885 "perly.y" /* yacc.c:1646 */
1120 { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
1121
1122 break;
1123
1124 case 130:
1125#line 887 "perly.y" /* yacc.c:1646 */
1126 { SvREFCNT_inc_simple_void(PL_compcv);
1127 (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); }
1128
1129 break;
1130
1131 case 131:
1132#line 890 "perly.y" /* yacc.c:1646 */
1133 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1134 op_append_elem(OP_LIST,
1135 op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
1136 }
1137
1138 break;
1139
1140 case 134:
1141#line 905 "perly.y" /* yacc.c:1646 */
1142 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
1143
1144 break;
1145
1146 case 135:
1147#line 907 "perly.y" /* yacc.c:1646 */
1148 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
1149 }
1150
1151 break;
1152
1153 case 136:
1154#line 910 "perly.y" /* yacc.c:1646 */
1155 { (yyval.opval) = newBINOP(OP_AELEM, 0,
1156 ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
1157 scalar((ps[-1].val.opval)));
1158 }
1159
1160 break;
1161
1162 case 137:
1163#line 915 "perly.y" /* yacc.c:1646 */
1164 { (yyval.opval) = newBINOP(OP_AELEM, 0,
1165 ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
1166 scalar((ps[-1].val.opval)));
1167 }
1168
1169 break;
1170
1171 case 138:
1172#line 920 "perly.y" /* yacc.c:1646 */
1173 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
1174 }
1175
1176 break;
1177
1178 case 139:
1179#line 923 "perly.y" /* yacc.c:1646 */
1180 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1181 ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
1182 jmaybe((ps[-2].val.opval))); }
1183
1184 break;
1185
1186 case 140:
1187#line 927 "perly.y" /* yacc.c:1646 */
1188 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1189 ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
1190 jmaybe((ps[-2].val.opval))); }
1191
1192 break;
1193
1194 case 141:
1195#line 931 "perly.y" /* yacc.c:1646 */
1196 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1197 newCVREF(0, scalar((ps[-3].val.opval)))); }
1198
1199 break;
1200
1201 case 142:
1202#line 934 "perly.y" /* yacc.c:1646 */
1203 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1204 op_append_elem(OP_LIST, (ps[-1].val.opval),
1205 newCVREF(0, scalar((ps[-4].val.opval))))); }
1206
1207 break;
1208
1209 case 143:
1210#line 939 "perly.y" /* yacc.c:1646 */
1211 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1212 op_append_elem(OP_LIST, (ps[-1].val.opval),
1213 newCVREF(0, scalar((ps[-3].val.opval))))); }
1214
1215 break;
1216
1217 case 144:
1218#line 943 "perly.y" /* yacc.c:1646 */
1219 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1220 newCVREF(0, scalar((ps[-2].val.opval)))); }
1221
1222 break;
1223
1224 case 145:
1225#line 946 "perly.y" /* yacc.c:1646 */
1226 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
1227
1228 break;
1229
1230 case 146:
1231#line 948 "perly.y" /* yacc.c:1646 */
1232 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
1233
1234 break;
1235
1236 case 147:
1237#line 950 "perly.y" /* yacc.c:1646 */
1238 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
1239
1240 break;
1241
1242 case 148:
1243#line 955 "perly.y" /* yacc.c:1646 */
1244 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
1245
1246 break;
1247
1248 case 149:
1249#line 957 "perly.y" /* yacc.c:1646 */
1250 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1251
1252 break;
1253
1254 case 150:
1255#line 959 "perly.y" /* yacc.c:1646 */
1256 { if ((ps[-1].val.ival) != OP_REPEAT)
1257 scalar((ps[-2].val.opval));
1258 (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
1259 }
1260
1261 break;
1262
1263 case 151:
1264#line 964 "perly.y" /* yacc.c:1646 */
1265 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1266
1267 break;
1268
1269 case 152:
1270#line 966 "perly.y" /* yacc.c:1646 */
1271 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1272
1273 break;
1274
1275 case 153:
1276#line 968 "perly.y" /* yacc.c:1646 */
1277 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1278
1279 break;
1280
1281 case 154:
1282#line 970 "perly.y" /* yacc.c:1646 */
1283 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1284
1285 break;
1286
1287 case 155:
1288#line 972 "perly.y" /* yacc.c:1646 */
1289 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1290
1291 break;
1292
1293 case 156:
1294#line 974 "perly.y" /* yacc.c:1646 */
1295 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1296
1297 break;
1298
1299 case 157:
1300#line 976 "perly.y" /* yacc.c:1646 */
1301 { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1302
1303 break;
1304
1305 case 158:
1306#line 978 "perly.y" /* yacc.c:1646 */
1307 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1308
1309 break;
1310
1311 case 159:
1312#line 980 "perly.y" /* yacc.c:1646 */
1313 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1314
1315 break;
1316
1317 case 160:
1318#line 982 "perly.y" /* yacc.c:1646 */
1319 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1320
1321 break;
1322
1323 case 161:
1324#line 984 "perly.y" /* yacc.c:1646 */
1325 { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1326
1327 break;
1328
1329 case 162:
1330#line 989 "perly.y" /* yacc.c:1646 */
1331 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
1332
1333 break;
1334
1335 case 163:
1336#line 991 "perly.y" /* yacc.c:1646 */
1337 { (yyval.opval) = (ps[0].val.opval); }
1338
1339 break;
1340
1341 case 164:
1342#line 994 "perly.y" /* yacc.c:1646 */
1343 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
1344
1345 break;
1346
1347 case 165:
1348#line 996 "perly.y" /* yacc.c:1646 */
1349 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
1350
1351 break;
1352
1353 case 166:
1354#line 998 "perly.y" /* yacc.c:1646 */
1355 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1356 op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
1357
1358 break;
1359
1360 case 167:
1361#line 1001 "perly.y" /* yacc.c:1646 */
1362 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1363 op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
1364
1365 break;
1366
1367 case 168:
1368#line 1004 "perly.y" /* yacc.c:1646 */
1369 { (yyval.opval) = op_convert_list(OP_JOIN, 0,
1370 op_append_elem(
1371 OP_LIST,
1372 newSVREF(scalar(
1373 newSVOP(OP_CONST,0,
1374 newSVpvs("\""))
1375 )),
1376 (ps[-1].val.opval)
1377 ));
1378 }
1379
1380 break;
1381
1382 case 169:
1383#line 1015 "perly.y" /* yacc.c:1646 */
1384 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1385 op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
1386
1387 break;
1388
1389 case 170:
1390#line 1018 "perly.y" /* yacc.c:1646 */
1391 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1392 op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
1393
1394 break;
1395
1396 case 171:
1397#line 1025 "perly.y" /* yacc.c:1646 */
1398 { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
1399
1400 break;
1401
1402 case 172:
1403#line 1027 "perly.y" /* yacc.c:1646 */
1404 { (yyval.opval) = newANONLIST(NULL);}
1405
1406 break;
1407
1408 case 173:
1409#line 1029 "perly.y" /* yacc.c:1646 */
1410 { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
1411
1412 break;
1413
1414 case 174:
1415#line 1031 "perly.y" /* yacc.c:1646 */
1416 { (yyval.opval) = newANONHASH(NULL); }
1417
1418 break;
1419
1420 case 175:
1421#line 1033 "perly.y" /* yacc.c:1646 */
1422 { SvREFCNT_inc_simple_void(PL_compcv);
1423 (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
1424
1425 break;
1426
1427 case 176:
1428#line 1036 "perly.y" /* yacc.c:1646 */
1429 {
1430 OP *body;
1431 if (parser->copline > (line_t)(ps[-2].val.ival))
1432 parser->copline = (line_t)(ps[-2].val.ival);
1433 body = block_end((ps[-5].val.ival),
1434 op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
1435 SvREFCNT_inc_simple_void(PL_compcv);
1436 (yyval.opval) = newANONATTRSUB((ps[-6].val.ival), NULL, (ps[-3].val.opval), body);
1437 }
1438
1439 break;
1440
1441 case 177:
1442#line 1050 "perly.y" /* yacc.c:1646 */
1443 { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
1444
1445 break;
1446
1447 case 178:
1448#line 1052 "perly.y" /* yacc.c:1646 */
1449 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
1450
1451 break;
1452
1453 case 183:
1454#line 1060 "perly.y" /* yacc.c:1646 */
1455 { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
1456
1457 break;
1458
1459 case 184:
1460#line 1062 "perly.y" /* yacc.c:1646 */
1461 { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
1462
1463 break;
1464
1465 case 185:
1466#line 1064 "perly.y" /* yacc.c:1646 */
1467 { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
1468
1469 break;
1470
1471 case 186:
1472#line 1066 "perly.y" /* yacc.c:1646 */
1473 { (yyval.opval) = (ps[0].val.opval); }
1474
1475 break;
1476
1477 case 187:
1478#line 1068 "perly.y" /* yacc.c:1646 */
1479 { (yyval.opval) = localize((ps[0].val.opval),0); }
1480
1481 break;
1482
1483 case 188:
1484#line 1070 "perly.y" /* yacc.c:1646 */
1485 { (yyval.opval) = sawparens((ps[-1].val.opval)); }
1486
1487 break;
1488
1489 case 189:
1490#line 1072 "perly.y" /* yacc.c:1646 */
1491 { (yyval.opval) = (ps[0].val.opval); }
1492
1493 break;
1494
1495 case 190:
1496#line 1074 "perly.y" /* yacc.c:1646 */
1497 { (yyval.opval) = sawparens(newNULLLIST()); }
1498
1499 break;
1500
1501 case 191:
1502#line 1076 "perly.y" /* yacc.c:1646 */
1503 { (yyval.opval) = (ps[0].val.opval); }
1504
1505 break;
1506
1507 case 192:
1508#line 1078 "perly.y" /* yacc.c:1646 */
1509 { (yyval.opval) = (ps[0].val.opval); }
1510
1511 break;
1512
1513 case 193:
1514#line 1080 "perly.y" /* yacc.c:1646 */
1515 { (yyval.opval) = (ps[0].val.opval); }
1516
1517 break;
1518
1519 case 194:
1520#line 1082 "perly.y" /* yacc.c:1646 */
1521 { (yyval.opval) = (ps[0].val.opval); }
1522
1523 break;
1524
1525 case 195:
1526#line 1084 "perly.y" /* yacc.c:1646 */
1527 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
1528
1529 break;
1530
1531 case 196:
1532#line 1086 "perly.y" /* yacc.c:1646 */
1533 { (yyval.opval) = (ps[0].val.opval); }
1534
1535 break;
1536
1537 case 197:
1538#line 1088 "perly.y" /* yacc.c:1646 */
1539 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1540 newOP(OP_PUSHMARK, 0),
1541 newLISTOP(OP_ASLICE, 0,
1542 list((ps[-1].val.opval)),
1543 ref((ps[-3].val.opval), OP_ASLICE)));
1544 if ((yyval.opval) && (ps[-3].val.opval))
1545 (yyval.opval)->op_private |=
1546 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
1547 }
1548
1549 break;
1550
1551 case 198:
1552#line 1098 "perly.y" /* yacc.c:1646 */
1553 { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
1554 newOP(OP_PUSHMARK, 0),
1555 newLISTOP(OP_KVASLICE, 0,
1556 list((ps[-1].val.opval)),
1557 ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));
1558 if ((yyval.opval) && (ps[-3].val.opval))
1559 (yyval.opval)->op_private |=
1560 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
1561 }
1562
1563 break;
1564
1565 case 199:
1566#line 1108 "perly.y" /* yacc.c:1646 */
1567 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1568 newOP(OP_PUSHMARK, 0),
1569 newLISTOP(OP_HSLICE, 0,
1570 list((ps[-2].val.opval)),
1571 ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));
1572 if ((yyval.opval) && (ps[-4].val.opval))
1573 (yyval.opval)->op_private |=
1574 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
1575 }
1576
1577 break;
1578
1579 case 200:
1580#line 1118 "perly.y" /* yacc.c:1646 */
1581 { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
1582 newOP(OP_PUSHMARK, 0),
1583 newLISTOP(OP_KVHSLICE, 0,
1584 list((ps[-2].val.opval)),
1585 ref((ps[-4].val.opval), OP_KVHSLICE)));
1586 if ((yyval.opval) && (ps[-4].val.opval))
1587 (yyval.opval)->op_private |=
1588 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
1589 }
1590
1591 break;
1592
1593 case 201:
1594#line 1128 "perly.y" /* yacc.c:1646 */
1595 { (yyval.opval) = (ps[0].val.opval); }
1596
1597 break;
1598
1599 case 202:
1600#line 1130 "perly.y" /* yacc.c:1646 */
1601 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
1602
1603 break;
1604
1605 case 203:
1606#line 1132 "perly.y" /* yacc.c:1646 */
1607 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
1608 }
1609
1610 break;
1611
1612 case 204:
1613#line 1135 "perly.y" /* yacc.c:1646 */
1614 {
1615 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1616 op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
1617 }
1618
1619 break;
1620
1621 case 205:
1622#line 1140 "perly.y" /* yacc.c:1646 */
1623 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1624 op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
1625 }
1626
1627 break;
1628
1629 case 206:
1630#line 1144 "perly.y" /* yacc.c:1646 */
1631 { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
1632
1633 break;
1634
1635 case 207:
1636#line 1146 "perly.y" /* yacc.c:1646 */
1637 { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
1638
1639 break;
1640
1641 case 208:
1642#line 1148 "perly.y" /* yacc.c:1646 */
1643 { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
1644
1645 break;
1646
1647 case 209:
1648#line 1150 "perly.y" /* yacc.c:1646 */
1649 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
1650 scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
1651
1652 break;
1653
1654 case 210:
1655#line 1153 "perly.y" /* yacc.c:1646 */
1656 { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
1657
1658 break;
1659
1660 case 211:
1661#line 1155 "perly.y" /* yacc.c:1646 */
1662 { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
1663 PL_hints |= HINT_BLOCK_SCOPE; }
1664
1665 break;
1666
1667 case 212:
1668#line 1158 "perly.y" /* yacc.c:1646 */
1669 { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
1670
1671 break;
1672
1673 case 213:
1674#line 1160 "perly.y" /* yacc.c:1646 */
1675 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
1676
1677 break;
1678
1679 case 214:
1680#line 1162 "perly.y" /* yacc.c:1646 */
1681 { (yyval.opval) = newOP((ps[0].val.ival), 0); }
1682
1683 break;
1684
1685 case 215:
1686#line 1164 "perly.y" /* yacc.c:1646 */
1687 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1688
1689 break;
1690
1691 case 216:
1692#line 1166 "perly.y" /* yacc.c:1646 */
1693 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1694
1695 break;
1696
1697 case 217:
1698#line 1168 "perly.y" /* yacc.c:1646 */
1699 { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
1700
1701 break;
1702
1703 case 218:
1704#line 1170 "perly.y" /* yacc.c:1646 */
1705 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
1706
1707 break;
1708
1709 case 219:
1710#line 1172 "perly.y" /* yacc.c:1646 */
1711 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
1712
1713 break;
1714
1715 case 220:
1716#line 1174 "perly.y" /* yacc.c:1646 */
1717 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1718 op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
1719
1720 break;
1721
1722 case 221:
1723#line 1177 "perly.y" /* yacc.c:1646 */
1724 { (yyval.opval) = newOP((ps[0].val.ival), 0); }
1725
1726 break;
1727
1728 case 222:
1729#line 1179 "perly.y" /* yacc.c:1646 */
1730 { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
1731
1732 break;
1733
1734 case 223:
1735#line 1181 "perly.y" /* yacc.c:1646 */
1736 { (yyval.opval) = (ps[0].val.opval); }
1737
1738 break;
1739
1740 case 224:
1741#line 1183 "perly.y" /* yacc.c:1646 */
1742 { (yyval.opval) = (ps[-2].val.opval); }
1743
1744 break;
1745
1746 case 225:
1747#line 1185 "perly.y" /* yacc.c:1646 */
1748 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
1749
1750 break;
1751
1752 case 226:
1753#line 1187 "perly.y" /* yacc.c:1646 */
1754 { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
1755 ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1756 : newOP((ps[-2].val.ival), OPf_SPECIAL); }
1757
1758 break;
1759
1760 case 227:
1761#line 1191 "perly.y" /* yacc.c:1646 */
1762 { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
1763
1764 break;
1765
1766 case 228:
1767#line 1193 "perly.y" /* yacc.c:1646 */
1768 {
1769 if ( (ps[0].val.opval)->op_type != OP_TRANS
1770 && (ps[0].val.opval)->op_type != OP_TRANSR
1771 && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
1772 {
1773 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1774 SAVEFREESV(PL_compcv);
1775 } else
1776 (yyval.ival) = 0;
1777 }
1778
1779 break;
1780
1781 case 229:
1782#line 1204 "perly.y" /* yacc.c:1646 */
1783 { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
1784
1785 break;
1786
1787 case 232:
1788#line 1208 "perly.y" /* yacc.c:1646 */
1789 {
1790 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
1791 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
1792 }
1793
1794 break;
1795
1796 case 234:
1797#line 1217 "perly.y" /* yacc.c:1646 */
1798 { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
1799
1800 break;
1801
1802 case 235:
1803#line 1219 "perly.y" /* yacc.c:1646 */
1804 { (yyval.opval) = localize((ps[0].val.opval),1); }
1805
1806 break;
1807
1808 case 236:
1809#line 1221 "perly.y" /* yacc.c:1646 */
1810 { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
1811
1812 break;
1813
1814 case 237:
1815#line 1226 "perly.y" /* yacc.c:1646 */
1816 { (yyval.opval) = sawparens((ps[-1].val.opval)); }
1817
1818 break;
1819
1820 case 238:
1821#line 1228 "perly.y" /* yacc.c:1646 */
1822 { (yyval.opval) = sawparens(newNULLLIST()); }
1823
1824 break;
1825
1826 case 239:
1827#line 1231 "perly.y" /* yacc.c:1646 */
1828 { (yyval.opval) = (ps[0].val.opval); }
1829
1830 break;
1831
1832 case 240:
1833#line 1233 "perly.y" /* yacc.c:1646 */
1834 { (yyval.opval) = (ps[0].val.opval); }
1835
1836 break;
1837
1838 case 241:
1839#line 1235 "perly.y" /* yacc.c:1646 */
1840 { (yyval.opval) = (ps[0].val.opval); }
1841
1842 break;
1843
1844 case 242:
1845#line 1240 "perly.y" /* yacc.c:1646 */
1846 { (yyval.opval) = NULL; }
1847
1848 break;
1849
1850 case 243:
1851#line 1242 "perly.y" /* yacc.c:1646 */
1852 { (yyval.opval) = (ps[0].val.opval); }
1853
1854 break;
1855
1856 case 244:
1857#line 1246 "perly.y" /* yacc.c:1646 */
1858 { (yyval.opval) = NULL; }
1859
1860 break;
1861
1862 case 245:
1863#line 1248 "perly.y" /* yacc.c:1646 */
1864 { (yyval.opval) = (ps[0].val.opval); }
1865
1866 break;
1867
1868 case 246:
1869#line 1252 "perly.y" /* yacc.c:1646 */
1870 { (yyval.opval) = NULL; }
1871
1872 break;
1873
1874 case 247:
1875#line 1254 "perly.y" /* yacc.c:1646 */
1876 { (yyval.opval) = (ps[0].val.opval); }
1877
1878 break;
1879
1880 case 248:
1881#line 1260 "perly.y" /* yacc.c:1646 */
1882 { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
1883
1884 break;
1885
1886 case 256:
1887#line 1277 "perly.y" /* yacc.c:1646 */
1888 { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
1889
1890 break;
1891
1892 case 257:
1893#line 1281 "perly.y" /* yacc.c:1646 */
1894 { (yyval.opval) = newSVREF((ps[0].val.opval)); }
1895
1896 break;
1897
1898 case 258:
1899#line 1285 "perly.y" /* yacc.c:1646 */
1900 { (yyval.opval) = newAVREF((ps[0].val.opval));
1901 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
1902 }
1903
1904 break;
1905
1906 case 259:
1907#line 1291 "perly.y" /* yacc.c:1646 */
1908 { (yyval.opval) = newHVREF((ps[0].val.opval));
1909 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
1910 }
1911
1912 break;
1913
1914 case 260:
1915#line 1297 "perly.y" /* yacc.c:1646 */
1916 { (yyval.opval) = newAVREF((ps[0].val.opval)); }
1917
1918 break;
1919
1920 case 261:
1921#line 1299 "perly.y" /* yacc.c:1646 */
1922 { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
1923
1924 break;
1925
1926 case 262:
1927#line 1303 "perly.y" /* yacc.c:1646 */
1928 { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
1929
1930 break;
1931
1932 case 264:
1933#line 1308 "perly.y" /* yacc.c:1646 */
1934 { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
1935
1936 break;
1937
1938 case 266:
1939#line 1313 "perly.y" /* yacc.c:1646 */
1940 { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
1941
1942 break;
1943
1944 case 268:
1945#line 1318 "perly.y" /* yacc.c:1646 */
1946 { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
1947
1948 break;
1949
1950 case 269:
1951#line 1323 "perly.y" /* yacc.c:1646 */
1952 { (yyval.opval) = scalar((ps[0].val.opval)); }
1953
1954 break;
1955
1956 case 270:
1957#line 1325 "perly.y" /* yacc.c:1646 */
1958 { (yyval.opval) = scalar((ps[0].val.opval)); }
1959
1960 break;
1961
1962 case 271:
1963#line 1327 "perly.y" /* yacc.c:1646 */
1964 { (yyval.opval) = op_scope((ps[0].val.opval)); }
1965
1966 break;
1967
1968 case 272:
1969#line 1330 "perly.y" /* yacc.c:1646 */
1970 { (yyval.opval) = (ps[0].val.opval); }
1971
1972 break;
1973
1974
1975
1976 default: break;
1977
1978
1979/* Generated from:
1980 * a8b5527eacb1205d15c8c01acb4a8f99b494e5b453ddd68a2a2e7fca4be3302a perly.y
1981 * 153cba5d215c1a083a0459c43f4d55c45fd0a7093c197d7247a456dcde21ea53 regen_perly.pl
1982 * ex: set ro: */