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