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;
19 newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
20 PL_compiling.cop_seq = 0;
29 parser->expect = XTERM;
38 PL_eval_root = (ps[0].val.opval);
47 parser->expect = XBLOCK;
56 PL_pad_reset_pending = TRUE;
57 PL_eval_root = (ps[0].val.opval);
60 parser->yychar = yytoken = YYEOF;
68 parser->expect = XSTATE;
77 PL_pad_reset_pending = TRUE;
78 PL_eval_root = (ps[0].val.opval);
81 parser->yychar = yytoken = YYEOF;
89 parser->expect = XSTATE;
98 PL_pad_reset_pending = TRUE;
99 PL_eval_root = (ps[0].val.opval);
102 parser->yychar = yytoken = YYEOF;
110 parser->expect = XSTATE;
119 PL_eval_root = (ps[0].val.opval);
128 parser->expect = XSTATE;
137 PL_eval_root = (ps[0].val.opval);
145 { if (parser->copline > (line_t)(ps[-3].val.ival))
146 parser->copline = (line_t)(ps[-3].val.ival);
147 (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
154 { (yyval.opval) = NULL; }
160 { if (parser->copline > (line_t)(ps[-6].val.ival))
161 parser->copline = (line_t)(ps[-6].val.ival);
162 (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
169 { (yyval.ival) = block_start(TRUE);
170 parser->parsed_sub = 0; }
176 { if (parser->copline > (line_t)(ps[-3].val.ival))
177 parser->copline = (line_t)(ps[-3].val.ival);
178 (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
185 { (yyval.ival) = block_start(FALSE);
186 parser->parsed_sub = 0; }
192 { parser->in_my = 1; }
198 { parser->in_my = 0; intro_my(); }
204 { (yyval.opval) = (ps[-2].val.opval); }
210 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
211 PL_pad_reset_pending = TRUE;
212 if ((ps[-1].val.opval) && (ps[0].val.opval))
213 PL_hints |= HINT_BLOCK_SCOPE;
220 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
221 PL_pad_reset_pending = TRUE;
222 if ((ps[-1].val.opval) && (ps[0].val.opval))
223 PL_hints |= HINT_BLOCK_SCOPE;
231 (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
238 { (yyval.opval) = (ps[0].val.opval); }
245 SV *label = cSVOPx_sv((ps[-1].val.opval));
246 (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
247 savepv(SvPVX_const(label)), (ps[0].val.opval));
248 op_free((ps[-1].val.opval));
256 SV *label = cSVOPx_sv((ps[-1].val.opval));
257 (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8,
258 savepv(SvPVX_const(label)), (ps[0].val.opval));
259 op_free((ps[-1].val.opval));
266 { (yyval.opval) = (ps[0].val.opval); }
273 CV *fmtcv = PL_compcv;
274 newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
275 (yyval.opval) = NULL;
276 if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
277 pad_add_weakref(fmtcv);
279 parser->parsed_sub = 1;
287 init_named_cv(PL_compcv, (ps[-1].val.opval));
289 parser->in_my_stash = NULL;
297 SvREFCNT_inc_simple_void(PL_compcv);
298 (ps[-5].val.opval)->op_type == OP_CONST
299 ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
300 : newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
302 (yyval.opval) = NULL;
304 parser->parsed_sub = 1;
312 init_named_cv(PL_compcv, (ps[-1].val.opval));
314 parser->in_my_stash = NULL;
322 SvREFCNT_inc_simple_void(PL_compcv);
323 (ps[-4].val.opval)->op_type == OP_CONST
324 ? newATTRSUB((ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), (ps[0].val.opval))
325 : newMYSUB( (ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), (ps[0].val.opval))
327 (yyval.opval) = NULL;
329 parser->parsed_sub = 1;
337 package((ps[-1].val.opval));
338 if ((ps[-2].val.opval))
339 package_version((ps[-2].val.opval));
340 (yyval.opval) = NULL;
347 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
354 SvREFCNT_inc_simple_void(PL_compcv);
355 utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
356 parser->parsed_sub = 1;
357 (yyval.opval) = NULL;
365 (yyval.opval) = block_end((ps[-4].val.ival),
366 newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
367 parser->copline = (line_t)(ps[-6].val.ival);
375 (yyval.opval) = block_end((ps[-4].val.ival),
376 newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
377 parser->copline = (line_t)(ps[-6].val.ival);
385 (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
386 parser->copline = (line_t)(ps[-5].val.ival);
393 { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
399 { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
406 (yyval.opval) = block_end((ps[-5].val.ival),
407 newWHILEOP(0, 1, NULL,
408 (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
409 parser->copline = (line_t)(ps[-7].val.ival);
417 (yyval.opval) = block_end((ps[-5].val.ival),
418 newWHILEOP(0, 1, NULL,
419 (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
420 parser->copline = (line_t)(ps[-7].val.ival);
427 { parser->expect = XTERM; }
433 { parser->expect = XTERM; }
440 OP *initop = (ps[-9].val.opval);
441 OP *forop = newWHILEOP(0, 1, NULL,
442 scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
444 forop = op_prepend_elem(OP_LINESEQ, initop,
445 op_append_elem(OP_LINESEQ,
446 newOP(OP_UNSTACK, OPf_SPECIAL),
449 PL_hints |= HINT_BLOCK_SCOPE;
450 (yyval.opval) = block_end((ps[-10].val.ival), forop);
451 parser->copline = (line_t)(ps[-12].val.ival);
459 (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)));
460 parser->copline = (line_t)(ps[-8].val.ival);
468 if ((ps[-6].val.opval)->op_type == OP_PADSV)
469 /* degenerate case of 1 var: for my ($x) ....
470 Flag it so it can be special-cased in newFOROP */
471 (ps[-6].val.opval)->op_flags |= OPf_PARENS;
472 (yyval.opval) = block_end((ps[-8].val.ival), newFOROP(0, (ps[-6].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
473 parser->copline = (line_t)(ps[-10].val.ival);
481 (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
482 op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
483 parser->copline = (line_t)(ps[-7].val.ival);
490 { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
497 (yyval.opval) = block_end(
501 newUNOP(OP_REFGEN, 0,
504 (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
506 parser->copline = (line_t)(ps[-9].val.ival);
514 (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
515 0, op_lvalue(newUNOP(OP_REFGEN, 0,
517 OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
518 parser->copline = (line_t)(ps[-8].val.ival);
526 (yyval.opval) = block_end((ps[-4].val.ival),
527 newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
528 parser->copline = (line_t)(ps[-6].val.ival);
536 if(!(ps[0].val.opval)) {
537 yyerror("catch block requires a (VAR)");
547 (yyval.opval) = newTRYCATCHOP(0,
548 (ps[-6].val.opval), (ps[-3].val.opval), block_end((ps[-4].val.ival), op_scope((ps[-1].val.opval))));
549 if((ps[0].val.opval))
550 (yyval.opval) = op_wrap_finally((yyval.opval), (ps[0].val.opval));
551 parser->copline = (line_t)(ps[-7].val.ival);
559 /* a block is a loop that happens once */
560 (yyval.opval) = newWHILEOP(0, 1, NULL,
561 NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
569 package((ps[-2].val.opval));
570 if ((ps[-3].val.opval)) {
571 package_version((ps[-3].val.opval));
580 /* a block is a loop that happens once */
581 (yyval.opval) = newWHILEOP(0, 1, NULL,
582 NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0);
583 if (parser->copline > (line_t)(ps[-4].val.ival))
584 parser->copline = (line_t)(ps[-4].val.ival);
592 (yyval.opval) = (ps[-1].val.opval);
600 (yyval.opval) = newDEFEROP(0, op_scope((ps[0].val.opval)));
608 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
609 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
617 (yyval.opval) = NULL;
618 parser->copline = NOLINE;
626 if ((ps[0].val.opval)) {
627 OP *term = (ps[0].val.opval);
628 list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
631 list = (ps[-1].val.opval);
633 if (parser->copline == NOLINE)
634 parser->copline = CopLINE(PL_curcop)-1;
635 else parser->copline--;
636 (yyval.opval) = newSTATEOP(0, NULL,
637 op_convert_list(OP_FORMLINE, 0, list));
644 { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
650 { (yyval.opval) = NULL; }
656 { (yyval.opval) = (ps[0].val.opval); }
662 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
668 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
674 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
680 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
686 { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL);
687 parser->copline = (line_t)(ps[-1].val.ival); }
693 { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
700 ((ps[0].val.opval))->op_flags |= OPf_PARENS;
701 (yyval.opval) = op_scope((ps[0].val.opval));
708 { parser->copline = (line_t)(ps[-5].val.ival);
709 (yyval.opval) = newCONDOP(0,
710 newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
711 op_scope((ps[-1].val.opval)), (ps[0].val.opval));
712 PL_hints |= HINT_BLOCK_SCOPE;
719 { (yyval.opval) = op_scope((ps[0].val.opval)); }
725 { (yyval.opval) = NULL; }
731 { (yyval.opval) = op_scope((ps[0].val.opval)); }
737 { (yyval.ival) = (PL_min_intro_pending &&
738 PL_max_intro_pending >= PL_min_intro_pending);
746 (void)scan_num("1", &tmplval);
747 (yyval.opval) = tmplval.opval; }
753 { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
759 { (yyval.opval) = (ps[0].val.opval); intro_my(); }
765 { (yyval.opval) = (ps[0].val.opval); intro_my(); }
771 { (yyval.opval) = (ps[0].val.opval); }
777 { (yyval.ival) = start_subparse(FALSE, 0);
778 SAVEFREESV(PL_compcv); }
784 { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
785 SAVEFREESV(PL_compcv); }
791 { (yyval.ival) = start_subparse(TRUE, 0);
792 SAVEFREESV(PL_compcv); }
798 { (yyval.opval) = (ps[0].val.opval); }
804 { (yyval.opval) = NULL; }
810 { (yyval.opval) = (ps[0].val.opval); }
816 { (yyval.opval) = NULL; }
822 { parser->in_my = 0; (yyval.opval) = NULL; }
828 { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
834 { (yyval.ival) = '@'; }
840 { (yyval.ival) = '%'; }
847 I32 sigil = (ps[-2].val.ival);
848 OP *var = (ps[-1].val.opval);
849 OP *defexpr = (ps[0].val.opval);
851 if (parser->sig_slurpy)
852 yyerror("Multiple slurpy parameters not allowed");
853 parser->sig_slurpy = (char)sigil;
856 yyerror("A slurpy parameter may not have "
859 (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL;
866 { (yyval.opval) = newOP(OP_NULL, 0); }
872 { (yyval.opval) = (ps[0].val.opval); }
879 OP *var = (ps[-1].val.opval);
880 OP *defexpr = (ps[0].val.opval);
882 if (parser->sig_slurpy)
883 yyerror("Slurpy parameter not last");
888 parser->sig_optelems++;
890 if ( defexpr->op_type == OP_NULL
891 && !(defexpr->op_flags & OPf_KIDS))
893 /* handle '$=' special case */
895 yyerror("Optional parameter "
896 "lacks default expression");
900 /* a normal '=default' expression */
901 OP *defop = (OP*)alloc_LOGOP(OP_ARGDEFELEM,
904 /* re-purpose op_targ to hold @_ index */
906 (PADOFFSET)(parser->sig_elems - 1);
909 var->op_flags |= OPf_STACKED;
910 (void)op_sibling_splice(var,
915 var = newUNOP(OP_NULL, 0, defop);
918 /* NB: normally the first child of a
919 * logop is executed before the logop,
920 * and it pushes a boolean result
921 * ready for the logop. For ARGDEFELEM,
922 * the op itself does the boolean
923 * calculation, so set the first op to
926 var->op_next = defop;
927 defexpr->op_next = var;
931 if (parser->sig_optelems)
932 yyerror("Mandatory parameter "
933 "follows optional parameter");
936 (yyval.opval) = var ? newSTATEOP(0, NULL, var) : NULL;
943 { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
949 { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); }
955 { (yyval.opval) = (ps[-1].val.opval); }
962 (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval));
969 { (yyval.opval) = (ps[0].val.opval); }
975 { (yyval.opval) = (ps[-1].val.opval); }
983 SAVEIV(parser->sig_elems);
984 SAVEIV(parser->sig_optelems);
985 SAVEI8(parser->sig_slurpy);
986 parser->sig_elems = 0;
987 parser->sig_optelems = 0;
988 parser->sig_slurpy = 0;
989 parser->in_my = KEY_sigvar;
997 OP *sigops = (ps[0].val.opval);
998 struct op_argcheck_aux *aux;
1001 if (!FEATURE_SIGNATURES_IS_ENABLED)
1002 Perl_croak(aTHX_ "Experimental "
1003 "subroutine signatures not enabled");
1005 /* We shouldn't get here otherwise */
1006 aux = (struct op_argcheck_aux*)
1007 PerlMemShared_malloc(
1008 sizeof(struct op_argcheck_aux));
1009 aux->params = parser->sig_elems;
1010 aux->opt_params = parser->sig_optelems;
1011 aux->slurpy = parser->sig_slurpy;
1012 check = newUNOP_AUX(OP_ARGCHECK, 0, NULL,
1013 (UNOP_AUX_item *)aux);
1014 sigops = op_prepend_elem(OP_LINESEQ, check, sigops);
1015 sigops = op_prepend_elem(OP_LINESEQ,
1016 newSTATEOP(0, NULL, NULL),
1018 /* a nextstate at the end handles context
1019 * correctly for an empty sub body */
1020 sigops = op_append_elem(OP_LINESEQ,
1022 newSTATEOP(0, NULL, NULL));
1023 /* wrap the list of arg ops in a NULL aux op.
1024 This serves two purposes. First, it makes
1025 the arg list a separate subtree from the
1026 body of the sub, and secondly the null op
1027 may in future be upgraded to an OP_SIGNATURE
1028 when implemented. For now leave it as
1030 (yyval.opval) = newUNOP_AUX(OP_ARGCHECK, 0, sigops, NULL);
1031 op_null((yyval.opval));
1033 CvSIGNATURE_on(PL_compcv);
1036 /* tell the toker that attrributes can follow
1037 * this sig, but only so that the toker
1038 * can skip through any (illegal) trailing
1039 * attribute text then give a useful error
1040 * message about "attributes before sig",
1041 * rather than falling over ina mess at
1042 * unrecognised syntax.
1044 parser->expect = XATTRBLOCK;
1045 parser->sig_seen = TRUE;
1053 { (yyval.opval) = NULL; }
1060 if (parser->copline > (line_t)(ps[-2].val.ival))
1061 parser->copline = (line_t)(ps[-2].val.ival);
1062 (yyval.opval) = block_end((ps[-3].val.ival), (ps[-1].val.opval));
1069 { (yyval.opval) = NULL; }
1076 if (parser->copline > (line_t)(ps[-2].val.ival))
1077 parser->copline = (line_t)(ps[-2].val.ival);
1078 (yyval.opval) = block_end((ps[-4].val.ival),
1079 op_append_list(OP_LINESEQ, (ps[-3].val.opval), (ps[-1].val.opval)));
1086 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1092 { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1098 { (yyval.opval) = (ps[-1].val.opval); }
1105 OP* term = (ps[0].val.opval);
1106 (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
1113 { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
1114 op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
1121 { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
1122 op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
1129 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1130 op_append_elem(OP_LIST,
1131 op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
1132 newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
1138 #line 1002 "perly.y"
1139 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1140 op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
1141 newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
1147 #line 1007 "perly.y"
1148 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1149 op_append_elem(OP_LIST,
1150 op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
1151 newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
1157 #line 1013 "perly.y"
1158 { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
1159 op_append_elem(OP_LIST,
1160 op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
1161 newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
1167 #line 1019 "perly.y"
1168 { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1173 #line 1021 "perly.y"
1174 { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
1179 #line 1023 "perly.y"
1180 { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
1185 #line 1025 "perly.y"
1186 { SvREFCNT_inc_simple_void(PL_compcv);
1187 (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); }
1192 #line 1028 "perly.y"
1193 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1194 op_append_elem(OP_LIST,
1195 op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
1201 #line 1043 "perly.y"
1202 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
1207 #line 1045 "perly.y"
1208 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
1214 #line 1048 "perly.y"
1215 { (yyval.opval) = newBINOP(OP_AELEM, 0,
1216 ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
1217 scalar((ps[-1].val.opval)));
1223 #line 1053 "perly.y"
1224 { (yyval.opval) = newBINOP(OP_AELEM, 0,
1225 ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
1226 scalar((ps[-1].val.opval)));
1232 #line 1058 "perly.y"
1233 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
1239 #line 1061 "perly.y"
1240 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1241 ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
1242 jmaybe((ps[-2].val.opval))); }
1247 #line 1065 "perly.y"
1248 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1249 ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
1250 jmaybe((ps[-2].val.opval))); }
1255 #line 1069 "perly.y"
1256 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1257 newCVREF(0, scalar((ps[-3].val.opval))));
1258 if (parser->expect == XBLOCK)
1259 parser->expect = XOPERATOR;
1265 #line 1075 "perly.y"
1266 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1267 op_append_elem(OP_LIST, (ps[-1].val.opval),
1268 newCVREF(0, scalar((ps[-4].val.opval)))));
1269 if (parser->expect == XBLOCK)
1270 parser->expect = XOPERATOR;
1276 #line 1083 "perly.y"
1277 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1278 op_append_elem(OP_LIST, (ps[-1].val.opval),
1279 newCVREF(0, scalar((ps[-3].val.opval)))));
1280 if (parser->expect == XBLOCK)
1281 parser->expect = XOPERATOR;
1287 #line 1090 "perly.y"
1288 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1289 newCVREF(0, scalar((ps[-2].val.opval))));
1290 if (parser->expect == XBLOCK)
1291 parser->expect = XOPERATOR;
1297 #line 1096 "perly.y"
1298 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
1303 #line 1098 "perly.y"
1304 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
1309 #line 1100 "perly.y"
1310 { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); }
1315 #line 1105 "perly.y"
1316 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
1321 #line 1107 "perly.y"
1322 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1327 #line 1109 "perly.y"
1328 { if ((ps[-1].val.ival) != OP_REPEAT)
1329 scalar((ps[-2].val.opval));
1330 (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
1336 #line 1114 "perly.y"
1337 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1342 #line 1116 "perly.y"
1343 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1348 #line 1118 "perly.y"
1349 { (yyval.opval) = (ps[0].val.opval); }
1354 #line 1120 "perly.y"
1355 { (yyval.opval) = (ps[0].val.opval); }
1360 #line 1122 "perly.y"
1361 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1366 #line 1124 "perly.y"
1367 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1372 #line 1126 "perly.y"
1373 { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1378 #line 1128 "perly.y"
1379 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1384 #line 1130 "perly.y"
1385 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1390 #line 1132 "perly.y"
1391 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
1396 #line 1134 "perly.y"
1397 { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1402 #line 1138 "perly.y"
1403 { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
1408 #line 1140 "perly.y"
1409 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1414 #line 1142 "perly.y"
1415 { yyerror("syntax error"); YYERROR; }
1420 #line 1144 "perly.y"
1421 { yyerror("syntax error"); YYERROR; }
1426 #line 1148 "perly.y"
1427 { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1432 #line 1150 "perly.y"
1433 { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1438 #line 1154 "perly.y"
1439 { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); }
1444 #line 1156 "perly.y"
1445 { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
1450 #line 1158 "perly.y"
1451 { yyerror("syntax error"); YYERROR; }
1456 #line 1160 "perly.y"
1457 { yyerror("syntax error"); YYERROR; }
1462 #line 1164 "perly.y"
1463 { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1468 #line 1166 "perly.y"
1469 { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
1474 #line 1171 "perly.y"
1475 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
1480 #line 1173 "perly.y"
1481 { (yyval.opval) = (ps[0].val.opval); }
1486 #line 1176 "perly.y"
1487 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
1492 #line 1178 "perly.y"
1493 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
1498 #line 1180 "perly.y"
1499 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1500 op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
1505 #line 1183 "perly.y"
1506 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1507 op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
1512 #line 1186 "perly.y"
1513 { (yyval.opval) = op_convert_list(OP_JOIN, 0,
1527 #line 1197 "perly.y"
1528 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1529 op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
1534 #line 1200 "perly.y"
1535 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1536 op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
1541 #line 1208 "perly.y"
1542 { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
1547 #line 1210 "perly.y"
1548 { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
1553 #line 1212 "perly.y"
1554 { SvREFCNT_inc_simple_void(PL_compcv);
1555 (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
1560 #line 1215 "perly.y"
1561 { SvREFCNT_inc_simple_void(PL_compcv);
1562 (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); }
1567 #line 1221 "perly.y"
1568 { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
1573 #line 1223 "perly.y"
1574 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
1579 #line 1231 "perly.y"
1580 { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
1585 #line 1233 "perly.y"
1586 { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
1591 #line 1235 "perly.y"
1592 { (yyval.opval) = (ps[0].val.opval); }
1597 #line 1237 "perly.y"
1598 { (yyval.opval) = localize((ps[0].val.opval),0); }
1603 #line 1239 "perly.y"
1604 { (yyval.opval) = sawparens((ps[-1].val.opval)); }
1609 #line 1241 "perly.y"
1610 { (yyval.opval) = (ps[0].val.opval); }
1615 #line 1243 "perly.y"
1616 { (yyval.opval) = sawparens(newNULLLIST()); }
1621 #line 1245 "perly.y"
1622 { (yyval.opval) = (ps[0].val.opval); }
1627 #line 1247 "perly.y"
1628 { (yyval.opval) = (ps[0].val.opval); }
1633 #line 1249 "perly.y"
1634 { (yyval.opval) = (ps[0].val.opval); }
1639 #line 1251 "perly.y"
1640 { (yyval.opval) = (ps[0].val.opval); }
1645 #line 1253 "perly.y"
1646 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
1651 #line 1255 "perly.y"
1652 { (yyval.opval) = (ps[0].val.opval); }
1657 #line 1257 "perly.y"
1658 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1659 newOP(OP_PUSHMARK, 0),
1660 newLISTOP(OP_ASLICE, 0,
1661 list((ps[-1].val.opval)),
1662 ref((ps[-3].val.opval), OP_ASLICE)));
1663 if ((yyval.opval) && (ps[-3].val.opval))
1664 (yyval.opval)->op_private |=
1665 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
1671 #line 1267 "perly.y"
1672 { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
1673 newOP(OP_PUSHMARK, 0),
1674 newLISTOP(OP_KVASLICE, 0,
1675 list((ps[-1].val.opval)),
1676 ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));
1677 if ((yyval.opval) && (ps[-3].val.opval))
1678 (yyval.opval)->op_private |=
1679 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
1685 #line 1277 "perly.y"
1686 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1687 newOP(OP_PUSHMARK, 0),
1688 newLISTOP(OP_HSLICE, 0,
1689 list((ps[-2].val.opval)),
1690 ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));
1691 if ((yyval.opval) && (ps[-4].val.opval))
1692 (yyval.opval)->op_private |=
1693 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
1699 #line 1287 "perly.y"
1700 { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
1701 newOP(OP_PUSHMARK, 0),
1702 newLISTOP(OP_KVHSLICE, 0,
1703 list((ps[-2].val.opval)),
1704 ref((ps[-4].val.opval), OP_KVHSLICE)));
1705 if ((yyval.opval) && (ps[-4].val.opval))
1706 (yyval.opval)->op_private |=
1707 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
1713 #line 1297 "perly.y"
1714 { (yyval.opval) = (ps[0].val.opval); }
1719 #line 1299 "perly.y"
1720 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
1725 #line 1301 "perly.y"
1726 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
1732 #line 1304 "perly.y"
1734 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1735 op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
1741 #line 1309 "perly.y"
1742 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1743 op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
1749 #line 1313 "perly.y"
1750 { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
1755 #line 1315 "perly.y"
1756 { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
1761 #line 1317 "perly.y"
1762 { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
1767 #line 1319 "perly.y"
1768 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
1769 scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
1774 #line 1322 "perly.y"
1775 { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
1780 #line 1324 "perly.y"
1781 { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
1782 PL_hints |= HINT_BLOCK_SCOPE; }
1787 #line 1327 "perly.y"
1788 { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
1793 #line 1329 "perly.y"
1794 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
1799 #line 1331 "perly.y"
1800 { (yyval.opval) = newOP((ps[0].val.ival), 0); }
1805 #line 1333 "perly.y"
1806 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1811 #line 1335 "perly.y"
1812 { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
1817 #line 1337 "perly.y"
1818 { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
1823 #line 1339 "perly.y"
1824 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
1829 #line 1341 "perly.y"
1830 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
1835 #line 1343 "perly.y"
1836 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1837 op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
1842 #line 1346 "perly.y"
1843 { (yyval.opval) = newOP((ps[0].val.ival), 0); }
1848 #line 1348 "perly.y"
1849 { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
1854 #line 1350 "perly.y"
1855 { (yyval.opval) = (ps[0].val.opval); }
1860 #line 1352 "perly.y"
1861 { (yyval.opval) = (ps[-2].val.opval); }
1866 #line 1354 "perly.y"
1867 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
1872 #line 1356 "perly.y"
1873 { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
1874 ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1875 : newOP((ps[-2].val.ival), OPf_SPECIAL); }
1880 #line 1360 "perly.y"
1881 { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
1886 #line 1362 "perly.y"
1888 if ( (ps[0].val.opval)->op_type != OP_TRANS
1889 && (ps[0].val.opval)->op_type != OP_TRANSR
1890 && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
1892 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1893 SAVEFREESV(PL_compcv);
1901 #line 1373 "perly.y"
1902 { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
1907 #line 1382 "perly.y"
1908 { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
1913 #line 1384 "perly.y"
1914 { (yyval.opval) = localize((ps[0].val.opval),1); }
1919 #line 1386 "perly.y"
1920 { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
1925 #line 1388 "perly.y"
1926 { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
1931 #line 1393 "perly.y"
1932 { (yyval.opval) = sawparens((ps[-1].val.opval)); }
1937 #line 1395 "perly.y"
1938 { (yyval.opval) = sawparens(newNULLLIST()); }
1943 #line 1398 "perly.y"
1944 { (yyval.opval) = (ps[0].val.opval); }
1949 #line 1400 "perly.y"
1950 { (yyval.opval) = (ps[0].val.opval); }
1955 #line 1402 "perly.y"
1956 { (yyval.opval) = (ps[0].val.opval); }
1961 #line 1418 "perly.y"
1962 { (yyval.opval) = (ps[0].val.opval); }
1967 #line 1424 "perly.y"
1968 { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
1973 #line 1429 "perly.y"
1974 { (yyval.opval) = (ps[-1].val.opval); }
1979 #line 1431 "perly.y"
1981 (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval));
1987 #line 1438 "perly.y"
1988 { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); }
1993 #line 1455 "perly.y"
1994 { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
1999 #line 1459 "perly.y"
2000 { (yyval.opval) = newSVREF((ps[0].val.opval)); }
2005 #line 1463 "perly.y"
2006 { (yyval.opval) = newAVREF((ps[0].val.opval));
2007 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
2013 #line 1469 "perly.y"
2014 { (yyval.opval) = newHVREF((ps[0].val.opval));
2015 if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
2021 #line 1475 "perly.y"
2022 { (yyval.opval) = newAVREF((ps[0].val.opval)); }
2027 #line 1477 "perly.y"
2028 { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
2033 #line 1481 "perly.y"
2034 { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
2039 #line 1486 "perly.y"
2040 { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
2045 #line 1491 "perly.y"
2046 { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
2051 #line 1496 "perly.y"
2052 { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
2057 #line 1501 "perly.y"
2058 { (yyval.opval) = scalar((ps[0].val.opval)); }
2063 #line 1503 "perly.y"
2064 { (yyval.opval) = scalar((ps[0].val.opval)); }
2069 #line 1505 "perly.y"
2070 { (yyval.opval) = op_scope((ps[0].val.opval)); }
2075 #line 1508 "perly.y"
2076 { (yyval.opval) = (ps[0].val.opval); }
2086 * 963e49faa7d19d5de631a5b22e01030327621687cee61ec2c63cb7c2602c5e3a perly.y
2087 * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl