Give the 'local' declarator a new key, such that 'local our'
[p5sagit/p5-mst-13.2.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_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
9                               PL_parser->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_parser->expect = XSTATE; (yyval.ival) = block_start(TRUE);
30                 ;}
31     break;
32
33   case 7:
34 #line 166 "perly.y"
35     { if (PL_parser->copline > (line_t)IVAL((ps[(1) - (4)].val.i_tkval)))
36                               PL_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_parser->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_simple_void(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_simple_void(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_simple_void(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_parser->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_simple_void(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_parser->rsfp_filters &&
629                                       AvFILLp(PL_parser->rsfp_filters) >= 0)
630                               append_madprops(newMADPROP('!', MAD_PV, "", 0), (yyval.opval), 0);
631 #else
632                           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));
633                           (yyval.opval) = Nullop;
634 #endif
635                         ;}
636     break;
637
638   case 82:
639 #line 662 "perly.y"
640     { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
641                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
642                         ;}
643     break;
644
645   case 83:
646 #line 666 "perly.y"
647     { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
648                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
649                         ;}
650     break;
651
652   case 84:
653 #line 670 "perly.y"
654     { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
655                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
656                         ;}
657     break;
658
659   case 86:
660 #line 678 "perly.y"
661     {
662 #ifdef MAD
663                           OP* op = newNULLLIST();
664                           token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
665                           (yyval.opval) = append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
666 #else
667                           (yyval.opval) = (ps[(1) - (2)].val.opval);
668 #endif
669                         ;}
670     break;
671
672   case 87:
673 #line 688 "perly.y"
674     { 
675                           OP* term = (ps[(3) - (3)].val.opval);
676                           DO_MAD(
677                               term = newUNOP(OP_NULL, 0, term);
678                               token_getmad((ps[(2) - (3)].val.i_tkval),term,',');
679                           )
680                           (yyval.opval) = append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
681                         ;}
682     break;
683
684   case 89:
685 #line 701 "perly.y"
686     { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
687                                 prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
688                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
689                         ;}
690     break;
691
692   case 90:
693 #line 706 "perly.y"
694     { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
695                                 prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
696                           TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
697                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'(');
698                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
699                         ;}
700     break;
701
702   case 91:
703 #line 713 "perly.y"
704     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
705                                 append_elem(OP_LIST,
706                                     prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
707                                     newUNOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
708                           TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'A');
709                           TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'(');
710                           TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),')');
711                         ;}
712     break;
713
714   case 92:
715 #line 722 "perly.y"
716     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
717                                 append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
718                                     newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
719                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'A');
720                         ;}
721     break;
722
723   case 93:
724 #line 728 "perly.y"
725     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
726                                 append_elem(OP_LIST,
727                                     prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
728                                     newUNOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
729                         ;}
730     break;
731
732   case 94:
733 #line 734 "perly.y"
734     { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
735                                 append_elem(OP_LIST,
736                                     prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
737                                     newUNOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
738                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
739                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
740                         ;}
741     break;
742
743   case 95:
744 #line 742 "perly.y"
745     { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
746                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
747                         ;}
748     break;
749
750   case 96:
751 #line 746 "perly.y"
752     { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
753                           TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
754                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
755                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
756                         ;}
757     break;
758
759   case 97:
760 #line 752 "perly.y"
761     { SvREFCNT_inc_simple_void(PL_compcv);
762                           (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, Nullop, (ps[(3) - (3)].val.opval)); ;}
763     break;
764
765   case 98:
766 #line 755 "perly.y"
767     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
768                                  append_elem(OP_LIST,
769                                    prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
770                         ;}
771     break;
772
773   case 101:
774 #line 770 "perly.y"
775     { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
776                             PL_parser->expect = XOPERATOR;
777                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
778                           TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
779                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
780                         ;}
781     break;
782
783   case 102:
784 #line 777 "perly.y"
785     { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
786                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
787                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
788                         ;}
789     break;
790
791   case 103:
792 #line 782 "perly.y"
793     { (yyval.opval) = newBINOP(OP_AELEM, 0,
794                                         ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
795                                         scalar((ps[(4) - (5)].val.opval)));
796                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
797                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
798                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
799                         ;}
800     break;
801
802   case 104:
803 #line 790 "perly.y"
804     { (yyval.opval) = newBINOP(OP_AELEM, 0,
805                                         ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
806                                         scalar((ps[(3) - (4)].val.opval)));
807                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
808                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
809                         ;}
810     break;
811
812   case 105:
813 #line 797 "perly.y"
814     { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
815                             PL_parser->expect = XOPERATOR;
816                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
817                           TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
818                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
819                         ;}
820     break;
821
822   case 106:
823 #line 804 "perly.y"
824     { (yyval.opval) = newBINOP(OP_HELEM, 0,
825                                         ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
826                                         jmaybe((ps[(4) - (6)].val.opval)));
827                             PL_parser->expect = XOPERATOR;
828                           TOKEN_GETMAD((ps[(2) - (6)].val.i_tkval),(yyval.opval),'a');
829                           TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),'{');
830                           TOKEN_GETMAD((ps[(5) - (6)].val.i_tkval),(yyval.opval),';');
831                           TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),'}');
832                         ;}
833     break;
834
835   case 107:
836 #line 814 "perly.y"
837     { (yyval.opval) = newBINOP(OP_HELEM, 0,
838                                         ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
839                                         jmaybe((ps[(3) - (5)].val.opval)));
840                             PL_parser->expect = XOPERATOR;
841                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
842                           TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
843                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
844                         ;}
845     break;
846
847   case 108:
848 #line 823 "perly.y"
849     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
850                                    newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
851                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
852                           TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
853                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
854                         ;}
855     break;
856
857   case 109:
858 #line 830 "perly.y"
859     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
860                                    append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
861                                        newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
862                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'a');
863                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
864                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
865                         ;}
866     break;
867
868   case 110:
869 #line 839 "perly.y"
870     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
871                                    append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
872                                                newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
873                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
874                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
875                         ;}
876     break;
877
878   case 111:
879 #line 846 "perly.y"
880     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
881                                    newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
882                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
883                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
884                         ;}
885     break;
886
887   case 112:
888 #line 852 "perly.y"
889     { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
890                           TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
891                           TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
892                           TOKEN_GETMAD((ps[(4) - (6)].val.i_tkval),(yyval.opval),'[');
893                           TOKEN_GETMAD((ps[(6) - (6)].val.i_tkval),(yyval.opval),']');
894                         ;}
895     break;
896
897   case 113:
898 #line 859 "perly.y"
899     { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), Nullop);
900                           TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
901                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
902                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'[');
903                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),']');
904                         ;}
905     break;
906
907   case 114:
908 #line 869 "perly.y"
909     { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
910                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
911                         ;}
912     break;
913
914   case 115:
915 #line 873 "perly.y"
916     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
917                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
918                         ;}
919     break;
920
921   case 116:
922 #line 877 "perly.y"
923     {   if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
924                                 scalar((ps[(1) - (3)].val.opval));
925                             (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
926                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
927                         ;}
928     break;
929
930   case 117:
931 #line 883 "perly.y"
932     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
933                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
934                         ;}
935     break;
936
937   case 118:
938 #line 887 "perly.y"
939     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
940                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
941                         ;}
942     break;
943
944   case 119:
945 #line 891 "perly.y"
946     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
947                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
948                         ;}
949     break;
950
951   case 120:
952 #line 895 "perly.y"
953     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
954                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
955                         ;}
956     break;
957
958   case 121:
959 #line 899 "perly.y"
960     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
961                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
962                         ;}
963     break;
964
965   case 122:
966 #line 903 "perly.y"
967     { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
968                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
969                         ;}
970     break;
971
972   case 123:
973 #line 907 "perly.y"
974     {
975                           (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
976                           DO_MAD(
977                               UNOP *op;
978                               op = (UNOP*)(yyval.opval);
979                               op = (UNOP*)op->op_first; /* get to flop */
980                               op = (UNOP*)op->op_first; /* get to flip */
981                               op = (UNOP*)op->op_first; /* get to range */
982                               token_getmad((ps[(2) - (3)].val.i_tkval),(OP*)op,'o');
983                             )
984                         ;}
985     break;
986
987   case 124:
988 #line 919 "perly.y"
989     { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
990                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
991                         ;}
992     break;
993
994   case 125:
995 #line 923 "perly.y"
996     { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
997                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
998                         ;}
999     break;
1000
1001   case 126:
1002 #line 927 "perly.y"
1003     { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1004                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
1005                         ;}
1006     break;
1007
1008   case 127:
1009 #line 931 "perly.y"
1010     { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
1011                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
1012                                 ((yyval.opval)->op_type == OP_NOT
1013                                     ? ((UNOP*)(yyval.opval))->op_first : (yyval.opval)),
1014                                 '~');
1015                         ;}
1016     break;
1017
1018   case 128:
1019 #line 941 "perly.y"
1020     { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
1021                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1022                         ;}
1023     break;
1024
1025   case 129:
1026 #line 945 "perly.y"
1027     { (yyval.opval) = IF_MAD(
1028                                     newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
1029                                     (ps[(2) - (2)].val.opval)
1030                                 );
1031                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'+');
1032                         ;}
1033     break;
1034
1035   case 130:
1036 #line 952 "perly.y"
1037     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1038                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1039                         ;}
1040     break;
1041
1042   case 131:
1043 #line 956 "perly.y"
1044     { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
1045                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1046                         ;}
1047     break;
1048
1049   case 132:
1050 #line 960 "perly.y"
1051     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
1052                                         mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
1053                           TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1054                         ;}
1055     break;
1056
1057   case 133:
1058 #line 965 "perly.y"
1059     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
1060                                         mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
1061                           TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
1062                         ;}
1063     break;
1064
1065   case 134:
1066 #line 970 "perly.y"
1067     { (yyval.opval) = newUNOP(OP_PREINC, 0,
1068                                         mod(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
1069                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1070                         ;}
1071     break;
1072
1073   case 135:
1074 #line 975 "perly.y"
1075     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
1076                                         mod(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
1077                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1078                         ;}
1079     break;
1080
1081   case 136:
1082 #line 984 "perly.y"
1083     { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
1084                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
1085                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
1086                         ;}
1087     break;
1088
1089   case 137:
1090 #line 989 "perly.y"
1091     { (yyval.opval) = newANONLIST(Nullop);
1092                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
1093                           TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
1094                         ;}
1095     break;
1096
1097   case 138:
1098 #line 994 "perly.y"
1099     { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
1100                           TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
1101                           TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
1102                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),'}');
1103                         ;}
1104     break;
1105
1106   case 139:
1107 #line 1000 "perly.y"
1108     { (yyval.opval) = newANONHASH(Nullop);
1109                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
1110                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
1111                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),'}');
1112                         ;}
1113     break;
1114
1115   case 140:
1116 #line 1006 "perly.y"
1117     { SvREFCNT_inc_simple_void(PL_compcv);
1118                           (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1119                           TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1120                           OP_GETMAD((ps[(3) - (5)].val.opval),(yyval.opval),'s');
1121                           OP_GETMAD((ps[(4) - (5)].val.opval),(yyval.opval),'a');
1122                         ;}
1123     break;
1124
1125   case 141:
1126 #line 1017 "perly.y"
1127     { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
1128                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1129                         ;}
1130     break;
1131
1132   case 142:
1133 #line 1021 "perly.y"
1134     { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((ps[(2) - (2)].val.opval)));
1135                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
1136                         ;}
1137     break;
1138
1139   case 143:
1140 #line 1025 "perly.y"
1141     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1142                             OPf_SPECIAL|OPf_STACKED,
1143                             prepend_elem(OP_LIST,
1144                                 scalar(newCVREF(
1145                                     (OPpENTERSUB_AMPER<<8),
1146                                     scalar((ps[(2) - (4)].val.opval))
1147                                 )),Nullop)); dep();
1148                           TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1149                           TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
1150                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1151                         ;}
1152     break;
1153
1154   case 144:
1155 #line 1037 "perly.y"
1156     { (yyval.opval) = newUNOP(OP_ENTERSUB,
1157                             OPf_SPECIAL|OPf_STACKED,
1158                             append_elem(OP_LIST,
1159                                 (ps[(4) - (5)].val.opval),
1160                                 scalar(newCVREF(
1161                                     (OPpENTERSUB_AMPER<<8),
1162                                     scalar((ps[(2) - (5)].val.opval))
1163                                 )))); dep();
1164                           TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1165                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1166                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1167                         ;}
1168     break;
1169
1170   case 145:
1171 #line 1050 "perly.y"
1172     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1173                             prepend_elem(OP_LIST,
1174                                 scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), Nullop)); dep();
1175                           TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1176                           TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),'(');
1177                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1178                         ;}
1179     break;
1180
1181   case 146:
1182 #line 1058 "perly.y"
1183     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
1184                             prepend_elem(OP_LIST,
1185                                 (ps[(4) - (5)].val.opval),
1186                                 scalar(newCVREF(0,scalar((ps[(2) - (5)].val.opval)))))); dep();
1187                           TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
1188                           TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
1189                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
1190                         ;}
1191     break;
1192
1193   case 151:
1194 #line 1074 "perly.y"
1195     { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
1196                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
1197                           TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
1198                         ;}
1199     break;
1200
1201   case 152:
1202 #line 1079 "perly.y"
1203     { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((ps[(2) - (2)].val.opval),OP_REFGEN));
1204                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1205                         ;}
1206     break;
1207
1208   case 153:
1209 #line 1083 "perly.y"
1210     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1211     break;
1212
1213   case 154:
1214 #line 1085 "perly.y"
1215     { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1216                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
1217                         ;}
1218     break;
1219
1220   case 155:
1221 #line 1089 "perly.y"
1222     { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
1223                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1224                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1225                         ;}
1226     break;
1227
1228   case 156:
1229 #line 1094 "perly.y"
1230     { (yyval.opval) = sawparens(newNULLLIST());
1231                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1232                           TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1233                         ;}
1234     break;
1235
1236   case 157:
1237 #line 1099 "perly.y"
1238     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1239     break;
1240
1241   case 158:
1242 #line 1101 "perly.y"
1243     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1244     break;
1245
1246   case 159:
1247 #line 1103 "perly.y"
1248     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1249     break;
1250
1251   case 160:
1252 #line 1105 "perly.y"
1253     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1254     break;
1255
1256   case 161:
1257 #line 1107 "perly.y"
1258     { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
1259     break;
1260
1261   case 162:
1262 #line 1109 "perly.y"
1263     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1264     break;
1265
1266   case 163:
1267 #line 1111 "perly.y"
1268     { (yyval.opval) = prepend_elem(OP_ASLICE,
1269                                 newOP(OP_PUSHMARK, 0),
1270                                     newLISTOP(OP_ASLICE, 0,
1271                                         list((ps[(3) - (4)].val.opval)),
1272                                         ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
1273                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
1274                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
1275                         ;}
1276     break;
1277
1278   case 164:
1279 #line 1120 "perly.y"
1280     { (yyval.opval) = prepend_elem(OP_HSLICE,
1281                                 newOP(OP_PUSHMARK, 0),
1282                                     newLISTOP(OP_HSLICE, 0,
1283                                         list((ps[(3) - (5)].val.opval)),
1284                                         ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
1285                             PL_parser->expect = XOPERATOR;
1286                           TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
1287                           TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),';');
1288                           TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),'}');
1289                         ;}
1290     break;
1291
1292   case 165:
1293 #line 1131 "perly.y"
1294     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1295     break;
1296
1297   case 166:
1298 #line 1133 "perly.y"
1299     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
1300     break;
1301
1302   case 167:
1303 #line 1135 "perly.y"
1304     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
1305                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1306                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1307                         ;}
1308     break;
1309
1310   case 168:
1311 #line 1140 "perly.y"
1312     {
1313                           (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1314                                 append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
1315                           DO_MAD(
1316                               OP* op = (yyval.opval);
1317                               if (op->op_type == OP_CONST) { /* defeat const fold */
1318                                 op = (OP*)op->op_madprop->mad_val;
1319                               }
1320                               token_getmad((ps[(2) - (4)].val.i_tkval),op,'(');
1321                               token_getmad((ps[(4) - (4)].val.i_tkval),op,')');
1322                           )
1323                         ;}
1324     break;
1325
1326   case 169:
1327 #line 1153 "perly.y"
1328     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1329                             append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
1330                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1331                         ;}
1332     break;
1333
1334   case 170:
1335 #line 1158 "perly.y"
1336     { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
1337                             PL_hints |= HINT_BLOCK_SCOPE;
1338                           TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1339                         ;}
1340     break;
1341
1342   case 171:
1343 #line 1163 "perly.y"
1344     { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1345                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1346                         ;}
1347     break;
1348
1349   case 172:
1350 #line 1167 "perly.y"
1351     { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
1352                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1353                         ;}
1354     break;
1355
1356   case 173:
1357 #line 1171 "perly.y"
1358     { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1359                           TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1360                         ;}
1361     break;
1362
1363   case 174:
1364 #line 1175 "perly.y"
1365     { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1366                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1367                         ;}
1368     break;
1369
1370   case 175:
1371 #line 1179 "perly.y"
1372     { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
1373                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1374                         ;}
1375     break;
1376
1377   case 176:
1378 #line 1183 "perly.y"
1379     { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
1380                           TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1381                         ;}
1382     break;
1383
1384   case 177:
1385 #line 1187 "perly.y"
1386     { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
1387                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
1388                         ;}
1389     break;
1390
1391   case 178:
1392 #line 1191 "perly.y"
1393     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
1394     break;
1395
1396   case 179:
1397 #line 1193 "perly.y"
1398     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1399                             append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
1400     break;
1401
1402   case 180:
1403 #line 1196 "perly.y"
1404     { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
1405                           TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
1406                         ;}
1407     break;
1408
1409   case 181:
1410 #line 1200 "perly.y"
1411     { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
1412                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1413                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1414                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1415                         ;}
1416     break;
1417
1418   case 182:
1419 #line 1206 "perly.y"
1420     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
1421                                 scalar((ps[(1) - (1)].val.opval))); ;}
1422     break;
1423
1424   case 183:
1425 #line 1209 "perly.y"
1426     { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
1427                             ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
1428                             : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
1429
1430                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
1431                           TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
1432                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1433                         ;}
1434     break;
1435
1436   case 184:
1437 #line 1218 "perly.y"
1438     { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
1439                           TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
1440                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1441                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1442                         ;}
1443     break;
1444
1445   case 185:
1446 #line 1224 "perly.y"
1447     { (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1);
1448                           TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
1449                           TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')');
1450                         ;}
1451     break;
1452
1453   case 188:
1454 #line 1234 "perly.y"
1455     { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
1456                           DO_MAD(
1457                               token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
1458                               append_madprops((ps[(3) - (3)].val.opval)->op_madprop, (yyval.opval), 'a');
1459                               (ps[(3) - (3)].val.opval)->op_madprop = 0;
1460                           )
1461                         ;}
1462     break;
1463
1464   case 189:
1465 #line 1242 "perly.y"
1466     { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
1467                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
1468                         ;}
1469     break;
1470
1471   case 190:
1472 #line 1249 "perly.y"
1473     { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
1474                           TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
1475                           TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
1476                         ;}
1477     break;
1478
1479   case 191:
1480 #line 1254 "perly.y"
1481     { (yyval.opval) = sawparens(newNULLLIST());
1482                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
1483                           TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
1484                         ;}
1485     break;
1486
1487   case 192:
1488 #line 1259 "perly.y"
1489     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1490     break;
1491
1492   case 193:
1493 #line 1261 "perly.y"
1494     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1495     break;
1496
1497   case 194:
1498 #line 1263 "perly.y"
1499     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1500     break;
1501
1502   case 195:
1503 #line 1268 "perly.y"
1504     { (yyval.opval) = Nullop; ;}
1505     break;
1506
1507   case 196:
1508 #line 1270 "perly.y"
1509     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1510     break;
1511
1512   case 197:
1513 #line 1274 "perly.y"
1514     { (yyval.opval) = Nullop; ;}
1515     break;
1516
1517   case 198:
1518 #line 1276 "perly.y"
1519     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1520     break;
1521
1522   case 199:
1523 #line 1278 "perly.y"
1524     {
1525 #ifdef MAD
1526                           OP* op = newNULLLIST();
1527                           token_getmad((ps[(2) - (2)].val.i_tkval),op,',');
1528                           (yyval.opval) = append_elem(OP_LIST, (ps[(1) - (2)].val.opval), op);
1529 #else
1530                           (yyval.opval) = (ps[(1) - (2)].val.opval);
1531 #endif
1532
1533                         ;}
1534     break;
1535
1536   case 200:
1537 #line 1293 "perly.y"
1538     { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
1539     break;
1540
1541   case 201:
1542 #line 1297 "perly.y"
1543     { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
1544                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
1545                         ;}
1546     break;
1547
1548   case 202:
1549 #line 1303 "perly.y"
1550     { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
1551                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
1552                         ;}
1553     break;
1554
1555   case 203:
1556 #line 1309 "perly.y"
1557     { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1558                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
1559                         ;}
1560     break;
1561
1562   case 204:
1563 #line 1315 "perly.y"
1564     { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
1565                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
1566                         ;}
1567     break;
1568
1569   case 205:
1570 #line 1321 "perly.y"
1571     { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
1572                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
1573                         ;}
1574     break;
1575
1576   case 206:
1577 #line 1327 "perly.y"
1578     { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
1579                           TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
1580                         ;}
1581     break;
1582
1583   case 207:
1584 #line 1334 "perly.y"
1585     { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
1586     break;
1587
1588   case 208:
1589 #line 1336 "perly.y"
1590     { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
1591     break;
1592
1593   case 209:
1594 #line 1338 "perly.y"
1595     { (yyval.opval) = scope((ps[(1) - (1)].val.opval)); ;}
1596     break;
1597
1598   case 210:
1599 #line 1341 "perly.y"
1600     { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
1601     break;
1602
1603
1604 /* Line 1267 of yacc.c.  */
1605
1606       default: break;
1607