3 { (yyval.ival) = (yyvsp[-1].ival); newPROG(block_end((yyvsp[-1].ival),(yyvsp[0].opval))); ;}
8 { if (PL_copline > (line_t)((yyvsp[-3].tkval))->tk_lval.ival)
9 PL_copline = (line_t)((yyvsp[-3].tkval))->tk_lval.ival;
10 (yyval.opval) = block_end((yyvsp[-2].ival), (yyvsp[-1].opval));
11 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
12 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
18 { (yyval.ival) = block_start(TRUE); ;}
24 PL_expect = XSTATE; (yyval.ival) = block_start(TRUE);
30 { if (PL_copline > (line_t)((yyvsp[-3].tkval))->tk_lval.ival)
31 PL_copline = (line_t)((yyvsp[-3].tkval))->tk_lval.ival;
32 (yyval.opval) = block_end((yyvsp[-2].ival), (yyvsp[-1].opval));
33 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
34 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
40 { (yyval.ival) = block_start(FALSE); ;}
45 { (yyval.ival) = PL_savestack_ix; ;}
50 { (yyval.opval) = Nullop; ;}
55 { (yyval.opval) = append_list(OP_LINESEQ,
56 (LISTOP*)(yyvsp[-1].opval), (LISTOP*)(yyvsp[0].opval)); ;}
61 { LEAVE_SCOPE((yyvsp[-1].ival));
62 (yyval.opval) = append_list(OP_LINESEQ,
63 (LISTOP*)(yyvsp[-2].opval), (LISTOP*)(yyvsp[0].opval));
64 PL_pad_reset_pending = TRUE;
65 if ((yyvsp[-2].opval) && (yyvsp[0].opval)) PL_hints |= HINT_BLOCK_SCOPE; ;}
70 { (yyval.opval) = newSTATEOP(0, ((yyvsp[-1].tkval))->tk_lval.pval, (yyvsp[0].opval));
71 token_getmad((yyvsp[-1].tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
77 if (((yyvsp[-1].tkval))->tk_lval.pval) {
78 (yyval.opval) = newSTATEOP(0, ((yyvsp[-1].tkval))->tk_lval.pval, newOP(OP_NULL, 0));
79 token_getmad((yyvsp[-1].tkval),(yyval.opval),'L');
80 token_getmad((yyvsp[0].tkval),((LISTOP*)(yyval.opval))->op_first,';');
83 (yyval.opval) = newOP(OP_NULL, 0);
85 token_free((yyvsp[-1].tkval));
86 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
95 (yyval.opval) = newSTATEOP(0, ((yyvsp[-2].tkval))->tk_lval.pval, (yyvsp[-1].opval));
97 /* sideff might already have a nexstate */
98 op = ((LISTOP*)(yyval.opval))->op_first;
100 while (op->op_sibling &&
101 op->op_sibling->op_type == OP_NEXTSTATE)
103 token_getmad((yyvsp[-2].tkval),op,'L');
104 token_getmad((yyvsp[0].tkval),op,';');
111 { (yyval.opval) = Nullop; ;}
116 { (yyval.opval) = (yyvsp[0].opval); ;}
121 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
122 token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
128 { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
129 token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
135 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((yyvsp[0].opval)), (yyvsp[-2].opval));
136 token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
142 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (yyvsp[0].opval), (yyvsp[-2].opval));
143 token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
149 { (yyval.opval) = newFOROP(0, Nullch, (line_t)((yyvsp[-1].tkval))->tk_lval.ival,
150 Nullop, (yyvsp[0].opval), (yyvsp[-2].opval), Nullop);
151 token_getmad((yyvsp[-1].tkval),((LISTOP*)(yyval.opval))->op_first->op_sibling,'w');
157 { (yyval.opval) = Nullop; ;}
162 { ((yyvsp[0].opval))->op_flags |= OPf_PARENS; (yyval.opval) = scope((yyvsp[0].opval));
163 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
169 { PL_copline = (line_t)((yyvsp[-5].tkval))->tk_lval.ival;
170 (yyval.opval) = newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval));
171 PL_hints |= HINT_BLOCK_SCOPE;
172 token_getmad((yyvsp[-5].tkval),(yyval.opval),'I');
173 token_getmad((yyvsp[-4].tkval),(yyval.opval),'(');
174 token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
180 { PL_copline = (line_t)((yyvsp[-6].tkval))->tk_lval.ival;
181 (yyval.opval) = block_end((yyvsp[-4].ival),
182 newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval)));
183 token_getmad((yyvsp[-6].tkval),(yyval.opval),'I');
184 token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
185 token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
191 { PL_copline = (line_t)((yyvsp[-6].tkval))->tk_lval.ival;
192 (yyval.opval) = block_end((yyvsp[-4].ival),
193 newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval)));
194 token_getmad((yyvsp[-6].tkval),(yyval.opval),'I');
195 token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
196 token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
202 { (yyval.opval) = Nullop; ;}
207 { (yyval.opval) = scope((yyvsp[0].opval));
208 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
215 PL_copline = (line_t)(yyvsp[-7].tkval);
216 (yyval.opval) = block_end((yyvsp[-5].ival),
217 newSTATEOP(0, ((yyvsp[-8].tkval))->tk_lval.pval,
218 innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
219 ((yyvsp[-7].tkval))->tk_lval.ival, (yyvsp[-4].opval), (yyvsp[-1].opval), (yyvsp[0].opval), (yyvsp[-2].ival))));
220 token_getmad((yyvsp[-8].tkval),innerop,'L');
221 token_getmad((yyvsp[-7].tkval),innerop,'W');
222 token_getmad((yyvsp[-6].tkval),innerop,'(');
223 token_getmad((yyvsp[-3].tkval),innerop,')');
230 PL_copline = (line_t)(yyvsp[-7].tkval);
231 (yyval.opval) = block_end((yyvsp[-5].ival),
232 newSTATEOP(0, ((yyvsp[-8].tkval))->tk_lval.pval,
233 innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
234 ((yyvsp[-7].tkval))->tk_lval.ival, (yyvsp[-4].opval), (yyvsp[-1].opval), (yyvsp[0].opval), (yyvsp[-2].ival))));
235 token_getmad((yyvsp[-8].tkval),innerop,'L');
236 token_getmad((yyvsp[-7].tkval),innerop,'W');
237 token_getmad((yyvsp[-6].tkval),innerop,'(');
238 token_getmad((yyvsp[-3].tkval),innerop,')');
245 (yyval.opval) = block_end((yyvsp[-6].ival),
246 innerop = newFOROP(0, ((yyvsp[-9].tkval))->tk_lval.pval, (line_t)((yyvsp[-8].tkval))->tk_lval.ival, (yyvsp[-5].opval), (yyvsp[-3].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
247 token_getmad((yyvsp[-9].tkval),((LISTOP*)innerop)->op_first,'L');
248 token_getmad((yyvsp[-8].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
249 token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first->op_sibling,'d');
250 token_getmad((yyvsp[-4].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
251 token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
258 (yyval.opval) = block_end((yyvsp[-4].ival),
259 innerop = newFOROP(0, ((yyvsp[-8].tkval))->tk_lval.pval, (line_t)((yyvsp[-7].tkval))->tk_lval.ival, mod((yyvsp[-6].opval), OP_ENTERLOOP),
260 (yyvsp[-3].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
261 token_getmad((yyvsp[-8].tkval),((LISTOP*)innerop)->op_first,'L');
262 token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
263 token_getmad((yyvsp[-5].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
264 token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
271 (yyval.opval) = block_end((yyvsp[-4].ival),
272 innerop = newFOROP(0, ((yyvsp[-7].tkval))->tk_lval.pval, (line_t)((yyvsp[-6].tkval))->tk_lval.ival, Nullop, (yyvsp[-3].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
273 token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first,'L');
274 token_getmad((yyvsp[-6].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
275 token_getmad((yyvsp[-5].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
276 token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
283 PL_copline = (line_t)((yyvsp[-10].tkval))->tk_lval.ival;
284 forop = newSTATEOP(0, ((yyvsp[-11].tkval))->tk_lval.pval,
285 newWHILEOP(0, 1, (LOOP*)Nullop,
286 ((yyvsp[-10].tkval))->tk_lval.ival, scalar((yyvsp[-5].opval)),
287 (yyvsp[0].opval), (yyvsp[-2].opval), (yyvsp[-3].ival)));
288 if (!(yyvsp[-7].opval))
289 (yyvsp[-7].opval) = newOP(OP_NULL, 0);
290 forop = newUNOP(OP_NULL, 0, append_elem(OP_LINESEQ,
292 (((yyvsp[-11].tkval))->tk_lval.pval
293 ?savepv(((yyvsp[-11].tkval))->tk_lval.pval):Nullch),
297 token_getmad((yyvsp[-10].tkval),forop,'3');
298 token_getmad((yyvsp[-9].tkval),forop,'(');
299 token_getmad((yyvsp[-6].tkval),forop,'1');
300 token_getmad((yyvsp[-4].tkval),forop,'2');
301 token_getmad((yyvsp[-1].tkval),forop,')');
302 token_getmad((yyvsp[-11].tkval),forop,'L');
303 (yyval.opval) = block_end((yyvsp[-8].ival), forop);
309 { (yyval.opval) = newSTATEOP(0, ((yyvsp[-2].tkval))->tk_lval.pval,
310 newWHILEOP(0, 1, (LOOP*)Nullop,
311 NOLINE, Nullop, (yyvsp[-1].opval), (yyvsp[0].opval), 0));
312 token_getmad((yyvsp[-2].tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
317 { (yyval.ival) = (PL_min_intro_pending &&
318 PL_max_intro_pending >= PL_min_intro_pending);
324 { (yyval.opval) = Nullop; ;}
330 (void)scan_num("1", &tmplval);
331 (yyval.opval) = tmplval.opval; ;}
336 { (yyval.opval) = invert(scalar((yyvsp[0].opval))); ;}
341 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
346 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
351 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
357 tmplval.pval = Nullch;
358 (yyval.tkval) = newTOKEN(OP_NULL, tmplval, 0); ;}
363 { (yyval.opval) = (yyvsp[0].opval); ;}
368 { (yyval.opval) = (yyvsp[0].opval); ;}
373 { (yyval.opval) = (yyvsp[0].opval); ;}
378 { (yyval.opval) = (yyvsp[0].opval); ;}
383 { (yyval.opval) = (yyvsp[0].opval); ;}
388 { (yyval.opval) = (yyvsp[0].opval); ;}
393 { (yyval.opval) = newOP(OP_NULL,0);
394 token_getmad((yyvsp[0].tkval),(yyval.opval),'p');
400 { (yyval.opval) = newFORM((yyvsp[-2].ival), (yyvsp[-1].opval), (yyvsp[0].opval));
401 prepend_madprops((yyvsp[-3].tkval)->tk_mad, (yyval.opval), 'F');
402 (yyvsp[-3].tkval)->tk_mad = 0;
403 token_free((yyvsp[-3].tkval));
409 { (yyval.opval) = (yyvsp[0].opval); ;}
414 { (yyval.opval) = Nullop; ;}
419 { (yyval.opval) = newMYSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
420 token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
426 { OP* o = newSVOP(OP_ANONCODE, 0,
427 (SV*)newATTRSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
428 (yyval.opval) = newOP(OP_NULL,0);
429 op_getmad(o,(yyval.opval),'&');
430 op_getmad((yyvsp[-3].opval),(yyval.opval),'n');
431 op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
432 op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
433 token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
434 append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 0);
435 (yyvsp[0].opval)->op_madprop = 0;
441 { (yyval.ival) = start_subparse(FALSE, 0); ;}
446 { (yyval.ival) = start_subparse(FALSE, CVf_ANON); ;}
451 { (yyval.ival) = start_subparse(TRUE, 0); ;}
456 { STRLEN n_a; char *name = SvPV(((SVOP*)(yyvsp[0].opval))->op_sv,n_a);
457 if (strEQ(name, "BEGIN") || strEQ(name, "END")
458 || strEQ(name, "INIT") || strEQ(name, "CHECK"))
459 CvSPECIAL_on(PL_compcv);
460 (yyval.opval) = (yyvsp[0].opval); ;}
465 { (yyval.opval) = Nullop; ;}
470 { (yyval.opval) = Nullop; ;}
475 { (yyval.opval) = (yyvsp[0].opval);
476 token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
482 { (yyval.opval) = newOP(OP_NULL, 0);
483 token_getmad((yyvsp[0].tkval),(yyval.opval),':');
489 { (yyval.opval) = (yyvsp[0].opval);
490 token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
496 { (yyval.opval) = newOP(OP_NULL, 0);
497 token_getmad((yyvsp[0].tkval),(yyval.opval),':');
503 { (yyval.opval) = (yyvsp[0].opval); ;}
508 { (yyval.opval) = newOP(OP_NULL,0); PL_expect = XSTATE;
509 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
515 { (yyval.opval) = package((yyvsp[-1].opval));
516 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
517 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
523 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
528 { (yyval.opval) = utilize(((yyvsp[-6].tkval))->tk_lval.ival, (yyvsp[-5].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval));
529 token_getmad((yyvsp[-6].tkval),(yyval.opval),'o');
530 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
531 if (PL_rsfp_filters && AvFILLp(PL_rsfp_filters) >= 0)
532 append_madprops(newMADPROP('!', MAD_PV, "", 0), (yyval.opval), 0);
538 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
539 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
545 { (yyval.opval) = newLOGOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
546 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
552 { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
553 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
559 { OP* op = newNULLLIST();
560 token_getmad((yyvsp[0].tkval),op,',');
561 (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
568 (yyvsp[0].opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
569 token_getmad((yyvsp[-1].tkval),(yyvsp[0].opval),',');
570 (yyval.opval) = append_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval));
576 { (yyval.opval) = convert(((yyvsp[-2].tkval))->tk_lval.ival, OPf_STACKED,
577 prepend_elem(OP_LIST, newGVREF(((yyvsp[-2].tkval))->tk_lval.ival,(yyvsp[-1].opval)), (yyvsp[0].opval)) );
578 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
584 { (yyval.opval) = convert(((yyvsp[-4].tkval))->tk_lval.ival, OPf_STACKED,
585 prepend_elem(OP_LIST, newGVREF(((yyvsp[-4].tkval))->tk_lval.ival,(yyvsp[-2].opval)), (yyvsp[-1].opval)) );
586 token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
587 token_getmad((yyvsp[-3].tkval),(yyval.opval),'(');
588 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
594 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
596 prepend_elem(OP_LIST, scalar((yyvsp[-5].opval)), (yyvsp[-1].opval)),
597 newUNOP(OP_METHOD, 0, (yyvsp[-3].opval))));
598 token_getmad((yyvsp[-4].tkval),(yyval.opval),'A');
599 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
600 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
606 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
607 append_elem(OP_LIST, scalar((yyvsp[-2].opval)),
608 newUNOP(OP_METHOD, 0, (yyvsp[0].opval))));
609 token_getmad((yyvsp[-1].tkval),(yyval.opval),'A');
615 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
617 prepend_elem(OP_LIST, (yyvsp[-1].opval), (yyvsp[0].opval)),
618 newUNOP(OP_METHOD, 0, (yyvsp[-2].opval))));
624 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
626 prepend_elem(OP_LIST, (yyvsp[-3].opval), (yyvsp[-1].opval)),
627 newUNOP(OP_METHOD, 0, (yyvsp[-4].opval))));
628 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
629 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
635 { (yyval.opval) = convert(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
636 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
642 { (yyval.opval) = convert(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
643 token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
644 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
645 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
651 { (yyvsp[0].opval) = newANONATTRSUB((yyvsp[-1].ival), 0, Nullop, (yyvsp[0].opval)); ;}
656 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
658 prepend_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)), (yyvsp[-4].opval)));
664 { (yyval.opval) = newBINOP(OP_GELEM, 0, (yyvsp[-4].opval), scalar((yyvsp[-2].opval)));
665 PL_expect = XOPERATOR;
666 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
667 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
668 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
674 { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((yyvsp[-3].opval)), scalar((yyvsp[-1].opval)));
675 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
676 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
682 { (yyval.opval) = newBINOP(OP_AELEM, 0,
683 ref(newAVREF((yyvsp[-4].opval)),OP_RV2AV),
684 scalar((yyvsp[-1].opval)));
685 token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
686 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
687 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
693 { (yyval.opval) = newBINOP(OP_AELEM, 0,
694 ref(newAVREF((yyvsp[-3].opval)),OP_RV2AV),
695 scalar((yyvsp[-1].opval)));
696 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
697 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
703 { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((yyvsp[-4].opval)), jmaybe((yyvsp[-2].opval)));
704 PL_expect = XOPERATOR;
705 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
706 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
707 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
713 { (yyval.opval) = newBINOP(OP_HELEM, 0,
714 ref(newHVREF((yyvsp[-5].opval)),OP_RV2HV),
715 jmaybe((yyvsp[-2].opval)));
716 PL_expect = XOPERATOR;
717 token_getmad((yyvsp[-4].tkval),(yyval.opval),'a');
718 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
719 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
720 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
726 { (yyval.opval) = newBINOP(OP_HELEM, 0,
727 ref(newHVREF((yyvsp[-4].opval)),OP_RV2HV),
728 jmaybe((yyvsp[-2].opval)));
729 PL_expect = XOPERATOR;
730 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
731 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
732 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
738 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
739 newCVREF(0, scalar((yyvsp[-3].opval))));
740 token_getmad((yyvsp[-2].tkval),(yyval.opval),'a');
741 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
742 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
748 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
749 append_elem(OP_LIST, (yyvsp[-1].opval),
750 newCVREF(0, scalar((yyvsp[-4].opval)))));
751 token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
752 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
753 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
759 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
760 append_elem(OP_LIST, (yyvsp[-1].opval),
761 newCVREF(0, scalar((yyvsp[-3].opval)))));
762 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
763 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
769 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
770 newCVREF(0, scalar((yyvsp[-2].opval))));
771 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
772 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
778 { (yyval.opval) = newASSIGNOP(OPf_STACKED, (yyvsp[-2].opval), ((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[0].opval));
779 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
785 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
786 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
792 { if (((yyvsp[-1].tkval))->tk_lval.ival != OP_REPEAT)
793 scalar((yyvsp[-2].opval));
794 (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), scalar((yyvsp[0].opval)));
795 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
801 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
802 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
808 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
809 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
815 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
816 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
822 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
823 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
829 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
830 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
836 { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
837 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
844 (yyval.opval) = newRANGE(((yyvsp[-1].tkval))->tk_lval.ival, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
845 op = (UNOP*)(yyval.opval);
846 op = (UNOP*)op->op_first; /* get to flop */
847 op = (UNOP*)op->op_first; /* get to flip */
848 op = (UNOP*)op->op_first; /* get to range */
849 token_getmad((yyvsp[-1].tkval),(OP*)op,'o');
855 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
856 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
862 { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
863 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
869 { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
870 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
876 { (yyval.opval) = bind_match(((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[-2].opval), (yyvsp[0].opval));
877 if ((yyval.opval)->op_type == OP_NOT)
878 token_getmad((yyvsp[-1].tkval),((UNOP*)(yyval.opval))->op_first,'~');
880 token_getmad((yyvsp[-1].tkval),(yyval.opval),'~');
886 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[0].opval)));
887 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
893 { (yyval.opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
894 token_getmad((yyvsp[-1].tkval),(yyval.opval),'+');
900 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
901 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
907 { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[0].opval)));
908 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
914 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
915 mod(scalar((yyvsp[-1].opval)), OP_POSTINC));
916 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
922 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
923 mod(scalar((yyvsp[-1].opval)), OP_POSTDEC));
924 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
930 { (yyval.opval) = newUNOP(OP_PREINC, 0,
931 mod(scalar((yyvsp[0].opval)), OP_PREINC));
932 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
938 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
939 mod(scalar((yyvsp[0].opval)), OP_PREDEC));
940 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
946 { (yyval.opval) = newANONLIST((yyvsp[-1].opval));
947 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
948 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
954 { (yyval.opval) = newANONLIST(Nullop);
955 token_getmad((yyvsp[-1].tkval),(yyval.opval),'[');
956 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
962 { (yyval.opval) = newANONHASH((yyvsp[-2].opval));
963 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
964 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
965 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
971 { (yyval.opval) = newANONHASH(Nullop);
972 token_getmad((yyvsp[-2].tkval),(yyval.opval),'{');
973 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
974 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
980 { (yyval.opval) = newANONATTRSUB((yyvsp[-3].ival), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
981 token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
982 op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
983 op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
989 { (yyval.opval) = dofile((yyvsp[0].opval), (yyvsp[-1].tkval));
990 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
996 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[0].opval)));
997 token_getmad((yyvsp[-1].tkval),(yyval.opval),'D');
1003 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1004 OPf_SPECIAL|OPf_STACKED,
1005 prepend_elem(OP_LIST,
1007 (OPpENTERSUB_AMPER<<8),
1008 scalar((yyvsp[-2].opval))
1010 token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1011 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1012 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1018 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1019 OPf_SPECIAL|OPf_STACKED,
1020 append_elem(OP_LIST,
1023 (OPpENTERSUB_AMPER<<8),
1024 scalar((yyvsp[-3].opval))
1026 token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1027 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1028 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1034 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1035 prepend_elem(OP_LIST,
1036 scalar(newCVREF(0,scalar((yyvsp[-2].opval)))), Nullop)); dep();
1037 token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1038 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1039 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1045 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1046 prepend_elem(OP_LIST,
1048 scalar(newCVREF(0,scalar((yyvsp[-3].opval)))))); dep();
1049 token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1050 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1051 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1057 { (yyval.opval) = newCONDOP(0, (yyvsp[-4].opval), (yyvsp[-2].opval), (yyvsp[0].opval));
1058 token_getmad((yyvsp[-3].tkval),(yyval.opval),'?');
1059 token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
1065 { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[0].opval),OP_REFGEN));
1066 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1072 { (yyval.opval) = (yyvsp[0].opval); ;}
1077 { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1078 token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1084 { (yyval.opval) = sawparens(newUNOP(OP_NULL,0,(yyvsp[-1].opval)));
1085 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1086 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1092 { (yyval.opval) = sawparens(newNULLLIST());
1093 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1094 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1100 { (yyval.opval) = (yyvsp[0].opval); ;}
1105 { (yyval.opval) = (yyvsp[0].opval); ;}
1110 { (yyval.opval) = (yyvsp[0].opval); ;}
1115 { (yyval.opval) = (yyvsp[0].opval); ;}
1120 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[0].opval), OP_AV2ARYLEN));;}
1125 { (yyval.opval) = (yyvsp[0].opval); ;}
1130 { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), (yyvsp[-4].opval));
1131 token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
1132 token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
1133 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1134 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1140 { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), Nullop);
1141 token_getmad((yyvsp[-4].tkval),(yyval.opval),'(');
1142 token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
1143 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1144 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1150 { (yyval.opval) = prepend_elem(OP_ASLICE,
1151 newOP(OP_PUSHMARK, 0),
1152 newLISTOP(OP_ASLICE, 0,
1153 list((yyvsp[-1].opval)),
1154 ref((yyvsp[-3].opval), OP_ASLICE)));
1155 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1156 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1162 { (yyval.opval) = prepend_elem(OP_HSLICE,
1163 newOP(OP_PUSHMARK, 0),
1164 newLISTOP(OP_HSLICE, 0,
1165 list((yyvsp[-2].opval)),
1166 ref(oopsHV((yyvsp[-4].opval)), OP_HSLICE)));
1167 PL_expect = XOPERATOR;
1168 token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
1169 token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1170 token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1176 { (yyval.opval) = (yyvsp[0].opval); ;}
1181 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[0].opval))); ;}
1186 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[-2].opval)));
1187 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1188 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1195 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1196 append_elem(OP_LIST, (yyvsp[-1].opval), scalar((yyvsp[-3].opval))));
1198 if (op->op_type == OP_CONST) { /* defeat const fold */
1199 op = (OP*)op->op_madprop->mad_val;
1201 token_getmad((yyvsp[-2].tkval),op,'(');
1202 token_getmad((yyvsp[0].tkval),op,')');
1208 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1209 append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval))));
1210 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1215 #line 1003 "madly.y"
1216 { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, OPf_SPECIAL);
1217 PL_hints |= HINT_BLOCK_SCOPE;
1218 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1223 #line 1008 "madly.y"
1224 { (yyval.opval) = newLOOPEX(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1225 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1230 #line 1012 "madly.y"
1231 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
1232 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1237 #line 1016 "madly.y"
1238 { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1239 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1244 #line 1020 "madly.y"
1245 { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1246 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1251 #line 1024 "madly.y"
1252 { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1253 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1258 #line 1028 "madly.y"
1259 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1260 append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval))));
1265 #line 1032 "madly.y"
1266 { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1267 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1272 #line 1036 "madly.y"
1273 { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, 0);
1274 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1275 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1276 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1281 #line 1042 "madly.y"
1282 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1283 scalar((yyvsp[0].opval))); ;}
1287 #line 1045 "madly.y"
1288 { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, OPf_SPECIAL);
1289 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1290 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1291 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1296 #line 1051 "madly.y"
1297 { (yyval.opval) = newUNOP(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
1298 token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1299 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1300 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1305 #line 1057 "madly.y"
1306 { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1);
1307 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1308 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1313 #line 1067 "madly.y"
1314 { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval));
1315 token_getmad((yyvsp[-2].tkval),(yyval.opval),'d');
1316 append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 'a');
1317 (yyvsp[0].opval)->op_madprop = 0;
1322 #line 1073 "madly.y"
1323 { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1324 token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1329 #line 1080 "madly.y"
1330 { (yyval.opval) = sawparens((yyvsp[-1].opval));
1331 token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1332 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1337 #line 1085 "madly.y"
1338 { (yyval.opval) = sawparens(newNULLLIST());
1339 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1340 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1345 #line 1090 "madly.y"
1346 { (yyval.opval) = (yyvsp[0].opval); ;}
1350 #line 1092 "madly.y"
1351 { (yyval.opval) = (yyvsp[0].opval); ;}
1355 #line 1094 "madly.y"
1356 { (yyval.opval) = (yyvsp[0].opval); ;}
1360 #line 1099 "madly.y"
1361 { (yyval.opval) = Nullop; ;}
1365 #line 1101 "madly.y"
1366 { (yyval.opval) = (yyvsp[0].opval); ;}
1370 #line 1105 "madly.y"
1371 { (yyval.opval) = Nullop; ;}
1375 #line 1107 "madly.y"
1376 { (yyval.opval) = (yyvsp[0].opval); ;}
1380 #line 1109 "madly.y"
1381 { OP* op = newNULLLIST();
1382 token_getmad((yyvsp[0].tkval),op,',');
1383 (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
1388 #line 1118 "madly.y"
1389 { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;}
1393 #line 1122 "madly.y"
1394 { (yyval.opval) = newCVREF(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1395 token_getmad((yyvsp[-1].tkval),(yyval.opval),'&');
1400 #line 1128 "madly.y"
1401 { (yyval.opval) = newSVREF((yyvsp[0].opval));
1402 token_getmad((yyvsp[-1].tkval),(yyval.opval),'$');
1407 #line 1134 "madly.y"
1408 { (yyval.opval) = newAVREF((yyvsp[0].opval));
1409 token_getmad((yyvsp[-1].tkval),(yyval.opval),'@');
1414 #line 1140 "madly.y"
1415 { (yyval.opval) = newHVREF((yyvsp[0].opval));
1416 token_getmad((yyvsp[-1].tkval),(yyval.opval),'%');
1421 #line 1146 "madly.y"
1422 { (yyval.opval) = newAVREF((yyvsp[0].opval));
1423 token_getmad((yyvsp[-1].tkval),(yyval.opval),'l');
1428 #line 1152 "madly.y"
1429 { (yyval.opval) = newGVREF(0,(yyvsp[0].opval));
1430 token_getmad((yyvsp[-1].tkval),(yyval.opval),'*');
1435 #line 1159 "madly.y"
1436 { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1440 #line 1161 "madly.y"
1441 { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1445 #line 1163 "madly.y"
1446 { (yyval.opval) = scope((yyvsp[0].opval)); ;}
1450 #line 1166 "madly.y"
1451 { (yyval.opval) = (yyvsp[0].opval); ;}