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!
10 parser->expect = XSTATE;
17 newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
18 PL_compiling.cop_seq = 0;
26 parser->expect = XTERM;
33 PL_eval_root = (ps[(3) - (3)].val.opval);
41 parser->expect = XBLOCK;
48 PL_pad_reset_pending = TRUE;
49 PL_eval_root = (ps[(3) - (3)].val.opval);
52 parser->yychar = YYEOF;
59 parser->expect = XSTATE;
66 PL_pad_reset_pending = TRUE;
67 PL_eval_root = (ps[(3) - (3)].val.opval);
70 parser->yychar = YYEOF;
77 parser->expect = XSTATE;
84 PL_pad_reset_pending = TRUE;
85 PL_eval_root = (ps[(3) - (3)].val.opval);
88 parser->yychar = YYEOF;
95 parser->expect = XSTATE;
102 PL_eval_root = (ps[(3) - (3)].val.opval);
109 { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
110 parser->copline = (line_t)(ps[(1) - (4)].val.ival);
111 (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
117 { if (parser->copline > (line_t)(ps[(1) - (7)].val.ival))
118 parser->copline = (line_t)(ps[(1) - (7)].val.ival);
119 (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
125 { (yyval.ival) = block_start(TRUE);
126 parser->parsed_sub = 0; ;}
131 { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
132 parser->copline = (line_t)(ps[(1) - (4)].val.ival);
133 (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
139 { (yyval.ival) = block_start(FALSE);
140 parser->parsed_sub = 0; ;}
145 { (yyval.opval) = (OP*)NULL; ;}
150 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
151 PL_pad_reset_pending = TRUE;
152 if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
153 PL_hints |= HINT_BLOCK_SCOPE;
159 { (yyval.opval) = (OP*)NULL; ;}
164 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
165 PL_pad_reset_pending = TRUE;
166 if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
167 PL_hints |= HINT_BLOCK_SCOPE;
174 (yyval.opval) = (ps[(1) - (1)].val.opval) ? newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)) : NULL;
180 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
186 (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
193 (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
199 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
205 CV *fmtcv = PL_compcv;
206 newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
207 (yyval.opval) = (OP*)NULL;
208 if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
209 pad_add_weakref(fmtcv);
211 parser->parsed_sub = 1;
218 if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
219 const char *const name =
220 SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
221 if (strEQ(name, "BEGIN") || strEQ(name, "END")
222 || strEQ(name, "INIT") || strEQ(name, "CHECK")
223 || strEQ(name, "UNITCHECK"))
224 CvSPECIAL_on(PL_compcv);
227 /* State subs inside anonymous subs need to be
228 clonable themselves. */
229 if (CvANON(CvOUTSIDE(PL_compcv))
230 || CvCLONE(CvOUTSIDE(PL_compcv))
231 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
233 ))[(ps[(2) - (3)].val.opval)->op_targ]))
234 CvCLONE_on(PL_compcv);
236 parser->in_my_stash = NULL;
243 SvREFCNT_inc_simple_void(PL_compcv);
244 (ps[(2) - (7)].val.opval)->op_type == OP_CONST
245 ? newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
246 : newMYSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
248 (yyval.opval) = (OP*)NULL;
250 parser->parsed_sub = 1;
257 if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
258 const char *const name =
259 SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
260 if (strEQ(name, "BEGIN") || strEQ(name, "END")
261 || strEQ(name, "INIT") || strEQ(name, "CHECK")
262 || strEQ(name, "UNITCHECK"))
263 CvSPECIAL_on(PL_compcv);
266 /* State subs inside anonymous subs need to be
267 clonable themselves. */
268 if (CvANON(CvOUTSIDE(PL_compcv))
269 || CvCLONE(CvOUTSIDE(PL_compcv))
270 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
272 ))[(ps[(2) - (3)].val.opval)->op_targ]))
273 CvCLONE_on(PL_compcv);
275 parser->in_my_stash = NULL;
283 if (parser->copline > (line_t)(ps[(8) - (10)].val.ival))
284 parser->copline = (line_t)(ps[(8) - (10)].val.ival);
285 body = block_end((ps[(5) - (10)].val.ival),
286 op_append_list(OP_LINESEQ, (ps[(6) - (10)].val.opval), (ps[(9) - (10)].val.opval)));
288 SvREFCNT_inc_simple_void(PL_compcv);
289 (ps[(2) - (10)].val.opval)->op_type == OP_CONST
290 ? newATTRSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
291 : newMYSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
293 (yyval.opval) = (OP*)NULL;
295 parser->parsed_sub = 1;
302 package((ps[(3) - (4)].val.opval));
303 if ((ps[(2) - (4)].val.opval))
304 package_version((ps[(2) - (4)].val.opval));
305 (yyval.opval) = (OP*)NULL;
311 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
317 SvREFCNT_inc_simple_void(PL_compcv);
318 utilize((ps[(1) - (7)].val.ival), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
319 parser->parsed_sub = 1;
320 (yyval.opval) = (OP*)NULL;
327 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
328 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
329 parser->copline = (line_t)(ps[(1) - (7)].val.ival);
336 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
337 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
338 parser->copline = (line_t)(ps[(1) - (7)].val.ival);
345 const PADOFFSET offset = pad_findmy_pvs("$_", 0);
346 (yyval.opval) = block_end((ps[(3) - (6)].val.ival),
347 newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)),
349 || PAD_COMPNAME_FLAGS_isOUR(offset)
352 parser->copline = (line_t)(ps[(1) - (6)].val.ival);
358 { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
363 { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
369 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
370 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
371 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
372 parser->copline = (line_t)(ps[(1) - (8)].val.ival);
379 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
380 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
381 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
382 parser->copline = (line_t)(ps[(1) - (8)].val.ival);
388 { parser->expect = XTERM; ;}
393 { parser->expect = XTERM; ;}
399 OP *initop = (ps[(4) - (13)].val.opval);
400 OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
401 scalar((ps[(7) - (13)].val.opval)), (ps[(13) - (13)].val.opval), (ps[(11) - (13)].val.opval), (ps[(10) - (13)].val.ival));
403 forop = op_prepend_elem(OP_LINESEQ, initop,
404 op_append_elem(OP_LINESEQ,
405 newOP(OP_UNSTACK, OPf_SPECIAL),
408 PL_hints |= HINT_BLOCK_SCOPE;
409 (yyval.opval) = block_end((ps[(3) - (13)].val.ival), forop);
410 parser->copline = (line_t)(ps[(1) - (13)].val.ival);
417 (yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
418 parser->copline = (line_t)(ps[(1) - (9)].val.ival);
425 (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
426 op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
427 parser->copline = (line_t)(ps[(1) - (8)].val.ival);
433 { parser->in_my = 0; (yyval.opval) = my((ps[(5) - (5)].val.opval)); ;}
439 (yyval.opval) = block_end(
440 (ps[(4) - (11)].val.ival),
443 newUNOP(OP_REFGEN, 0,
444 (ps[(6) - (11)].val.opval)),
446 (ps[(8) - (11)].val.opval), (ps[(10) - (11)].val.opval), (ps[(11) - (11)].val.opval))
448 parser->copline = (line_t)(ps[(1) - (11)].val.ival);
455 (yyval.opval) = block_end((ps[(5) - (9)].val.ival), newFOROP(
456 0, op_lvalue(newUNOP(OP_REFGEN, 0,
457 (ps[(3) - (9)].val.opval)),
458 OP_ENTERLOOP), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
459 parser->copline = (line_t)(ps[(1) - (9)].val.ival);
466 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
467 newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
468 parser->copline = (line_t)(ps[(1) - (7)].val.ival);
475 /* a block is a loop that happens once */
476 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
477 (OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
484 package((ps[(3) - (5)].val.opval));
485 if ((ps[(2) - (5)].val.opval)) {
486 package_version((ps[(2) - (5)].val.opval));
494 /* a block is a loop that happens once */
495 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
496 (OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
497 if (parser->copline > (line_t)(ps[(4) - (8)].val.ival))
498 parser->copline = (line_t)(ps[(4) - (8)].val.ival);
505 (yyval.opval) = (ps[(1) - (2)].val.opval);
512 (yyval.opval) = (OP*)NULL;
513 parser->copline = NOLINE;
520 if ((ps[(2) - (2)].val.opval)) {
521 OP *term = (ps[(2) - (2)].val.opval);
522 list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
525 list = (ps[(1) - (2)].val.opval);
527 if (parser->copline == NOLINE)
528 parser->copline = CopLINE(PL_curcop)-1;
529 else parser->copline--;
530 (yyval.opval) = newSTATEOP(0, NULL,
531 op_convert_list(OP_FORMLINE, 0, list));
537 { (yyval.opval) = NULL; ;}
542 { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;}
547 { (yyval.opval) = (OP*)NULL; ;}
552 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
557 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
562 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
567 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); ;}
572 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
577 { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
578 parser->copline = (line_t)(ps[(2) - (3)].val.ival); ;}
583 { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
588 { (yyval.opval) = (OP*)NULL; ;}
594 ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
595 (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
601 { parser->copline = (line_t)(ps[(1) - (6)].val.ival);
602 (yyval.opval) = newCONDOP(0,
603 newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
604 op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
605 PL_hints |= HINT_BLOCK_SCOPE;
611 { (yyval.opval) = (OP*)NULL; ;}
616 { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); ;}
621 { (yyval.ival) = (PL_min_intro_pending &&
622 PL_max_intro_pending >= PL_min_intro_pending);
628 { (yyval.opval) = (OP*)NULL; ;}
634 (void)scan_num("1", &tmplval);
635 (yyval.opval) = tmplval.opval; ;}
640 { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
645 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
650 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
655 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
660 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
665 { (yyval.opval) = (OP*)NULL; ;}
670 { (yyval.ival) = start_subparse(FALSE, 0);
671 SAVEFREESV(PL_compcv); ;}
676 { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
677 SAVEFREESV(PL_compcv); ;}
682 { (yyval.ival) = start_subparse(TRUE, 0);
683 SAVEFREESV(PL_compcv); ;}
688 { (yyval.opval) = (OP*)NULL; ;}
693 { (yyval.opval) = (OP*)NULL; ;}
698 { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
703 { (yyval.opval) = (OP*)NULL; ;}
708 { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
713 { (yyval.opval) = (OP*)NULL; ;}
719 /* We shouldn't get here otherwise */
720 assert(FEATURE_SIGNATURES_IS_ENABLED);
722 Perl_ck_warner_d(aTHX_
723 packWARN(WARN_EXPERIMENTAL__SIGNATURES),
724 "The signatures feature is experimental");
725 (yyval.opval) = parse_subsignature();
732 (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),
733 newSTATEOP(0, NULL, sawparens(newNULLLIST())));
734 parser->expect = XATTRBLOCK;
740 { (yyval.opval) = (OP*)NULL; ;}
745 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
750 { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
755 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
760 { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}
766 OP* term = (ps[(3) - (3)].val.opval);
767 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
773 { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,
774 op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
780 { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,
781 op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
787 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
788 op_append_elem(OP_LIST,
789 op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
790 newMETHOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
796 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
797 op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
798 newMETHOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
804 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
805 op_append_elem(OP_LIST,
806 op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
807 newMETHOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
813 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
814 op_append_elem(OP_LIST,
815 op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
816 newMETHOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
822 { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
827 { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
832 { SvREFCNT_inc_simple_void(PL_compcv);
833 (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
838 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
839 op_append_elem(OP_LIST,
840 op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
846 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); ;}
851 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
857 { (yyval.opval) = newBINOP(OP_AELEM, 0,
858 ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
859 scalar((ps[(4) - (5)].val.opval)));
865 { (yyval.opval) = newBINOP(OP_AELEM, 0,
866 ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
867 scalar((ps[(3) - (4)].val.opval)));
873 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
879 { (yyval.opval) = newBINOP(OP_HELEM, 0,
880 ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
881 jmaybe((ps[(4) - (6)].val.opval))); ;}
886 { (yyval.opval) = newBINOP(OP_HELEM, 0,
887 ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
888 jmaybe((ps[(3) - (5)].val.opval))); ;}
893 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
894 newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); ;}
899 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
900 op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
901 newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); ;}
906 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
907 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
908 newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); ;}
913 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
914 newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); ;}
919 { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); ;}
924 { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); ;}
929 { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); ;}
934 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); ;}
939 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
944 { if ((ps[(2) - (3)].val.ival) != OP_REPEAT)
945 scalar((ps[(1) - (3)].val.opval));
946 (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
952 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
957 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
962 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
967 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
972 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
977 { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
982 { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
987 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
992 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
997 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
1002 { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
1007 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); ;}
1012 { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
1017 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
1022 { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, scalar((ps[(2) - (2)].val.opval))); ;}
1027 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1028 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); ;}
1033 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1034 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));;}
1039 { (yyval.opval) = op_convert_list(OP_JOIN, 0,
1046 (ps[(1) - (2)].val.opval)
1053 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1054 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); ;}
1059 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1060 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); ;}
1065 { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); ;}
1070 { (yyval.opval) = newANONLIST((OP*)NULL);;}
1075 { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); ;}
1080 { (yyval.opval) = newANONHASH((OP*)NULL); ;}
1085 { SvREFCNT_inc_simple_void(PL_compcv);
1086 (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
1093 if (parser->copline > (line_t)(ps[(6) - (8)].val.ival))
1094 parser->copline = (line_t)(ps[(6) - (8)].val.ival);
1095 body = block_end((ps[(3) - (8)].val.ival),
1096 op_append_list(OP_LINESEQ, (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval)));
1097 SvREFCNT_inc_simple_void(PL_compcv);
1098 (yyval.opval) = newANONATTRSUB((ps[(2) - (8)].val.ival), NULL, (ps[(5) - (8)].val.opval), body);
1104 { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));;}
1109 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));;}
1114 { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
1119 { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[(2) - (2)].val.opval)); ;}
1124 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1129 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); ;}
1134 { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
1139 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1144 { (yyval.opval) = sawparens(newNULLLIST()); ;}
1149 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1154 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1159 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1164 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1169 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
1174 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1179 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1180 newOP(OP_PUSHMARK, 0),
1181 newLISTOP(OP_ASLICE, 0,
1182 list((ps[(3) - (4)].val.opval)),
1183 ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
1184 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1185 (yyval.opval)->op_private |=
1186 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1192 { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
1193 newOP(OP_PUSHMARK, 0),
1194 newLISTOP(OP_KVASLICE, 0,
1195 list((ps[(3) - (4)].val.opval)),
1196 ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));
1197 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1198 (yyval.opval)->op_private |=
1199 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1205 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1206 newOP(OP_PUSHMARK, 0),
1207 newLISTOP(OP_HSLICE, 0,
1208 list((ps[(3) - (5)].val.opval)),
1209 ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
1210 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1211 (yyval.opval)->op_private |=
1212 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1218 { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
1219 newOP(OP_PUSHMARK, 0),
1220 newLISTOP(OP_KVHSLICE, 0,
1221 list((ps[(3) - (5)].val.opval)),
1222 ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));
1223 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1224 (yyval.opval)->op_private |=
1225 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1231 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1236 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
1241 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
1248 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1249 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
1255 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1256 op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
1262 { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); ;}
1267 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
1272 { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); ;}
1277 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
1278 scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); ;}
1283 { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); ;}
1288 { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);
1289 PL_hints |= HINT_BLOCK_SCOPE; ;}
1294 { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
1299 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
1304 { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
1309 { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
1313 #line 1000 "perly.y"
1314 { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
1318 #line 1002 "perly.y"
1319 { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL : 0); ;}
1323 #line 1004 "perly.y"
1324 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); ;}
1328 #line 1006 "perly.y"
1329 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
1333 #line 1008 "perly.y"
1334 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1335 op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
1339 #line 1011 "perly.y"
1340 { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
1344 #line 1013 "perly.y"
1345 { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);;}
1349 #line 1015 "perly.y"
1350 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1354 #line 1017 "perly.y"
1355 { (yyval.opval) = (ps[(1) - (3)].val.opval); ;}
1359 #line 1019 "perly.y"
1360 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
1364 #line 1021 "perly.y"
1365 { (yyval.opval) = ((ps[(1) - (3)].val.ival) == OP_NOT)
1366 ? newUNOP((ps[(1) - (3)].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1367 : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); ;}
1371 #line 1025 "perly.y"
1372 { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
1376 #line 1027 "perly.y"
1378 if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
1379 && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
1380 && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
1382 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1383 SAVEFREESV(PL_compcv);
1390 #line 1038 "perly.y"
1391 { (yyval.opval) = pmruntime((ps[(1) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), 1, (ps[(2) - (6)].val.ival)); ;}
1395 #line 1042 "perly.y"
1397 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
1398 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
1403 #line 1051 "perly.y"
1404 { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); ;}
1408 #line 1053 "perly.y"
1409 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); ;}
1413 #line 1058 "perly.y"
1414 { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
1418 #line 1060 "perly.y"
1419 { (yyval.opval) = sawparens(newNULLLIST()); ;}
1423 #line 1063 "perly.y"
1424 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1428 #line 1065 "perly.y"
1429 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1433 #line 1067 "perly.y"
1434 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1438 #line 1072 "perly.y"
1439 { (yyval.opval) = (OP*)NULL; ;}
1443 #line 1074 "perly.y"
1444 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1448 #line 1078 "perly.y"
1449 { (yyval.opval) = (OP*)NULL; ;}
1453 #line 1080 "perly.y"
1454 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1458 #line 1084 "perly.y"
1459 { (yyval.opval) = (OP*)NULL; ;}
1463 #line 1086 "perly.y"
1464 { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
1468 #line 1092 "perly.y"
1469 { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
1473 #line 1105 "perly.y"
1474 { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
1478 #line 1109 "perly.y"
1479 { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); ;}
1483 #line 1113 "perly.y"
1484 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1485 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
1490 #line 1119 "perly.y"
1491 { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
1492 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
1497 #line 1125 "perly.y"
1498 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); ;}
1502 #line 1127 "perly.y"
1503 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
1507 #line 1131 "perly.y"
1508 { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); ;}
1512 #line 1136 "perly.y"
1513 { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); ;}
1517 #line 1141 "perly.y"
1518 { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); ;}
1522 #line 1146 "perly.y"
1523 { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); ;}
1527 #line 1151 "perly.y"
1528 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
1532 #line 1153 "perly.y"
1533 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
1537 #line 1155 "perly.y"
1538 { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
1542 #line 1158 "perly.y"
1543 { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1547 /* Line 1267 of yacc.c. */
1553 * e2ef3626c25dd92c66987e4c2f707e7f194c2bd5df74da27c51df206d9809412 perly.y
1554 * d1d4df7b8e30ac9dede664af9179e6e5e7ddc7f2ad9c4eff9e2e5b32c9e16a6e regen_perly.pl