This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: Merge WinCE into Win32 directory and remove the the WinCE directory
[perl5.git] / madly.act
1 case 2:
2 #line 102 "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 107 "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 116 "madly.y"
18     { (yyval.ival) = block_start(TRUE); ;}
19     break;
20
21   case 5:
22 #line 120 "madly.y"
23     { (yyval.ival) = (I32) allocmy("$_"); ;}
24     break;
25
26   case 6:
27 #line 124 "madly.y"
28     {
29                     PL_expect = XSTATE; (yyval.ival) = block_start(TRUE);
30                 ;}
31     break;
32
33   case 7:
34 #line 131 "madly.y"
35     { if (PL_copline > (line_t)((yyvsp[-3].tkval))->tk_lval.ival)
36                               PL_copline = (line_t)((yyvsp[-3].tkval))->tk_lval.ival;
37                           (yyval.opval) = block_end((yyvsp[-2].ival), (yyvsp[-1].opval));
38                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
39                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
40                         ;}
41     break;
42
43   case 8:
44 #line 140 "madly.y"
45     { (yyval.ival) = block_start(FALSE); ;}
46     break;
47
48   case 9:
49 #line 144 "madly.y"
50     { (yyval.ival) = PL_savestack_ix; ;}
51     break;
52
53   case 10:
54 #line 148 "madly.y"
55     { (yyval.opval) = Nullop; ;}
56     break;
57
58   case 11:
59 #line 151 "madly.y"
60     { (yyval.opval) = append_list(OP_LINESEQ,
61                                 (LISTOP*)(yyvsp[-1].opval), (LISTOP*)(yyvsp[0].opval)); ;}
62     break;
63
64   case 12:
65 #line 154 "madly.y"
66     {   LEAVE_SCOPE((yyvsp[-1].ival));
67                             (yyval.opval) = append_list(OP_LINESEQ,
68                                 (LISTOP*)(yyvsp[-2].opval), (LISTOP*)(yyvsp[0].opval));
69                             PL_pad_reset_pending = TRUE;
70                             if ((yyvsp[-2].opval) && (yyvsp[0].opval)) PL_hints |= HINT_BLOCK_SCOPE; ;}
71     break;
72
73   case 13:
74 #line 163 "madly.y"
75     { (yyval.opval) = newSTATEOP(0, ((yyvsp[-1].tkval))->tk_lval.pval, (yyvsp[0].opval));
76                           token_getmad((yyvsp[-1].tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
77     break;
78
79   case 15:
80 #line 167 "madly.y"
81     { (yyval.opval) = (yyvsp[0].opval); ;}
82     break;
83
84   case 16:
85 #line 169 "madly.y"
86     { (yyval.opval) = newSTATEOP(0, ((yyvsp[-1].tkval))->tk_lval.pval, (yyvsp[0].opval)); ;}
87     break;
88
89   case 17:
90 #line 171 "madly.y"
91     {
92                           if (((yyvsp[-1].tkval))->tk_lval.pval) {
93                               (yyval.opval) = newSTATEOP(0, ((yyvsp[-1].tkval))->tk_lval.pval, newOP(OP_NULL, 0));
94                               token_getmad((yyvsp[-1].tkval),(yyval.opval),'L');
95                               token_getmad((yyvsp[0].tkval),((LISTOP*)(yyval.opval))->op_first,';');
96                           }
97                           else {
98                               (yyval.opval) = newOP(OP_NULL, 0);
99                               PL_copline = NOLINE;
100                               token_free((yyvsp[-1].tkval));
101                               token_getmad((yyvsp[0].tkval),(yyval.opval),';');
102                           }
103                           PL_expect = XSTATE;
104                         ;}
105     break;
106
107   case 18:
108 #line 186 "madly.y"
109     { OP* op;
110                           (yyval.opval) = newSTATEOP(0, ((yyvsp[-2].tkval))->tk_lval.pval, (yyvsp[-1].opval));
111                           PL_expect = XSTATE;
112                           /* sideff might already have a nexstate */
113                           op = ((LISTOP*)(yyval.opval))->op_first;
114                           if (op) {
115                               while (op->op_sibling &&
116                                  op->op_sibling->op_type == OP_NEXTSTATE)
117                                     op = op->op_sibling;
118                               token_getmad((yyvsp[-2].tkval),op,'L');
119                               token_getmad((yyvsp[0].tkval),op,';');
120                           }
121                         ;}
122     break;
123
124   case 19:
125 #line 203 "madly.y"
126     { (yyval.opval) = Nullop; ;}
127     break;
128
129   case 20:
130 #line 205 "madly.y"
131     { (yyval.opval) = (yyvsp[0].opval); ;}
132     break;
133
134   case 21:
135 #line 207 "madly.y"
136     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
137                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
138                         ;}
139     break;
140
141   case 22:
142 #line 211 "madly.y"
143     { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[0].opval), (yyvsp[-2].opval));
144                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'i');
145                         ;}
146     break;
147
148   case 23:
149 #line 215 "madly.y"
150     { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((yyvsp[0].opval)), (yyvsp[-2].opval));
151                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
152                         ;}
153     break;
154
155   case 24:
156 #line 219 "madly.y"
157     { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (yyvsp[0].opval), (yyvsp[-2].opval));
158                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'w');
159                         ;}
160     break;
161
162   case 25:
163 #line 223 "madly.y"
164     { (yyval.opval) = newFOROP(0, Nullch, (line_t)((yyvsp[-1].tkval))->tk_lval.ival,
165                                         Nullop, (yyvsp[0].opval), (yyvsp[-2].opval), Nullop);
166                           token_getmad((yyvsp[-1].tkval),((LISTOP*)(yyval.opval))->op_first->op_sibling,'w');
167                         ;}
168     break;
169
170   case 26:
171 #line 231 "madly.y"
172     { (yyval.opval) = Nullop; ;}
173     break;
174
175   case 27:
176 #line 233 "madly.y"
177     { ((yyvsp[0].opval))->op_flags |= OPf_PARENS; (yyval.opval) = scope((yyvsp[0].opval));
178                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
179                         ;}
180     break;
181
182   case 28:
183 #line 237 "madly.y"
184     { PL_copline = (line_t)((yyvsp[-5].tkval))->tk_lval.ival;
185                             (yyval.opval) = newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval));
186                             PL_hints |= HINT_BLOCK_SCOPE;
187                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'I');
188                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'(');
189                           token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
190                         ;}
191     break;
192
193   case 29:
194 #line 248 "madly.y"
195     { PL_copline = (line_t)((yyvsp[-6].tkval))->tk_lval.ival;
196                             (yyval.opval) = block_end((yyvsp[-4].ival),
197                                    newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval)));
198                           token_getmad((yyvsp[-6].tkval),(yyval.opval),'I');
199                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
200                           token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
201                         ;}
202     break;
203
204   case 30:
205 #line 256 "madly.y"
206     { PL_copline = (line_t)((yyvsp[-6].tkval))->tk_lval.ival;
207                             (yyval.opval) = block_end((yyvsp[-4].ival),
208                                    newCONDOP(0, (yyvsp[-3].opval), scope((yyvsp[-1].opval)), (yyvsp[0].opval)));
209                           token_getmad((yyvsp[-6].tkval),(yyval.opval),'I');
210                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
211                           token_getmad((yyvsp[-2].tkval),(yyval.opval),')');
212                         ;}
213     break;
214
215   case 31:
216 #line 267 "madly.y"
217     { (yyval.opval) = block_end((yyvsp[-3].ival),
218                 newWHENOP((yyvsp[-2].opval), scope((yyvsp[0].opval)))); ;}
219     break;
220
221   case 32:
222 #line 270 "madly.y"
223     { (yyval.opval) = newWHENOP(0, scope((yyvsp[0].opval))); ;}
224     break;
225
226   case 33:
227 #line 275 "madly.y"
228     { (yyval.opval) = Nullop; ;}
229     break;
230
231   case 34:
232 #line 277 "madly.y"
233     { (yyval.opval) = scope((yyvsp[0].opval));
234                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
235                         ;}
236     break;
237
238   case 35:
239 #line 284 "madly.y"
240     { OP *innerop;
241                           PL_copline = (line_t)(yyvsp[-7].tkval);
242                             (yyval.opval) = block_end((yyvsp[-5].ival),
243                                    newSTATEOP(0, ((yyvsp[-8].tkval))->tk_lval.pval,
244                                      innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
245                                                 ((yyvsp[-7].tkval))->tk_lval.ival, (yyvsp[-4].opval), (yyvsp[-1].opval), (yyvsp[0].opval), (yyvsp[-2].ival))));
246                           token_getmad((yyvsp[-8].tkval),innerop,'L');
247                           token_getmad((yyvsp[-7].tkval),innerop,'W');
248                           token_getmad((yyvsp[-6].tkval),innerop,'(');
249                           token_getmad((yyvsp[-3].tkval),innerop,')');
250                         ;}
251     break;
252
253   case 36:
254 #line 297 "madly.y"
255     { OP *innerop;
256                           PL_copline = (line_t)(yyvsp[-7].tkval);
257                             (yyval.opval) = block_end((yyvsp[-5].ival),
258                                    newSTATEOP(0, ((yyvsp[-8].tkval))->tk_lval.pval,
259                                      newWHILEOP(0, 1, (LOOP*)Nullop,
260                                                 ((yyvsp[-7].tkval))->tk_lval.ival, (yyvsp[-4].opval), (yyvsp[-1].opval), (yyvsp[0].opval), (yyvsp[-2].ival))));
261                           token_getmad((yyvsp[-8].tkval),innerop,'L');
262                           token_getmad((yyvsp[-7].tkval),innerop,'W');
263                           token_getmad((yyvsp[-6].tkval),innerop,'(');
264                           token_getmad((yyvsp[-3].tkval),innerop,')');
265                         ;}
266     break;
267
268   case 37:
269 #line 309 "madly.y"
270     { OP *innerop;
271                           (yyval.opval) = block_end((yyvsp[-6].ival),
272                              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)));
273                           token_getmad((yyvsp[-9].tkval),((LISTOP*)innerop)->op_first,'L');
274                           token_getmad((yyvsp[-8].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
275                           token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first->op_sibling,'d');
276                           token_getmad((yyvsp[-4].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
277                           token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
278                         ;}
279     break;
280
281   case 38:
282 #line 319 "madly.y"
283     { OP *innerop;
284                           (yyval.opval) = block_end((yyvsp[-4].ival),
285                              innerop = newFOROP(0, ((yyvsp[-8].tkval))->tk_lval.pval, (line_t)((yyvsp[-7].tkval))->tk_lval.ival, mod((yyvsp[-6].opval), OP_ENTERLOOP),
286                                           (yyvsp[-3].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
287                           token_getmad((yyvsp[-8].tkval),((LISTOP*)innerop)->op_first,'L');
288                           token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
289                           token_getmad((yyvsp[-5].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
290                           token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
291                         ;}
292     break;
293
294   case 39:
295 #line 329 "madly.y"
296     { OP *innerop;
297                           (yyval.opval) = block_end((yyvsp[-4].ival),
298                              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)));
299                           token_getmad((yyvsp[-7].tkval),((LISTOP*)innerop)->op_first,'L');
300                           token_getmad((yyvsp[-6].tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
301                           token_getmad((yyvsp[-5].tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
302                           token_getmad((yyvsp[-2].tkval),((LISTOP*)innerop)->op_first->op_sibling,')');
303                         ;}
304     break;
305
306   case 40:
307 #line 340 "madly.y"
308     { OP *forop;
309                           PL_copline = (line_t)((yyvsp[-10].tkval))->tk_lval.ival;
310                           forop = newSTATEOP(0, ((yyvsp[-11].tkval))->tk_lval.pval,
311                                             newWHILEOP(0, 1, (LOOP*)Nullop,
312                                                 ((yyvsp[-10].tkval))->tk_lval.ival, scalar((yyvsp[-5].opval)),
313                                                 (yyvsp[0].opval), (yyvsp[-2].opval), (yyvsp[-3].ival)));
314                           if (!(yyvsp[-7].opval))
315                                 (yyvsp[-7].opval) = newOP(OP_NULL, 0);
316                           forop = newUNOP(OP_NULL, 0, append_elem(OP_LINESEQ,
317                                 newSTATEOP(0,
318                                            (((yyvsp[-11].tkval))->tk_lval.pval
319                                            ?savepv(((yyvsp[-11].tkval))->tk_lval.pval):Nullch),
320                                            (yyvsp[-7].opval)),
321                                 forop));
322
323                           token_getmad((yyvsp[-10].tkval),forop,'3');
324                           token_getmad((yyvsp[-9].tkval),forop,'(');
325                           token_getmad((yyvsp[-6].tkval),forop,'1');
326                           token_getmad((yyvsp[-4].tkval),forop,'2');
327                           token_getmad((yyvsp[-1].tkval),forop,')');
328                           token_getmad((yyvsp[-11].tkval),forop,'L');
329                           (yyval.opval) = block_end((yyvsp[-8].ival), forop); ;}
330     break;
331
332   case 41:
333 #line 363 "madly.y"
334     { (yyval.opval) = newSTATEOP(0, ((yyvsp[-2].tkval))->tk_lval.pval,
335                                  newWHILEOP(0, 1, (LOOP*)Nullop,
336                                             NOLINE, Nullop, (yyvsp[-1].opval), (yyvsp[0].opval), 0));
337                           token_getmad((yyvsp[-2].tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
338     break;
339
340   case 42:
341 #line 371 "madly.y"
342     { PL_copline = (line_t) (yyvsp[-6].tkval);
343                             (yyval.opval) = block_end((yyvsp[-4].ival),
344                                 newSTATEOP(0, ((yyvsp[-7].tkval))->tk_lval.pval,
345                                     newGIVENOP((yyvsp[-2].opval), scope((yyvsp[0].opval)),
346                                         (PADOFFSET) (yyvsp[-3].ival)) )); ;}
347     break;
348
349   case 43:
350 #line 380 "madly.y"
351     { (yyval.ival) = (PL_min_intro_pending &&
352                             PL_max_intro_pending >=  PL_min_intro_pending);
353                           intro_my(); ;}
354     break;
355
356   case 44:
357 #line 386 "madly.y"
358     { (yyval.opval) = Nullop; ;}
359     break;
360
361   case 46:
362 #line 392 "madly.y"
363     { YYSTYPE tmplval;
364                           (void)scan_num("1", &tmplval);
365                           (yyval.opval) = tmplval.opval; ;}
366     break;
367
368   case 48:
369 #line 400 "madly.y"
370     { (yyval.opval) = invert(scalar((yyvsp[0].opval))); ;}
371     break;
372
373   case 49:
374 #line 405 "madly.y"
375     { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
376     break;
377
378   case 50:
379 #line 409 "madly.y"
380     { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
381     break;
382
383   case 51:
384 #line 413 "madly.y"
385     { (yyval.opval) = (yyvsp[0].opval); intro_my(); ;}
386     break;
387
388   case 52:
389 #line 418 "madly.y"
390     { YYSTYPE tmplval;
391                           tmplval.pval = Nullch;
392                           (yyval.tkval) = newTOKEN(OP_NULL, tmplval, 0); ;}
393     break;
394
395   case 54:
396 #line 426 "madly.y"
397     { (yyval.opval) = (yyvsp[0].opval); ;}
398     break;
399
400   case 55:
401 #line 428 "madly.y"
402     { (yyval.opval) = (yyvsp[0].opval); ;}
403     break;
404
405   case 56:
406 #line 430 "madly.y"
407     { (yyval.opval) = (yyvsp[0].opval); ;}
408     break;
409
410   case 57:
411 #line 432 "madly.y"
412     { (yyval.opval) = (yyvsp[0].opval); ;}
413     break;
414
415   case 58:
416 #line 434 "madly.y"
417     { (yyval.opval) = (yyvsp[0].opval); ;}
418     break;
419
420   case 59:
421 #line 436 "madly.y"
422     { (yyval.opval) = (yyvsp[0].opval); ;}
423     break;
424
425   case 60:
426 #line 440 "madly.y"
427     { (yyval.opval) = newOP(OP_NULL,0);
428                           token_getmad((yyvsp[0].tkval),(yyval.opval),'p');
429                         ;}
430     break;
431
432   case 61:
433 #line 446 "madly.y"
434     { (yyval.opval) = newFORM((yyvsp[-2].ival), (yyvsp[-1].opval), (yyvsp[0].opval));
435                           prepend_madprops((yyvsp[-3].tkval)->tk_mad, (yyval.opval), 'F');
436                           (yyvsp[-3].tkval)->tk_mad = 0;
437                           token_free((yyvsp[-3].tkval));
438                         ;}
439     break;
440
441   case 62:
442 #line 453 "madly.y"
443     { (yyval.opval) = (yyvsp[0].opval); ;}
444     break;
445
446   case 63:
447 #line 454 "madly.y"
448     { (yyval.opval) = Nullop; ;}
449     break;
450
451   case 64:
452 #line 459 "madly.y"
453     { (yyval.opval) = newMYSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
454                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
455                         ;}
456     break;
457
458   case 65:
459 #line 466 "madly.y"
460     { OP* o = newSVOP(OP_ANONCODE, 0,
461                             (SV*)newATTRSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
462                           (yyval.opval) = newOP(OP_NULL,0);
463                           op_getmad(o,(yyval.opval),'&');
464                           op_getmad((yyvsp[-3].opval),(yyval.opval),'n');
465                           op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
466                           op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
467                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
468                           append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 0);
469                           (yyvsp[0].opval)->op_madprop = 0;
470                         ;}
471     break;
472
473   case 66:
474 #line 480 "madly.y"
475     { (yyval.ival) = start_subparse(FALSE, 0); ;}
476     break;
477
478   case 67:
479 #line 484 "madly.y"
480     { (yyval.ival) = start_subparse(FALSE, CVf_ANON); ;}
481     break;
482
483   case 68:
484 #line 488 "madly.y"
485     { (yyval.ival) = start_subparse(TRUE, 0); ;}
486     break;
487
488   case 69:
489 #line 492 "madly.y"
490     { const char *const name = SvPV_nolen_const(((SVOP*)(yyvsp[0].opval))->op_sv);
491                           if (strEQ(name, "BEGIN") || strEQ(name, "END")
492                               || strEQ(name, "INIT") || strEQ(name, "CHECK"))
493                               CvSPECIAL_on(PL_compcv);
494                           (yyval.opval) = (yyvsp[0].opval); ;}
495     break;
496
497   case 70:
498 #line 501 "madly.y"
499     { (yyval.opval) = Nullop; ;}
500     break;
501
502   case 72:
503 #line 507 "madly.y"
504     { (yyval.opval) = Nullop; ;}
505     break;
506
507   case 73:
508 #line 509 "madly.y"
509     { (yyval.opval) = (yyvsp[0].opval);
510                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
511                         ;}
512     break;
513
514   case 74:
515 #line 513 "madly.y"
516     { (yyval.opval) = newOP(OP_NULL, 0);
517                           token_getmad((yyvsp[0].tkval),(yyval.opval),':');
518                         ;}
519     break;
520
521   case 75:
522 #line 520 "madly.y"
523     { (yyval.opval) = (yyvsp[0].opval);
524                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
525                         ;}
526     break;
527
528   case 76:
529 #line 524 "madly.y"
530     { (yyval.opval) = newOP(OP_NULL, 0);
531                           token_getmad((yyvsp[0].tkval),(yyval.opval),':');
532                         ;}
533     break;
534
535   case 77:
536 #line 530 "madly.y"
537     { (yyval.opval) = (yyvsp[0].opval); ;}
538     break;
539
540   case 78:
541 #line 531 "madly.y"
542     { (yyval.opval) = newOP(OP_NULL,0); PL_expect = XSTATE;
543                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
544                         ;}
545     break;
546
547   case 79:
548 #line 537 "madly.y"
549     { (yyval.opval) = package((yyvsp[-1].opval));
550                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
551                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
552                         ;}
553     break;
554
555   case 80:
556 #line 544 "madly.y"
557     { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
558     break;
559
560   case 81:
561 #line 546 "madly.y"
562     { (yyval.opval) = utilize(((yyvsp[-6].tkval))->tk_lval.ival, (yyvsp[-5].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval));
563                           token_getmad((yyvsp[-6].tkval),(yyval.opval),'o');
564                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
565                           if (PL_rsfp_filters && AvFILLp(PL_rsfp_filters) >= 0)
566                               append_madprops(newMADPROP('!', MAD_PV, "", 0), (yyval.opval), 0);
567                         ;}
568     break;
569
570   case 82:
571 #line 556 "madly.y"
572     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
573                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
574                         ;}
575     break;
576
577   case 83:
578 #line 560 "madly.y"
579     { (yyval.opval) = newLOGOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
580                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
581                         ;}
582     break;
583
584   case 84:
585 #line 564 "madly.y"
586     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
587                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
588                         ;}
589     break;
590
591   case 86:
592 #line 572 "madly.y"
593     { OP* op = newNULLLIST();
594                           token_getmad((yyvsp[0].tkval),op,',');
595                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
596                         ;}
597     break;
598
599   case 87:
600 #line 577 "madly.y"
601     { 
602                           (yyvsp[0].opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
603                           token_getmad((yyvsp[-1].tkval),(yyvsp[0].opval),',');
604                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval));
605                         ;}
606     break;
607
608   case 89:
609 #line 587 "madly.y"
610     { (yyval.opval) = convert(((yyvsp[-2].tkval))->tk_lval.ival, OPf_STACKED,
611                                 prepend_elem(OP_LIST, newGVREF(((yyvsp[-2].tkval))->tk_lval.ival,(yyvsp[-1].opval)), (yyvsp[0].opval)) );
612                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
613                         ;}
614     break;
615
616   case 90:
617 #line 592 "madly.y"
618     { (yyval.opval) = convert(((yyvsp[-4].tkval))->tk_lval.ival, OPf_STACKED,
619                                 prepend_elem(OP_LIST, newGVREF(((yyvsp[-4].tkval))->tk_lval.ival,(yyvsp[-2].opval)), (yyvsp[-1].opval)) );
620                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
621                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'(');
622                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
623                         ;}
624     break;
625
626   case 91:
627 #line 599 "madly.y"
628     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
629                                 append_elem(OP_LIST,
630                                     prepend_elem(OP_LIST, scalar((yyvsp[-5].opval)), (yyvsp[-1].opval)),
631                                     newUNOP(OP_METHOD, 0, (yyvsp[-3].opval))));
632                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'A');
633                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
634                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
635                         ;}
636     break;
637
638   case 92:
639 #line 608 "madly.y"
640     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
641                                 append_elem(OP_LIST, scalar((yyvsp[-2].opval)),
642                                     newUNOP(OP_METHOD, 0, (yyvsp[0].opval))));
643                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'A');
644                         ;}
645     break;
646
647   case 93:
648 #line 614 "madly.y"
649     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
650                                 append_elem(OP_LIST,
651                                     prepend_elem(OP_LIST, (yyvsp[-1].opval), (yyvsp[0].opval)),
652                                     newUNOP(OP_METHOD, 0, (yyvsp[-2].opval))));
653                         ;}
654     break;
655
656   case 94:
657 #line 620 "madly.y"
658     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
659                                 append_elem(OP_LIST,
660                                     prepend_elem(OP_LIST, (yyvsp[-3].opval), (yyvsp[-1].opval)),
661                                     newUNOP(OP_METHOD, 0, (yyvsp[-4].opval))));
662                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
663                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
664                         ;}
665     break;
666
667   case 95:
668 #line 628 "madly.y"
669     { (yyval.opval) = convert(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
670                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
671                         ;}
672     break;
673
674   case 96:
675 #line 632 "madly.y"
676     { (yyval.opval) = convert(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
677                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
678                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
679                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
680                         ;}
681     break;
682
683   case 97:
684 #line 638 "madly.y"
685     { (yyvsp[0].opval) = newANONATTRSUB((yyvsp[-1].ival), 0, Nullop, (yyvsp[0].opval)); ;}
686     break;
687
688   case 98:
689 #line 640 "madly.y"
690     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
691                                  append_elem(OP_LIST,
692                                    prepend_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)), (yyvsp[-4].opval)));
693                         ;}
694     break;
695
696   case 101:
697 #line 655 "madly.y"
698     { (yyval.opval) = newBINOP(OP_GELEM, 0, (yyvsp[-4].opval), scalar((yyvsp[-2].opval)));
699                             PL_expect = XOPERATOR;
700                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
701                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
702                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
703                         ;}
704     break;
705
706   case 102:
707 #line 662 "madly.y"
708     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((yyvsp[-3].opval)), scalar((yyvsp[-1].opval)));
709                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
710                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
711                         ;}
712     break;
713
714   case 103:
715 #line 667 "madly.y"
716     { (yyval.opval) = newBINOP(OP_AELEM, 0,
717                                         ref(newAVREF((yyvsp[-4].opval)),OP_RV2AV),
718                                         scalar((yyvsp[-1].opval)));
719                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
720                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
721                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
722                         ;}
723     break;
724
725   case 104:
726 #line 675 "madly.y"
727     { (yyval.opval) = newBINOP(OP_AELEM, 0,
728                                         ref(newAVREF((yyvsp[-3].opval)),OP_RV2AV),
729                                         scalar((yyvsp[-1].opval)));
730                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
731                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
732                         ;}
733     break;
734
735   case 105:
736 #line 682 "madly.y"
737     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((yyvsp[-4].opval)), jmaybe((yyvsp[-2].opval)));
738                             PL_expect = XOPERATOR;
739                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
740                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
741                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
742                         ;}
743     break;
744
745   case 106:
746 #line 689 "madly.y"
747     { (yyval.opval) = newBINOP(OP_HELEM, 0,
748                                         ref(newHVREF((yyvsp[-5].opval)),OP_RV2HV),
749                                         jmaybe((yyvsp[-2].opval)));
750                             PL_expect = XOPERATOR;
751                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'a');
752                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
753                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
754                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
755                         ;}
756     break;
757
758   case 107:
759 #line 699 "madly.y"
760     { (yyval.opval) = newBINOP(OP_HELEM, 0,
761                                         ref(newHVREF((yyvsp[-4].opval)),OP_RV2HV),
762                                         jmaybe((yyvsp[-2].opval)));
763                             PL_expect = XOPERATOR;
764                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
765                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
766                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
767                         ;}
768     break;
769
770   case 108:
771 #line 708 "madly.y"
772     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
773                                    newCVREF(0, scalar((yyvsp[-3].opval))));
774                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'a');
775                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
776                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
777                         ;}
778     break;
779
780   case 109:
781 #line 715 "madly.y"
782     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
783                                    append_elem(OP_LIST, (yyvsp[-1].opval),
784                                        newCVREF(0, scalar((yyvsp[-4].opval)))));
785                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
786                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
787                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
788                         ;}
789     break;
790
791   case 110:
792 #line 724 "madly.y"
793     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
794                                    append_elem(OP_LIST, (yyvsp[-1].opval),
795                                                newCVREF(0, scalar((yyvsp[-3].opval)))));
796                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
797                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
798                         ;}
799     break;
800
801   case 111:
802 #line 731 "madly.y"
803     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
804                                    newCVREF(0, scalar((yyvsp[-2].opval))));
805                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
806                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
807                         ;}
808     break;
809
810   case 112:
811 #line 737 "madly.y"
812     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), (yyvsp[-4].opval));
813                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
814                           token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
815                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
816                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
817                         ;}
818     break;
819
820   case 113:
821 #line 744 "madly.y"
822     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), Nullop);
823                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'(');
824                           token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
825                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
826                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
827                         ;}
828     break;
829
830   case 114:
831 #line 754 "madly.y"
832     { (yyval.opval) = newASSIGNOP(OPf_STACKED, (yyvsp[-2].opval), ((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[0].opval));
833                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
834                         ;}
835     break;
836
837   case 115:
838 #line 758 "madly.y"
839     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
840                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
841                         ;}
842     break;
843
844   case 116:
845 #line 762 "madly.y"
846     {   if (((yyvsp[-1].tkval))->tk_lval.ival != OP_REPEAT)
847                                 scalar((yyvsp[-2].opval));
848                             (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), scalar((yyvsp[0].opval)));
849                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
850                         ;}
851     break;
852
853   case 117:
854 #line 768 "madly.y"
855     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
856                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
857                         ;}
858     break;
859
860   case 118:
861 #line 772 "madly.y"
862     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
863                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
864                         ;}
865     break;
866
867   case 119:
868 #line 776 "madly.y"
869     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
870                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
871                         ;}
872     break;
873
874   case 120:
875 #line 780 "madly.y"
876     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
877                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
878                         ;}
879     break;
880
881   case 121:
882 #line 784 "madly.y"
883     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
884                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
885                         ;}
886     break;
887
888   case 122:
889 #line 788 "madly.y"
890     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
891                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
892                         ;}
893     break;
894
895   case 123:
896 #line 792 "madly.y"
897     { UNOP *op;
898                           (yyval.opval) = newRANGE(((yyvsp[-1].tkval))->tk_lval.ival, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
899                           op = (UNOP*)(yyval.opval);
900                           op = (UNOP*)op->op_first;     /* get to flop */
901                           op = (UNOP*)op->op_first;     /* get to flip */
902                           op = (UNOP*)op->op_first;     /* get to range */
903                           token_getmad((yyvsp[-1].tkval),(OP*)op,'o');
904                         ;}
905     break;
906
907   case 124:
908 #line 801 "madly.y"
909     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
910                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
911                         ;}
912     break;
913
914   case 125:
915 #line 805 "madly.y"
916     { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
917                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
918                         ;}
919     break;
920
921   case 126:
922 #line 809 "madly.y"
923     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
924                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
925                         ;}
926     break;
927
928   case 127:
929 #line 813 "madly.y"
930     { (yyval.opval) = bind_match(((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[-2].opval), (yyvsp[0].opval));
931                           if ((yyval.opval)->op_type == OP_NOT)
932                               token_getmad((yyvsp[-1].tkval),((UNOP*)(yyval.opval))->op_first,'~');
933                             else
934                               token_getmad((yyvsp[-1].tkval),(yyval.opval),'~');
935                         ;}
936     break;
937
938   case 128:
939 #line 823 "madly.y"
940     { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[0].opval)));
941                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
942                         ;}
943     break;
944
945   case 129:
946 #line 827 "madly.y"
947     { (yyval.opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
948                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'+');
949                         ;}
950     break;
951
952   case 130:
953 #line 831 "madly.y"
954     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
955                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
956                         ;}
957     break;
958
959   case 131:
960 #line 835 "madly.y"
961     { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[0].opval)));
962                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
963                         ;}
964     break;
965
966   case 132:
967 #line 839 "madly.y"
968     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
969                                         mod(scalar((yyvsp[-1].opval)), OP_POSTINC));
970                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
971                         ;}
972     break;
973
974   case 133:
975 #line 844 "madly.y"
976     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
977                                         mod(scalar((yyvsp[-1].opval)), OP_POSTDEC));
978                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
979                         ;}
980     break;
981
982   case 134:
983 #line 849 "madly.y"
984     { (yyval.opval) = newUNOP(OP_PREINC, 0,
985                                         mod(scalar((yyvsp[0].opval)), OP_PREINC));
986                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
987                         ;}
988     break;
989
990   case 135:
991 #line 854 "madly.y"
992     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
993                                         mod(scalar((yyvsp[0].opval)), OP_PREDEC));
994                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
995                         ;}
996     break;
997
998   case 136:
999 #line 863 "madly.y"
1000     { (yyval.opval) = newANONLIST((yyvsp[-1].opval));
1001                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1002                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1003                         ;}
1004     break;
1005
1006   case 137:
1007 #line 868 "madly.y"
1008     { (yyval.opval) = newANONLIST(Nullop);
1009                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'[');
1010                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1011                         ;}
1012     break;
1013
1014   case 138:
1015 #line 873 "madly.y"
1016     { (yyval.opval) = newANONHASH((yyvsp[-2].opval));
1017                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
1018                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1019                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1020                         ;}
1021     break;
1022
1023   case 139:
1024 #line 879 "madly.y"
1025     { (yyval.opval) = newANONHASH(Nullop);
1026                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'{');
1027                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1028                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1029                         ;}
1030     break;
1031
1032   case 140:
1033 #line 885 "madly.y"
1034     { (yyval.opval) = newANONATTRSUB((yyvsp[-3].ival), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
1035                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1036                           op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
1037                           op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
1038                         ;}
1039     break;
1040
1041   case 141:
1042 #line 895 "madly.y"
1043     { (yyval.opval) = dofile((yyvsp[0].opval), (yyvsp[-1].tkval));
1044                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1045                         ;}
1046     break;
1047
1048   case 142:
1049 #line 899 "madly.y"
1050     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[0].opval)));
1051                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'D');
1052                         ;}
1053     break;
1054
1055   case 143:
1056 #line 903 "madly.y"
1057     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1058                             OPf_SPECIAL|OPf_STACKED,
1059                             prepend_elem(OP_LIST,
1060                                 scalar(newCVREF(
1061                                     (OPpENTERSUB_AMPER<<8),
1062                                     scalar((yyvsp[-2].opval))
1063                                 )),Nullop)); dep();
1064                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1065                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1066                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1067                         ;}
1068     break;
1069
1070   case 144:
1071 #line 915 "madly.y"
1072     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1073                             OPf_SPECIAL|OPf_STACKED,
1074                             append_elem(OP_LIST,
1075                                 (yyvsp[-1].opval),
1076                                 scalar(newCVREF(
1077                                     (OPpENTERSUB_AMPER<<8),
1078                                     scalar((yyvsp[-3].opval))
1079                                 )))); dep();
1080                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1081                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1082                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1083                         ;}
1084     break;
1085
1086   case 145:
1087 #line 928 "madly.y"
1088     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1089                             prepend_elem(OP_LIST,
1090                                 scalar(newCVREF(0,scalar((yyvsp[-2].opval)))), Nullop)); dep();
1091                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1092                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1093                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1094                         ;}
1095     break;
1096
1097   case 146:
1098 #line 936 "madly.y"
1099     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1100                             prepend_elem(OP_LIST,
1101                                 (yyvsp[-1].opval),
1102                                 scalar(newCVREF(0,scalar((yyvsp[-3].opval)))))); dep();
1103                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1104                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1105                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1106                         ;}
1107     break;
1108
1109   case 151:
1110 #line 952 "madly.y"
1111     { (yyval.opval) = newCONDOP(0, (yyvsp[-4].opval), (yyvsp[-2].opval), (yyvsp[0].opval));
1112                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'?');
1113                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
1114                         ;}
1115     break;
1116
1117   case 152:
1118 #line 957 "madly.y"
1119     { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[0].opval),OP_REFGEN));
1120                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1121                         ;}
1122     break;
1123
1124   case 153:
1125 #line 961 "madly.y"
1126     { (yyval.opval) = (yyvsp[0].opval); ;}
1127     break;
1128
1129   case 154:
1130 #line 963 "madly.y"
1131     { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1132                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1133                         ;}
1134     break;
1135
1136   case 155:
1137 #line 967 "madly.y"
1138     { (yyval.opval) = sawparens(newUNOP(OP_NULL,0,(yyvsp[-1].opval)));
1139                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1140                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1141                         ;}
1142     break;
1143
1144   case 156:
1145 #line 972 "madly.y"
1146     { (yyval.opval) = sawparens(newNULLLIST());
1147                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1148                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1149                         ;}
1150     break;
1151
1152   case 157:
1153 #line 977 "madly.y"
1154     { (yyval.opval) = (yyvsp[0].opval); ;}
1155     break;
1156
1157   case 158:
1158 #line 979 "madly.y"
1159     { (yyval.opval) = (yyvsp[0].opval); ;}
1160     break;
1161
1162   case 159:
1163 #line 981 "madly.y"
1164     { (yyval.opval) = (yyvsp[0].opval); ;}
1165     break;
1166
1167   case 160:
1168 #line 983 "madly.y"
1169     { (yyval.opval) = (yyvsp[0].opval); ;}
1170     break;
1171
1172   case 161:
1173 #line 985 "madly.y"
1174     { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[0].opval), OP_AV2ARYLEN));;}
1175     break;
1176
1177   case 162:
1178 #line 987 "madly.y"
1179     { (yyval.opval) = (yyvsp[0].opval); ;}
1180     break;
1181
1182   case 163:
1183 #line 989 "madly.y"
1184     { (yyval.opval) = prepend_elem(OP_ASLICE,
1185                                 newOP(OP_PUSHMARK, 0),
1186                                     newLISTOP(OP_ASLICE, 0,
1187                                         list((yyvsp[-1].opval)),
1188                                         ref((yyvsp[-3].opval), OP_ASLICE)));
1189                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1190                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1191                         ;}
1192     break;
1193
1194   case 164:
1195 #line 998 "madly.y"
1196     { (yyval.opval) = prepend_elem(OP_HSLICE,
1197                                 newOP(OP_PUSHMARK, 0),
1198                                     newLISTOP(OP_HSLICE, 0,
1199                                         list((yyvsp[-2].opval)),
1200                                         ref(oopsHV((yyvsp[-4].opval)), OP_HSLICE)));
1201                             PL_expect = XOPERATOR;
1202                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
1203                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1204                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1205                         ;}
1206     break;
1207
1208   case 165:
1209 #line 1009 "madly.y"
1210     { (yyval.opval) = (yyvsp[0].opval); ;}
1211     break;
1212
1213   case 166:
1214 #line 1011 "madly.y"
1215     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[0].opval))); ;}
1216     break;
1217
1218   case 167:
1219 #line 1013 "madly.y"
1220     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[-2].opval)));
1221                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1222                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1223                         ;}
1224     break;
1225
1226   case 168:
1227 #line 1018 "madly.y"
1228     { OP* op;
1229                           (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1230                                 append_elem(OP_LIST, (yyvsp[-1].opval), scalar((yyvsp[-3].opval))));
1231                           op = (yyval.opval);
1232                           if (op->op_type == OP_CONST) { /* defeat const fold */
1233                             op = (OP*)op->op_madprop->mad_val;
1234                           }
1235                           token_getmad((yyvsp[-2].tkval),op,'(');
1236                           token_getmad((yyvsp[0].tkval),op,')');
1237                         ;}
1238     break;
1239
1240   case 169:
1241 #line 1029 "madly.y"
1242     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1243                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval))));
1244                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1245                         ;}
1246     break;
1247
1248   case 170:
1249 #line 1034 "madly.y"
1250     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, OPf_SPECIAL);
1251                             PL_hints |= HINT_BLOCK_SCOPE;
1252                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1253                         ;}
1254     break;
1255
1256   case 171:
1257 #line 1039 "madly.y"
1258     { (yyval.opval) = newLOOPEX(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1259                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1260                         ;}
1261     break;
1262
1263   case 172:
1264 #line 1043 "madly.y"
1265     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
1266                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1267                         ;}
1268     break;
1269
1270   case 173:
1271 #line 1047 "madly.y"
1272     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1273                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1274                         ;}
1275     break;
1276
1277   case 174:
1278 #line 1051 "madly.y"
1279     { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1280                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1281                         ;}
1282     break;
1283
1284   case 175:
1285 #line 1055 "madly.y"
1286     { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1287                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1288                         ;}
1289     break;
1290
1291   case 176:
1292 #line 1059 "madly.y"
1293     { (yyval.opval) = newOP(OP_REQUIRE, (yyvsp[0].tkval) ? OPf_SPECIAL : 0); ;}
1294     break;
1295
1296   case 177:
1297 #line 1061 "madly.y"
1298     { (yyval.opval) = newUNOP(OP_REQUIRE, (yyvsp[-1].tkval) ? OPf_SPECIAL : 0, (yyvsp[0].opval)); ;}
1299     break;
1300
1301   case 178:
1302 #line 1063 "madly.y"
1303     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1304                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;}
1305     break;
1306
1307   case 179:
1308 #line 1066 "madly.y"
1309     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1310                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1311                         ;}
1312     break;
1313
1314   case 180:
1315 #line 1070 "madly.y"
1316     { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, 0);
1317                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1318                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1319                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1320                         ;}
1321     break;
1322
1323   case 181:
1324 #line 1076 "madly.y"
1325     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1326                                 scalar((yyvsp[0].opval))); ;}
1327     break;
1328
1329   case 182:
1330 #line 1079 "madly.y"
1331     { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, OPf_SPECIAL);
1332                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1333                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1334                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1335                         ;}
1336     break;
1337
1338   case 183:
1339 #line 1085 "madly.y"
1340     { (yyval.opval) = newUNOP(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
1341                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1342                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1343                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1344                         ;}
1345     break;
1346
1347   case 184:
1348 #line 1091 "madly.y"
1349     { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1);
1350                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1351                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1352                         ;}
1353     break;
1354
1355   case 187:
1356 #line 1101 "madly.y"
1357     { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval));
1358                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'d');
1359                           append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 'a');
1360                           (yyvsp[0].opval)->op_madprop = 0;
1361                         ;}
1362     break;
1363
1364   case 188:
1365 #line 1107 "madly.y"
1366     { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1367                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1368                         ;}
1369     break;
1370
1371   case 189:
1372 #line 1114 "madly.y"
1373     { (yyval.opval) = sawparens((yyvsp[-1].opval));
1374                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1375                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1376                         ;}
1377     break;
1378
1379   case 190:
1380 #line 1119 "madly.y"
1381     { (yyval.opval) = sawparens(newNULLLIST());
1382                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1383                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1384                         ;}
1385     break;
1386
1387   case 191:
1388 #line 1124 "madly.y"
1389     { (yyval.opval) = (yyvsp[0].opval); ;}
1390     break;
1391
1392   case 192:
1393 #line 1126 "madly.y"
1394     { (yyval.opval) = (yyvsp[0].opval); ;}
1395     break;
1396
1397   case 193:
1398 #line 1128 "madly.y"
1399     { (yyval.opval) = (yyvsp[0].opval); ;}
1400     break;
1401
1402   case 194:
1403 #line 1133 "madly.y"
1404     { (yyval.opval) = Nullop; ;}
1405     break;
1406
1407   case 195:
1408 #line 1135 "madly.y"
1409     { (yyval.opval) = (yyvsp[0].opval); ;}
1410     break;
1411
1412   case 196:
1413 #line 1139 "madly.y"
1414     { (yyval.opval) = Nullop; ;}
1415     break;
1416
1417   case 197:
1418 #line 1141 "madly.y"
1419     { (yyval.opval) = (yyvsp[0].opval); ;}
1420     break;
1421
1422   case 198:
1423 #line 1143 "madly.y"
1424     { OP* op = newNULLLIST();
1425                           token_getmad((yyvsp[0].tkval),op,',');
1426                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
1427                         ;}
1428     break;
1429
1430   case 199:
1431 #line 1152 "madly.y"
1432     { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;}
1433     break;
1434
1435   case 200:
1436 #line 1156 "madly.y"
1437     { (yyval.opval) = newCVREF(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1438                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'&');
1439                         ;}
1440     break;
1441
1442   case 201:
1443 #line 1162 "madly.y"
1444     { (yyval.opval) = newSVREF((yyvsp[0].opval));
1445                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'$');
1446                         ;}
1447     break;
1448
1449   case 202:
1450 #line 1168 "madly.y"
1451     { (yyval.opval) = newAVREF((yyvsp[0].opval));
1452                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'@');
1453                         ;}
1454     break;
1455
1456   case 203:
1457 #line 1174 "madly.y"
1458     { (yyval.opval) = newHVREF((yyvsp[0].opval));
1459                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'%');
1460                         ;}
1461     break;
1462
1463   case 204:
1464 #line 1180 "madly.y"
1465     { (yyval.opval) = newAVREF((yyvsp[0].opval));
1466                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'l');
1467                         ;}
1468     break;
1469
1470   case 205:
1471 #line 1186 "madly.y"
1472     { (yyval.opval) = newGVREF(0,(yyvsp[0].opval));
1473                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'*');
1474                         ;}
1475     break;
1476
1477   case 206:
1478 #line 1193 "madly.y"
1479     { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1480     break;
1481
1482   case 207:
1483 #line 1195 "madly.y"
1484     { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1485     break;
1486
1487   case 208:
1488 #line 1197 "madly.y"
1489     { (yyval.opval) = scope((yyvsp[0].opval)); ;}
1490     break;
1491
1492   case 209:
1493 #line 1200 "madly.y"
1494     { (yyval.opval) = (yyvsp[0].opval); ;}
1495     break;
1496
1497
1498       default: break;
1499