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