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