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