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