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) = (ps[(1) - (1)].val.opval); }
768 { (yyval.opval) = IF_MAD(
772 PL_parser->expect = XSTATE;
773 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
779 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
780 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
786 { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
787 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
793 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
794 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
802 OP* op = newNULLLIST();
803 token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
804 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
806 (yyval.opval) = (ps[(1) - (2)].val.opval);
814 OP* term = (ps[(3) - (3)].val.opval);
816 term = newUNOP(OP_NULL, 0, term);
817 token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
819 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
825 { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
826 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
827 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
833 { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
834 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
835 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
836 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
837 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
843 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
844 op_append_elem(OP_LIST,
845 op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
846 newUNOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
847 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
848 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
849 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
855 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
856 op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
857 newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
858 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
864 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
865 op_append_elem(OP_LIST,
866 op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
867 newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
873 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
874 op_append_elem(OP_LIST,
875 op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
876 newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
877 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
878 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
884 { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
885 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
891 { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
892 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
893 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
894 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
900 { SvREFCNT_inc_simple_void(PL_compcv);
901 (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
906 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
907 op_append_elem(OP_LIST,
908 op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
914 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
915 PL_parser->expect = XOPERATOR;
916 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
917 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
918 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
924 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
925 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
926 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
932 { (yyval.opval) = newBINOP(OP_AELEM, 0,
933 ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
934 scalar((ps[(4) - (5)].val.opval)));
935 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
936 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
937 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
943 { (yyval.opval) = newBINOP(OP_AELEM, 0,
944 ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
945 scalar((ps[(3) - (4)].val.opval)));
946 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
947 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
953 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((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_HELEM, 0,
964 ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
965 jmaybe((ps[(4) - (6)].val.opval)));
966 PL_parser->expect = XOPERATOR;
967 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'a');
968 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
969 TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
970 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
976 { (yyval.opval) = newBINOP(OP_HELEM, 0,
977 ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
978 jmaybe((ps[(3) - (5)].val.opval)));
979 PL_parser->expect = XOPERATOR;
980 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
981 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
982 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
988 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
989 newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
990 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
991 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
992 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
998 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
999 op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
1000 newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
1001 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
1002 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1003 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1009 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1010 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
1011 newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
1012 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1013 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1019 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1020 newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
1021 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1022 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1028 { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
1029 TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
1030 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
1031 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
1032 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
1038 { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
1039 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1040 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1046 { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
1047 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
1048 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
1049 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
1050 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
1056 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
1057 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1063 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1064 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1070 { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
1071 scalar((ps[(1) - (3)].val.opval));
1072 (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
1073 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1079 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1080 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1086 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1087 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1093 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1094 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1100 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1101 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1107 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1108 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1114 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1115 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1122 (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1125 op = (UNOP*)(yyval.opval);
1126 op = (UNOP*)op->op_first; /* get to flop */
1127 op = (UNOP*)op->op_first; /* get to flip */
1128 op = (UNOP*)op->op_first; /* get to range */
1129 token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
1135 #line 1006 "perly.y"
1136 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1137 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1142 #line 1010 "perly.y"
1143 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1144 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1149 #line 1014 "perly.y"
1150 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1151 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1156 #line 1018 "perly.y"
1157 { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1158 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
1159 ((yyval.opval)->op_type == OP_NOT
1160 ? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
1166 #line 1028 "perly.y"
1167 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
1168 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1173 #line 1032 "perly.y"
1174 { (yyval.opval) = IF_MAD(
1175 newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
1176 (ps[(2) - (2)].val.opval)
1178 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
1183 #line 1039 "perly.y"
1184 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1185 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1190 #line 1043 "perly.y"
1191 { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
1192 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1197 #line 1047 "perly.y"
1198 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1199 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
1200 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1205 #line 1052 "perly.y"
1206 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1207 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
1208 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1213 #line 1057 "perly.y"
1214 { (yyval.opval) = convert(OP_JOIN, 0,
1221 (ps[(1) - (2)].val.opval)
1223 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1228 #line 1069 "perly.y"
1229 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1230 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
1231 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1236 #line 1074 "perly.y"
1237 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1238 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
1239 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1244 #line 1083 "perly.y"
1245 { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
1246 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
1247 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
1252 #line 1088 "perly.y"
1253 { (yyval.opval) = newANONLIST((OP*)NULL);
1254 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
1255 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
1260 #line 1093 "perly.y"
1261 { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
1262 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
1263 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
1264 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
1269 #line 1099 "perly.y"
1270 { (yyval.opval) = newANONHASH((OP*)NULL);
1271 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
1272 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
1273 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
1278 #line 1105 "perly.y"
1279 { SvREFCNT_inc_simple_void(PL_compcv);
1280 (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1281 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1282 OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
1283 OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
1288 #line 1116 "perly.y"
1289 { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
1290 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1295 #line 1120 "perly.y"
1296 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
1297 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
1302 #line 1130 "perly.y"
1303 { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1304 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
1305 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
1310 #line 1135 "perly.y"
1311 { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
1312 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1317 #line 1139 "perly.y"
1318 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1322 #line 1141 "perly.y"
1323 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1324 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
1329 #line 1145 "perly.y"
1330 { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
1331 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1332 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1337 #line 1150 "perly.y"
1338 { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); }
1342 #line 1152 "perly.y"
1343 { (yyval.opval) = sawparens(newNULLLIST());
1344 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1345 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1350 #line 1157 "perly.y"
1351 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1355 #line 1159 "perly.y"
1356 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1360 #line 1161 "perly.y"
1361 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1365 #line 1163 "perly.y"
1366 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1370 #line 1165 "perly.y"
1371 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
1375 #line 1167 "perly.y"
1376 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1380 #line 1169 "perly.y"
1381 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1382 newOP(OP_PUSHMARK, 0),
1383 newLISTOP(OP_ASLICE, 0,
1384 list((ps[(3) - (4)].val.opval)),
1385 ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
1386 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1387 (yyval.opval)->op_private |=
1388 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1389 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1390 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1395 #line 1181 "perly.y"
1396 { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
1397 newOP(OP_PUSHMARK, 0),
1398 newLISTOP(OP_KVASLICE, 0,
1399 list((ps[(3) - (4)].val.opval)),
1400 ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));
1401 if ((yyval.opval) && (ps[(1) - (4)].val.opval))
1402 (yyval.opval)->op_private |=
1403 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
1404 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1405 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1410 #line 1193 "perly.y"
1411 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1412 newOP(OP_PUSHMARK, 0),
1413 newLISTOP(OP_HSLICE, 0,
1414 list((ps[(3) - (5)].val.opval)),
1415 ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
1416 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1417 (yyval.opval)->op_private |=
1418 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1419 PL_parser->expect = XOPERATOR;
1420 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1421 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1422 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1427 #line 1207 "perly.y"
1428 { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
1429 newOP(OP_PUSHMARK, 0),
1430 newLISTOP(OP_KVHSLICE, 0,
1431 list((ps[(3) - (5)].val.opval)),
1432 ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));
1433 if ((yyval.opval) && (ps[(1) - (5)].val.opval))
1434 (yyval.opval)->op_private |=
1435 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
1436 PL_parser->expect = XOPERATOR;
1437 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1438 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1439 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1444 #line 1221 "perly.y"
1445 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1449 #line 1223 "perly.y"
1450 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
1454 #line 1225 "perly.y"
1455 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
1456 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1457 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1462 #line 1230 "perly.y"
1464 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1465 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
1467 OP* op = (yyval.opval);
1468 if (op->op_type == OP_CONST) { /* defeat const fold */
1469 op = (OP*)op->op_madprop->mad_val;
1471 token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
1472 token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
1478 #line 1243 "perly.y"
1479 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1480 op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
1481 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1486 #line 1248 "perly.y"
1487 { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval));
1488 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'$');
1493 #line 1252 "perly.y"
1494 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval));
1495 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'@');
1500 #line 1256 "perly.y"
1501 { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval));
1502 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'%');
1507 #line 1260 "perly.y"
1508 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
1509 scalar(newCVREF(IVAL((ps[(3) - (4)].val.i_tkval)),(ps[(1) - (4)].val.opval))));
1510 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'&');
1515 #line 1265 "perly.y"
1516 { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval));
1517 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'*');
1522 #line 1269 "perly.y"
1523 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
1524 PL_hints |= HINT_BLOCK_SCOPE;
1525 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1530 #line 1274 "perly.y"
1531 { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1532 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1537 #line 1278 "perly.y"
1538 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1539 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1544 #line 1282 "perly.y"
1545 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1546 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1551 #line 1286 "perly.y"
1552 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1553 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1558 #line 1290 "perly.y"
1559 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1560 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1565 #line 1294 "perly.y"
1566 { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
1567 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1572 #line 1298 "perly.y"
1573 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
1574 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1579 #line 1302 "perly.y"
1580 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
1584 #line 1304 "perly.y"
1585 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1586 op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
1590 #line 1307 "perly.y"
1591 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1592 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1597 #line 1311 "perly.y"
1598 { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
1599 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1600 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1601 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1606 #line 1317 "perly.y"
1607 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1611 #line 1319 "perly.y"
1612 { (yyval.opval) = (ps[(1) - (3)].val.opval);
1613 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1614 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1619 #line 1324 "perly.y"
1620 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1621 scalar((ps[(1) - (1)].val.opval))); }
1625 #line 1327 "perly.y"
1626 { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
1627 ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1628 : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
1630 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1631 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1632 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1637 #line 1336 "perly.y"
1638 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
1639 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1640 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1641 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1646 #line 1342 "perly.y"
1648 if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
1649 && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
1650 && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
1652 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1653 SAVEFREESV(PL_compcv);
1660 #line 1353 "perly.y"
1661 { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival));
1662 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1663 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1668 #line 1360 "perly.y"
1670 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
1671 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
1672 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'X');
1677 #line 1370 "perly.y"
1678 { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
1680 token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
1681 append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
1682 (ps[(3) - (3)].val.opval)->op_madprop = 0;
1688 #line 1378 "perly.y"
1689 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1690 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
1695 #line 1385 "perly.y"
1696 { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
1697 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1698 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1703 #line 1390 "perly.y"
1704 { (yyval.opval) = sawparens(newNULLLIST());
1705 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1706 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1711 #line 1395 "perly.y"
1712 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1716 #line 1397 "perly.y"
1717 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1721 #line 1399 "perly.y"
1722 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1726 #line 1404 "perly.y"
1727 { (yyval.opval) = (OP*)NULL; }
1731 #line 1406 "perly.y"
1732 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1736 #line 1410 "perly.y"
1737 { (yyval.opval) = (OP*)NULL; }
1741 #line 1412 "perly.y"
1742 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1746 #line 1418 "perly.y"
1747 { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
1751 #line 1422 "perly.y"
1752 { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1753 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
1758 #line 1428 "perly.y"
1759 { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
1760 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
1765 #line 1434 "perly.y"
1766 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1767 if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval));
1768 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
1773 #line 1441 "perly.y"
1774 { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
1775 if ((yyval.opval)) (yyval.opval)->op_private |= IVAL((ps[(1) - (2)].val.i_tkval));
1776 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
1781 #line 1448 "perly.y"
1782 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1783 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
1788 #line 1452 "perly.y"
1789 { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval));
1790 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'l');
1795 #line 1458 "perly.y"
1796 { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
1797 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
1802 #line 1465 "perly.y"
1803 { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval));
1804 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@');
1809 #line 1472 "perly.y"
1810 { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval));
1811 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'@');
1816 #line 1479 "perly.y"
1817 { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval));
1818 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'*');
1823 #line 1486 "perly.y"
1824 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1828 #line 1488 "perly.y"
1829 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1833 #line 1490 "perly.y"
1834 { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
1838 #line 1493 "perly.y"
1839 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1846 * 911fbbcab275e0f9645397ee5b80a7c2384e6b24f793c15e6d6e918ebfd4e384 perly.y
1847 * 5c9d2a0262457fe9b70073fc8ad6c188f812f38ad57712b7e2f53daa01b297cc regen_perly.pl