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