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