This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Parsing fix: it wasn't possible to call a function with a (_) prototype
[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     { SvREFCNT_inc(PL_compcv);
435                           (yyval.opval) = newFORM((yyvsp[-2].ival), (yyvsp[-1].opval), (yyvsp[0].opval));
436                           prepend_madprops((yyvsp[-3].tkval)->tk_mad, (yyval.opval), 'F');
437                           (yyvsp[-3].tkval)->tk_mad = 0;
438                           token_free((yyvsp[-3].tkval));
439                         ;}
440     break;
441
442   case 62:
443 #line 454 "madly.y"
444     { (yyval.opval) = (yyvsp[0].opval); ;}
445     break;
446
447   case 63:
448 #line 455 "madly.y"
449     { (yyval.opval) = Nullop; ;}
450     break;
451
452   case 64:
453 #line 460 "madly.y"
454     { SvREFCNT_inc(PL_compcv);
455                           (yyval.opval) = newMYSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
456                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
457                         ;}
458     break;
459
460   case 65:
461 #line 468 "madly.y"
462     { SvREFCNT_inc(PL_compcv);
463                           OP* o = newSVOP(OP_ANONCODE, 0,
464                             (SV*)newATTRSUB((yyvsp[-4].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval)));
465                           (yyval.opval) = newOP(OP_NULL,0);
466                           op_getmad(o,(yyval.opval),'&');
467                           op_getmad((yyvsp[-3].opval),(yyval.opval),'n');
468                           op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
469                           op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
470                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'d');
471                           append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 0);
472                           (yyvsp[0].opval)->op_madprop = 0;
473                         ;}
474     break;
475
476   case 66:
477 #line 483 "madly.y"
478     { (yyval.ival) = start_subparse(FALSE, 0);
479                             SAVEFREESV(PL_compcv); ;}
480     break;
481
482   case 67:
483 #line 489 "madly.y"
484     { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
485                             SAVEFREESV(PL_compcv); ;}
486     break;
487
488   case 68:
489 #line 494 "madly.y"
490     { (yyval.ival) = start_subparse(TRUE, 0);
491                             SAVEFREESV(PL_compcv); ;}
492     break;
493
494   case 69:
495 #line 499 "madly.y"
496     { const char *const name = SvPV_nolen_const(((SVOP*)(yyvsp[0].opval))->op_sv);
497                           if (strEQ(name, "BEGIN") || strEQ(name, "END")
498                               || strEQ(name, "INIT") || strEQ(name, "CHECK")
499                               || strEQ(name, "UNITCHECK"))
500                               CvSPECIAL_on(PL_compcv);
501                           (yyval.opval) = (yyvsp[0].opval); ;}
502     break;
503
504   case 70:
505 #line 509 "madly.y"
506     { (yyval.opval) = Nullop; ;}
507     break;
508
509   case 72:
510 #line 515 "madly.y"
511     { (yyval.opval) = Nullop; ;}
512     break;
513
514   case 73:
515 #line 517 "madly.y"
516     { (yyval.opval) = (yyvsp[0].opval);
517                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
518                         ;}
519     break;
520
521   case 74:
522 #line 521 "madly.y"
523     { (yyval.opval) = newOP(OP_NULL, 0);
524                           token_getmad((yyvsp[0].tkval),(yyval.opval),':');
525                         ;}
526     break;
527
528   case 75:
529 #line 528 "madly.y"
530     { (yyval.opval) = (yyvsp[0].opval);
531                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
532                         ;}
533     break;
534
535   case 76:
536 #line 532 "madly.y"
537     { (yyval.opval) = newOP(OP_NULL, 0);
538                           token_getmad((yyvsp[0].tkval),(yyval.opval),':');
539                         ;}
540     break;
541
542   case 77:
543 #line 538 "madly.y"
544     { (yyval.opval) = (yyvsp[0].opval); ;}
545     break;
546
547   case 78:
548 #line 539 "madly.y"
549     { (yyval.opval) = newOP(OP_NULL,0); PL_expect = XSTATE;
550                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
551                         ;}
552     break;
553
554   case 79:
555 #line 545 "madly.y"
556     { (yyval.opval) = package((yyvsp[-1].opval));
557                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
558                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
559                         ;}
560     break;
561
562   case 80:
563 #line 552 "madly.y"
564     { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
565     break;
566
567   case 81:
568 #line 554 "madly.y"
569     { SvREFCNT_inc(PL_compcv);
570                           (yyval.opval) = utilize(((yyvsp[-6].tkval))->tk_lval.ival, (yyvsp[-5].ival), (yyvsp[-3].opval), (yyvsp[-2].opval), (yyvsp[-1].opval));
571                           token_getmad((yyvsp[-6].tkval),(yyval.opval),'o');
572                           token_getmad((yyvsp[0].tkval),(yyval.opval),';');
573                           if (PL_rsfp_filters && AvFILLp(PL_rsfp_filters) >= 0)
574                               append_madprops(newMADPROP('!', MAD_PV, "", 0), (yyval.opval), 0);
575                         ;}
576     break;
577
578   case 82:
579 #line 565 "madly.y"
580     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
581                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
582                         ;}
583     break;
584
585   case 83:
586 #line 569 "madly.y"
587     { (yyval.opval) = newLOGOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
588                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
589                         ;}
590     break;
591
592   case 84:
593 #line 573 "madly.y"
594     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
595                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
596                         ;}
597     break;
598
599   case 86:
600 #line 581 "madly.y"
601     { OP* op = newNULLLIST();
602                           token_getmad((yyvsp[0].tkval),op,',');
603                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
604                         ;}
605     break;
606
607   case 87:
608 #line 586 "madly.y"
609     { 
610                           (yyvsp[0].opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
611                           token_getmad((yyvsp[-1].tkval),(yyvsp[0].opval),',');
612                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval));
613                         ;}
614     break;
615
616   case 89:
617 #line 596 "madly.y"
618     { (yyval.opval) = convert(((yyvsp[-2].tkval))->tk_lval.ival, OPf_STACKED,
619                                 prepend_elem(OP_LIST, newGVREF(((yyvsp[-2].tkval))->tk_lval.ival,(yyvsp[-1].opval)), (yyvsp[0].opval)) );
620                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
621                         ;}
622     break;
623
624   case 90:
625 #line 601 "madly.y"
626     { (yyval.opval) = convert(((yyvsp[-4].tkval))->tk_lval.ival, OPf_STACKED,
627                                 prepend_elem(OP_LIST, newGVREF(((yyvsp[-4].tkval))->tk_lval.ival,(yyvsp[-2].opval)), (yyvsp[-1].opval)) );
628                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
629                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'(');
630                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
631                         ;}
632     break;
633
634   case 91:
635 #line 608 "madly.y"
636     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
637                                 append_elem(OP_LIST,
638                                     prepend_elem(OP_LIST, scalar((yyvsp[-5].opval)), (yyvsp[-1].opval)),
639                                     newUNOP(OP_METHOD, 0, (yyvsp[-3].opval))));
640                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'A');
641                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
642                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
643                         ;}
644     break;
645
646   case 92:
647 #line 617 "madly.y"
648     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
649                                 append_elem(OP_LIST, scalar((yyvsp[-2].opval)),
650                                     newUNOP(OP_METHOD, 0, (yyvsp[0].opval))));
651                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'A');
652                         ;}
653     break;
654
655   case 93:
656 #line 623 "madly.y"
657     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
658                                 append_elem(OP_LIST,
659                                     prepend_elem(OP_LIST, (yyvsp[-1].opval), (yyvsp[0].opval)),
660                                     newUNOP(OP_METHOD, 0, (yyvsp[-2].opval))));
661                         ;}
662     break;
663
664   case 94:
665 #line 629 "madly.y"
666     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
667                                 append_elem(OP_LIST,
668                                     prepend_elem(OP_LIST, (yyvsp[-3].opval), (yyvsp[-1].opval)),
669                                     newUNOP(OP_METHOD, 0, (yyvsp[-4].opval))));
670                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
671                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
672                         ;}
673     break;
674
675   case 95:
676 #line 637 "madly.y"
677     { (yyval.opval) = convert(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
678                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
679                         ;}
680     break;
681
682   case 96:
683 #line 641 "madly.y"
684     { (yyval.opval) = convert(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
685                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
686                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
687                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
688                         ;}
689     break;
690
691   case 97:
692 #line 647 "madly.y"
693     { SvREFCNT_inc(PL_compcv);
694                           (yyvsp[0].opval) = newANONATTRSUB((yyvsp[-1].ival), 0, Nullop, (yyvsp[0].opval)); ;}
695     break;
696
697   case 98:
698 #line 650 "madly.y"
699     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
700                                  append_elem(OP_LIST,
701                                    prepend_elem(OP_LIST, (yyvsp[-2].opval), (yyvsp[0].opval)), (yyvsp[-4].opval)));
702                         ;}
703     break;
704
705   case 101:
706 #line 665 "madly.y"
707     { (yyval.opval) = newBINOP(OP_GELEM, 0, (yyvsp[-4].opval), scalar((yyvsp[-2].opval)));
708                             PL_expect = XOPERATOR;
709                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
710                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
711                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
712                         ;}
713     break;
714
715   case 102:
716 #line 672 "madly.y"
717     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((yyvsp[-3].opval)), scalar((yyvsp[-1].opval)));
718                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
719                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
720                         ;}
721     break;
722
723   case 103:
724 #line 677 "madly.y"
725     { (yyval.opval) = newBINOP(OP_AELEM, 0,
726                                         ref(newAVREF((yyvsp[-4].opval)),OP_RV2AV),
727                                         scalar((yyvsp[-1].opval)));
728                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
729                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
730                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
731                         ;}
732     break;
733
734   case 104:
735 #line 685 "madly.y"
736     { (yyval.opval) = newBINOP(OP_AELEM, 0,
737                                         ref(newAVREF((yyvsp[-3].opval)),OP_RV2AV),
738                                         scalar((yyvsp[-1].opval)));
739                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
740                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
741                         ;}
742     break;
743
744   case 105:
745 #line 692 "madly.y"
746     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((yyvsp[-4].opval)), jmaybe((yyvsp[-2].opval)));
747                             PL_expect = XOPERATOR;
748                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
749                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
750                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
751                         ;}
752     break;
753
754   case 106:
755 #line 699 "madly.y"
756     { (yyval.opval) = newBINOP(OP_HELEM, 0,
757                                         ref(newHVREF((yyvsp[-5].opval)),OP_RV2HV),
758                                         jmaybe((yyvsp[-2].opval)));
759                             PL_expect = XOPERATOR;
760                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'a');
761                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
762                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
763                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
764                         ;}
765     break;
766
767   case 107:
768 #line 709 "madly.y"
769     { (yyval.opval) = newBINOP(OP_HELEM, 0,
770                                         ref(newHVREF((yyvsp[-4].opval)),OP_RV2HV),
771                                         jmaybe((yyvsp[-2].opval)));
772                             PL_expect = XOPERATOR;
773                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
774                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
775                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
776                         ;}
777     break;
778
779   case 108:
780 #line 718 "madly.y"
781     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
782                                    newCVREF(0, scalar((yyvsp[-3].opval))));
783                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'a');
784                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
785                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
786                         ;}
787     break;
788
789   case 109:
790 #line 725 "madly.y"
791     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
792                                    append_elem(OP_LIST, (yyvsp[-1].opval),
793                                        newCVREF(0, scalar((yyvsp[-4].opval)))));
794                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'a');
795                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
796                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
797                         ;}
798     break;
799
800   case 110:
801 #line 734 "madly.y"
802     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
803                                    append_elem(OP_LIST, (yyvsp[-1].opval),
804                                                newCVREF(0, scalar((yyvsp[-3].opval)))));
805                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
806                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
807                         ;}
808     break;
809
810   case 111:
811 #line 741 "madly.y"
812     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
813                                    newCVREF(0, scalar((yyvsp[-2].opval))));
814                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
815                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
816                         ;}
817     break;
818
819   case 112:
820 #line 747 "madly.y"
821     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), (yyvsp[-4].opval));
822                           token_getmad((yyvsp[-5].tkval),(yyval.opval),'(');
823                           token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
824                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
825                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
826                         ;}
827     break;
828
829   case 113:
830 #line 754 "madly.y"
831     { (yyval.opval) = newSLICEOP(0, (yyvsp[-1].opval), Nullop);
832                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'(');
833                           token_getmad((yyvsp[-3].tkval),(yyval.opval),')');
834                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
835                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
836                         ;}
837     break;
838
839   case 114:
840 #line 764 "madly.y"
841     { (yyval.opval) = newASSIGNOP(OPf_STACKED, (yyvsp[-2].opval), ((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[0].opval));
842                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
843                         ;}
844     break;
845
846   case 115:
847 #line 768 "madly.y"
848     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
849                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
850                         ;}
851     break;
852
853   case 116:
854 #line 772 "madly.y"
855     {   if (((yyvsp[-1].tkval))->tk_lval.ival != OP_REPEAT)
856                                 scalar((yyvsp[-2].opval));
857                             (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[-2].opval), scalar((yyvsp[0].opval)));
858                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
859                         ;}
860     break;
861
862   case 117:
863 #line 778 "madly.y"
864     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
865                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
866                         ;}
867     break;
868
869   case 118:
870 #line 782 "madly.y"
871     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
872                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
873                         ;}
874     break;
875
876   case 119:
877 #line 786 "madly.y"
878     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
879                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
880                         ;}
881     break;
882
883   case 120:
884 #line 790 "madly.y"
885     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
886                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
887                         ;}
888     break;
889
890   case 121:
891 #line 794 "madly.y"
892     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
893                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
894                         ;}
895     break;
896
897   case 122:
898 #line 798 "madly.y"
899     { (yyval.opval) = newBINOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
900                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
901                         ;}
902     break;
903
904   case 123:
905 #line 802 "madly.y"
906     { UNOP *op;
907                           (yyval.opval) = newRANGE(((yyvsp[-1].tkval))->tk_lval.ival, scalar((yyvsp[-2].opval)), scalar((yyvsp[0].opval)));
908                           op = (UNOP*)(yyval.opval);
909                           op = (UNOP*)op->op_first;     /* get to flop */
910                           op = (UNOP*)op->op_first;     /* get to flip */
911                           op = (UNOP*)op->op_first;     /* get to range */
912                           token_getmad((yyvsp[-1].tkval),(OP*)op,'o');
913                         ;}
914     break;
915
916   case 124:
917 #line 811 "madly.y"
918     { (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
919                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
920                         ;}
921     break;
922
923   case 125:
924 #line 815 "madly.y"
925     { (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
926                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
927                         ;}
928     break;
929
930   case 126:
931 #line 819 "madly.y"
932     { (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[-2].opval), (yyvsp[0].opval));
933                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
934                         ;}
935     break;
936
937   case 127:
938 #line 823 "madly.y"
939     { (yyval.opval) = bind_match(((yyvsp[-1].tkval))->tk_lval.ival, (yyvsp[-2].opval), (yyvsp[0].opval));
940                           if ((yyval.opval)->op_type == OP_NOT)
941                               token_getmad((yyvsp[-1].tkval),((UNOP*)(yyval.opval))->op_first,'~');
942                             else
943                               token_getmad((yyvsp[-1].tkval),(yyval.opval),'~');
944                         ;}
945     break;
946
947   case 128:
948 #line 833 "madly.y"
949     { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[0].opval)));
950                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
951                         ;}
952     break;
953
954   case 129:
955 #line 837 "madly.y"
956     { (yyval.opval) = newUNOP(OP_NULL, 0, (yyvsp[0].opval));
957                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'+');
958                         ;}
959     break;
960
961   case 130:
962 #line 841 "madly.y"
963     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
964                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
965                         ;}
966     break;
967
968   case 131:
969 #line 845 "madly.y"
970     { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[0].opval)));
971                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
972                         ;}
973     break;
974
975   case 132:
976 #line 849 "madly.y"
977     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
978                                         mod(scalar((yyvsp[-1].opval)), OP_POSTINC));
979                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
980                         ;}
981     break;
982
983   case 133:
984 #line 854 "madly.y"
985     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
986                                         mod(scalar((yyvsp[-1].opval)), OP_POSTDEC));
987                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
988                         ;}
989     break;
990
991   case 134:
992 #line 859 "madly.y"
993     { (yyval.opval) = newUNOP(OP_PREINC, 0,
994                                         mod(scalar((yyvsp[0].opval)), OP_PREINC));
995                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
996                         ;}
997     break;
998
999   case 135:
1000 #line 864 "madly.y"
1001     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1002                                         mod(scalar((yyvsp[0].opval)), OP_PREDEC));
1003                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1004                         ;}
1005     break;
1006
1007   case 136:
1008 #line 873 "madly.y"
1009     { (yyval.opval) = newANONLIST((yyvsp[-1].opval));
1010                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1011                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1012                         ;}
1013     break;
1014
1015   case 137:
1016 #line 878 "madly.y"
1017     { (yyval.opval) = newANONLIST(Nullop);
1018                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'[');
1019                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1020                         ;}
1021     break;
1022
1023   case 138:
1024 #line 883 "madly.y"
1025     { (yyval.opval) = newANONHASH((yyvsp[-2].opval));
1026                           token_getmad((yyvsp[-3].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 139:
1033 #line 889 "madly.y"
1034     { (yyval.opval) = newANONHASH(Nullop);
1035                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'{');
1036                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1037                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1038                         ;}
1039     break;
1040
1041   case 140:
1042 #line 895 "madly.y"
1043     { SvREFCNT_inc(PL_compcv);
1044                           (yyval.opval) = newANONATTRSUB((yyvsp[-3].ival), (yyvsp[-2].opval), (yyvsp[-1].opval), (yyvsp[0].opval));
1045                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1046                           op_getmad((yyvsp[-2].opval),(yyval.opval),'s');
1047                           op_getmad((yyvsp[-1].opval),(yyval.opval),'a');
1048                         ;}
1049     break;
1050
1051   case 141:
1052 #line 906 "madly.y"
1053     { (yyval.opval) = dofile((yyvsp[0].opval), (yyvsp[-1].tkval));
1054                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1055                         ;}
1056     break;
1057
1058   case 142:
1059 #line 910 "madly.y"
1060     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[0].opval)));
1061                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'D');
1062                         ;}
1063     break;
1064
1065   case 143:
1066 #line 914 "madly.y"
1067     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1068                             OPf_SPECIAL|OPf_STACKED,
1069                             prepend_elem(OP_LIST,
1070                                 scalar(newCVREF(
1071                                     (OPpENTERSUB_AMPER<<8),
1072                                     scalar((yyvsp[-2].opval))
1073                                 )),Nullop)); dep();
1074                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1075                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1076                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1077                         ;}
1078     break;
1079
1080   case 144:
1081 #line 926 "madly.y"
1082     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1083                             OPf_SPECIAL|OPf_STACKED,
1084                             append_elem(OP_LIST,
1085                                 (yyvsp[-1].opval),
1086                                 scalar(newCVREF(
1087                                     (OPpENTERSUB_AMPER<<8),
1088                                     scalar((yyvsp[-3].opval))
1089                                 )))); dep();
1090                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1091                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1092                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1093                         ;}
1094     break;
1095
1096   case 145:
1097 #line 939 "madly.y"
1098     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1099                             prepend_elem(OP_LIST,
1100                                 scalar(newCVREF(0,scalar((yyvsp[-2].opval)))), Nullop)); dep();
1101                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1102                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1103                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1104                         ;}
1105     break;
1106
1107   case 146:
1108 #line 947 "madly.y"
1109     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1110                             prepend_elem(OP_LIST,
1111                                 (yyvsp[-1].opval),
1112                                 scalar(newCVREF(0,scalar((yyvsp[-3].opval)))))); dep();
1113                           token_getmad((yyvsp[-4].tkval),(yyval.opval),'o');
1114                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1115                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1116                         ;}
1117     break;
1118
1119   case 151:
1120 #line 963 "madly.y"
1121     { (yyval.opval) = newCONDOP(0, (yyvsp[-4].opval), (yyvsp[-2].opval), (yyvsp[0].opval));
1122                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'?');
1123                           token_getmad((yyvsp[-1].tkval),(yyval.opval),':');
1124                         ;}
1125     break;
1126
1127   case 152:
1128 #line 968 "madly.y"
1129     { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[0].opval),OP_REFGEN));
1130                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1131                         ;}
1132     break;
1133
1134   case 153:
1135 #line 972 "madly.y"
1136     { (yyval.opval) = (yyvsp[0].opval); ;}
1137     break;
1138
1139   case 154:
1140 #line 974 "madly.y"
1141     { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1142                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1143                         ;}
1144     break;
1145
1146   case 155:
1147 #line 978 "madly.y"
1148     { (yyval.opval) = sawparens(newUNOP(OP_NULL,0,(yyvsp[-1].opval)));
1149                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1150                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1151                         ;}
1152     break;
1153
1154   case 156:
1155 #line 983 "madly.y"
1156     { (yyval.opval) = sawparens(newNULLLIST());
1157                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1158                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1159                         ;}
1160     break;
1161
1162   case 157:
1163 #line 988 "madly.y"
1164     { (yyval.opval) = (yyvsp[0].opval); ;}
1165     break;
1166
1167   case 158:
1168 #line 990 "madly.y"
1169     { (yyval.opval) = (yyvsp[0].opval); ;}
1170     break;
1171
1172   case 159:
1173 #line 992 "madly.y"
1174     { (yyval.opval) = (yyvsp[0].opval); ;}
1175     break;
1176
1177   case 160:
1178 #line 994 "madly.y"
1179     { (yyval.opval) = (yyvsp[0].opval); ;}
1180     break;
1181
1182   case 161:
1183 #line 996 "madly.y"
1184     { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[0].opval), OP_AV2ARYLEN));;}
1185     break;
1186
1187   case 162:
1188 #line 998 "madly.y"
1189     { (yyval.opval) = (yyvsp[0].opval); ;}
1190     break;
1191
1192   case 163:
1193 #line 1000 "madly.y"
1194     { (yyval.opval) = prepend_elem(OP_ASLICE,
1195                                 newOP(OP_PUSHMARK, 0),
1196                                     newLISTOP(OP_ASLICE, 0,
1197                                         list((yyvsp[-1].opval)),
1198                                         ref((yyvsp[-3].opval), OP_ASLICE)));
1199                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'[');
1200                           token_getmad((yyvsp[0].tkval),(yyval.opval),']');
1201                         ;}
1202     break;
1203
1204   case 164:
1205 #line 1009 "madly.y"
1206     { (yyval.opval) = prepend_elem(OP_HSLICE,
1207                                 newOP(OP_PUSHMARK, 0),
1208                                     newLISTOP(OP_HSLICE, 0,
1209                                         list((yyvsp[-2].opval)),
1210                                         ref(oopsHV((yyvsp[-4].opval)), OP_HSLICE)));
1211                             PL_expect = XOPERATOR;
1212                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'{');
1213                           token_getmad((yyvsp[-1].tkval),(yyval.opval),';');
1214                           token_getmad((yyvsp[0].tkval),(yyval.opval),'}');
1215                         ;}
1216     break;
1217
1218   case 165:
1219 #line 1020 "madly.y"
1220     { (yyval.opval) = (yyvsp[0].opval); ;}
1221     break;
1222
1223   case 166:
1224 #line 1022 "madly.y"
1225     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[0].opval))); ;}
1226     break;
1227
1228   case 167:
1229 #line 1024 "madly.y"
1230     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[-2].opval)));
1231                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1232                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1233                         ;}
1234     break;
1235
1236   case 168:
1237 #line 1029 "madly.y"
1238     { OP* op;
1239                           (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1240                                 append_elem(OP_LIST, (yyvsp[-1].opval), scalar((yyvsp[-3].opval))));
1241                           op = (yyval.opval);
1242                           if (op->op_type == OP_CONST) { /* defeat const fold */
1243                             op = (OP*)op->op_madprop->mad_val;
1244                           }
1245                           token_getmad((yyvsp[-2].tkval),op,'(');
1246                           token_getmad((yyvsp[0].tkval),op,')');
1247                         ;}
1248     break;
1249
1250   case 169:
1251 #line 1040 "madly.y"
1252     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1253                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval))));
1254                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1255                         ;}
1256     break;
1257
1258   case 170:
1259 #line 1045 "madly.y"
1260     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, OPf_SPECIAL);
1261                             PL_hints |= HINT_BLOCK_SCOPE;
1262                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1263                         ;}
1264     break;
1265
1266   case 171:
1267 #line 1050 "madly.y"
1268     { (yyval.opval) = newLOOPEX(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1269                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1270                         ;}
1271     break;
1272
1273   case 172:
1274 #line 1054 "madly.y"
1275     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[0].opval)));
1276                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1277                         ;}
1278     break;
1279
1280   case 173:
1281 #line 1058 "madly.y"
1282     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1283                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1284                         ;}
1285     break;
1286
1287   case 174:
1288 #line 1062 "madly.y"
1289     { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1290                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1291                         ;}
1292     break;
1293
1294   case 175:
1295 #line 1066 "madly.y"
1296     { (yyval.opval) = newUNOP(((yyvsp[-1].tkval))->tk_lval.ival, 0, (yyvsp[0].opval));
1297                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'o');
1298                         ;}
1299     break;
1300
1301   case 176:
1302 #line 1070 "madly.y"
1303     { (yyval.opval) = newOP(OP_REQUIRE, (yyvsp[0].tkval) ? OPf_SPECIAL : 0); ;}
1304     break;
1305
1306   case 177:
1307 #line 1072 "madly.y"
1308     { (yyval.opval) = newUNOP(OP_REQUIRE, (yyvsp[-1].tkval) ? OPf_SPECIAL : 0, (yyvsp[0].opval)); ;}
1309     break;
1310
1311   case 178:
1312 #line 1074 "madly.y"
1313     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[0].opval))); ;}
1314     break;
1315
1316   case 179:
1317 #line 1076 "madly.y"
1318     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1319                             append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;}
1320     break;
1321
1322   case 180:
1323 #line 1079 "madly.y"
1324     { (yyval.opval) = newOP(((yyvsp[0].tkval))->tk_lval.ival, 0);
1325                           token_getmad((yyvsp[0].tkval),(yyval.opval),'o');
1326                         ;}
1327     break;
1328
1329   case 181:
1330 #line 1083 "madly.y"
1331     { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, 0);
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 182:
1339 #line 1089 "madly.y"
1340     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1341                                 scalar((yyvsp[0].opval))); ;}
1342     break;
1343
1344   case 183:
1345 #line 1092 "madly.y"
1346     { (yyval.opval) = newOP(((yyvsp[-2].tkval))->tk_lval.ival, OPf_SPECIAL);
1347                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'o');
1348                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1349                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1350                         ;}
1351     break;
1352
1353   case 184:
1354 #line 1098 "madly.y"
1355     { (yyval.opval) = newUNOP(((yyvsp[-3].tkval))->tk_lval.ival, 0, (yyvsp[-1].opval));
1356                           token_getmad((yyvsp[-3].tkval),(yyval.opval),'o');
1357                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1358                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1359                         ;}
1360     break;
1361
1362   case 185:
1363 #line 1104 "madly.y"
1364     { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1);
1365                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1366                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1367                         ;}
1368     break;
1369
1370   case 188:
1371 #line 1114 "madly.y"
1372     { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval));
1373                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'d');
1374                           append_madprops((yyvsp[0].opval)->op_madprop, (yyval.opval), 'a');
1375                           (yyvsp[0].opval)->op_madprop = 0;
1376                         ;}
1377     break;
1378
1379   case 189:
1380 #line 1120 "madly.y"
1381     { (yyval.opval) = localize((yyvsp[0].opval),((yyvsp[-1].tkval))->tk_lval.ival);
1382                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'d');
1383                         ;}
1384     break;
1385
1386   case 190:
1387 #line 1127 "madly.y"
1388     { (yyval.opval) = sawparens((yyvsp[-1].opval));
1389                           token_getmad((yyvsp[-2].tkval),(yyval.opval),'(');
1390                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1391                         ;}
1392     break;
1393
1394   case 191:
1395 #line 1132 "madly.y"
1396     { (yyval.opval) = sawparens(newNULLLIST());
1397                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'(');
1398                           token_getmad((yyvsp[0].tkval),(yyval.opval),')');
1399                         ;}
1400     break;
1401
1402   case 192:
1403 #line 1137 "madly.y"
1404     { (yyval.opval) = (yyvsp[0].opval); ;}
1405     break;
1406
1407   case 193:
1408 #line 1139 "madly.y"
1409     { (yyval.opval) = (yyvsp[0].opval); ;}
1410     break;
1411
1412   case 194:
1413 #line 1141 "madly.y"
1414     { (yyval.opval) = (yyvsp[0].opval); ;}
1415     break;
1416
1417   case 195:
1418 #line 1146 "madly.y"
1419     { (yyval.opval) = Nullop; ;}
1420     break;
1421
1422   case 196:
1423 #line 1148 "madly.y"
1424     { (yyval.opval) = (yyvsp[0].opval); ;}
1425     break;
1426
1427   case 197:
1428 #line 1152 "madly.y"
1429     { (yyval.opval) = Nullop; ;}
1430     break;
1431
1432   case 198:
1433 #line 1154 "madly.y"
1434     { (yyval.opval) = (yyvsp[0].opval); ;}
1435     break;
1436
1437   case 199:
1438 #line 1156 "madly.y"
1439     { OP* op = newNULLLIST();
1440                           token_getmad((yyvsp[0].tkval),op,',');
1441                           (yyval.opval) = append_elem(OP_LIST, (yyvsp[-1].opval), op);
1442                         ;}
1443     break;
1444
1445   case 200:
1446 #line 1165 "madly.y"
1447     { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;}
1448     break;
1449
1450   case 201:
1451 #line 1169 "madly.y"
1452     { (yyval.opval) = newCVREF(((yyvsp[-1].tkval))->tk_lval.ival,(yyvsp[0].opval));
1453                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'&');
1454                         ;}
1455     break;
1456
1457   case 202:
1458 #line 1175 "madly.y"
1459     { (yyval.opval) = newSVREF((yyvsp[0].opval));
1460                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'$');
1461                         ;}
1462     break;
1463
1464   case 203:
1465 #line 1181 "madly.y"
1466     { (yyval.opval) = newAVREF((yyvsp[0].opval));
1467                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'@');
1468                         ;}
1469     break;
1470
1471   case 204:
1472 #line 1187 "madly.y"
1473     { (yyval.opval) = newHVREF((yyvsp[0].opval));
1474                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'%');
1475                         ;}
1476     break;
1477
1478   case 205:
1479 #line 1193 "madly.y"
1480     { (yyval.opval) = newAVREF((yyvsp[0].opval));
1481                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'l');
1482                         ;}
1483     break;
1484
1485   case 206:
1486 #line 1199 "madly.y"
1487     { (yyval.opval) = newGVREF(0,(yyvsp[0].opval));
1488                           token_getmad((yyvsp[-1].tkval),(yyval.opval),'*');
1489                         ;}
1490     break;
1491
1492   case 207:
1493 #line 1206 "madly.y"
1494     { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1495     break;
1496
1497   case 208:
1498 #line 1208 "madly.y"
1499     { (yyval.opval) = scalar((yyvsp[0].opval)); ;}
1500     break;
1501
1502   case 209:
1503 #line 1210 "madly.y"
1504     { (yyval.opval) = scope((yyvsp[0].opval)); ;}
1505     break;
1506
1507   case 210:
1508 #line 1213 "madly.y"
1509     { (yyval.opval) = (yyvsp[0].opval); ;}
1510     break;
1511
1512
1513       default: break;
1514