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 PL_parser->expect = XSTATE;
17 newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
25 parser->expect = XTERM;
32 PL_eval_root = (ps[(3) - (3)].val.opval);
40 parser->expect = XBLOCK;
47 PL_pad_reset_pending = TRUE;
48 PL_eval_root = (ps[(3) - (3)].val.opval);
51 parser->yychar = YYEOF;
58 parser->expect = XSTATE;
65 PL_pad_reset_pending = TRUE;
66 PL_eval_root = (ps[(3) - (3)].val.opval);
69 parser->yychar = YYEOF;
76 parser->expect = XSTATE;
83 PL_pad_reset_pending = TRUE;
84 PL_eval_root = (ps[(3) - (3)].val.opval);
87 parser->yychar = YYEOF;
94 parser->expect = XSTATE;
101 PL_eval_root = (ps[(3) - (3)].val.opval);
108 { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
109 PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
110 (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
111 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
112 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
118 { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (7)].val.i_tkval)))
119 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
120 (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
121 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'{');
122 TOKEN_GETMAD((ps[(7) - (7)].val.i_tkval),(yyval.opval),'}');
128 { (yyval.ival) = block_start(TRUE); }
133 { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
134 PL_parser->copline = (line_t)IVAL((ps[(1) - (4)].val.i_tkval));
135 (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
136 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
137 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
143 { (yyval.ival) = block_start(FALSE); }
148 { (yyval.opval) = (OP*)NULL; }
153 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
154 PL_pad_reset_pending = TRUE;
155 if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
156 PL_hints |= HINT_BLOCK_SCOPE;
162 { (yyval.opval) = (OP*)NULL; }
167 { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
168 PL_pad_reset_pending = TRUE;
169 if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
170 PL_hints |= HINT_BLOCK_SCOPE;
177 if((ps[(1) - (1)].val.opval)) {
178 (yyval.opval) = newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval));
180 (yyval.opval) = IF_MAD(newOP(OP_NULL, 0), NULL);
187 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
193 (yyval.opval) = newSTATEOP(SVf_UTF8
194 * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1],
195 PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
196 TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval),
197 (ps[(2) - (2)].val.opval) ? cLISTOPx((yyval.opval))->op_first : (yyval.opval), 'L');
204 (yyval.opval) = newSTATEOP(SVf_UTF8
205 * PVAL((ps[(1) - (2)].val.p_tkval))[strlen(PVAL((ps[(1) - (2)].val.p_tkval)))+1],
206 PVAL((ps[(1) - (2)].val.p_tkval)), (ps[(2) - (2)].val.opval));
207 TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval), cLISTOPx((yyval.opval))->op_first, 'L');
213 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
219 (yyval.opval) = newOP(OP_NULL,0);
220 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'p');
227 CV *fmtcv = PL_compcv;
229 (yyval.opval) = newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
230 prepend_madprops((ps[(1) - (4)].val.i_tkval)->tk_mad, (yyval.opval), 'F');
231 (ps[(1) - (4)].val.i_tkval)->tk_mad = 0;
232 token_free((ps[(1) - (4)].val.i_tkval));
234 newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
235 (yyval.opval) = (OP*)NULL;
237 if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
238 SvREFCNT_inc_simple_void(fmtcv);
239 pad_add_anon(fmtcv, OP_NULL);
247 if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
248 const char *const name =
249 SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
250 if (strEQ(name, "BEGIN") || strEQ(name, "END")
251 || strEQ(name, "INIT") || strEQ(name, "CHECK")
252 || strEQ(name, "UNITCHECK"))
253 CvSPECIAL_on(PL_compcv);
256 /* State subs inside anonymous subs need to be
257 clonable themselves. */
258 if (CvANON(CvOUTSIDE(PL_compcv))
259 || CvCLONE(CvOUTSIDE(PL_compcv))
260 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
262 ))[(ps[(2) - (3)].val.opval)->op_targ]))
263 CvCLONE_on(PL_compcv);
264 PL_parser->in_my = 0;
265 PL_parser->in_my_stash = NULL;
272 SvREFCNT_inc_simple_void(PL_compcv);
275 OP* o = newSVOP(OP_ANONCODE, 0,
278 (ps[(2) - (7)].val.opval)->op_type == OP_CONST
279 ? 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))
280 : 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))
283 (yyval.opval) = newOP(OP_NULL,0);
284 op_getmad(o,(yyval.opval),'&');
285 op_getmad((ps[(2) - (7)].val.opval),(yyval.opval),'n');
286 op_getmad((ps[(5) - (7)].val.opval),(yyval.opval),'s');
287 op_getmad((ps[(6) - (7)].val.opval),(yyval.opval),'a');
288 token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'d');
289 append_madprops((ps[(7) - (7)].val.opval)->op_madprop, (yyval.opval), 0);
290 (ps[(7) - (7)].val.opval)->op_madprop = 0;
294 (yyval.opval) = (OP*)NULL;
304 (yyval.opval) = package((ps[(3) - (4)].val.opval));
305 token_getmad((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
306 if ((ps[(2) - (4)].val.opval))
307 package_version((ps[(2) - (4)].val.opval));
308 token_getmad((ps[(4) - (4)].val.i_tkval),(yyval.opval),';');
310 package((ps[(3) - (4)].val.opval));
311 if ((ps[(2) - (4)].val.opval))
312 package_version((ps[(2) - (4)].val.opval));
313 (yyval.opval) = (OP*)NULL;
320 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
326 SvREFCNT_inc_simple_void(PL_compcv);
328 (yyval.opval) = utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
329 token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'o');
330 token_getmad((ps[(7) - (7)].val.i_tkval),(yyval.opval),';');
331 if (PL_parser->rsfp_filters &&
332 AvFILLp(PL_parser->rsfp_filters) >= 0)
333 append_madprops(newMADPROP('!', MAD_NULL, NULL, 0), (yyval.opval), 0);
335 utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
336 (yyval.opval) = (OP*)NULL;
344 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
345 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
346 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
347 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
348 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
349 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
356 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
357 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
358 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
359 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
360 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
361 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
368 const PADOFFSET offset = pad_findmy_pvs("$_", 0);
369 (yyval.opval) = block_end((ps[(3) - (6)].val.ival),
370 newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)),
372 || PAD_COMPNAME_FLAGS_isOUR(offset)
375 PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
381 { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); }
386 { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); }
392 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
393 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
394 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
395 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
396 TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
397 TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
398 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
405 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
406 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
407 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
408 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
409 TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
410 TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
411 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
418 OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval));
419 OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
420 scalar((ps[(6) - (11)].val.opval)), (ps[(11) - (11)].val.opval), (ps[(9) - (11)].val.opval), (ps[(8) - (11)].val.ival));
422 forop = op_prepend_elem(OP_LINESEQ, initop,
423 op_append_elem(OP_LINESEQ,
424 newOP(OP_UNSTACK, OPf_SPECIAL),
427 DO_MAD({ forop = newUNOP(OP_NULL, 0, forop); })
428 (yyval.opval) = block_end((ps[(3) - (11)].val.ival), forop);
429 TOKEN_GETMAD((ps[(1) - (11)].val.i_tkval),(yyval.opval),'3');
430 TOKEN_GETMAD((ps[(2) - (11)].val.i_tkval),(yyval.opval),'(');
431 TOKEN_GETMAD((ps[(5) - (11)].val.i_tkval),(yyval.opval),'1');
432 TOKEN_GETMAD((ps[(7) - (11)].val.i_tkval),(yyval.opval),'2');
433 TOKEN_GETMAD((ps[(10) - (11)].val.i_tkval),(yyval.opval),')');
434 PL_parser->copline = (line_t)IVAL((ps[(1) - (11)].val.i_tkval));
441 (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)));
442 TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W');
443 TOKEN_GETMAD((ps[(2) - (9)].val.i_tkval),(yyval.opval),'d');
444 TOKEN_GETMAD((ps[(5) - (9)].val.i_tkval),(yyval.opval),'(');
445 TOKEN_GETMAD((ps[(7) - (9)].val.i_tkval),(yyval.opval),')');
446 PL_parser->copline = (line_t)IVAL((ps[(1) - (9)].val.i_tkval));
453 (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
454 op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
455 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
456 TOKEN_GETMAD((ps[(3) - (8)].val.i_tkval),(yyval.opval),'(');
457 TOKEN_GETMAD((ps[(6) - (8)].val.i_tkval),(yyval.opval),')');
458 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
465 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
466 newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
467 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'W');
468 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
469 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
470 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
477 /* a block is a loop that happens once */
478 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
479 (OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
486 package((ps[(3) - (5)].val.opval));
487 if ((ps[(2) - (5)].val.opval)) {
488 package_version((ps[(2) - (5)].val.opval));
496 /* a block is a loop that happens once */
497 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
498 (OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
499 TOKEN_GETMAD((ps[(4) - (8)].val.i_tkval),(yyval.opval),'{');
500 TOKEN_GETMAD((ps[(8) - (8)].val.i_tkval),(yyval.opval),'}');
501 if (PL_parser->copline > (line_t)IVAL((ps[(4) - (8)].val.i_tkval)))
502 PL_parser->copline = (line_t)IVAL((ps[(4) - (8)].val.i_tkval));
509 PL_parser->expect = XSTATE;
510 (yyval.opval) = (ps[(1) - (2)].val.opval);
511 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),';');
518 PL_parser->expect = XSTATE;
519 (yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL);
520 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
521 PL_parser->copline = NOLINE;
528 if ((ps[(2) - (2)].val.opval)) {
529 OP *term = (ps[(2) - (2)].val.opval);
530 DO_MAD(term = newUNOP(OP_NULL, 0, term));
531 list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
535 OP *op = newNULLLIST();
536 list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
538 list = (ps[(1) - (2)].val.opval);
541 if (PL_parser->copline == NOLINE)
542 PL_parser->copline = CopLINE(PL_curcop)-1;
543 else PL_parser->copline--;
544 (yyval.opval) = newSTATEOP(0, NULL,
545 convert(OP_FORMLINE, 0, list));
551 { (yyval.opval) = NULL; }
556 { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); }
561 { (yyval.opval) = (OP*)NULL; }
566 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
571 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
572 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
578 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
579 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
585 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval));
586 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
592 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
593 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
599 { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
600 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
601 PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval));
607 { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); }
612 { (yyval.opval) = (OP*)NULL; }
618 ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
619 (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
620 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
626 { PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
627 (yyval.opval) = newCONDOP(0,
628 newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
629 op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
630 PL_hints |= HINT_BLOCK_SCOPE;
631 TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'I');
632 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'(');
633 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),')');
639 { (yyval.opval) = (OP*)NULL; }
645 (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
646 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
652 { (yyval.ival) = (PL_min_intro_pending &&
653 PL_max_intro_pending >= PL_min_intro_pending);
659 { (yyval.opval) = (OP*)NULL; }
665 (void)scan_num("1", &tmplval);
666 (yyval.opval) = tmplval.opval; }
671 { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); }
676 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
681 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
686 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
691 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
696 { (yyval.opval) = (OP*)NULL; }
701 { (yyval.ival) = start_subparse(FALSE, 0);
702 SAVEFREESV(PL_compcv); }
707 { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
708 SAVEFREESV(PL_compcv); }
713 { (yyval.ival) = start_subparse(TRUE, 0);
714 SAVEFREESV(PL_compcv); }
719 { (yyval.opval) = (OP*)NULL; }
724 { (yyval.opval) = (OP*)NULL; }
729 { (yyval.opval) = (ps[(2) - (2)].val.opval);
730 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
736 { (yyval.opval) = IF_MAD(
740 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
746 { (yyval.opval) = (ps[(2) - (2)].val.opval);
747 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
753 { (yyval.opval) = IF_MAD(
757 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
763 { (yyval.opval) = (OP*)NULL; }
769 if (!FEATURE_SIGNATURES_IS_ENABLED)
770 Perl_croak(aTHX_ "Experimental "
771 "subroutine signatures not enabled");
772 Perl_ck_warner_d(aTHX_
773 packWARN(WARN_EXPERIMENTAL__SIGNATURES),
774 "The signatures feature is experimental");
775 (yyval.opval) = parse_subsignature();
782 (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),
783 newSTATEOP(0, NULL, sawparens(newNULLLIST())));
784 PL_parser->expect = XBLOCK;
791 if (PL_parser->copline > (line_t)IVAL((ps[(3) - (5)].val.i_tkval)))
792 PL_parser->copline = (line_t)IVAL((ps[(3) - (5)].val.i_tkval));
793 (yyval.opval) = block_end((ps[(1) - (5)].val.ival),
794 op_append_list(OP_LINESEQ, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)));
795 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'{');
796 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
802 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
807 { (yyval.opval) = IF_MAD(
811 PL_parser->expect = XSTATE;
812 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
818 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
819 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
825 { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
826 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
832 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
833 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
841 OP* op = newNULLLIST();
842 token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
843 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
845 (yyval.opval) = (ps[(1) - (2)].val.opval);
853 OP* term = (ps[(3) - (3)].val.opval);
855 term = newUNOP(OP_NULL, 0, term);
856 token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
858 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
864 { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
865 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
866 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
872 { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
873 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
874 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
875 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
876 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
882 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
883 op_append_elem(OP_LIST,
884 op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
885 newUNOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
886 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
887 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
888 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
894 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
895 op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
896 newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
897 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
903 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
904 op_append_elem(OP_LIST,
905 op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
906 newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
912 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
913 op_append_elem(OP_LIST,
914 op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
915 newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
916 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
917 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
923 { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
924 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
930 { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
931 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
932 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
933 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
939 { SvREFCNT_inc_simple_void(PL_compcv);
940 (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
945 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
946 op_append_elem(OP_LIST,
947 op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
953 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
954 PL_parser->expect = XOPERATOR;
955 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
956 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
957 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
963 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
964 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
965 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
971 { (yyval.opval) = newBINOP(OP_AELEM, 0,
972 ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
973 scalar((ps[(4) - (5)].val.opval)));
974 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
975 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
976 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
982 { (yyval.opval) = newBINOP(OP_AELEM, 0,
983 ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
984 scalar((ps[(3) - (4)].val.opval)));
985 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
986 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
992 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
993 PL_parser->expect = XOPERATOR;
994 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
995 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
996 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1002 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1003 ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
1004 jmaybe((ps[(4) - (6)].val.opval)));
1005 PL_parser->expect = XOPERATOR;
1006 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'a');
1007 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
1008 TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
1009 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
1015 { (yyval.opval) = newBINOP(OP_HELEM, 0,
1016 ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
1017 jmaybe((ps[(3) - (5)].val.opval)));
1018 PL_parser->expect = XOPERATOR;
1019 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1020 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1021 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1027 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1028 newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
1029 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
1030 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
1031 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1037 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1038 op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
1039 newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
1040 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
1041 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1042 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1048 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1049 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
1050 newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
1051 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1052 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1058 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1059 newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
1060 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1061 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1067 { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
1068 TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
1069 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
1070 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
1071 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
1077 { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
1078 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1079 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1085 { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
1086 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
1087 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
1088 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
1089 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
1095 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
1096 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1102 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1103 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1109 { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
1110 scalar((ps[(1) - (3)].val.opval));
1111 (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
1112 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1117 #line 1002 "perly.y"
1118 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1119 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1124 #line 1006 "perly.y"
1125 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1126 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1131 #line 1010 "perly.y"
1132 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1133 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1138 #line 1014 "perly.y"
1139 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1140 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1145 #line 1018 "perly.y"
1146 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1147 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1152 #line 1022 "perly.y"
1153 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1154 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1159 #line 1026 "perly.y"
1161 (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1164 op = (UNOP*)(yyval.opval);
1165 op = (UNOP*)op->op_first; /* get to flop */
1166 op = (UNOP*)op->op_first; /* get to flip */
1167 op = (UNOP*)op->op_first; /* get to range */
1168 token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
1174 #line 1038 "perly.y"
1175 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1176 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1181 #line 1042 "perly.y"
1182 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1183 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1188 #line 1046 "perly.y"
1189 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1190 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1195 #line 1050 "perly.y"
1196 { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1197 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
1198 ((yyval.opval)->op_type == OP_NOT
1199 ? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
1205 #line 1060 "perly.y"
1206 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
1207 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1212 #line 1064 "perly.y"
1213 { (yyval.opval) = IF_MAD(
1214 newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
1215 (ps[(2) - (2)].val.opval)
1217 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
1222 #line 1071 "perly.y"
1223 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1224 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1229 #line 1075 "perly.y"
1230 { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
1231 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1236 #line 1079 "perly.y"
1237 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1238 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
1239 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1244 #line 1084 "perly.y"
1245 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1246 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
1247 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1252 #line 1089 "perly.y"
1253 { (yyval.opval) = convert(OP_JOIN, 0,
1260 (ps[(1) - (2)].val.opval)
1262 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1267 #line 1101 "perly.y"
1268 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1269 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
1270 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1275 #line 1106 "perly.y"
1276 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1277 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
1278 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1283 #line 1115 "perly.y"
1284 { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
1285 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
1286 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
1291 #line 1120 "perly.y"
1292 { (yyval.opval) = newANONLIST((OP*)NULL);
1293 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
1294 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
1299 #line 1125 "perly.y"
1300 { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
1301 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
1302 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
1303 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
1308 #line 1131 "perly.y"
1309 { (yyval.opval) = newANONHASH((OP*)NULL);
1310 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
1311 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
1312 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
1317 #line 1137 "perly.y"
1318 { SvREFCNT_inc_simple_void(PL_compcv);
1319 (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1320 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1321 OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
1322 OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
1327 #line 1148 "perly.y"
1328 { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
1329 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1334 #line 1152 "perly.y"
1335 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
1336 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
1341 #line 1162 "perly.y"
1342 { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1343 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
1344 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
1349 #line 1167 "perly.y"
1350 { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
1351 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1356 #line 1171 "perly.y"
1357 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1361 #line 1173 "perly.y"
1362 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1363 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
1368 #line 1177 "perly.y"
1369 { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
1370 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1371 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1376 #line 1182 "perly.y"
1377 { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); }
1381 #line 1184 "perly.y"
1382 { (yyval.opval) = sawparens(newNULLLIST());
1383 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1384 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1389 #line 1189 "perly.y"
1390 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1394 #line 1191 "perly.y"
1395 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1399 #line 1193 "perly.y"
1400 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1404 #line 1195 "perly.y"
1405 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1409 #line 1197 "perly.y"
1410 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
1414 #line 1199 "perly.y"
1415 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1419 #line 1201 "perly.y"
1420 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1421 newOP(OP_PUSHMARK, 0),
1422 newLISTOP(OP_ASLICE, 0,
1423 list((ps[(3) - (4)].val.opval)),
1424 ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
1425 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1426 (yyval.opval)->op_private |=
1427 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1428 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1429 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1434 #line 1213 "perly.y"
1435 { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
1436 newOP(OP_PUSHMARK, 0),
1437 newLISTOP(OP_KVASLICE, 0,
1438 list((ps[(3) - (4)].val.opval)),
1439 ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));
1440 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1441 (yyval.opval)->op_private |=
1442 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1443 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1444 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1449 #line 1225 "perly.y"
1450 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1451 newOP(OP_PUSHMARK, 0),
1452 newLISTOP(OP_HSLICE, 0,
1453 list((ps[(3) - (5)].val.opval)),
1454 ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
1455 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1456 (yyval.opval)->op_private |=
1457 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1458 PL_parser->expect = XOPERATOR;
1459 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1460 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1461 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1466 #line 1239 "perly.y"
1467 { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
1468 newOP(OP_PUSHMARK, 0),
1469 newLISTOP(OP_KVHSLICE, 0,
1470 list((ps[(3) - (5)].val.opval)),
1471 ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));
1472 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1473 (yyval.opval)->op_private |=
1474 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1475 PL_parser->expect = XOPERATOR;
1476 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1477 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1478 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1483 #line 1253 "perly.y"
1484 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1488 #line 1255 "perly.y"
1489 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
1493 #line 1257 "perly.y"
1494 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
1495 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1496 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1501 #line 1262 "perly.y"
1503 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1504 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
1506 OP* op = (yyval.opval);
1507 if (op->op_type == OP_CONST) { /* defeat const fold */
1508 op = (OP*)op->op_madprop->mad_val;
1510 token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
1511 token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
1517 #line 1275 "perly.y"
1518 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1519 op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
1520 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1525 #line 1280 "perly.y"
1526 { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval));
1527 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'$');
1532 #line 1284 "perly.y"
1533 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval));
1534 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'@');
1539 #line 1288 "perly.y"
1540 { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval));
1541 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'%');
1546 #line 1292 "perly.y"
1547 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
1548 scalar(newCVREF(IVAL((ps[(3) - (4)].val.i_tkval)),(ps[(1) - (4)].val.opval))));
1549 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'&');
1554 #line 1297 "perly.y"
1555 { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval));
1556 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'*');
1561 #line 1301 "perly.y"
1562 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
1563 PL_hints |= HINT_BLOCK_SCOPE;
1564 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1569 #line 1306 "perly.y"
1570 { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1571 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1576 #line 1310 "perly.y"
1577 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1578 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1583 #line 1314 "perly.y"
1584 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1585 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1590 #line 1318 "perly.y"
1591 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1592 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1597 #line 1322 "perly.y"
1598 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1599 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1604 #line 1326 "perly.y"
1605 { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
1606 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1611 #line 1330 "perly.y"
1612 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
1613 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1618 #line 1334 "perly.y"
1619 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
1623 #line 1336 "perly.y"
1624 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1625 op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
1629 #line 1339 "perly.y"
1630 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1631 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1636 #line 1343 "perly.y"
1637 { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
1638 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1639 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1640 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1645 #line 1349 "perly.y"
1646 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1650 #line 1351 "perly.y"
1651 { (yyval.opval) = (ps[(1) - (3)].val.opval);
1652 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1653 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1658 #line 1356 "perly.y"
1659 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1660 scalar((ps[(1) - (1)].val.opval))); }
1664 #line 1359 "perly.y"
1665 { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
1666 ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1667 : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
1669 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1670 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1671 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1676 #line 1368 "perly.y"
1677 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
1678 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1679 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1680 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1685 #line 1374 "perly.y"
1687 if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
1688 && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
1689 && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
1691 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1692 SAVEFREESV(PL_compcv);
1699 #line 1385 "perly.y"
1700 { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival));
1701 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1702 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1707 #line 1392 "perly.y"
1709 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
1710 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
1711 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'X');
1716 #line 1402 "perly.y"
1717 { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
1719 token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
1720 append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
1721 (ps[(3) - (3)].val.opval)->op_madprop = 0;
1727 #line 1410 "perly.y"
1728 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1729 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
1734 #line 1417 "perly.y"
1735 { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
1736 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1737 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1742 #line 1422 "perly.y"
1743 { (yyval.opval) = sawparens(newNULLLIST());
1744 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1745 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1750 #line 1427 "perly.y"
1751 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1755 #line 1429 "perly.y"
1756 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1760 #line 1431 "perly.y"
1761 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1765 #line 1436 "perly.y"
1766 { (yyval.opval) = (OP*)NULL; }
1770 #line 1438 "perly.y"
1771 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1775 #line 1442 "perly.y"
1776 { (yyval.opval) = (OP*)NULL; }
1780 #line 1444 "perly.y"
1781 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1785 #line 1450 "perly.y"
1786 { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
1790 #line 1454 "perly.y"
1791 { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1792 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
1797 #line 1460 "perly.y"
1798 { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
1799 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
1804 #line 1466 "perly.y"
1805 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1806 if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval));
1807 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
1812 #line 1473 "perly.y"
1813 { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
1814 if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval));
1815 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
1820 #line 1480 "perly.y"
1821 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1822 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
1827 #line 1484 "perly.y"
1828 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval));
1829 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'l');
1834 #line 1490 "perly.y"
1835 { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
1836 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
1841 #line 1497 "perly.y"
1842 { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval));
1843 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@');
1848 #line 1504 "perly.y"
1849 { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval));
1850 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@');
1855 #line 1511 "perly.y"
1856 { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval));
1857 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'*');
1862 #line 1518 "perly.y"
1863 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1867 #line 1520 "perly.y"
1868 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1872 #line 1522 "perly.y"
1873 { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
1877 #line 1525 "perly.y"
1878 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1885 * bb8245a1a537b2afb2445b3973f63b210f9ec346a1955071aef7d05ba97196ae perly.y
1886 * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl