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