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