This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge perly.y changes from 5.9.2 to now into madly.y.
[perl5.git] / madly.act
CommitLineData
00e74f14
NC
1case 2:
2#line 96 "madly.y"
3 { (yyval.ival) = (yyvsp[-1].ival); newPROG(block_end((yyvsp[-1].ival),(yyvsp[0].opval))); ;}
4 break;
5
6 case 3:
7#line 101 "madly.y"
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),'}');
13 ;}
14 break;
15
16 case 4:
17#line 110 "madly.y"
18 { (yyval.ival) = block_start(TRUE); ;}
19 break;
20
21 case 5:
22#line 114 "madly.y"
23 {
24 PL_expect = XSTATE; (yyval.ival) = block_start(TRUE);
25 ;}
26 break;
27
28 case 6:
29#line 121 "madly.y"
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),'}');
35 ;}
36 break;
37
38 case 7:
39#line 130 "madly.y"
40 { (yyval.ival) = block_start(FALSE); ;}
41 break;
42
43 case 8:
44#line 134 "madly.y"
45 { (yyval.ival) = PL_savestack_ix; ;}
46 break;
47
48 case 9:
49#line 138 "madly.y"
50 { (yyval.opval) = Nullop; ;}
51 break;
52
53 case 10:
54#line 141 "madly.y"
55 { (yyval.opval) = append_list(OP_LINESEQ,
56 (LISTOP*)(yyvsp[-1].opval), (LISTOP*)(yyvsp[0].opval)); ;}
57 break;
58
59 case 11:
60#line 144 "madly.y"
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; ;}
66 break;
67
68 case 12:
69#line 153 "madly.y"
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'); ;}
72 break;
73
74 case 14:
75#line 157 "madly.y"
76 {
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,';');
81 }
82 else {
83 (yyval.opval) = newOP(OP_NULL, 0);
84 PL_copline = NOLINE;
85 token_free((yyvsp[-1].tkval));
86 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
87 }
88 PL_expect = XSTATE;
89 ;}
90 break;
91
92 case 15:
93#line 172 "madly.y"
94 { OP* op;
95 (yyval.opval) = newSTATEOP(0, ((yyvsp[-2].tkval))->tk_lval.pval, (yyvsp[-1].opval));
96 PL_expect = XSTATE;
97 /* sideff might already have a nexstate */
98 op = ((LISTOP*)(yyval.opval))->op_first;
99 if (op) {
100 while (op->op_sibling &&
101 op->op_sibling->op_type == OP_NEXTSTATE)
102 op = op->op_sibling;
103 token_getmad((yyvsp[-2].tkval),op,'L');
104 token_getmad((yyvsp[0].tkval),op,';');
105 }
106 ;}
107 break;
108
109 case 16:
110#line 189 "madly.y"
111 { (yyval.opval) = Nullop; ;}
112 break;
113
114 case 17:
115#line 191 "madly.y"
116 { (yyval.opval) = (yyvsp[0].opval); ;}
117 break;
118
119 case 18:
120#line 193 "madly.y"
121 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
122 token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
123 ;}
124 break;
125
126 case 19:
127#line 197 "madly.y"
128 { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
129 token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
130 ;}
131 break;
132
133 case 20:
134#line 201 "madly.y"
135 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((yyvsp[0].opval)), (yyvsp[-2].opval));
136 token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
137 ;}
138 break;
139
140 case 21:
141#line 205 "madly.y"
142 { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (yyvsp[0].opval), (yyvsp[-2].opval));
143 token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
144 ;}
145 break;
146
147 case 22:
148#line 209 "madly.y"
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');
152 ;}
153 break;
154
155 case 23:
156#line 217 "madly.y"
157 { (yyval.opval) = Nullop; ;}
158 break;
159
160 case 24:
161#line 219 "madly.y"
162 { ((yyvsp[0].opval))->op_flags |= OPf_PARENS; (yyval.opval) = scope((yyvsp[0].opval));
163 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
164 ;}
165 break;
166
167 case 25:
168#line 223 "madly.y"
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),')');
175 ;}
176 break;
177
178 case 26:
179#line 234 "madly.y"
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),')');
186 ;}
187 break;
188
189 case 27:
190#line 242 "madly.y"
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),')');
197 ;}
198 break;
199
200 case 28:
201#line 253 "madly.y"
202 { (yyval.opval) = Nullop; ;}
203 break;
204
205 case 29:
206#line 255 "madly.y"
207 { (yyval.opval) = scope((yyvsp[0].opval));
208 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
209 ;}
210 break;
211
212 case 30:
213#line 262 "madly.y"
214 { OP *innerop;
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,')');
224 ;}
225 break;
226
227 case 31:
228#line 274 "madly.y"
229 { OP *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,')');
239 ;}
240 break;
241
242 case 32:
243#line 286 "madly.y"
244 { OP *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,')');
252 ;}
253 break;
254
255 case 33:
256#line 296 "madly.y"
257 { OP *innerop;
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,')');
265 ;}
266 break;
267
268 case 34:
269#line 306 "madly.y"
270 { OP *innerop;
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,')');
277 ;}
278 break;
279
280 case 35:
281#line 316 "madly.y"
282 { OP *forop;
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,
291 newSTATEOP(0,
292 (((yyvsp[-11].tkval))->tk_lval.pval
293 ?savepv(((yyvsp[-11].tkval))->tk_lval.pval):Nullch),
294 (yyvsp[-7].opval)),
295 forop));
296
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);
304 ;}
305 break;
306
307 case 36:
308#line 340 "madly.y"
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'); ;}
313 break;
314
315 case 37:
316#line 348 "madly.y"
317 { (yyval.ival) = (PL_min_intro_pending &&
318 PL_max_intro_pending >= PL_min_intro_pending);
319 intro_my(); ;}
320 break;
321
322 case 38:
323#line 355 "madly.y"
324 { (yyval.opval) = Nullop; ;}
325 break;
326
327 case 40:
328#line 361 "madly.y"
329 { YYSTYPE tmplval;
330 (void)scan_num("1", &tmplval);
331 (yyval.opval) = tmplval.opval; ;}
332 break;
333
334 case 42:
335#line 369 "madly.y"
336 { (yyval.opval) = invert(scalar((yyvsp[0].opval))); ;}
337 break;
338
339 case 43:
340#line 374 "madly.y"
341 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
342 break;
343
344 case 44:
345#line 378 "madly.y"
346 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
347 break;
348
349 case 45:
350#line 382 "madly.y"
351 { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
352 break;
353
354 case 46:
355#line 387 "madly.y"
356 { YYSTYPE tmplval;
357 tmplval.pval = Nullch;
358 (yyval.tkval) = newTOKEN(OP_NULL, tmplval, 0); ;}
359 break;
360
361 case 48:
362#line 395 "madly.y"
363 { (yyval.opval) = (yyvsp[0].opval); ;}
364 break;
365
366 case 49:
367#line 397 "madly.y"
368 { (yyval.opval) = (yyvsp[0].opval); ;}
369 break;
370
371 case 50:
372#line 399 "madly.y"
373 { (yyval.opval) = (yyvsp[0].opval); ;}
374 break;
375
376 case 51:
377#line 401 "madly.y"
378 { (yyval.opval) = (yyvsp[0].opval); ;}
379 break;
380
381 case 52:
382#line 403 "madly.y"
383 { (yyval.opval) = (yyvsp[0].opval); ;}
384 break;
385
386 case 53:
387#line 405 "madly.y"
388 { (yyval.opval) = (yyvsp[0].opval); ;}
389 break;
390
391 case 54:
392#line 409 "madly.y"
393 { (yyval.opval) = newOP(OP_NULL,0);
394 token_getmad((yyvsp[0].tkval),(yyval.opval),'p');
395 ;}
396 break;
397
398 case 55:
399#line 415 "madly.y"
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));
404 ;}
405 break;
406
407 case 56:
408#line 422 "madly.y"
409 { (yyval.opval) = (yyvsp[0].opval); ;}
410 break;
411
412 case 57:
413#line 423 "madly.y"
414 { (yyval.opval) = Nullop; ;}
415 break;
416
417 case 58:
418#line 428 "madly.y"
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');
421 ;}
422 break;
423
424 case 59:
425#line 435 "madly.y"
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;
436 ;}
437 break;
438
439 case 60:
440#line 449 "madly.y"
441 { (yyval.ival) = start_subparse(FALSE, 0); ;}
442 break;
443
444 case 61:
445#line 453 "madly.y"
446 { (yyval.ival) = start_subparse(FALSE, CVf_ANON); ;}
447 break;
448
449 case 62:
450#line 457 "madly.y"
451 { (yyval.ival) = start_subparse(TRUE, 0); ;}
452 break;
453
454 case 63:
455#line 461 "madly.y"
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); ;}
461 break;
462
463 case 64:
464#line 470 "madly.y"
465 { (yyval.opval) = Nullop; ;}
466 break;
467
468 case 66:
469#line 476 "madly.y"
470 { (yyval.opval) = Nullop; ;}
471 break;
472
473 case 67:
474#line 478 "madly.y"
475 { (yyval.opval) = (yyvsp[0].opval);
476 token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
477 ;}
478 break;
479
480 case 68:
481#line 482 "madly.y"
482 { (yyval.opval) = newOP(OP_NULL, 0);
483 token_getmad((yyvsp[0].tkval),(yyval.opval),':');
484 ;}
485 break;
486
487 case 69:
488#line 489 "madly.y"
489 { (yyval.opval) = (yyvsp[0].opval);
490 token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
491 ;}
492 break;
493
494 case 70:
495#line 493 "madly.y"
496 { (yyval.opval) = newOP(OP_NULL, 0);
497 token_getmad((yyvsp[0].tkval),(yyval.opval),':');
498 ;}
499 break;
500
501 case 71:
502#line 499 "madly.y"
503 { (yyval.opval) = (yyvsp[0].opval); ;}
504 break;
505
506 case 72:
507#line 500 "madly.y"
508 { (yyval.opval) = newOP(OP_NULL,0); PL_expect = XSTATE;
509 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
510 ;}
511 break;
512
513 case 73:
514#line 506 "madly.y"
515 { (yyval.opval) = package((yyvsp[-1].opval));
516 token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
517 token_getmad((yyvsp[0].tkval),(yyval.opval),';');
518 ;}
519 break;
520
521 case 74:
522#line 513 "madly.y"
523 { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
524 break;
525
526 case 75:
527#line 515 "madly.y"
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);
533 ;}
534 break;
535
536 case 76:
537#line 525 "madly.y"
538 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
539 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
540 ;}
541 break;
542
543 case 77:
544#line 529 "madly.y"
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');
547 ;}
548 break;
549
550 case 78:
551#line 533 "madly.y"
552 { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
553 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
554 ;}
555 break;
556
557 case 80:
558#line 541 "madly.y"
559 { OP* op = newNULLLIST();
560 token_getmad((yyvsp[0].tkval),op,',');
561 (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
562 ;}
563 break;
564
565 case 81:
566#line 546 "madly.y"
567 {
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));
571 ;}
572 break;
573
574 case 83:
575#line 556 "madly.y"
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');
579 ;}
580 break;
581
582 case 84:
583#line 561 "madly.y"
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),')');
589 ;}
590 break;
591
592 case 85:
593#line 568 "madly.y"
594 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
595 append_elem(OP_LIST,
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),')');
601 ;}
602 break;
603
604 case 86:
605#line 577 "madly.y"
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');
610 ;}
611 break;
612
613 case 87:
614#line 583 "madly.y"
615 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
616 append_elem(OP_LIST,
617 prepend_elem(OP_LIST, (yyvsp[-1].opval), (yyvsp[0].opval)),
618 newUNOP(OP_METHOD, 0, (yyvsp[-2].opval))));
619 ;}
620 break;
621
622 case 88:
623#line 589 "madly.y"
624 { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
625 append_elem(OP_LIST,
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),')');
630 ;}
631 break;
632
633 case 89:
634#line 597 "madly.y"
635 { (yyval.opval) = convert(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
636 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
637 ;}
638 break;
639
640 case 90:
641#line 601 "madly.y"
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),')');
646 ;}
647 break;
648
649 case 91:
650#line 607 "madly.y"
651 { (yyvsp[0].opval) = newANONATTRSUB((yyvsp[-1].ival), 0, Nullop, (yyvsp[0].opval)); ;}
652 break;
653
654 case 92:
655#line 609 "madly.y"
656 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
657 append_elem(OP_LIST,
658 prepend_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)), (yyvsp[-4].opval)));
659 ;}
660 break;
661
662 case 95:
663#line 624 "madly.y"
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),'}');
669 ;}
670 break;
671
672 case 96:
673#line 631 "madly.y"
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),']');
677 ;}
678 break;
679
680 case 97:
681#line 636 "madly.y"
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),']');
688 ;}
689 break;
690
691 case 98:
692#line 644 "madly.y"
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),']');
698 ;}
699 break;
700
701 case 99:
702#line 651 "madly.y"
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),'}');
708 ;}
709 break;
710
711 case 100:
712#line 658 "madly.y"
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),'}');
721 ;}
722 break;
723
724 case 101:
725#line 668 "madly.y"
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),'}');
733 ;}
734 break;
735
736 case 102:
737#line 677 "madly.y"
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),')');
743 ;}
744 break;
745
746 case 103:
747#line 684 "madly.y"
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),')');
754 ;}
755 break;
756
757 case 104:
758#line 693 "madly.y"
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),')');
764 ;}
765 break;
766
767 case 105:
768#line 700 "madly.y"
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),')');
773 ;}
774 break;
775
776 case 106:
777#line 709 "madly.y"
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');
780 ;}
781 break;
782
783 case 107:
784#line 713 "madly.y"
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');
787 ;}
788 break;
789
790 case 108:
791#line 717 "madly.y"
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');
796 ;}
797 break;
798
799 case 109:
800#line 723 "madly.y"
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');
803 ;}
804 break;
805
806 case 110:
807#line 727 "madly.y"
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');
810 ;}
811 break;
812
813 case 111:
814#line 731 "madly.y"
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');
817 ;}
818 break;
819
820 case 112:
821#line 735 "madly.y"
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');
824 ;}
825 break;
826
827 case 113:
828#line 739 "madly.y"
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');
831 ;}
832 break;
833
834 case 114:
835#line 743 "madly.y"
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');
838 ;}
839 break;
840
841 case 115:
842#line 747 "madly.y"
843 { UNOP *op;
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');
850 ;}
851 break;
852
853 case 116:
854#line 756 "madly.y"
855 { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
856 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
857 ;}
858 break;
859
860 case 117:
861#line 760 "madly.y"
862 { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
863 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
864 ;}
865 break;
866
867 case 118:
868#line 764 "madly.y"
869 { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
870 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
871 ;}
872 break;
873
874 case 119:
875#line 768 "madly.y"
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,'~');
879 else
880 token_getmad((yyvsp[-1].tkval),(yyval.opval),'~');
881 ;}
882 break;
883
884 case 120:
885#line 778 "madly.y"
886 { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[0].opval)));
887 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
888 ;}
889 break;
890
891 case 121:
892#line 782 "madly.y"
893 { (yyval.opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
894 token_getmad((yyvsp[-1].tkval),(yyval.opval),'+');
895 ;}
896 break;
897
898 case 122:
899#line 786 "madly.y"
900 { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
901 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
902 ;}
903 break;
904
905 case 123:
906#line 790 "madly.y"
907 { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[0].opval)));
908 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
909 ;}
910 break;
911
912 case 124:
913#line 794 "madly.y"
914 { (yyval.opval) = newUNOP(OP_POSTINC, 0,
915 mod(scalar((yyvsp[-1].opval)), OP_POSTINC));
916 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
917 ;}
918 break;
919
920 case 125:
921#line 799 "madly.y"
922 { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
923 mod(scalar((yyvsp[-1].opval)), OP_POSTDEC));
924 token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
925 ;}
926 break;
927
928 case 126:
929#line 804 "madly.y"
930 { (yyval.opval) = newUNOP(OP_PREINC, 0,
931 mod(scalar((yyvsp[0].opval)), OP_PREINC));
932 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
933 ;}
934 break;
935
936 case 127:
937#line 809 "madly.y"
938 { (yyval.opval) = newUNOP(OP_PREDEC, 0,
939 mod(scalar((yyvsp[0].opval)), OP_PREDEC));
940 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
941 ;}
942 break;
943
944 case 128:
945#line 818 "madly.y"
946 { (yyval.opval) = newANONLIST((yyvsp[-1].opval));
947 token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
948 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
949 ;}
950 break;
951
952 case 129:
953#line 823 "madly.y"
954 { (yyval.opval) = newANONLIST(Nullop);
955 token_getmad((yyvsp[-1].tkval),(yyval.opval),'[');
956 token_getmad((yyvsp[0].tkval),(yyval.opval),']');
957 ;}
958 break;
959
960 case 130:
961#line 828 "madly.y"
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),'}');
966 ;}
967 break;
968
969 case 131:
970#line 834 "madly.y"
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),'}');
975 ;}
976 break;
977
978 case 132:
979#line 840 "madly.y"
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');
984 ;}
985 break;
986
987 case 133:
988#line 850 "madly.y"
989 { (yyval.opval) = dofile((yyvsp[0].opval), (yyvsp[-1].tkval));
990 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
991 ;}
992 break;
993
994 case 134:
995#line 854 "madly.y"
996 { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[0].opval)));
997 token_getmad((yyvsp[-1].tkval),(yyval.opval),'D');
998 ;}
999 break;
1000
1001 case 135:
1002#line 858 "madly.y"
1003 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1004 OPf_SPECIAL|OPf_STACKED,
1005 prepend_elem(OP_LIST,
1006 scalar(newCVREF(
1007 (OPpENTERSUB_AMPER<<8),
1008 scalar((yyvsp[-2].opval))
1009 )),Nullop)); dep();
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),')');
1013 ;}
1014 break;
1015
1016 case 136:
1017#line 870 "madly.y"
1018 { (yyval.opval) = newUNOP(OP_ENTERSUB,
1019 OPf_SPECIAL|OPf_STACKED,
1020 append_elem(OP_LIST,
1021 (yyvsp[-1].opval),
1022 scalar(newCVREF(
1023 (OPpENTERSUB_AMPER<<8),
1024 scalar((yyvsp[-3].opval))
1025 )))); dep();
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),')');
1029 ;}
1030 break;
1031
1032 case 137:
1033#line 883 "madly.y"
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),')');
1040 ;}
1041 break;
1042
1043 case 138:
1044#line 891 "madly.y"
1045 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1046 prepend_elem(OP_LIST,
1047 (yyvsp[-1].opval),
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),')');
1052 ;}
1053 break;
1054
1055 case 143:
1056#line 907 "madly.y"
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),':');
1060 ;}
1061 break;
1062
1063 case 144:
1064#line 912 "madly.y"
1065 { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[0].opval),OP_REFGEN));
1066 token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1067 ;}
1068 break;
1069
1070 case 145:
1071#line 916 "madly.y"
1072 { (yyval.opval) = (yyvsp[0].opval); ;}
1073 break;
1074
1075 case 146:
1076#line 918 "madly.y"
1077 { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1078 token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1079 ;}
1080 break;
1081
1082 case 147:
1083#line 922 "madly.y"
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),')');
1087 ;}
1088 break;
1089
1090 case 148:
1091#line 927 "madly.y"
1092 { (yyval.opval) = sawparens(newNULLLIST());
1093 token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1094 token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1095 ;}
1096 break;
1097
1098 case 149:
1099#line 932 "madly.y"
1100 { (yyval.opval) = (yyvsp[0].opval); ;}
1101 break;
1102
1103 case 150:
1104#line 934 "madly.y"
1105 { (yyval.opval) = (yyvsp[0].opval); ;}
1106 break;
1107
1108 case 151:
1109#line 936 "madly.y"
1110 { (yyval.opval) = (yyvsp[0].opval); ;}
1111 break;
1112
1113 case 152:
1114#line 938 "madly.y"
1115 { (yyval.opval) = (yyvsp[0].opval); ;}
1116 break;
1117
1118 case 153:
1119#line 940 "madly.y"
1120 { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[0].opval), OP_AV2ARYLEN));;}
1121 break;
1122
1123 case 154:
1124#line 942 "madly.y"
1125 { (yyval.opval) = (yyvsp[0].opval); ;}
1126 break;
1127
1128 case 155:
1129#line 944 "madly.y"
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),']');
1135 ;}
1136 break;
1137
1138 case 156:
1139#line 951 "madly.y"
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),']');
1145 ;}
1146 break;
1147
1148 case 157:
1149#line 958 "madly.y"
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),']');
1157 ;}
1158 break;
1159
1160 case 158:
1161#line 967 "madly.y"
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),'}');
1171 ;}
1172 break;
1173
1174 case 159:
1175#line 978 "madly.y"
1176 { (yyval.opval) = (yyvsp[0].opval); ;}
1177 break;
1178
1179 case 160:
1180#line 980 "madly.y"
1181 { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[0].opval))); ;}
1182 break;
1183
1184 case 161:
1185#line 982 "madly.y"
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),')');
1189 ;}
1190 break;
1191
1192 case 162:
1193#line 987 "madly.y"
1194 { OP* op;
1195 (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1196 append_elem(OP_LIST, (yyvsp[-1].opval), scalar((yyvsp[-3].opval))));
1197 op = (yyval.opval);
1198 if (op->op_type == OP_CONST) { /* defeat const fold */
1199 op = (OP*)op->op_madprop->mad_val;
1200 }
1201 token_getmad((yyvsp[-2].tkval),op,'(');
1202 token_getmad((yyvsp[0].tkval),op,')');
1203 ;}
1204 break;
1205
1206 case 163:
1207#line 998 "madly.y"
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');
1211 ;}
1212 break;
1213
1214 case 164:
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');
1219 ;}
1220 break;
1221
1222 case 165:
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');
1226 ;}
1227 break;
1228
1229 case 166:
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');
1233 ;}
1234 break;
1235
1236 case 167:
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');
1240 ;}
1241 break;
1242
1243 case 168:
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');
1247 ;}
1248 break;
1249
1250 case 169:
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');
1254 ;}
1255 break;
1256
1257 case 170:
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))));
1261 ;}
1262 break;
1263
1264 case 171:
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');
1268 ;}
1269 break;
1270
1271 case 172:
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),')');
1277 ;}
1278 break;
1279
1280 case 173:
1281#line 1042 "madly.y"
1282 { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1283 scalar((yyvsp[0].opval))); ;}
1284 break;
1285
1286 case 174:
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),')');
1292 ;}
1293 break;
1294
1295 case 175:
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),')');
1301 ;}
1302 break;
1303
1304 case 176:
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),')');
1309 ;}
1310 break;
1311
1312 case 179:
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;
1318 ;}
1319 break;
1320
1321 case 180:
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');
1325 ;}
1326 break;
1327
1328 case 181:
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),')');
1333 ;}
1334 break;
1335
1336 case 182:
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),')');
1341 ;}
1342 break;
1343
1344 case 183:
1345#line 1090 "madly.y"
1346 { (yyval.opval) = (yyvsp[0].opval); ;}
1347 break;
1348
1349 case 184:
1350#line 1092 "madly.y"
1351 { (yyval.opval) = (yyvsp[0].opval); ;}
1352 break;
1353
1354 case 185:
1355#line 1094 "madly.y"
1356 { (yyval.opval) = (yyvsp[0].opval); ;}
1357 break;
1358
1359 case 186:
1360#line 1099 "madly.y"
1361 { (yyval.opval) = Nullop; ;}
1362 break;
1363
1364 case 187:
1365#line 1101 "madly.y"
1366 { (yyval.opval) = (yyvsp[0].opval); ;}
1367 break;
1368
1369 case 188:
1370#line 1105 "madly.y"
1371 { (yyval.opval) = Nullop; ;}
1372 break;
1373
1374 case 189:
1375#line 1107 "madly.y"
1376 { (yyval.opval) = (yyvsp[0].opval); ;}
1377 break;
1378
1379 case 190:
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);
1384 ;}
1385 break;
1386
1387 case 191:
1388#line 1118 "madly.y"
1389 { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;}
1390 break;
1391
1392 case 192:
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),'&');
1396 ;}
1397 break;
1398
1399 case 193:
1400#line 1128 "madly.y"
1401 { (yyval.opval) = newSVREF((yyvsp[0].opval));
1402 token_getmad((yyvsp[-1].tkval),(yyval.opval),'$');
1403 ;}
1404 break;
1405
1406 case 194:
1407#line 1134 "madly.y"
1408 { (yyval.opval) = newAVREF((yyvsp[0].opval));
1409 token_getmad((yyvsp[-1].tkval),(yyval.opval),'@');
1410 ;}
1411 break;
1412
1413 case 195:
1414#line 1140 "madly.y"
1415 { (yyval.opval) = newHVREF((yyvsp[0].opval));
1416 token_getmad((yyvsp[-1].tkval),(yyval.opval),'%');
1417 ;}
1418 break;
1419
1420 case 196:
1421#line 1146 "madly.y"
1422 { (yyval.opval) = newAVREF((yyvsp[0].opval));
1423 token_getmad((yyvsp[-1].tkval),(yyval.opval),'l');
1424 ;}
1425 break;
1426
1427 case 197:
1428#line 1152 "madly.y"
1429 { (yyval.opval) = newGVREF(0,(yyvsp[0].opval));
1430 token_getmad((yyvsp[-1].tkval),(yyval.opval),'*');
1431 ;}
1432 break;
1433
1434 case 198:
1435#line 1159 "madly.y"
1436 { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1437 break;
1438
1439 case 199:
1440#line 1161 "madly.y"
1441 { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1442 break;
1443
1444 case 200:
1445#line 1163 "madly.y"
1446 { (yyval.opval) = scope((yyvsp[0].opval)); ;}
1447 break;
1448
1449 case 201:
1450#line 1166 "madly.y"
1451 { (yyval.opval) = (yyvsp[0].opval); ;}
1452 break;
1453
1454
1455 default: break;
1456