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