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