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