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(SvUTF8(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv),
194 savepv(SvPVX(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv)), (ps[(2) - (2)].val.opval));
195 TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval),
196 (ps[(2) - (2)].val.opval) ? cLISTOPx((yyval.opval))->op_first : (yyval.opval), 'L');
203 (yyval.opval) = newSTATEOP(SvUTF8(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv),
204 savepv(SvPVX(((SVOP*)(ps[(1) - (2)].val.p_tkval))->op_sv)), (ps[(2) - (2)].val.opval));
205 TOKEN_GETMAD((ps[(1) - (2)].val.p_tkval), cLISTOPx((yyval.opval))->op_first, 'L');
211 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
217 (yyval.opval) = newOP(OP_NULL,0);
218 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'p');
225 CV *fmtcv = PL_compcv;
227 (yyval.opval) = newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
228 prepend_madprops((ps[(1) - (4)].val.i_tkval)->tk_mad, (yyval.opval), 'F');
229 (ps[(1) - (4)].val.i_tkval)->tk_mad = 0;
230 token_free((ps[(1) - (4)].val.i_tkval));
232 newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
233 (yyval.opval) = (OP*)NULL;
235 if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
236 SvREFCNT_inc_simple_void(fmtcv);
237 pad_add_anon(fmtcv, OP_NULL);
245 if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
246 const char *const name =
247 SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
248 if (strEQ(name, "BEGIN") || strEQ(name, "END")
249 || strEQ(name, "INIT") || strEQ(name, "CHECK")
250 || strEQ(name, "UNITCHECK"))
251 CvSPECIAL_on(PL_compcv);
254 /* State subs inside anonymous subs need to be
255 clonable themselves. */
256 if (CvANON(CvOUTSIDE(PL_compcv))
257 || CvCLONE(CvOUTSIDE(PL_compcv))
258 || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
260 ))[(ps[(2) - (3)].val.opval)->op_targ]))
261 CvCLONE_on(PL_compcv);
262 PL_parser->in_my = 0;
263 PL_parser->in_my_stash = NULL;
270 SvREFCNT_inc_simple_void(PL_compcv);
273 OP* o = newSVOP(OP_ANONCODE, 0,
276 (ps[(2) - (7)].val.opval)->op_type == OP_CONST
277 ? 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))
278 : 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))
281 (yyval.opval) = newOP(OP_NULL,0);
282 op_getmad(o,(yyval.opval),'&');
283 op_getmad((ps[(2) - (7)].val.opval),(yyval.opval),'n');
284 op_getmad((ps[(5) - (7)].val.opval),(yyval.opval),'s');
285 op_getmad((ps[(6) - (7)].val.opval),(yyval.opval),'a');
286 token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'d');
287 append_madprops((ps[(7) - (7)].val.opval)->op_madprop, (yyval.opval), 0);
288 (ps[(7) - (7)].val.opval)->op_madprop = 0;
292 (yyval.opval) = (OP*)NULL;
302 (yyval.opval) = package((ps[(3) - (4)].val.opval));
303 token_getmad((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
304 if ((ps[(2) - (4)].val.opval))
305 package_version((ps[(2) - (4)].val.opval));
306 token_getmad((ps[(4) - (4)].val.i_tkval),(yyval.opval),';');
308 package((ps[(3) - (4)].val.opval));
309 if ((ps[(2) - (4)].val.opval))
310 package_version((ps[(2) - (4)].val.opval));
311 (yyval.opval) = (OP*)NULL;
318 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
324 SvREFCNT_inc_simple_void(PL_compcv);
326 (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));
327 token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'o');
328 token_getmad((ps[(7) - (7)].val.i_tkval),(yyval.opval),';');
329 if (PL_parser->rsfp_filters &&
330 AvFILLp(PL_parser->rsfp_filters) >= 0)
331 append_madprops(newMADPROP('!', MAD_NULL, NULL, 0), (yyval.opval), 0);
333 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));
334 (yyval.opval) = (OP*)NULL;
342 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
343 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
344 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
345 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
346 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
347 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
354 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
355 newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
356 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'I');
357 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
358 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
359 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
366 const PADOFFSET offset = pad_findmy_pvs("$_", 0);
367 (yyval.opval) = block_end((ps[(3) - (6)].val.ival),
368 newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)),
370 || PAD_COMPNAME_FLAGS_isOUR(offset)
373 PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
379 { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); }
384 { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); }
390 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
391 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
392 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
393 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
394 TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
395 TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
396 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
403 (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
404 newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
405 (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
406 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
407 TOKEN_GETMAD((ps[(2) - (8)].val.i_tkval),(yyval.opval),'(');
408 TOKEN_GETMAD((ps[(5) - (8)].val.i_tkval),(yyval.opval),')');
409 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
416 OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval));
417 OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
418 scalar((ps[(6) - (11)].val.opval)), (ps[(11) - (11)].val.opval), (ps[(9) - (11)].val.opval), (ps[(8) - (11)].val.ival));
420 forop = op_prepend_elem(OP_LINESEQ, initop,
421 op_append_elem(OP_LINESEQ,
422 newOP(OP_UNSTACK, OPf_SPECIAL),
425 DO_MAD({ forop = newUNOP(OP_NULL, 0, forop); })
426 (yyval.opval) = block_end((ps[(3) - (11)].val.ival), forop);
427 TOKEN_GETMAD((ps[(1) - (11)].val.i_tkval),(yyval.opval),'3');
428 TOKEN_GETMAD((ps[(2) - (11)].val.i_tkval),(yyval.opval),'(');
429 TOKEN_GETMAD((ps[(5) - (11)].val.i_tkval),(yyval.opval),'1');
430 TOKEN_GETMAD((ps[(7) - (11)].val.i_tkval),(yyval.opval),'2');
431 TOKEN_GETMAD((ps[(10) - (11)].val.i_tkval),(yyval.opval),')');
432 PL_parser->copline = (line_t)IVAL((ps[(1) - (11)].val.i_tkval));
439 (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)));
440 TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W');
441 TOKEN_GETMAD((ps[(2) - (9)].val.i_tkval),(yyval.opval),'d');
442 TOKEN_GETMAD((ps[(5) - (9)].val.i_tkval),(yyval.opval),'(');
443 TOKEN_GETMAD((ps[(7) - (9)].val.i_tkval),(yyval.opval),')');
444 PL_parser->copline = (line_t)IVAL((ps[(1) - (9)].val.i_tkval));
451 (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
452 op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
453 TOKEN_GETMAD((ps[(1) - (8)].val.i_tkval),(yyval.opval),'W');
454 TOKEN_GETMAD((ps[(3) - (8)].val.i_tkval),(yyval.opval),'(');
455 TOKEN_GETMAD((ps[(6) - (8)].val.i_tkval),(yyval.opval),')');
456 PL_parser->copline = (line_t)IVAL((ps[(1) - (8)].val.i_tkval));
463 (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
464 newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
465 TOKEN_GETMAD((ps[(1) - (7)].val.i_tkval),(yyval.opval),'W');
466 TOKEN_GETMAD((ps[(2) - (7)].val.i_tkval),(yyval.opval),'(');
467 TOKEN_GETMAD((ps[(5) - (7)].val.i_tkval),(yyval.opval),')');
468 PL_parser->copline = (line_t)IVAL((ps[(1) - (7)].val.i_tkval));
475 /* a block is a loop that happens once */
476 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
477 (OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
484 package((ps[(3) - (5)].val.opval));
485 if ((ps[(2) - (5)].val.opval)) {
486 package_version((ps[(2) - (5)].val.opval));
494 /* a block is a loop that happens once */
495 (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
496 (OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
497 TOKEN_GETMAD((ps[(4) - (8)].val.i_tkval),(yyval.opval),'{');
498 TOKEN_GETMAD((ps[(8) - (8)].val.i_tkval),(yyval.opval),'}');
499 if (PL_parser->copline > (line_t)IVAL((ps[(4) - (8)].val.i_tkval)))
500 PL_parser->copline = (line_t)IVAL((ps[(4) - (8)].val.i_tkval));
507 PL_parser->expect = XSTATE;
508 (yyval.opval) = (ps[(1) - (2)].val.opval);
509 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),';');
516 PL_parser->expect = XSTATE;
517 (yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL);
518 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
519 PL_parser->copline = NOLINE;
526 if ((ps[(2) - (2)].val.opval)) {
527 OP *term = (ps[(2) - (2)].val.opval);
528 DO_MAD(term = newUNOP(OP_NULL, 0, term));
529 list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
533 OP *op = newNULLLIST();
534 list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
536 list = (ps[(1) - (2)].val.opval);
539 if (PL_parser->copline == NOLINE)
540 PL_parser->copline = CopLINE(PL_curcop)-1;
541 else PL_parser->copline--;
542 (yyval.opval) = newSTATEOP(0, NULL,
543 convert(OP_FORMLINE, 0, list));
549 { (yyval.opval) = NULL; }
554 { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); }
559 { (yyval.opval) = (OP*)NULL; }
564 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
569 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
570 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
576 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
577 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
583 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval));
584 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
590 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
591 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
597 { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
598 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
599 PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval));
605 { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); }
610 { (yyval.opval) = (OP*)NULL; }
616 ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
617 (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
618 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
624 { PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
625 (yyval.opval) = newCONDOP(0,
626 newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
627 op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
628 PL_hints |= HINT_BLOCK_SCOPE;
629 TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'I');
630 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'(');
631 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),')');
637 { (yyval.opval) = (OP*)NULL; }
643 (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
644 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
650 { (yyval.ival) = (PL_min_intro_pending &&
651 PL_max_intro_pending >= PL_min_intro_pending);
657 { (yyval.opval) = (OP*)NULL; }
663 (void)scan_num("1", &tmplval);
664 (yyval.opval) = tmplval.opval; }
669 { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); }
674 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
679 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
684 { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
689 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
694 { (yyval.opval) = (OP*)NULL; }
699 { (yyval.ival) = start_subparse(FALSE, 0);
700 SAVEFREESV(PL_compcv); }
705 { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
706 SAVEFREESV(PL_compcv); }
711 { (yyval.ival) = start_subparse(TRUE, 0);
712 SAVEFREESV(PL_compcv); }
717 { (yyval.opval) = (OP*)NULL; }
722 { (yyval.opval) = (OP*)NULL; }
727 { (yyval.opval) = (ps[(2) - (2)].val.opval);
728 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
734 { (yyval.opval) = IF_MAD(
738 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
744 { (yyval.opval) = (ps[(2) - (2)].val.opval);
745 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
751 { (yyval.opval) = IF_MAD(
755 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),':');
761 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
766 { (yyval.opval) = IF_MAD(
770 PL_parser->expect = XSTATE;
771 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),';');
777 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
778 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
784 { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
785 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
791 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
792 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
800 OP* op = newNULLLIST();
801 token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
802 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
804 (yyval.opval) = (ps[(1) - (2)].val.opval);
812 OP* term = (ps[(3) - (3)].val.opval);
814 term = newUNOP(OP_NULL, 0, term);
815 token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
817 (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
823 { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
824 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
825 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
831 { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
832 op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
833 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
834 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
835 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
841 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
842 op_append_elem(OP_LIST,
843 op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
844 newUNOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
845 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
846 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
847 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
853 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
854 op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
855 newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
856 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
862 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
863 op_append_elem(OP_LIST,
864 op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
865 newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
871 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
872 op_append_elem(OP_LIST,
873 op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
874 newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
875 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
876 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
882 { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
883 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
889 { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
890 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
891 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
892 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
898 { SvREFCNT_inc_simple_void(PL_compcv);
899 (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
904 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
905 op_append_elem(OP_LIST,
906 op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
912 { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
913 PL_parser->expect = XOPERATOR;
914 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
915 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
916 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
922 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
923 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
924 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
930 { (yyval.opval) = newBINOP(OP_AELEM, 0,
931 ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
932 scalar((ps[(4) - (5)].val.opval)));
933 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
934 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
935 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
941 { (yyval.opval) = newBINOP(OP_AELEM, 0,
942 ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
943 scalar((ps[(3) - (4)].val.opval)));
944 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
945 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
951 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
952 PL_parser->expect = XOPERATOR;
953 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
954 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
955 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
961 { (yyval.opval) = newBINOP(OP_HELEM, 0,
962 ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
963 jmaybe((ps[(4) - (6)].val.opval)));
964 PL_parser->expect = XOPERATOR;
965 TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'a');
966 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
967 TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
968 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
974 { (yyval.opval) = newBINOP(OP_HELEM, 0,
975 ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
976 jmaybe((ps[(3) - (5)].val.opval)));
977 PL_parser->expect = XOPERATOR;
978 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
979 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
980 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
986 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
987 newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
988 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
989 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
990 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
996 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
997 op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
998 newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
999 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
1000 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1001 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1007 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1008 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
1009 newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
1010 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1011 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1017 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1018 newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
1019 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1020 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1026 { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
1027 TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
1028 TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
1029 TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
1030 TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
1036 { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
1037 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1038 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1044 { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
1045 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
1046 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
1047 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
1048 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
1054 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
1055 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1061 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1062 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1068 { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
1069 scalar((ps[(1) - (3)].val.opval));
1070 (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
1071 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1077 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1078 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1084 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1085 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1091 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1092 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1098 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1099 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1105 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1106 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1112 { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1113 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1120 (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
1123 op = (UNOP*)(yyval.opval);
1124 op = (UNOP*)op->op_first; /* get to flop */
1125 op = (UNOP*)op->op_first; /* get to flip */
1126 op = (UNOP*)op->op_first; /* get to range */
1127 token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
1133 #line 1003 "perly.y"
1134 { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1135 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1140 #line 1007 "perly.y"
1141 { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1142 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1147 #line 1011 "perly.y"
1148 { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1149 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1154 #line 1015 "perly.y"
1155 { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1156 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
1157 ((yyval.opval)->op_type == OP_NOT
1158 ? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
1164 #line 1025 "perly.y"
1165 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
1166 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1171 #line 1029 "perly.y"
1172 { (yyval.opval) = IF_MAD(
1173 newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
1174 (ps[(2) - (2)].val.opval)
1176 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
1181 #line 1036 "perly.y"
1182 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1183 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1188 #line 1040 "perly.y"
1189 { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
1190 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1195 #line 1044 "perly.y"
1196 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1197 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
1198 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1203 #line 1049 "perly.y"
1204 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1205 op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
1206 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1211 #line 1054 "perly.y"
1212 { (yyval.opval) = newUNOP(OP_PREINC, 0,
1213 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
1214 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1219 #line 1059 "perly.y"
1220 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1221 op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
1222 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1227 #line 1068 "perly.y"
1228 { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
1229 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
1230 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
1235 #line 1073 "perly.y"
1236 { (yyval.opval) = newANONLIST((OP*)NULL);
1237 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
1238 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
1243 #line 1078 "perly.y"
1244 { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
1245 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
1246 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
1247 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
1252 #line 1084 "perly.y"
1253 { (yyval.opval) = newANONHASH((OP*)NULL);
1254 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
1255 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
1256 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
1261 #line 1090 "perly.y"
1262 { SvREFCNT_inc_simple_void(PL_compcv);
1263 (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1264 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1265 OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
1266 OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
1271 #line 1101 "perly.y"
1272 { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
1273 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1278 #line 1105 "perly.y"
1279 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
1280 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
1285 #line 1109 "perly.y"
1286 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1287 OPf_SPECIAL|OPf_STACKED,
1288 op_prepend_elem(OP_LIST,
1290 (OPpENTERSUB_AMPER<<8),
1291 scalar((ps[(2) - (4)].val.opval))
1292 )),(OP*)NULL)); dep();
1293 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1294 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
1295 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1300 #line 1121 "perly.y"
1301 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1302 OPf_SPECIAL|OPf_STACKED,
1303 op_append_elem(OP_LIST,
1304 (ps[(4) - (5)].val.opval),
1306 (OPpENTERSUB_AMPER<<8),
1307 scalar((ps[(2) - (5)].val.opval))
1309 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1310 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1311 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1316 #line 1134 "perly.y"
1317 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1318 op_prepend_elem(OP_LIST,
1319 scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep();
1320 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1321 TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
1322 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1327 #line 1142 "perly.y"
1328 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1329 op_prepend_elem(OP_LIST,
1330 (ps[(4) - (5)].val.opval),
1331 scalar(newCVREF(0,scalar((ps[(2) - (5)].val.opval)))))); dep();
1332 TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1333 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1334 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1339 #line 1158 "perly.y"
1340 { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1341 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
1342 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
1347 #line 1163 "perly.y"
1348 { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
1349 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1354 #line 1167 "perly.y"
1355 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1359 #line 1169 "perly.y"
1360 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1361 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
1366 #line 1173 "perly.y"
1367 { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
1368 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1369 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1374 #line 1178 "perly.y"
1375 { (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); }
1379 #line 1180 "perly.y"
1380 { (yyval.opval) = sawparens(newNULLLIST());
1381 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1382 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1387 #line 1185 "perly.y"
1388 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1392 #line 1187 "perly.y"
1393 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1397 #line 1189 "perly.y"
1398 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1402 #line 1191 "perly.y"
1403 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1407 #line 1193 "perly.y"
1408 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
1412 #line 1195 "perly.y"
1413 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1417 #line 1197 "perly.y"
1418 { (yyval.opval) = op_prepend_elem(OP_ASLICE,
1419 newOP(OP_PUSHMARK, 0),
1420 newLISTOP(OP_ASLICE, 0,
1421 list((ps[(3) - (4)].val.opval)),
1422 ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
1423 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1424 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1429 #line 1206 "perly.y"
1430 { (yyval.opval) = op_prepend_elem(OP_HSLICE,
1431 newOP(OP_PUSHMARK, 0),
1432 newLISTOP(OP_HSLICE, 0,
1433 list((ps[(3) - (5)].val.opval)),
1434 ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
1435 PL_parser->expect = XOPERATOR;
1436 TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1437 TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1438 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1443 #line 1217 "perly.y"
1444 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1448 #line 1219 "perly.y"
1449 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
1453 #line 1221 "perly.y"
1454 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
1455 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1456 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1461 #line 1226 "perly.y"
1463 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1464 op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
1466 OP* op = (yyval.opval);
1467 if (op->op_type == OP_CONST) { /* defeat const fold */
1468 op = (OP*)op->op_madprop->mad_val;
1470 token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
1471 token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
1477 #line 1239 "perly.y"
1478 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1479 op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
1480 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1485 #line 1244 "perly.y"
1486 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
1487 PL_hints |= HINT_BLOCK_SCOPE;
1488 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1493 #line 1249 "perly.y"
1494 { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1495 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1500 #line 1253 "perly.y"
1501 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1502 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1507 #line 1257 "perly.y"
1508 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1509 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1514 #line 1261 "perly.y"
1515 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1516 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1521 #line 1265 "perly.y"
1522 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1523 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1528 #line 1269 "perly.y"
1529 { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
1530 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1535 #line 1273 "perly.y"
1536 { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
1537 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1542 #line 1277 "perly.y"
1543 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
1547 #line 1279 "perly.y"
1548 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1549 op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
1553 #line 1282 "perly.y"
1554 { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1555 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1560 #line 1286 "perly.y"
1561 { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
1562 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1563 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1564 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1569 #line 1292 "perly.y"
1570 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1574 #line 1294 "perly.y"
1575 { (yyval.opval) = (ps[(1) - (3)].val.opval);
1576 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1577 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1582 #line 1299 "perly.y"
1583 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1584 scalar((ps[(1) - (1)].val.opval))); }
1588 #line 1302 "perly.y"
1589 { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
1590 ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1591 : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
1593 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1594 TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1595 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1600 #line 1311 "perly.y"
1601 { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
1602 TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1603 TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1604 TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1609 #line 1317 "perly.y"
1611 if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
1612 && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
1613 && (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
1615 (yyval.ival) = start_subparse(FALSE, CVf_ANON);
1616 SAVEFREESV(PL_compcv);
1623 #line 1328 "perly.y"
1624 { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival));
1625 TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1626 TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1631 #line 1335 "perly.y"
1633 (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
1634 newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
1635 TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'X');
1640 #line 1345 "perly.y"
1641 { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
1643 token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
1644 append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
1645 (ps[(3) - (3)].val.opval)->op_madprop = 0;
1651 #line 1353 "perly.y"
1652 { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1653 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
1658 #line 1360 "perly.y"
1659 { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
1660 TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1661 TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1666 #line 1365 "perly.y"
1667 { (yyval.opval) = sawparens(newNULLLIST());
1668 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1669 TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1674 #line 1370 "perly.y"
1675 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1679 #line 1372 "perly.y"
1680 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1684 #line 1374 "perly.y"
1685 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1689 #line 1379 "perly.y"
1690 { (yyval.opval) = (OP*)NULL; }
1694 #line 1381 "perly.y"
1695 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1699 #line 1385 "perly.y"
1700 { (yyval.opval) = (OP*)NULL; }
1704 #line 1387 "perly.y"
1705 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1709 #line 1393 "perly.y"
1710 { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
1714 #line 1397 "perly.y"
1715 { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1716 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
1721 #line 1403 "perly.y"
1722 { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
1723 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
1728 #line 1409 "perly.y"
1729 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1730 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
1735 #line 1415 "perly.y"
1736 { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
1737 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
1742 #line 1421 "perly.y"
1743 { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1744 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
1749 #line 1427 "perly.y"
1750 { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
1751 TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
1756 #line 1434 "perly.y"
1757 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1761 #line 1436 "perly.y"
1762 { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
1766 #line 1438 "perly.y"
1767 { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
1771 #line 1441 "perly.y"
1772 { (yyval.opval) = (ps[(1) - (1)].val.opval); }
1779 * ab4cdcf44477d03652bf8c6c7ecfb5ee121b7d02357d9eb1000b62b17fba1627 perly.y
1780 * 73288b53f1f6dc0183252a5a8e4f39cfe36e357e77233704fad3021fee88eb5b regen_perly.pl