3 { yyval.ival = yyvsp[-1].ival; newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); ;}
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); ;}
15 { yyval.ival = block_start(TRUE); ;}
21 PL_expect = XSTATE; yyval.ival = block_start(TRUE);
27 { if (PL_copline > (line_t)yyvsp[-3].ival)
28 PL_copline = (line_t)yyvsp[-3].ival;
29 yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); ;}
34 { yyval.ival = block_start(FALSE); ;}
39 { yyval.opval = Nullop; ;}
44 { yyval.opval = yyvsp[-1].opval; ;}
49 { yyval.opval = append_list(OP_LINESEQ,
50 (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
51 PL_pad_reset_pending = TRUE;
52 if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; ;}
57 { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); ;}
62 { if (yyvsp[-1].pval != Nullch) {
63 yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
69 PL_expect = XSTATE; ;}
74 { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
75 PL_expect = XSTATE; ;}
80 { yyval.opval = Nullop; ;}
85 { yyval.opval = yyvsp[0].opval; ;}
90 { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); ;}
95 { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); ;}
100 { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); ;}
105 { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);;}
110 { yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival,
111 Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); ;}
116 { yyval.opval = Nullop; ;}
121 { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); ;}
126 { PL_copline = (line_t)yyvsp[-5].ival;
127 yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval);
128 PL_hints |= HINT_BLOCK_SCOPE; ;}
133 { PL_copline = (line_t)yyvsp[-6].ival;
134 yyval.opval = block_end(yyvsp[-4].ival,
135 newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;}
140 { PL_copline = (line_t)yyvsp[-6].ival;
141 yyval.opval = block_end(yyvsp[-4].ival,
142 newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;}
147 { yyval.opval = Nullop; ;}
152 { yyval.opval = scope(yyvsp[0].opval); ;}
157 { PL_copline = (line_t)yyvsp[-6].ival;
158 yyval.opval = block_end(yyvsp[-4].ival,
159 newSTATEOP(0, yyvsp[-7].pval,
160 newWHILEOP(0, 1, (LOOP*)Nullop,
161 yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;}
166 { PL_copline = (line_t)yyvsp[-6].ival;
167 yyval.opval = block_end(yyvsp[-4].ival,
168 newSTATEOP(0, yyvsp[-7].pval,
169 newWHILEOP(0, 1, (LOOP*)Nullop,
170 yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;}
175 { yyval.opval = block_end(yyvsp[-6].ival,
176 newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
181 { yyval.opval = block_end(yyvsp[-4].ival,
182 newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP),
183 yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
188 { yyval.opval = block_end(yyvsp[-4].ival,
189 newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;}
195 PL_copline = (line_t)yyvsp[-9].ival;
196 forop = newSTATEOP(0, yyvsp[-10].pval,
197 newWHILEOP(0, 1, (LOOP*)Nullop,
198 yyvsp[-9].ival, scalar(yyvsp[-4].opval),
199 yyvsp[0].opval, yyvsp[-2].opval));
200 if (yyvsp[-6].opval) {
201 forop = append_elem(OP_LINESEQ,
202 newSTATEOP(0, (yyvsp[-10].pval?savepv(yyvsp[-10].pval):Nullch),
207 yyval.opval = block_end(yyvsp[-7].ival, forop); ;}
212 { yyval.opval = newSTATEOP(0, yyvsp[-2].pval,
213 newWHILEOP(0, 1, (LOOP*)Nullop,
214 NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); ;}
219 { yyval.opval = Nullop; ;}
224 { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; ;}
229 { yyval.opval = invert(scalar(yyvsp[0].opval)); ;}
234 { yyval.opval = yyvsp[0].opval; intro_my(); ;}
239 { yyval.opval = yyvsp[0].opval; intro_my(); ;}
244 { yyval.opval = yyvsp[0].opval; intro_my(); ;}
249 { yyval.opval = yyvsp[0].opval; intro_my(); ;}
254 { yyval.pval = Nullch; ;}
284 { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); ;}
289 { yyval.opval = yyvsp[0].opval; ;}
294 { yyval.opval = Nullop; ;}
299 { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
304 { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
309 { yyval.ival = start_subparse(FALSE, 0); ;}
314 { yyval.ival = start_subparse(FALSE, CVf_ANON); ;}
319 { yyval.ival = start_subparse(TRUE, 0); ;}
324 { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a);
325 if (strEQ(name, "BEGIN") || strEQ(name, "END")
326 || strEQ(name, "INIT") || strEQ(name, "CHECK"))
327 CvSPECIAL_on(PL_compcv);
328 yyval.opval = yyvsp[0].opval; ;}
333 { yyval.opval = Nullop; ;}
338 { yyval.opval = Nullop; ;}
343 { yyval.opval = yyvsp[0].opval; ;}
348 { yyval.opval = Nullop; ;}
353 { yyval.opval = yyvsp[0].opval; ;}
358 { yyval.opval = Nullop; ;}
363 { yyval.opval = yyvsp[0].opval; ;}
368 { yyval.opval = Nullop; PL_expect = XSTATE; ;}
373 { package(yyvsp[-1].opval); ;}
378 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
383 { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); ;}
388 { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
393 { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
398 { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
403 { yyval.opval = yyvsp[-1].opval; ;}
408 { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); ;}
413 { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED,
414 prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); ;}
419 { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED,
420 prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); ;}
425 { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
427 prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval),
428 newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); ;}
433 { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
434 append_elem(OP_LIST, scalar(yyvsp[-2].opval),
435 newUNOP(OP_METHOD, 0, yyvsp[0].opval))); ;}
440 { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
442 prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval),
443 newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); ;}
448 { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
450 prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval),
451 newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); ;}
456 { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
461 { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;}
466 { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); ;}
471 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
473 prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); ;}
478 { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval));
479 PL_expect = XOPERATOR; ;}
484 { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); ;}
489 { yyval.opval = newBINOP(OP_AELEM, 0,
490 ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
491 scalar(yyvsp[-1].opval));;}
496 { yyval.opval = newBINOP(OP_AELEM, 0,
497 ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
498 scalar(yyvsp[-1].opval));;}
503 { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
504 PL_expect = XOPERATOR; ;}
509 { yyval.opval = newBINOP(OP_HELEM, 0,
510 ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
511 jmaybe(yyvsp[-2].opval));
512 PL_expect = XOPERATOR; ;}
517 { yyval.opval = newBINOP(OP_HELEM, 0,
518 ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
519 jmaybe(yyvsp[-2].opval));
520 PL_expect = XOPERATOR; ;}
525 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
526 newCVREF(0, scalar(yyvsp[-3].opval))); ;}
531 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
532 append_elem(OP_LIST, yyvsp[-1].opval,
533 newCVREF(0, scalar(yyvsp[-4].opval)))); ;}
538 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
539 append_elem(OP_LIST, yyvsp[-1].opval,
540 newCVREF(0, scalar(yyvsp[-3].opval)))); ;}
545 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
546 newCVREF(0, scalar(yyvsp[-2].opval))); ;}
551 { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); ;}
556 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
561 { if (yyvsp[-1].ival != OP_REPEAT)
562 scalar(yyvsp[-2].opval);
563 yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); ;}
568 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
573 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
578 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
583 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
588 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
593 { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;}
598 { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));;}
603 { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
608 { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
613 { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;}
618 { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); ;}
623 { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); ;}
628 { yyval.opval = yyvsp[0].opval; ;}
633 { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;}
638 { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));;}
643 { yyval.opval = newUNOP(OP_POSTINC, 0,
644 mod(scalar(yyvsp[-1].opval), OP_POSTINC)); ;}
649 { yyval.opval = newUNOP(OP_POSTDEC, 0,
650 mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); ;}
655 { yyval.opval = newUNOP(OP_PREINC, 0,
656 mod(scalar(yyvsp[0].opval), OP_PREINC)); ;}
661 { yyval.opval = newUNOP(OP_PREDEC, 0,
662 mod(scalar(yyvsp[0].opval), OP_PREDEC)); ;}
667 { yyval.opval = newANONLIST(yyvsp[-1].opval); ;}
672 { yyval.opval = newANONLIST(Nullop); ;}
677 { yyval.opval = newANONHASH(yyvsp[-2].opval); ;}
682 { yyval.opval = newANONHASH(Nullop); ;}
687 { yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;}
692 { yyval.opval = dofile(yyvsp[0].opval); ;}
697 { yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); ;}
702 { yyval.opval = newUNOP(OP_ENTERSUB,
703 OPf_SPECIAL|OPf_STACKED,
704 prepend_elem(OP_LIST,
706 (OPpENTERSUB_AMPER<<8),
707 scalar(yyvsp[-2].opval)
708 )),Nullop)); dep();;}
713 { yyval.opval = newUNOP(OP_ENTERSUB,
714 OPf_SPECIAL|OPf_STACKED,
718 (OPpENTERSUB_AMPER<<8),
719 scalar(yyvsp[-3].opval)
725 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
726 prepend_elem(OP_LIST,
727 scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();;}
732 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
733 prepend_elem(OP_LIST,
735 scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();;}
740 { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); ;}
745 { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); ;}
750 { yyval.opval = yyvsp[0].opval; ;}
755 { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;}
760 { yyval.opval = sawparens(yyvsp[-1].opval); ;}
765 { yyval.opval = sawparens(newNULLLIST()); ;}
770 { yyval.opval = yyvsp[0].opval; ;}
775 { yyval.opval = yyvsp[0].opval; ;}
780 { yyval.opval = yyvsp[0].opval; ;}
785 { yyval.opval = yyvsp[0].opval; ;}
790 { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));;}
795 { yyval.opval = yyvsp[0].opval; ;}
800 { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); ;}
805 { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); ;}
810 { yyval.opval = prepend_elem(OP_ASLICE,
811 newOP(OP_PUSHMARK, 0),
812 newLISTOP(OP_ASLICE, 0,
813 list(yyvsp[-1].opval),
814 ref(yyvsp[-3].opval, OP_ASLICE))); ;}
819 { yyval.opval = prepend_elem(OP_HSLICE,
820 newOP(OP_PUSHMARK, 0),
821 newLISTOP(OP_HSLICE, 0,
822 list(yyvsp[-2].opval),
823 ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
824 PL_expect = XOPERATOR; ;}
829 { yyval.opval = yyvsp[0].opval; ;}
834 { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); ;}
839 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); ;}
844 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
845 append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); ;}
850 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
851 append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;}
856 { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
857 PL_hints |= HINT_BLOCK_SCOPE; ;}
862 { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); ;}
867 { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;}
872 { yyval.opval = newOP(yyvsp[0].ival, 0); ;}
877 { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
882 { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;}
887 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
888 append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;}
893 { yyval.opval = newOP(yyvsp[0].ival, 0); ;}
898 { yyval.opval = newOP(yyvsp[-2].ival, 0); ;}
903 { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
904 scalar(yyvsp[0].opval)); ;}
909 { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); ;}
914 { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;}
919 { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); ;}
924 { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); ;}
929 { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); ;}
934 { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;}
939 { yyval.opval = sawparens(yyvsp[-1].opval); ;}
944 { yyval.opval = sawparens(newNULLLIST()); ;}
949 { yyval.opval = yyvsp[0].opval; ;}
954 { yyval.opval = yyvsp[0].opval; ;}
959 { yyval.opval = yyvsp[0].opval; ;}
964 { yyval.opval = Nullop; ;}
969 { yyval.opval = yyvsp[0].opval; ;}
974 { yyval.opval = Nullop; ;}
979 { yyval.opval = yyvsp[0].opval; ;}
984 { yyval.opval = yyvsp[-1].opval; ;}
989 { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); ;}
994 { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); ;}
999 { yyval.opval = newSVREF(yyvsp[0].opval); ;}
1004 { yyval.opval = newAVREF(yyvsp[0].opval); ;}
1009 { yyval.opval = newHVREF(yyvsp[0].opval); ;}
1014 { yyval.opval = newAVREF(yyvsp[0].opval); ;}
1019 { yyval.opval = newGVREF(0,yyvsp[0].opval); ;}
1024 { yyval.opval = scalar(yyvsp[0].opval); ;}
1029 { yyval.opval = scalar(yyvsp[0].opval); ;}
1034 { yyval.opval = scope(yyvsp[0].opval); ;}
1039 { yyval.opval = yyvsp[0].opval; ;}