diff options
author | David Mitchell <davem@iabyn.com> | 2022-04-16 11:48:20 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2022-04-16 18:22:13 +0100 |
commit | f8245cd9653db9b3e3fef57c3913d9deb33972b2 (patch) | |
tree | 754659507371a9a12f8f2a20cbf2a8b814e281a2 | |
parent | 55d95e1b172db3fff30c261b7b7ea9e0bca8328a (diff) | |
download | perl-f8245cd9653db9b3e3fef57c3913d9deb33972b2.tar.gz |
for my ($x) ...: fix handling of degenerate 1-var
The new
for my ($x,$y,...) (...) { ... }
syntax has a couple of problems in the degenerate case of a single
variable:
for my ($x) (...) { ... }
First, the loop variable is marked as lexical, but not as a variable
to be introduced. So it behaves roughly as if written like:
{ my $x; for $x (...) { ... } }
I can't think of any user-visible runtime change in behaviour this bug
causes, so I haven't included a test for it.
Second, it was being incorrectly deparsed as
for $x (...) { ... }
(i.e. without the 'my').
This commit fixes both of these issues.
The basic problem is that the parser, in the case of multiple vars,
passes a list subtree of PADSVs as the 'sv' argument of Perl_newFOROP,
but in the case of a single var, passes a single PADSV op instead.
This single PADSV doesn't have the LVINTRO flag set, so is
indistinguishable from plain
my $x; for $x ....
This commit makes the parser set the OPf_PARENS flag on the lone PADSV
to signal to newFOROP() that it's a degenerate 1-var list, and
newFOROP() sets the OPf_PARENS flag on the ENTERITER op to signal to the
deparser that this is "for my (...)" syntax, even if it only has a
single var.
-rw-r--r-- | ext/B/t/optree_for.t | 16 | ||||
-rw-r--r-- | lib/B/Deparse.pm | 9 | ||||
-rw-r--r-- | op.c | 10 | ||||
-rw-r--r-- | perly.act | 929 | ||||
-rw-r--r-- | perly.h | 247 | ||||
-rw-r--r-- | perly.tab | 391 | ||||
-rw-r--r-- | perly.y | 4 |
7 files changed, 938 insertions, 668 deletions
diff --git a/ext/B/t/optree_for.t b/ext/B/t/optree_for.t index a72324cfaf..415a1492c8 100644 --- a/ext/B/t/optree_for.t +++ b/ext/B/t/optree_for.t @@ -194,7 +194,7 @@ checkOptree ( name => 'for my ($var) (@a)', 2 <0> pushmark sM 3 <#> gv[*a] s 4 <1> rv2av[t3] sKRM/1 -5 <{> enteriter(next->7 last->a redo->6)[$var:1474,1477] KS +5 <{> enteriter(next->7 last->a redo->6)[$var:1474,1477] KPS/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v @@ -207,7 +207,7 @@ EOT_EOT 2 <0> pushmark sM 3 <$> gv(*a) s 4 <1> rv2av[t2] sKRM/1 -5 <{> enteriter(next->7 last->a redo->6)[$var:1474,1477] KS +5 <{> enteriter(next->7 last->a redo->6)[$var:1474,1477] KPS/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v @@ -225,7 +225,7 @@ checkOptree ( name => 'for my ($var) (@lexical)', 1 <;> nextstate(main 1466 optree_for.t:100) v 2 <0> pushmark sM 3 <0> padav[@lexical:FAKE::7] sRM -4 <{> enteriter(next->6 last->9 redo->5)[$var:1481,1484] KS +4 <{> enteriter(next->6 last->9 redo->5)[$var:1481,1484] KPS/LVINTRO 7 <0> iter s 8 <|> and(other->5) K/1 5 <0> stub v @@ -237,7 +237,7 @@ EOT_EOT 1 <;> nextstate(main 424 optree_for.t:111) v:>,<,% 2 <0> pushmark sM 3 <0> padav[@lexical:FAKE::2] sRM -4 <{> enteriter(next->6 last->9 redo->5)[$var:1481,1484] KS +4 <{> enteriter(next->6 last->9 redo->5)[$var:1481,1484] KPS/LVINTRO 7 <0> iter s 8 <|> and(other->5) K/1 5 <0> stub v @@ -256,7 +256,7 @@ checkOptree ( name => 'for my ($key, $value) (%h)', 2 <0> pushmark sM 3 <#> gv[*h] s 4 <1> rv2hv[t4] lKM -5 <{> enteriter(next->7 last->a redo->6)[$key:1488,1491; $value:1488,1491] K/LVINTRO +5 <{> enteriter(next->7 last->a redo->6)[$key:1488,1491; $value:1488,1491] KP/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v @@ -269,7 +269,7 @@ EOT_EOT 2 <0> pushmark sM 3 <$> gv(*h) s 4 <1> rv2hv[t3] lKM -5 <{> enteriter(next->7 last->a redo->6)[$key:1488,1491; $value:1488,1491] K/LVINTRO +5 <{> enteriter(next->7 last->a redo->6)[$key:1488,1491; $value:1488,1491] KP/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v @@ -288,7 +288,7 @@ checkOptree ( name => 'for my ($foo, $bar, $baz) (@a)', 2 <0> pushmark sM 3 <#> gv[*a] s 4 <1> rv2av[t5] sKRM/1 -5 <{> enteriter(next->7 last->a redo->6)[$foo:1495,1498; $bar:1495,1498; $baz:1495,1498] KS/LVINTRO +5 <{> enteriter(next->7 last->a redo->6)[$foo:1495,1498; $bar:1495,1498; $baz:1495,1498] KPS/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v @@ -301,7 +301,7 @@ EOT_EOT 2 <0> pushmark sM 3 <$> gv(*a) s 4 <1> rv2av[t4] sKRM/1 -5 <{> enteriter(next->7 last->a redo->6)[$foo:1495,1498; $bar:1495,1498; $baz:1495,1498] KS/LVINTRO +5 <{> enteriter(next->7 last->a redo->6)[$foo:1495,1498; $bar:1495,1498; $baz:1495,1498] KPS/LVINTRO 8 <0> iter s 9 <|> and(other->6) K/1 6 <0> stub v diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm index b50608ca86..bdf3b3961f 100644 --- a/lib/B/Deparse.pm +++ b/lib/B/Deparse.pm @@ -3978,10 +3978,13 @@ sub loop_common { } else { $ary = $self->deparse($ary, 1); } - my $iter_targ = $kid->first->first->targ; - if ($iter_targ) { + + if ($enter->flags & OPf_PARENS) { + # for my ($x, $y, ...) ... # for my ($foo, $bar) () stores the count (less 1) in the targ of - # the ITER op. + # the ITER op. For the degenerate case of 1 var ($x), the + # TARG is zero, so it works anyway + my $iter_targ = $kid->first->first->targ; my @vars; my $targ = $enter->targ; while ($iter_targ-- >= 0) { @@ -10320,6 +10320,7 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont) PADOFFSET how_many_more = 0; I32 iterflags = 0; I32 iterpflags = 0; + bool parens = 0; PERL_ARGS_ASSERT_NEWFOROP; @@ -10339,6 +10340,11 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont) iterpflags |= OPpITER_DEF; } else if (sv->op_type == OP_PADSV) { /* private variable */ + if (sv->op_flags & OPf_PARENS) { + /* handle degenerate 1-var form of "for my ($x, ...)" */ + sv->op_private |= OPpLVAL_INTRO; + parens = 1; + } iterpflags = sv->op_private & OPpLVAL_INTRO; /* for my $x () */ padoff = sv->op_targ; sv->op_targ = 0; @@ -10356,6 +10362,7 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont) PADOFFSET i; iterpflags = OPpLVAL_INTRO; /* for my ($k, $v) () */ + parens = 1; if (!pushmark || pushmark->op_type != OP_PUSHMARK) { Perl_croak(aTHX_ "panic: newFORLOOP, found %s, expecting pushmark", @@ -10487,6 +10494,9 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont) OpLASTSIB_set(loop->op_last, (OP*)loop); } loop->op_targ = padoff; + if (parens) + /* hint to deparser that this: for my (...) ... */ + loop->op_flags |= OPf_PARENS; iter = newOP(OP_ITER, 0); iter->op_targ = how_many_more; return newWHILEOP(flags, 1, loop, iter, block, cont, 0); @@ -6,7 +6,7 @@ case 2: #line 140 "perly.y" - { + { parser->expect = XSTATE; (yyval.ival) = 0; } @@ -15,7 +15,7 @@ case 2: case 3: #line 145 "perly.y" - { + { newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval))); PL_compiling.cop_seq = 0; (yyval.ival) = 0; @@ -25,7 +25,7 @@ case 2: case 4: #line 151 "perly.y" - { + { parser->expect = XTERM; (yyval.ival) = 0; } @@ -34,7 +34,7 @@ case 2: case 5: #line 156 "perly.y" - { + { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; } @@ -43,7 +43,7 @@ case 2: case 6: #line 161 "perly.y" - { + { parser->expect = XBLOCK; (yyval.ival) = 0; } @@ -52,7 +52,7 @@ case 2: case 7: #line 166 "perly.y" - { + { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -64,7 +64,7 @@ case 2: case 8: #line 174 "perly.y" - { + { parser->expect = XSTATE; (yyval.ival) = 0; } @@ -73,7 +73,7 @@ case 2: case 9: #line 179 "perly.y" - { + { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -85,7 +85,7 @@ case 2: case 10: #line 187 "perly.y" - { + { parser->expect = XSTATE; (yyval.ival) = 0; } @@ -94,7 +94,7 @@ case 2: case 11: #line 192 "perly.y" - { + { PL_pad_reset_pending = TRUE; PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; @@ -106,7 +106,7 @@ case 2: case 12: #line 200 "perly.y" - { + { parser->expect = XSTATE; (yyval.ival) = 0; } @@ -115,7 +115,7 @@ case 2: case 13: #line 205 "perly.y" - { + { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; } @@ -124,7 +124,7 @@ case 2: case 14: #line 210 "perly.y" - { + { parser->expect = XSTATE; (yyval.ival) = 0; } @@ -133,7 +133,7 @@ case 2: case 15: #line 215 "perly.y" - { + { PL_eval_root = (ps[0].val.opval); (yyval.ival) = 0; } @@ -142,7 +142,7 @@ case 2: case 16: #line 223 "perly.y" - { if (parser->copline > (line_t)(ps[-3].val.ival)) + { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); } @@ -151,13 +151,13 @@ case 2: case 17: #line 230 "perly.y" - { (yyval.opval) = NULL; } + { (yyval.opval) = NULL; } break; case 18: #line 235 "perly.y" - { if (parser->copline > (line_t)(ps[-6].val.ival)) + { if (parser->copline > (line_t)(ps[-6].val.ival)) parser->copline = (line_t)(ps[-6].val.ival); (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval)); } @@ -166,14 +166,14 @@ case 2: case 19: #line 242 "perly.y" - { (yyval.ival) = block_start(TRUE); + { (yyval.ival) = block_start(TRUE); parser->parsed_sub = 0; } break; case 20: #line 247 "perly.y" - { if (parser->copline > (line_t)(ps[-3].val.ival)) + { if (parser->copline > (line_t)(ps[-3].val.ival)) parser->copline = (line_t)(ps[-3].val.ival); (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval)); } @@ -182,14 +182,14 @@ case 2: case 21: #line 254 "perly.y" - { (yyval.ival) = block_start(FALSE); + { (yyval.ival) = block_start(FALSE); parser->parsed_sub = 0; } break; case 23: #line 262 "perly.y" - { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); + { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) PL_hints |= HINT_BLOCK_SCOPE; @@ -199,7 +199,7 @@ case 2: case 25: #line 273 "perly.y" - { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); + { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval)); PL_pad_reset_pending = TRUE; if ((ps[-1].val.opval) && (ps[0].val.opval)) PL_hints |= HINT_BLOCK_SCOPE; @@ -209,7 +209,7 @@ case 2: case 26: #line 282 "perly.y" - { + { (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL; } @@ -217,13 +217,13 @@ case 2: case 27: #line 286 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } + { (yyval.opval) = (ps[0].val.opval); } break; case 28: #line 290 "perly.y" - { + { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, savepv(SvPVX_const(label)), (ps[0].val.opval)); @@ -234,7 +234,7 @@ case 2: case 29: #line 297 "perly.y" - { + { SV *label = cSVOPx_sv((ps[-1].val.opval)); (yyval.opval) = newSTATEOP(SvFLAGS(label) & SVf_UTF8, savepv(SvPVX_const(label)), (ps[0].val.opval)); @@ -245,13 +245,13 @@ case 2: case 30: #line 307 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } + { (yyval.opval) = (ps[0].val.opval); } break; case 31: #line 309 "perly.y" - { + { CV *fmtcv = PL_compcv; newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval)); (yyval.opval) = NULL; @@ -265,7 +265,7 @@ case 2: case 32: #line 321 "perly.y" - { + { init_named_cv(PL_compcv, (ps[-1].val.opval)); parser->in_my = 0; parser->in_my_stash = NULL; @@ -275,7 +275,7 @@ case 2: case 33: #line 327 "perly.y" - { + { SvREFCNT_inc_simple_void(PL_compcv); (ps[-5].val.opval)->op_type == OP_CONST ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)) @@ -290,7 +290,7 @@ case 2: case 34: #line 342 "perly.y" - { + { init_named_cv(PL_compcv, (ps[-1].val.opval)); parser->in_my = 0; parser->in_my_stash = NULL; @@ -300,7 +300,7 @@ case 2: case 35: #line 348 "perly.y" - { + { SvREFCNT_inc_simple_void(PL_compcv); (ps[-4].val.opval)->op_type == OP_CONST ? newATTRSUB((ps[-3].val.ival), (ps[-4].val.opval), NULL, (ps[-1].val.opval), (ps[0].val.opval)) @@ -315,7 +315,7 @@ case 2: case 36: #line 359 "perly.y" - { + { package((ps[-1].val.opval)); if ((ps[-2].val.opval)) package_version((ps[-2].val.opval)); @@ -326,13 +326,13 @@ case 2: case 37: #line 366 "perly.y" - { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } + { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } break; case 38: #line 368 "perly.y" - { + { SvREFCNT_inc_simple_void(PL_compcv); utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval)); parser->parsed_sub = 1; @@ -343,7 +343,7 @@ case 2: case 39: #line 375 "perly.y" - { + { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval))); parser->copline = (line_t)(ps[-6].val.ival); @@ -353,7 +353,7 @@ case 2: case 40: #line 381 "perly.y" - { + { (yyval.opval) = block_end((ps[-4].val.ival), newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval)))); parser->copline = (line_t)(ps[-6].val.ival); @@ -363,7 +363,7 @@ case 2: case 41: #line 387 "perly.y" - { + { (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0)); parser->copline = (line_t)(ps[-5].val.ival); } @@ -372,19 +372,19 @@ case 2: case 42: #line 392 "perly.y" - { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); } + { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); } break; case 43: #line 394 "perly.y" - { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); } + { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); } break; case 44: #line 396 "perly.y" - { + { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival))); @@ -395,7 +395,7 @@ case 2: case 45: #line 403 "perly.y" - { + { (yyval.opval) = block_end((ps[-5].val.ival), newWHILEOP(0, 1, NULL, (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival))); @@ -406,19 +406,19 @@ case 2: case 46: #line 410 "perly.y" - { parser->expect = XTERM; } + { parser->expect = XTERM; } break; case 47: #line 412 "perly.y" - { parser->expect = XTERM; } + { parser->expect = XTERM; } break; case 48: #line 415 "perly.y" - { + { OP *initop = (ps[-9].val.opval); OP *forop = newWHILEOP(0, 1, NULL, scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival)); @@ -437,7 +437,7 @@ case 2: case 49: #line 430 "perly.y" - { + { (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))); parser->copline = (line_t)(ps[-8].val.ival); } @@ -446,7 +446,11 @@ case 2: case 50: #line 435 "perly.y" - { + { + if ((ps[-6].val.opval)->op_type == OP_PADSV) + /* degenerate case of 1 var: for my ($x) .... + Flag it so it can be special-cased in newFOROP */ + (ps[-6].val.opval)->op_flags |= OPf_PARENS; (yyval.opval) = block_end((ps[-8].val.ival), newFOROP(0, (ps[-6].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-10].val.ival); } @@ -454,8 +458,8 @@ case 2: break; case 51: -#line 440 "perly.y" - { +#line 444 "perly.y" + { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-7].val.ival); @@ -464,14 +468,14 @@ case 2: break; case 52: -#line 446 "perly.y" - { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } +#line 450 "perly.y" + { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 53: -#line 448 "perly.y" - { +#line 452 "perly.y" + { (yyval.opval) = block_end( (ps[-7].val.ival), newFOROP(0, @@ -487,8 +491,8 @@ case 2: break; case 54: -#line 461 "perly.y" - { +#line 465 "perly.y" + { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP( 0, op_lvalue(newUNOP(OP_REFGEN, 0, (ps[-6].val.opval)), @@ -499,8 +503,8 @@ case 2: break; case 55: -#line 469 "perly.y" - { +#line 473 "perly.y" + { (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0, NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))); parser->copline = (line_t)(ps[-6].val.ival); @@ -509,20 +513,20 @@ case 2: break; case 56: -#line 475 "perly.y" - { parser->in_my = 1; } +#line 479 "perly.y" + { parser->in_my = 1; } break; case 57: -#line 477 "perly.y" - { parser->in_my = 0; intro_my(); } +#line 481 "perly.y" + { parser->in_my = 0; intro_my(); } break; case 58: -#line 479 "perly.y" - { +#line 483 "perly.y" + { (yyval.opval) = newTRYCATCHOP(0, (ps[-9].val.opval), (ps[-4].val.opval), block_end((ps[-5].val.ival), op_scope((ps[-1].val.opval)))); if((ps[0].val.opval)) @@ -533,8 +537,8 @@ case 2: break; case 59: -#line 487 "perly.y" - { +#line 491 "perly.y" + { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, NULL, (ps[-1].val.opval), (ps[0].val.opval), 0); @@ -543,8 +547,8 @@ case 2: break; case 60: -#line 493 "perly.y" - { +#line 497 "perly.y" + { package((ps[-2].val.opval)); if ((ps[-3].val.opval)) { package_version((ps[-3].val.opval)); @@ -554,8 +558,8 @@ case 2: break; case 61: -#line 500 "perly.y" - { +#line 504 "perly.y" + { /* a block is a loop that happens once */ (yyval.opval) = newWHILEOP(0, 1, NULL, NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), NULL, 0); @@ -566,24 +570,24 @@ case 2: break; case 62: -#line 508 "perly.y" - { +#line 512 "perly.y" + { (yyval.opval) = (ps[-1].val.opval); } break; case 63: -#line 512 "perly.y" - { +#line 516 "perly.y" + { (yyval.opval) = newDEFEROP(0, op_scope((ps[0].val.opval))); } break; case 64: -#line 516 "perly.y" - { +#line 520 "perly.y" + { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); } @@ -591,8 +595,8 @@ case 2: break; case 65: -#line 521 "perly.y" - { +#line 525 "perly.y" + { (yyval.opval) = NULL; parser->copline = NOLINE; } @@ -600,8 +604,8 @@ case 2: break; case 66: -#line 529 "perly.y" - { OP *list; +#line 533 "perly.y" + { OP *list; if ((ps[0].val.opval)) { OP *term = (ps[0].val.opval); list = op_append_elem(OP_LIST, (ps[-1].val.opval), term); @@ -619,63 +623,63 @@ case 2: break; case 68: -#line 548 "perly.y" - { (yyval.opval) = op_unscope((ps[-1].val.opval)); } +#line 552 "perly.y" + { (yyval.opval) = op_unscope((ps[-1].val.opval)); } break; case 70: -#line 556 "perly.y" - { (yyval.opval) = NULL; } +#line 560 "perly.y" + { (yyval.opval) = NULL; } break; case 71: -#line 558 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 562 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 72: -#line 560 "perly.y" - { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); } +#line 564 "perly.y" + { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 73: -#line 562 "perly.y" - { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); } +#line 566 "perly.y" + { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 74: -#line 564 "perly.y" - { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); } +#line 568 "perly.y" + { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); } break; case 75: -#line 566 "perly.y" - { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); } +#line 570 "perly.y" + { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); } break; case 76: -#line 568 "perly.y" - { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL); +#line 572 "perly.y" + { (yyval.opval) = newFOROP(0, NULL, (ps[0].val.opval), (ps[-2].val.opval), NULL); parser->copline = (line_t)(ps[-1].val.ival); } break; case 77: -#line 571 "perly.y" - { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); } +#line 575 "perly.y" + { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); } break; case 79: -#line 578 "perly.y" - { +#line 582 "perly.y" + { ((ps[0].val.opval))->op_flags |= OPf_PARENS; (yyval.opval) = op_scope((ps[0].val.opval)); } @@ -683,8 +687,8 @@ case 2: break; case 80: -#line 583 "perly.y" - { parser->copline = (line_t)(ps[-5].val.ival); +#line 587 "perly.y" + { parser->copline = (line_t)(ps[-5].val.ival); (yyval.opval) = newCONDOP(0, newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)), op_scope((ps[-1].val.opval)), (ps[0].val.opval)); @@ -694,135 +698,135 @@ case 2: break; case 82: -#line 595 "perly.y" - { (yyval.opval) = op_scope((ps[0].val.opval)); } +#line 599 "perly.y" + { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 83: -#line 600 "perly.y" - { (yyval.opval) = NULL; } +#line 604 "perly.y" + { (yyval.opval) = NULL; } break; case 84: -#line 602 "perly.y" - { (yyval.opval) = op_scope((ps[0].val.opval)); } +#line 606 "perly.y" + { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 85: -#line 607 "perly.y" - { (yyval.ival) = (PL_min_intro_pending && +#line 611 "perly.y" + { (yyval.ival) = (PL_min_intro_pending && PL_max_intro_pending >= PL_min_intro_pending); intro_my(); } break; case 88: -#line 619 "perly.y" - { YYSTYPE tmplval; +#line 623 "perly.y" + { YYSTYPE tmplval; (void)scan_num("1", &tmplval); (yyval.opval) = tmplval.opval; } break; case 90: -#line 627 "perly.y" - { (yyval.opval) = invert(scalar((ps[0].val.opval))); } +#line 631 "perly.y" + { (yyval.opval) = invert(scalar((ps[0].val.opval))); } break; case 91: -#line 632 "perly.y" - { (yyval.opval) = (ps[0].val.opval); intro_my(); } +#line 636 "perly.y" + { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 92: -#line 636 "perly.y" - { (yyval.opval) = (ps[0].val.opval); intro_my(); } +#line 640 "perly.y" + { (yyval.opval) = (ps[0].val.opval); intro_my(); } break; case 93: -#line 639 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 643 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 95: -#line 644 "perly.y" - { (yyval.ival) = start_subparse(FALSE, 0); +#line 648 "perly.y" + { (yyval.ival) = start_subparse(FALSE, 0); SAVEFREESV(PL_compcv); } break; case 96: -#line 650 "perly.y" - { (yyval.ival) = start_subparse(FALSE, CVf_ANON); +#line 654 "perly.y" + { (yyval.ival) = start_subparse(FALSE, CVf_ANON); SAVEFREESV(PL_compcv); } break; case 97: -#line 655 "perly.y" - { (yyval.ival) = start_subparse(TRUE, 0); +#line 659 "perly.y" + { (yyval.ival) = start_subparse(TRUE, 0); SAVEFREESV(PL_compcv); } break; case 103: -#line 674 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 678 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 104: -#line 676 "perly.y" - { (yyval.opval) = NULL; } +#line 680 "perly.y" + { (yyval.opval) = NULL; } break; case 105: -#line 681 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 685 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 106: -#line 683 "perly.y" - { (yyval.opval) = NULL; } +#line 687 "perly.y" + { (yyval.opval) = NULL; } break; case 107: -#line 694 "perly.y" - { parser->in_my = 0; (yyval.opval) = NULL; } +#line 698 "perly.y" + { parser->in_my = 0; (yyval.opval) = NULL; } break; case 108: -#line 696 "perly.y" - { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } +#line 700 "perly.y" + { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; case 109: -#line 701 "perly.y" - { (yyval.ival) = '@'; } +#line 705 "perly.y" + { (yyval.ival) = '@'; } break; case 110: -#line 703 "perly.y" - { (yyval.ival) = '%'; } +#line 707 "perly.y" + { (yyval.ival) = '%'; } break; case 111: -#line 707 "perly.y" - { +#line 711 "perly.y" + { I32 sigil = (ps[-2].val.ival); OP *var = (ps[-1].val.opval); OP *defexpr = (ps[0].val.opval); @@ -841,20 +845,20 @@ case 2: break; case 113: -#line 728 "perly.y" - { (yyval.opval) = newOP(OP_NULL, 0); } +#line 732 "perly.y" + { (yyval.opval) = newOP(OP_NULL, 0); } break; case 114: -#line 730 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 734 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 115: -#line 736 "perly.y" - { +#line 740 "perly.y" + { OP *var = (ps[-1].val.opval); OP *defexpr = (ps[0].val.opval); @@ -918,46 +922,46 @@ case 2: break; case 116: -#line 801 "perly.y" - { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } +#line 805 "perly.y" + { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 117: -#line 803 "perly.y" - { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } +#line 807 "perly.y" + { parser->in_my = KEY_sigvar; (yyval.opval) = (ps[0].val.opval); } break; case 118: -#line 809 "perly.y" - { (yyval.opval) = (ps[-1].val.opval); } +#line 813 "perly.y" + { (yyval.opval) = (ps[-1].val.opval); } break; case 119: -#line 811 "perly.y" - { +#line 815 "perly.y" + { (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 120: -#line 815 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 819 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 125: -#line 832 "perly.y" - { (yyval.opval) = (ps[-1].val.opval); } +#line 836 "perly.y" + { (yyval.opval) = (ps[-1].val.opval); } break; case 126: -#line 835 "perly.y" - { +#line 839 "perly.y" + { ENTER; SAVEIV(parser->sig_elems); SAVEIV(parser->sig_optelems); @@ -971,8 +975,8 @@ case 2: break; case 127: -#line 846 "perly.y" - { +#line 850 "perly.y" + { OP *sigops = (ps[0].val.opval); struct op_argcheck_aux *aux; OP *check; @@ -1028,14 +1032,14 @@ case 2: break; case 129: -#line 903 "perly.y" - { (yyval.opval) = NULL; } +#line 907 "perly.y" + { (yyval.opval) = NULL; } break; case 130: -#line 909 "perly.y" - { +#line 913 "perly.y" + { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); (yyval.opval) = block_end((ps[-3].val.ival), (ps[-1].val.opval)); @@ -1044,14 +1048,14 @@ case 2: break; case 132: -#line 921 "perly.y" - { (yyval.opval) = NULL; } +#line 925 "perly.y" + { (yyval.opval) = NULL; } break; case 133: -#line 926 "perly.y" - { +#line 930 "perly.y" + { if (parser->copline > (line_t)(ps[-2].val.ival)) parser->copline = (line_t)(ps[-2].val.ival); (yyval.opval) = block_end((ps[-4].val.ival), @@ -1061,26 +1065,26 @@ case 2: break; case 134: -#line 937 "perly.y" - { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } +#line 941 "perly.y" + { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 135: -#line 939 "perly.y" - { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } +#line 943 "perly.y" + { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 137: -#line 945 "perly.y" - { (yyval.opval) = (ps[-1].val.opval); } +#line 949 "perly.y" + { (yyval.opval) = (ps[-1].val.opval); } break; case 138: -#line 947 "perly.y" - { +#line 951 "perly.y" + { OP* term = (ps[0].val.opval); (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term); } @@ -1088,24 +1092,24 @@ case 2: break; case 140: -#line 956 "perly.y" - { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, +#line 960 "perly.y" + { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) ); } break; case 141: -#line 960 "perly.y" - { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED, +#line 964 "perly.y" + { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED, op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) ); } break; case 142: -#line 964 "perly.y" - { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, +#line 968 "perly.y" + { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)), newMETHOP(OP_METHOD, 0, (ps[-3].val.opval)))); @@ -1114,8 +1118,8 @@ case 2: break; case 143: -#line 970 "perly.y" - { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, +#line 974 "perly.y" + { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, scalar((ps[-2].val.opval)), newMETHOP(OP_METHOD, 0, (ps[0].val.opval)))); } @@ -1123,8 +1127,8 @@ case 2: break; case 144: -#line 975 "perly.y" - { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, +#line 979 "perly.y" + { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), newMETHOP(OP_METHOD, 0, (ps[-2].val.opval)))); @@ -1133,8 +1137,8 @@ case 2: break; case 145: -#line 981 "perly.y" - { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, +#line 985 "perly.y" + { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)), newMETHOP(OP_METHOD, 0, (ps[-4].val.opval)))); @@ -1143,33 +1147,33 @@ case 2: break; case 146: -#line 987 "perly.y" - { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } +#line 991 "perly.y" + { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 147: -#line 989 "perly.y" - { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } +#line 993 "perly.y" + { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 148: -#line 991 "perly.y" - { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } +#line 995 "perly.y" + { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 149: -#line 993 "perly.y" - { SvREFCNT_inc_simple_void(PL_compcv); +#line 997 "perly.y" + { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, NULL, (ps[0].val.opval)); } break; case 150: -#line 996 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1000 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval))); } @@ -1177,21 +1181,21 @@ case 2: break; case 153: -#line 1011 "perly.y" - { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } +#line 1015 "perly.y" + { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); } break; case 154: -#line 1013 "perly.y" - { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); +#line 1017 "perly.y" + { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval))); } break; case 155: -#line 1016 "perly.y" - { (yyval.opval) = newBINOP(OP_AELEM, 0, +#line 1020 "perly.y" + { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-4].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); } @@ -1199,8 +1203,8 @@ case 2: break; case 156: -#line 1021 "perly.y" - { (yyval.opval) = newBINOP(OP_AELEM, 0, +#line 1025 "perly.y" + { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[-3].val.opval)),OP_RV2AV), scalar((ps[-1].val.opval))); } @@ -1208,31 +1212,31 @@ case 2: break; case 157: -#line 1026 "perly.y" - { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); +#line 1030 "perly.y" + { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval))); } break; case 158: -#line 1029 "perly.y" - { (yyval.opval) = newBINOP(OP_HELEM, 0, +#line 1033 "perly.y" + { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-5].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; case 159: -#line 1033 "perly.y" - { (yyval.opval) = newBINOP(OP_HELEM, 0, +#line 1037 "perly.y" + { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[-4].val.opval)),OP_RV2HV), jmaybe((ps[-2].val.opval))); } break; case 160: -#line 1037 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1041 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-3].val.opval)))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; @@ -1241,8 +1245,8 @@ case 2: break; case 161: -#line 1043 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1047 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-4].val.opval))))); if (parser->expect == XBLOCK) @@ -1252,8 +1256,8 @@ case 2: break; case 162: -#line 1051 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1055 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), newCVREF(0, scalar((ps[-3].val.opval))))); if (parser->expect == XBLOCK) @@ -1263,8 +1267,8 @@ case 2: break; case 163: -#line 1058 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1062 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[-2].val.opval)))); if (parser->expect == XBLOCK) parser->expect = XOPERATOR; @@ -1273,38 +1277,38 @@ case 2: break; case 164: -#line 1064 "perly.y" - { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } +#line 1068 "perly.y" + { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); } break; case 165: -#line 1066 "perly.y" - { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } +#line 1070 "perly.y" + { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); } break; case 166: -#line 1068 "perly.y" - { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } +#line 1072 "perly.y" + { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), NULL); } break; case 167: -#line 1073 "perly.y" - { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } +#line 1077 "perly.y" + { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); } break; case 168: -#line 1075 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1079 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 169: -#line 1077 "perly.y" - { if ((ps[-1].val.ival) != OP_REPEAT) +#line 1081 "perly.y" + { if ((ps[-1].val.ival) != OP_REPEAT) scalar((ps[-2].val.opval)); (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval))); } @@ -1312,184 +1316,184 @@ case 2: break; case 170: -#line 1082 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1086 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 171: -#line 1084 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1088 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 172: -#line 1086 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1090 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 173: -#line 1088 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1092 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 174: -#line 1090 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1094 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 175: -#line 1092 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1096 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 176: -#line 1094 "perly.y" - { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1098 "perly.y" + { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 177: -#line 1096 "perly.y" - { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1100 "perly.y" + { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 178: -#line 1098 "perly.y" - { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1102 "perly.y" + { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 179: -#line 1100 "perly.y" - { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1104 "perly.y" + { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 180: -#line 1102 "perly.y" - { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1106 "perly.y" + { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 181: -#line 1106 "perly.y" - { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } +#line 1110 "perly.y" + { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 182: -#line 1108 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1112 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 183: -#line 1110 "perly.y" - { yyerror("syntax error"); YYERROR; } +#line 1114 "perly.y" + { yyerror("syntax error"); YYERROR; } break; case 184: -#line 1112 "perly.y" - { yyerror("syntax error"); YYERROR; } +#line 1116 "perly.y" + { yyerror("syntax error"); YYERROR; } break; case 185: -#line 1116 "perly.y" - { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1120 "perly.y" + { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 186: -#line 1118 "perly.y" - { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1122 "perly.y" + { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 187: -#line 1122 "perly.y" - { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } +#line 1126 "perly.y" + { (yyval.opval) = cmpchain_finish((ps[0].val.opval)); } break; case 188: -#line 1124 "perly.y" - { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } +#line 1128 "perly.y" + { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); } break; case 189: -#line 1126 "perly.y" - { yyerror("syntax error"); YYERROR; } +#line 1130 "perly.y" + { yyerror("syntax error"); YYERROR; } break; case 190: -#line 1128 "perly.y" - { yyerror("syntax error"); YYERROR; } +#line 1132 "perly.y" + { yyerror("syntax error"); YYERROR; } break; case 191: -#line 1132 "perly.y" - { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1136 "perly.y" + { (yyval.opval) = cmpchain_start((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 192: -#line 1134 "perly.y" - { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1138 "perly.y" + { (yyval.opval) = cmpchain_extend((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 193: -#line 1139 "perly.y" - { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } +#line 1143 "perly.y" + { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); } break; case 194: -#line 1141 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1145 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 195: -#line 1144 "perly.y" - { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } +#line 1148 "perly.y" + { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; case 196: -#line 1146 "perly.y" - { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } +#line 1150 "perly.y" + { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); } break; case 197: -#line 1148 "perly.y" - { (yyval.opval) = newUNOP(OP_POSTINC, 0, +#line 1152 "perly.y" + { (yyval.opval) = newUNOP(OP_POSTINC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); } break; case 198: -#line 1151 "perly.y" - { (yyval.opval) = newUNOP(OP_POSTDEC, 0, +#line 1155 "perly.y" + { (yyval.opval) = newUNOP(OP_POSTDEC, 0, op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));} break; case 199: -#line 1154 "perly.y" - { (yyval.opval) = op_convert_list(OP_JOIN, 0, +#line 1158 "perly.y" + { (yyval.opval) = op_convert_list(OP_JOIN, 0, op_append_elem( OP_LIST, newSVREF(scalar( @@ -1503,138 +1507,138 @@ case 2: break; case 200: -#line 1165 "perly.y" - { (yyval.opval) = newUNOP(OP_PREINC, 0, +#line 1169 "perly.y" + { (yyval.opval) = newUNOP(OP_PREINC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); } break; case 201: -#line 1168 "perly.y" - { (yyval.opval) = newUNOP(OP_PREDEC, 0, +#line 1172 "perly.y" + { (yyval.opval) = newUNOP(OP_PREDEC, 0, op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); } break; case 202: -#line 1176 "perly.y" - { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } +#line 1180 "perly.y" + { (yyval.opval) = newANONLIST((ps[-1].val.opval)); } break; case 203: -#line 1178 "perly.y" - { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } +#line 1182 "perly.y" + { (yyval.opval) = newANONHASH((ps[-2].val.opval)); } break; case 204: -#line 1180 "perly.y" - { SvREFCNT_inc_simple_void(PL_compcv); +#line 1184 "perly.y" + { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); } break; case 205: -#line 1183 "perly.y" - { SvREFCNT_inc_simple_void(PL_compcv); +#line 1187 "perly.y" + { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[-2].val.ival), NULL, (ps[-1].val.opval), (ps[0].val.opval)); } break; case 206: -#line 1189 "perly.y" - { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} +#line 1193 "perly.y" + { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));} break; case 207: -#line 1191 "perly.y" - { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} +#line 1195 "perly.y" + { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));} break; case 212: -#line 1199 "perly.y" - { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } +#line 1203 "perly.y" + { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); } break; case 213: -#line 1201 "perly.y" - { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } +#line 1205 "perly.y" + { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); } break; case 214: -#line 1203 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1207 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 215: -#line 1205 "perly.y" - { (yyval.opval) = localize((ps[0].val.opval),0); } +#line 1209 "perly.y" + { (yyval.opval) = localize((ps[0].val.opval),0); } break; case 216: -#line 1207 "perly.y" - { (yyval.opval) = sawparens((ps[-1].val.opval)); } +#line 1211 "perly.y" + { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; case 217: -#line 1209 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1213 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 218: -#line 1211 "perly.y" - { (yyval.opval) = sawparens(newNULLLIST()); } +#line 1215 "perly.y" + { (yyval.opval) = sawparens(newNULLLIST()); } break; case 219: -#line 1213 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1217 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 220: -#line 1215 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1219 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 221: -#line 1217 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1221 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 222: -#line 1219 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1223 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 223: -#line 1221 "perly.y" - { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} +#line 1225 "perly.y" + { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));} break; case 224: -#line 1223 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1227 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 225: -#line 1225 "perly.y" - { (yyval.opval) = op_prepend_elem(OP_ASLICE, +#line 1229 "perly.y" + { (yyval.opval) = op_prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, list((ps[-1].val.opval)), @@ -1647,8 +1651,8 @@ case 2: break; case 226: -#line 1235 "perly.y" - { (yyval.opval) = op_prepend_elem(OP_KVASLICE, +#line 1239 "perly.y" + { (yyval.opval) = op_prepend_elem(OP_KVASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVASLICE, 0, list((ps[-1].val.opval)), @@ -1661,8 +1665,8 @@ case 2: break; case 227: -#line 1245 "perly.y" - { (yyval.opval) = op_prepend_elem(OP_HSLICE, +#line 1249 "perly.y" + { (yyval.opval) = op_prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, list((ps[-2].val.opval)), @@ -1675,8 +1679,8 @@ case 2: break; case 228: -#line 1255 "perly.y" - { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, +#line 1259 "perly.y" + { (yyval.opval) = op_prepend_elem(OP_KVHSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_KVHSLICE, 0, list((ps[-2].val.opval)), @@ -1689,27 +1693,27 @@ case 2: break; case 229: -#line 1265 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1269 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 230: -#line 1267 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } +#line 1271 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); } break; case 231: -#line 1269 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); +#line 1273 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval))); } break; case 232: -#line 1272 "perly.y" - { +#line 1276 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval)))); } @@ -1717,153 +1721,153 @@ case 2: break; case 233: -#line 1277 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1281 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; case 234: -#line 1281 "perly.y" - { (yyval.opval) = newSVREF((ps[-3].val.opval)); } +#line 1285 "perly.y" + { (yyval.opval) = newSVREF((ps[-3].val.opval)); } break; case 235: -#line 1283 "perly.y" - { (yyval.opval) = newAVREF((ps[-3].val.opval)); } +#line 1287 "perly.y" + { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; case 236: -#line 1285 "perly.y" - { (yyval.opval) = newHVREF((ps[-3].val.opval)); } +#line 1289 "perly.y" + { (yyval.opval) = newHVREF((ps[-3].val.opval)); } break; case 237: -#line 1287 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, +#line 1291 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); } break; case 238: -#line 1290 "perly.y" - { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } +#line 1294 "perly.y" + { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); } break; case 239: -#line 1292 "perly.y" - { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); +#line 1296 "perly.y" + { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; } break; case 240: -#line 1295 "perly.y" - { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } +#line 1299 "perly.y" + { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); } break; case 241: -#line 1297 "perly.y" - { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } +#line 1301 "perly.y" + { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); } break; case 242: -#line 1299 "perly.y" - { (yyval.opval) = newOP((ps[0].val.ival), 0); } +#line 1303 "perly.y" + { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; case 243: -#line 1301 "perly.y" - { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } +#line 1305 "perly.y" + { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 244: -#line 1303 "perly.y" - { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } +#line 1307 "perly.y" + { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); } break; case 245: -#line 1305 "perly.y" - { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } +#line 1309 "perly.y" + { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); } break; case 246: -#line 1307 "perly.y" - { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } +#line 1311 "perly.y" + { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); } break; case 247: -#line 1309 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } +#line 1313 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; case 248: -#line 1311 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, +#line 1315 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); } break; case 249: -#line 1314 "perly.y" - { (yyval.opval) = newOP((ps[0].val.ival), 0); } +#line 1318 "perly.y" + { (yyval.opval) = newOP((ps[0].val.ival), 0); } break; case 250: -#line 1316 "perly.y" - { (yyval.opval) = newOP((ps[-2].val.ival), 0);} +#line 1320 "perly.y" + { (yyval.opval) = newOP((ps[-2].val.ival), 0);} break; case 251: -#line 1318 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1322 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 252: -#line 1320 "perly.y" - { (yyval.opval) = (ps[-2].val.opval); } +#line 1324 "perly.y" + { (yyval.opval) = (ps[-2].val.opval); } break; case 253: -#line 1322 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } +#line 1326 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); } break; case 254: -#line 1324 "perly.y" - { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT) +#line 1328 "perly.y" + { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT) ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP((ps[-2].val.ival), OPf_SPECIAL); } break; case 255: -#line 1328 "perly.y" - { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } +#line 1332 "perly.y" + { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); } break; case 256: -#line 1330 "perly.y" - { +#line 1334 "perly.y" + { if ( (ps[0].val.opval)->op_type != OP_TRANS && (ps[0].val.opval)->op_type != OP_TRANSR && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV)) @@ -1877,191 +1881,192 @@ case 2: break; case 257: -#line 1341 "perly.y" - { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } +#line 1345 "perly.y" + { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); } break; case 261: -#line 1350 "perly.y" - { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } +#line 1354 "perly.y" + { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); } break; case 262: -#line 1352 "perly.y" - { (yyval.opval) = localize((ps[0].val.opval),1); } +#line 1356 "perly.y" + { (yyval.opval) = localize((ps[0].val.opval),1); } break; case 263: -#line 1354 "perly.y" - { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } +#line 1358 "perly.y" + { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); } break; case 264: -#line 1356 "perly.y" - { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } +#line 1360 "perly.y" + { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); } break; case 265: -#line 1361 "perly.y" - { (yyval.opval) = sawparens((ps[-1].val.opval)); } +#line 1365 "perly.y" + { (yyval.opval) = sawparens((ps[-1].val.opval)); } break; case 266: -#line 1363 "perly.y" - { (yyval.opval) = sawparens(newNULLLIST()); } +#line 1367 "perly.y" + { (yyval.opval) = sawparens(newNULLLIST()); } break; case 267: -#line 1366 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1370 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 268: -#line 1368 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1372 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 269: -#line 1370 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1374 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 275: -#line 1386 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1390 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; case 276: -#line 1392 "perly.y" - { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } +#line 1396 "perly.y" + { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); } break; case 277: -#line 1397 "perly.y" - { (yyval.opval) = (ps[-1].val.opval); } +#line 1401 "perly.y" + { (yyval.opval) = (ps[-1].val.opval); } break; case 278: -#line 1399 "perly.y" - { +#line 1403 "perly.y" + { (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), (ps[0].val.opval)); } break; case 280: -#line 1406 "perly.y" - { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } +#line 1410 "perly.y" + { parser->in_my = 0; (yyval.opval) = (ps[0].val.opval); } break; case 288: -#line 1423 "perly.y" - { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } +#line 1427 "perly.y" + { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); } break; case 289: -#line 1427 "perly.y" - { (yyval.opval) = newSVREF((ps[0].val.opval)); } +#line 1431 "perly.y" + { (yyval.opval) = newSVREF((ps[0].val.opval)); } break; case 290: -#line 1431 "perly.y" - { (yyval.opval) = newAVREF((ps[0].val.opval)); +#line 1435 "perly.y" + { (yyval.opval) = newAVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; case 291: -#line 1437 "perly.y" - { (yyval.opval) = newHVREF((ps[0].val.opval)); +#line 1441 "perly.y" + { (yyval.opval) = newHVREF((ps[0].val.opval)); if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival); } break; case 292: -#line 1443 "perly.y" - { (yyval.opval) = newAVREF((ps[0].val.opval)); } +#line 1447 "perly.y" + { (yyval.opval) = newAVREF((ps[0].val.opval)); } break; case 293: -#line 1445 "perly.y" - { (yyval.opval) = newAVREF((ps[-3].val.opval)); } +#line 1449 "perly.y" + { (yyval.opval) = newAVREF((ps[-3].val.opval)); } break; case 294: -#line 1449 "perly.y" - { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } +#line 1453 "perly.y" + { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); } break; case 296: -#line 1454 "perly.y" - { (yyval.opval) = newAVREF((ps[-2].val.opval)); } +#line 1458 "perly.y" + { (yyval.opval) = newAVREF((ps[-2].val.opval)); } break; case 298: -#line 1459 "perly.y" - { (yyval.opval) = newHVREF((ps[-2].val.opval)); } +#line 1463 "perly.y" + { (yyval.opval) = newHVREF((ps[-2].val.opval)); } break; case 300: -#line 1464 "perly.y" - { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } +#line 1468 "perly.y" + { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); } break; case 301: -#line 1469 "perly.y" - { (yyval.opval) = scalar((ps[0].val.opval)); } +#line 1473 "perly.y" + { (yyval.opval) = scalar((ps[0].val.opval)); } break; case 302: -#line 1471 "perly.y" - { (yyval.opval) = scalar((ps[0].val.opval)); } +#line 1475 "perly.y" + { (yyval.opval) = scalar((ps[0].val.opval)); } break; case 303: -#line 1473 "perly.y" - { (yyval.opval) = op_scope((ps[0].val.opval)); } +#line 1477 "perly.y" + { (yyval.opval) = op_scope((ps[0].val.opval)); } break; case 304: -#line 1476 "perly.y" - { (yyval.opval) = (ps[0].val.opval); } +#line 1480 "perly.y" + { (yyval.opval) = (ps[0].val.opval); } break; + default: break; /* Generated from: - * 979ab61527f6e4f14a05dffe99d51369abd1074d798becee74bedc780e3b519a perly.y + * 0caf1eb1cc4750131dc71e3a22ead383ed9a123dec61ccd23408ff13441fafde perly.y * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ @@ -4,14 +4,14 @@ Any changes made here will be lost! */ -#define PERL_BISON_VERSION 30003 +#define PERL_BISON_VERSION 30006 #ifdef PERL_CORE -/* A Bison parser, made by GNU Bison 3.3. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -40,8 +40,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ /* Debug traces. */ #ifndef YYDEBUG @@ -51,124 +52,129 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - GRAMPROG = 258, - GRAMEXPR = 259, - GRAMBLOCK = 260, - GRAMBARESTMT = 261, - GRAMFULLSTMT = 262, - GRAMSTMTSEQ = 263, - GRAMSUBSIGNATURE = 264, - PERLY_AMPERSAND = 265, - PERLY_BRACE_OPEN = 266, - PERLY_BRACE_CLOSE = 267, - PERLY_BRACKET_OPEN = 268, - PERLY_BRACKET_CLOSE = 269, - PERLY_COMMA = 270, - PERLY_DOLLAR = 271, - PERLY_DOT = 272, - PERLY_EQUAL_SIGN = 273, - PERLY_MINUS = 274, - PERLY_PERCENT_SIGN = 275, - PERLY_PLUS = 276, - PERLY_SEMICOLON = 277, - PERLY_SLASH = 278, - PERLY_SNAIL = 279, - PERLY_STAR = 280, - BAREWORD = 281, - METHOD = 282, - FUNCMETH = 283, - THING = 284, - PMFUNC = 285, - PRIVATEREF = 286, - QWLIST = 287, - FUNC0OP = 288, - FUNC0SUB = 289, - UNIOPSUB = 290, - LSTOPSUB = 291, - PLUGEXPR = 292, - PLUGSTMT = 293, - LABEL = 294, - FORMAT = 295, - SUB = 296, - SIGSUB = 297, - ANONSUB = 298, - ANON_SIGSUB = 299, - PACKAGE = 300, - USE = 301, - WHILE = 302, - UNTIL = 303, - IF = 304, - UNLESS = 305, - ELSE = 306, - ELSIF = 307, - CONTINUE = 308, - FOR = 309, - GIVEN = 310, - WHEN = 311, - DEFAULT = 312, - TRY = 313, - CATCH = 314, - FINALLY = 315, - LOOPEX = 316, - DOTDOT = 317, - YADAYADA = 318, - FUNC0 = 319, - FUNC1 = 320, - FUNC = 321, - UNIOP = 322, - LSTOP = 323, - MULOP = 324, - ADDOP = 325, - DOLSHARP = 326, - DO = 327, - HASHBRACK = 328, - NOAMP = 329, - LOCAL = 330, - MY = 331, - REQUIRE = 332, - COLONATTR = 333, - FORMLBRACK = 334, - FORMRBRACK = 335, - SUBLEXSTART = 336, - SUBLEXEND = 337, - DEFER = 338, - PREC_LOW = 339, - OROP = 340, - ANDOP = 341, - NOTOP = 342, - ASSIGNOP = 343, - PERLY_QUESTION_MARK = 344, - PERLY_COLON = 345, - OROR = 346, - DORDOR = 347, - ANDAND = 348, - BITOROP = 349, - BITANDOP = 350, - CHEQOP = 351, - NCEQOP = 352, - CHRELOP = 353, - NCRELOP = 354, - SHIFTOP = 355, - MATCHOP = 356, - PERLY_EXCLAMATION_MARK = 357, - PERLY_TILDE = 358, - UMINUS = 359, - REFGEN = 360, - POWOP = 361, - PREINC = 362, - PREDEC = 363, - POSTINC = 364, - POSTDEC = 365, - POSTJOIN = 366, - ARROW = 367, - PERLY_PAREN_CLOSE = 368, - PERLY_PAREN_OPEN = 369 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + GRAMPROG = 258, /* GRAMPROG */ + GRAMEXPR = 259, /* GRAMEXPR */ + GRAMBLOCK = 260, /* GRAMBLOCK */ + GRAMBARESTMT = 261, /* GRAMBARESTMT */ + GRAMFULLSTMT = 262, /* GRAMFULLSTMT */ + GRAMSTMTSEQ = 263, /* GRAMSTMTSEQ */ + GRAMSUBSIGNATURE = 264, /* GRAMSUBSIGNATURE */ + PERLY_AMPERSAND = 265, /* PERLY_AMPERSAND */ + PERLY_BRACE_OPEN = 266, /* PERLY_BRACE_OPEN */ + PERLY_BRACE_CLOSE = 267, /* PERLY_BRACE_CLOSE */ + PERLY_BRACKET_OPEN = 268, /* PERLY_BRACKET_OPEN */ + PERLY_BRACKET_CLOSE = 269, /* PERLY_BRACKET_CLOSE */ + PERLY_COMMA = 270, /* PERLY_COMMA */ + PERLY_DOLLAR = 271, /* PERLY_DOLLAR */ + PERLY_DOT = 272, /* PERLY_DOT */ + PERLY_EQUAL_SIGN = 273, /* PERLY_EQUAL_SIGN */ + PERLY_MINUS = 274, /* PERLY_MINUS */ + PERLY_PERCENT_SIGN = 275, /* PERLY_PERCENT_SIGN */ + PERLY_PLUS = 276, /* PERLY_PLUS */ + PERLY_SEMICOLON = 277, /* PERLY_SEMICOLON */ + PERLY_SLASH = 278, /* PERLY_SLASH */ + PERLY_SNAIL = 279, /* PERLY_SNAIL */ + PERLY_STAR = 280, /* PERLY_STAR */ + BAREWORD = 281, /* BAREWORD */ + METHOD = 282, /* METHOD */ + FUNCMETH = 283, /* FUNCMETH */ + THING = 284, /* THING */ + PMFUNC = 285, /* PMFUNC */ + PRIVATEREF = 286, /* PRIVATEREF */ + QWLIST = 287, /* QWLIST */ + FUNC0OP = 288, /* FUNC0OP */ + FUNC0SUB = 289, /* FUNC0SUB */ + UNIOPSUB = 290, /* UNIOPSUB */ + LSTOPSUB = 291, /* LSTOPSUB */ + PLUGEXPR = 292, /* PLUGEXPR */ + PLUGSTMT = 293, /* PLUGSTMT */ + LABEL = 294, /* LABEL */ + FORMAT = 295, /* FORMAT */ + SUB = 296, /* SUB */ + SIGSUB = 297, /* SIGSUB */ + ANONSUB = 298, /* ANONSUB */ + ANON_SIGSUB = 299, /* ANON_SIGSUB */ + PACKAGE = 300, /* PACKAGE */ + USE = 301, /* USE */ + WHILE = 302, /* WHILE */ + UNTIL = 303, /* UNTIL */ + IF = 304, /* IF */ + UNLESS = 305, /* UNLESS */ + ELSE = 306, /* ELSE */ + ELSIF = 307, /* ELSIF */ + CONTINUE = 308, /* CONTINUE */ + FOR = 309, /* FOR */ + GIVEN = 310, /* GIVEN */ + WHEN = 311, /* WHEN */ + DEFAULT = 312, /* DEFAULT */ + TRY = 313, /* TRY */ + CATCH = 314, /* CATCH */ + FINALLY = 315, /* FINALLY */ + LOOPEX = 316, /* LOOPEX */ + DOTDOT = 317, /* DOTDOT */ + YADAYADA = 318, /* YADAYADA */ + FUNC0 = 319, /* FUNC0 */ + FUNC1 = 320, /* FUNC1 */ + FUNC = 321, /* FUNC */ + UNIOP = 322, /* UNIOP */ + LSTOP = 323, /* LSTOP */ + MULOP = 324, /* MULOP */ + ADDOP = 325, /* ADDOP */ + DOLSHARP = 326, /* DOLSHARP */ + DO = 327, /* DO */ + HASHBRACK = 328, /* HASHBRACK */ + NOAMP = 329, /* NOAMP */ + LOCAL = 330, /* LOCAL */ + MY = 331, /* MY */ + REQUIRE = 332, /* REQUIRE */ + COLONATTR = 333, /* COLONATTR */ + FORMLBRACK = 334, /* FORMLBRACK */ + FORMRBRACK = 335, /* FORMRBRACK */ + SUBLEXSTART = 336, /* SUBLEXSTART */ + SUBLEXEND = 337, /* SUBLEXEND */ + DEFER = 338, /* DEFER */ + PREC_LOW = 339, /* PREC_LOW */ + OROP = 340, /* OROP */ + ANDOP = 341, /* ANDOP */ + NOTOP = 342, /* NOTOP */ + ASSIGNOP = 343, /* ASSIGNOP */ + PERLY_QUESTION_MARK = 344, /* PERLY_QUESTION_MARK */ + PERLY_COLON = 345, /* PERLY_COLON */ + OROR = 346, /* OROR */ + DORDOR = 347, /* DORDOR */ + ANDAND = 348, /* ANDAND */ + BITOROP = 349, /* BITOROP */ + BITANDOP = 350, /* BITANDOP */ + CHEQOP = 351, /* CHEQOP */ + NCEQOP = 352, /* NCEQOP */ + CHRELOP = 353, /* CHRELOP */ + NCRELOP = 354, /* NCRELOP */ + SHIFTOP = 355, /* SHIFTOP */ + MATCHOP = 356, /* MATCHOP */ + PERLY_EXCLAMATION_MARK = 357, /* PERLY_EXCLAMATION_MARK */ + PERLY_TILDE = 358, /* PERLY_TILDE */ + UMINUS = 359, /* UMINUS */ + REFGEN = 360, /* REFGEN */ + POWOP = 361, /* POWOP */ + PREINC = 362, /* PREINC */ + PREDEC = 363, /* PREDEC */ + POSTINC = 364, /* POSTINC */ + POSTDEC = 365, /* POSTDEC */ + POSTJOIN = 366, /* POSTJOIN */ + ARROW = 367, /* ARROW */ + PERLY_PAREN_CLOSE = 368, /* PERLY_PAREN_CLOSE */ + PERLY_PAREN_OPEN = 369 /* PERLY_PAREN_OPEN */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ @@ -197,7 +203,6 @@ S_is_opval_token(int type) { #endif /* PERL_IN_TOKE_C */ #endif /* PERL_CORE */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { @@ -207,8 +212,8 @@ union YYSTYPE OP *opval; GV *gvval; -}; +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -220,6 +225,6 @@ int yyparse (void); /* Generated from: - * 979ab61527f6e4f14a05dffe99d51369abd1074d798becee74bedc780e3b519a perly.y + * 0caf1eb1cc4750131dc71e3a22ead383ed9a123dec61ccd23408ff13441fafde perly.y * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ @@ -4,6 +4,234 @@ Any changes made here will be lost! */ +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_GRAMPROG = 3, /* GRAMPROG */ + YYSYMBOL_GRAMEXPR = 4, /* GRAMEXPR */ + YYSYMBOL_GRAMBLOCK = 5, /* GRAMBLOCK */ + YYSYMBOL_GRAMBARESTMT = 6, /* GRAMBARESTMT */ + YYSYMBOL_GRAMFULLSTMT = 7, /* GRAMFULLSTMT */ + YYSYMBOL_GRAMSTMTSEQ = 8, /* GRAMSTMTSEQ */ + YYSYMBOL_GRAMSUBSIGNATURE = 9, /* GRAMSUBSIGNATURE */ + YYSYMBOL_PERLY_AMPERSAND = 10, /* PERLY_AMPERSAND */ + YYSYMBOL_PERLY_BRACE_OPEN = 11, /* PERLY_BRACE_OPEN */ + YYSYMBOL_PERLY_BRACE_CLOSE = 12, /* PERLY_BRACE_CLOSE */ + YYSYMBOL_PERLY_BRACKET_OPEN = 13, /* PERLY_BRACKET_OPEN */ + YYSYMBOL_PERLY_BRACKET_CLOSE = 14, /* PERLY_BRACKET_CLOSE */ + YYSYMBOL_PERLY_COMMA = 15, /* PERLY_COMMA */ + YYSYMBOL_PERLY_DOLLAR = 16, /* PERLY_DOLLAR */ + YYSYMBOL_PERLY_DOT = 17, /* PERLY_DOT */ + YYSYMBOL_PERLY_EQUAL_SIGN = 18, /* PERLY_EQUAL_SIGN */ + YYSYMBOL_PERLY_MINUS = 19, /* PERLY_MINUS */ + YYSYMBOL_PERLY_PERCENT_SIGN = 20, /* PERLY_PERCENT_SIGN */ + YYSYMBOL_PERLY_PLUS = 21, /* PERLY_PLUS */ + YYSYMBOL_PERLY_SEMICOLON = 22, /* PERLY_SEMICOLON */ + YYSYMBOL_PERLY_SLASH = 23, /* PERLY_SLASH */ + YYSYMBOL_PERLY_SNAIL = 24, /* PERLY_SNAIL */ + YYSYMBOL_PERLY_STAR = 25, /* PERLY_STAR */ + YYSYMBOL_BAREWORD = 26, /* BAREWORD */ + YYSYMBOL_METHOD = 27, /* METHOD */ + YYSYMBOL_FUNCMETH = 28, /* FUNCMETH */ + YYSYMBOL_THING = 29, /* THING */ + YYSYMBOL_PMFUNC = 30, /* PMFUNC */ + YYSYMBOL_PRIVATEREF = 31, /* PRIVATEREF */ + YYSYMBOL_QWLIST = 32, /* QWLIST */ + YYSYMBOL_FUNC0OP = 33, /* FUNC0OP */ + YYSYMBOL_FUNC0SUB = 34, /* FUNC0SUB */ + YYSYMBOL_UNIOPSUB = 35, /* UNIOPSUB */ + YYSYMBOL_LSTOPSUB = 36, /* LSTOPSUB */ + YYSYMBOL_PLUGEXPR = 37, /* PLUGEXPR */ + YYSYMBOL_PLUGSTMT = 38, /* PLUGSTMT */ + YYSYMBOL_LABEL = 39, /* LABEL */ + YYSYMBOL_FORMAT = 40, /* FORMAT */ + YYSYMBOL_SUB = 41, /* SUB */ + YYSYMBOL_SIGSUB = 42, /* SIGSUB */ + YYSYMBOL_ANONSUB = 43, /* ANONSUB */ + YYSYMBOL_ANON_SIGSUB = 44, /* ANON_SIGSUB */ + YYSYMBOL_PACKAGE = 45, /* PACKAGE */ + YYSYMBOL_USE = 46, /* USE */ + YYSYMBOL_WHILE = 47, /* WHILE */ + YYSYMBOL_UNTIL = 48, /* UNTIL */ + YYSYMBOL_IF = 49, /* IF */ + YYSYMBOL_UNLESS = 50, /* UNLESS */ + YYSYMBOL_ELSE = 51, /* ELSE */ + YYSYMBOL_ELSIF = 52, /* ELSIF */ + YYSYMBOL_CONTINUE = 53, /* CONTINUE */ + YYSYMBOL_FOR = 54, /* FOR */ + YYSYMBOL_GIVEN = 55, /* GIVEN */ + YYSYMBOL_WHEN = 56, /* WHEN */ + YYSYMBOL_DEFAULT = 57, /* DEFAULT */ + YYSYMBOL_TRY = 58, /* TRY */ + YYSYMBOL_CATCH = 59, /* CATCH */ + YYSYMBOL_FINALLY = 60, /* FINALLY */ + YYSYMBOL_LOOPEX = 61, /* LOOPEX */ + YYSYMBOL_DOTDOT = 62, /* DOTDOT */ + YYSYMBOL_YADAYADA = 63, /* YADAYADA */ + YYSYMBOL_FUNC0 = 64, /* FUNC0 */ + YYSYMBOL_FUNC1 = 65, /* FUNC1 */ + YYSYMBOL_FUNC = 66, /* FUNC */ + YYSYMBOL_UNIOP = 67, /* UNIOP */ + YYSYMBOL_LSTOP = 68, /* LSTOP */ + YYSYMBOL_MULOP = 69, /* MULOP */ + YYSYMBOL_ADDOP = 70, /* ADDOP */ + YYSYMBOL_DOLSHARP = 71, /* DOLSHARP */ + YYSYMBOL_DO = 72, /* DO */ + YYSYMBOL_HASHBRACK = 73, /* HASHBRACK */ + YYSYMBOL_NOAMP = 74, /* NOAMP */ + YYSYMBOL_LOCAL = 75, /* LOCAL */ + YYSYMBOL_MY = 76, /* MY */ + YYSYMBOL_REQUIRE = 77, /* REQUIRE */ + YYSYMBOL_COLONATTR = 78, /* COLONATTR */ + YYSYMBOL_FORMLBRACK = 79, /* FORMLBRACK */ + YYSYMBOL_FORMRBRACK = 80, /* FORMRBRACK */ + YYSYMBOL_SUBLEXSTART = 81, /* SUBLEXSTART */ + YYSYMBOL_SUBLEXEND = 82, /* SUBLEXEND */ + YYSYMBOL_DEFER = 83, /* DEFER */ + YYSYMBOL_PREC_LOW = 84, /* PREC_LOW */ + YYSYMBOL_OROP = 85, /* OROP */ + YYSYMBOL_ANDOP = 86, /* ANDOP */ + YYSYMBOL_NOTOP = 87, /* NOTOP */ + YYSYMBOL_ASSIGNOP = 88, /* ASSIGNOP */ + YYSYMBOL_PERLY_QUESTION_MARK = 89, /* PERLY_QUESTION_MARK */ + YYSYMBOL_PERLY_COLON = 90, /* PERLY_COLON */ + YYSYMBOL_OROR = 91, /* OROR */ + YYSYMBOL_DORDOR = 92, /* DORDOR */ + YYSYMBOL_ANDAND = 93, /* ANDAND */ + YYSYMBOL_BITOROP = 94, /* BITOROP */ + YYSYMBOL_BITANDOP = 95, /* BITANDOP */ + YYSYMBOL_CHEQOP = 96, /* CHEQOP */ + YYSYMBOL_NCEQOP = 97, /* NCEQOP */ + YYSYMBOL_CHRELOP = 98, /* CHRELOP */ + YYSYMBOL_NCRELOP = 99, /* NCRELOP */ + YYSYMBOL_SHIFTOP = 100, /* SHIFTOP */ + YYSYMBOL_MATCHOP = 101, /* MATCHOP */ + YYSYMBOL_PERLY_EXCLAMATION_MARK = 102, /* PERLY_EXCLAMATION_MARK */ + YYSYMBOL_PERLY_TILDE = 103, /* PERLY_TILDE */ + YYSYMBOL_UMINUS = 104, /* UMINUS */ + YYSYMBOL_REFGEN = 105, /* REFGEN */ + YYSYMBOL_POWOP = 106, /* POWOP */ + YYSYMBOL_PREINC = 107, /* PREINC */ + YYSYMBOL_PREDEC = 108, /* PREDEC */ + YYSYMBOL_POSTINC = 109, /* POSTINC */ + YYSYMBOL_POSTDEC = 110, /* POSTDEC */ + YYSYMBOL_POSTJOIN = 111, /* POSTJOIN */ + YYSYMBOL_ARROW = 112, /* ARROW */ + YYSYMBOL_PERLY_PAREN_CLOSE = 113, /* PERLY_PAREN_CLOSE */ + YYSYMBOL_PERLY_PAREN_OPEN = 114, /* PERLY_PAREN_OPEN */ + YYSYMBOL_YYACCEPT = 115, /* $accept */ + YYSYMBOL_grammar = 116, /* grammar */ + YYSYMBOL_117_1 = 117, /* @1 */ + YYSYMBOL_118_2 = 118, /* @2 */ + YYSYMBOL_119_3 = 119, /* @3 */ + YYSYMBOL_120_4 = 120, /* @4 */ + YYSYMBOL_121_5 = 121, /* @5 */ + YYSYMBOL_122_6 = 122, /* @6 */ + YYSYMBOL_123_7 = 123, /* @7 */ + YYSYMBOL_block = 124, /* block */ + YYSYMBOL_empty = 125, /* empty */ + YYSYMBOL_formblock = 126, /* formblock */ + YYSYMBOL_remember = 127, /* remember */ + YYSYMBOL_mblock = 128, /* mblock */ + YYSYMBOL_mremember = 129, /* mremember */ + YYSYMBOL_stmtseq = 130, /* stmtseq */ + YYSYMBOL_formstmtseq = 131, /* formstmtseq */ + YYSYMBOL_fullstmt = 132, /* fullstmt */ + YYSYMBOL_labfullstmt = 133, /* labfullstmt */ + YYSYMBOL_barestmt = 134, /* barestmt */ + YYSYMBOL_135_8 = 135, /* $@8 */ + YYSYMBOL_136_9 = 136, /* $@9 */ + YYSYMBOL_137_10 = 137, /* $@10 */ + YYSYMBOL_138_11 = 138, /* $@11 */ + YYSYMBOL_139_12 = 139, /* $@12 */ + YYSYMBOL_140_13 = 140, /* @13 */ + YYSYMBOL_141_14 = 141, /* $@14 */ + YYSYMBOL_142_15 = 142, /* $@15 */ + YYSYMBOL_143_16 = 143, /* $@16 */ + YYSYMBOL_formline = 144, /* formline */ + YYSYMBOL_formarg = 145, /* formarg */ + YYSYMBOL_condition = 146, /* condition */ + YYSYMBOL_sideff = 147, /* sideff */ + YYSYMBOL_else = 148, /* else */ + YYSYMBOL_cont = 149, /* cont */ + YYSYMBOL_finally = 150, /* finally */ + YYSYMBOL_mintro = 151, /* mintro */ + YYSYMBOL_nexpr = 152, /* nexpr */ + YYSYMBOL_texpr = 153, /* texpr */ + YYSYMBOL_iexpr = 154, /* iexpr */ + YYSYMBOL_mexpr = 155, /* mexpr */ + YYSYMBOL_mnexpr = 156, /* mnexpr */ + YYSYMBOL_formname = 157, /* formname */ + YYSYMBOL_startsub = 158, /* startsub */ + YYSYMBOL_startanonsub = 159, /* startanonsub */ + YYSYMBOL_startformsub = 160, /* startformsub */ + YYSYMBOL_subname = 161, /* subname */ + YYSYMBOL_proto = 162, /* proto */ + YYSYMBOL_subattrlist = 163, /* subattrlist */ + YYSYMBOL_myattrlist = 164, /* myattrlist */ + YYSYMBOL_sigvarname = 165, /* sigvarname */ + YYSYMBOL_sigslurpsigil = 166, /* sigslurpsigil */ + YYSYMBOL_sigslurpelem = 167, /* sigslurpelem */ + YYSYMBOL_sigdefault = 168, /* sigdefault */ + YYSYMBOL_sigscalarelem = 169, /* sigscalarelem */ + YYSYMBOL_sigelem = 170, /* sigelem */ + YYSYMBOL_siglist = 171, /* siglist */ + YYSYMBOL_optsiglist = 172, /* optsiglist */ + YYSYMBOL_optsubsignature = 173, /* optsubsignature */ + YYSYMBOL_subsignature = 174, /* subsignature */ + YYSYMBOL_subsigguts = 175, /* subsigguts */ + YYSYMBOL_176_17 = 176, /* $@17 */ + YYSYMBOL_optsubbody = 177, /* optsubbody */ + YYSYMBOL_subbody = 178, /* subbody */ + YYSYMBOL_optsigsubbody = 179, /* optsigsubbody */ + YYSYMBOL_sigsubbody = 180, /* sigsubbody */ + YYSYMBOL_expr = 181, /* expr */ + YYSYMBOL_listexpr = 182, /* listexpr */ + YYSYMBOL_listop = 183, /* listop */ + YYSYMBOL_184_18 = 184, /* @18 */ + YYSYMBOL_method = 185, /* method */ + YYSYMBOL_subscripted = 186, /* subscripted */ + YYSYMBOL_termbinop = 187, /* termbinop */ + YYSYMBOL_termrelop = 188, /* termrelop */ + YYSYMBOL_relopchain = 189, /* relopchain */ + YYSYMBOL_termeqop = 190, /* termeqop */ + YYSYMBOL_eqopchain = 191, /* eqopchain */ + YYSYMBOL_termunop = 192, /* termunop */ + YYSYMBOL_anonymous = 193, /* anonymous */ + YYSYMBOL_termdo = 194, /* termdo */ + YYSYMBOL_term = 195, /* term */ + YYSYMBOL_196_19 = 196, /* @19 */ + YYSYMBOL_myattrterm = 197, /* myattrterm */ + YYSYMBOL_myterm = 198, /* myterm */ + YYSYMBOL_optlistexpr = 199, /* optlistexpr */ + YYSYMBOL_optexpr = 200, /* optexpr */ + YYSYMBOL_optrepl = 201, /* optrepl */ + YYSYMBOL_my_scalar = 202, /* my_scalar */ + YYSYMBOL_list_of_scalars = 203, /* list_of_scalars */ + YYSYMBOL_my_list_of_scalars = 204, /* my_list_of_scalars */ + YYSYMBOL_my_var = 205, /* my_var */ + YYSYMBOL_refgen_topic = 206, /* refgen_topic */ + YYSYMBOL_my_refgen = 207, /* my_refgen */ + YYSYMBOL_amper = 208, /* amper */ + YYSYMBOL_scalar = 209, /* scalar */ + YYSYMBOL_ary = 210, /* ary */ + YYSYMBOL_hsh = 211, /* hsh */ + YYSYMBOL_arylen = 212, /* arylen */ + YYSYMBOL_star = 213, /* star */ + YYSYMBOL_sliceme = 214, /* sliceme */ + YYSYMBOL_kvslice = 215, /* kvslice */ + YYSYMBOL_gelem = 216, /* gelem */ + YYSYMBOL_indirob = 217 /* indirob */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + #define YYFINAL 16 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 3293 @@ -17,17 +245,19 @@ /* YYNSTATES -- Number of states. */ #define YYNSTATES 610 -#define YYUNDEFTOK 2 #define YYMAXUTOK 369 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint8 yytranslate[] = +static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -70,69 +300,76 @@ static const yytype_uint8 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { 0, 140, 140, 139, 151, 150, 161, 160, 174, 173, 187, 186, 200, 199, 210, 209, 222, 230, 234, 241, 246, 253, 260, 261, 271, 272, 281, 285, 289, 296, 306, 308, 321, 318, 342, 337, 358, 366, 365, 374, 380, 386, 391, 393, 395, 402, 410, 412, 409, 429, - 434, 439, 446, 445, 460, 468, 475, 477, 474, 486, - 493, 492, 507, 511, 515, 520, 528, 546, 547, 551, - 555, 557, 559, 561, 563, 565, 567, 570, 576, 577, - 582, 593, 594, 599, 601, 606, 613, 614, 618, 622, - 626, 631, 635, 639, 640, 643, 649, 654, 660, 661, - 666, 667, 672, 673, 675, 680, 682, 693, 695, 700, - 702, 706, 726, 727, 729, 735, 800, 802, 808, 810, - 814, 820, 821, 826, 827, 831, 835, 835, 902, 903, - 908, 920, 921, 925, 936, 938, 940, 944, 946, 951, - 955, 959, 963, 969, 974, 980, 986, 988, 990, 993, - 992, 1003, 1004, 1008, 1012, 1015, 1020, 1025, 1028, 1032, - 1036, 1042, 1050, 1057, 1063, 1065, 1067, 1072, 1074, 1076, - 1081, 1083, 1085, 1087, 1089, 1091, 1093, 1095, 1097, 1099, - 1101, 1105, 1107, 1109, 1111, 1115, 1117, 1121, 1123, 1125, - 1127, 1131, 1133, 1138, 1140, 1143, 1145, 1147, 1150, 1153, - 1164, 1167, 1175, 1177, 1179, 1182, 1188, 1190, 1194, 1195, - 1196, 1197, 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212, - 1214, 1216, 1218, 1220, 1222, 1224, 1234, 1244, 1254, 1264, - 1266, 1268, 1271, 1276, 1280, 1282, 1284, 1286, 1289, 1291, - 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1313, - 1315, 1317, 1319, 1321, 1323, 1327, 1330, 1329, 1342, 1343, - 1344, 1349, 1351, 1353, 1355, 1360, 1362, 1365, 1367, 1369, - 1375, 1376, 1380, 1381, 1385, 1386, 1391, 1396, 1398, 1402, - 1405, 1409, 1410, 1411, 1414, 1415, 1418, 1419, 1422, 1426, - 1430, 1436, 1442, 1444, 1448, 1452, 1453, 1457, 1458, 1462, - 1463, 1468, 1470, 1472, 1475 + 434, 443, 450, 449, 464, 472, 479, 481, 478, 490, + 497, 496, 511, 515, 519, 524, 532, 550, 551, 555, + 559, 561, 563, 565, 567, 569, 571, 574, 580, 581, + 586, 597, 598, 603, 605, 610, 617, 618, 622, 626, + 630, 635, 639, 643, 644, 647, 653, 658, 664, 665, + 670, 671, 676, 677, 679, 684, 686, 697, 699, 704, + 706, 710, 730, 731, 733, 739, 804, 806, 812, 814, + 818, 824, 825, 830, 831, 835, 839, 839, 906, 907, + 912, 924, 925, 929, 940, 942, 944, 948, 950, 955, + 959, 963, 967, 973, 978, 984, 990, 992, 994, 997, + 996, 1007, 1008, 1012, 1016, 1019, 1024, 1029, 1032, 1036, + 1040, 1046, 1054, 1061, 1067, 1069, 1071, 1076, 1078, 1080, + 1085, 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103, + 1105, 1109, 1111, 1113, 1115, 1119, 1121, 1125, 1127, 1129, + 1131, 1135, 1137, 1142, 1144, 1147, 1149, 1151, 1154, 1157, + 1168, 1171, 1179, 1181, 1183, 1186, 1192, 1194, 1198, 1199, + 1200, 1201, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, + 1218, 1220, 1222, 1224, 1226, 1228, 1238, 1248, 1258, 1268, + 1270, 1272, 1275, 1280, 1284, 1286, 1288, 1290, 1293, 1295, + 1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1317, + 1319, 1321, 1323, 1325, 1327, 1331, 1334, 1333, 1346, 1347, + 1348, 1353, 1355, 1357, 1359, 1364, 1366, 1369, 1371, 1373, + 1379, 1380, 1384, 1385, 1389, 1390, 1395, 1400, 1402, 1406, + 1409, 1413, 1414, 1415, 1418, 1419, 1422, 1423, 1426, 1430, + 1434, 1440, 1446, 1448, 1452, 1456, 1457, 1461, 1462, 1466, + 1467, 1472, 1474, 1476, 1479 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "GRAMPROG", "GRAMEXPR", "GRAMBLOCK", - "GRAMBARESTMT", "GRAMFULLSTMT", "GRAMSTMTSEQ", "GRAMSUBSIGNATURE", - "PERLY_AMPERSAND", "PERLY_BRACE_OPEN", "PERLY_BRACE_CLOSE", - "PERLY_BRACKET_OPEN", "PERLY_BRACKET_CLOSE", "PERLY_COMMA", - "PERLY_DOLLAR", "PERLY_DOT", "PERLY_EQUAL_SIGN", "PERLY_MINUS", - "PERLY_PERCENT_SIGN", "PERLY_PLUS", "PERLY_SEMICOLON", "PERLY_SLASH", - "PERLY_SNAIL", "PERLY_STAR", "BAREWORD", "METHOD", "FUNCMETH", "THING", - "PMFUNC", "PRIVATEREF", "QWLIST", "FUNC0OP", "FUNC0SUB", "UNIOPSUB", - "LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", "FORMAT", "SUB", "SIGSUB", - "ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", "WHILE", "UNTIL", "IF", - "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "GIVEN", "WHEN", "DEFAULT", - "TRY", "CATCH", "FINALLY", "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", - "FUNC1", "FUNC", "UNIOP", "LSTOP", "MULOP", "ADDOP", "DOLSHARP", "DO", - "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR", - "FORMLBRACK", "FORMRBRACK", "SUBLEXSTART", "SUBLEXEND", "DEFER", - "PREC_LOW", "OROP", "ANDOP", "NOTOP", "ASSIGNOP", "PERLY_QUESTION_MARK", - "PERLY_COLON", "OROR", "DORDOR", "ANDAND", "BITOROP", "BITANDOP", - "CHEQOP", "NCEQOP", "CHRELOP", "NCRELOP", "SHIFTOP", "MATCHOP", - "PERLY_EXCLAMATION_MARK", "PERLY_TILDE", "UMINUS", "REFGEN", "POWOP", - "PREINC", "PREDEC", "POSTINC", "POSTDEC", "POSTJOIN", "ARROW", - "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", "$accept", "grammar", "@1", - "@2", "@3", "@4", "@5", "@6", "@7", "block", "empty", "formblock", + "\"end of file\"", "error", "\"invalid token\"", "GRAMPROG", "GRAMEXPR", + "GRAMBLOCK", "GRAMBARESTMT", "GRAMFULLSTMT", "GRAMSTMTSEQ", + "GRAMSUBSIGNATURE", "PERLY_AMPERSAND", "PERLY_BRACE_OPEN", + "PERLY_BRACE_CLOSE", "PERLY_BRACKET_OPEN", "PERLY_BRACKET_CLOSE", + "PERLY_COMMA", "PERLY_DOLLAR", "PERLY_DOT", "PERLY_EQUAL_SIGN", + "PERLY_MINUS", "PERLY_PERCENT_SIGN", "PERLY_PLUS", "PERLY_SEMICOLON", + "PERLY_SLASH", "PERLY_SNAIL", "PERLY_STAR", "BAREWORD", "METHOD", + "FUNCMETH", "THING", "PMFUNC", "PRIVATEREF", "QWLIST", "FUNC0OP", + "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", "PLUGEXPR", "PLUGSTMT", "LABEL", + "FORMAT", "SUB", "SIGSUB", "ANONSUB", "ANON_SIGSUB", "PACKAGE", "USE", + "WHILE", "UNTIL", "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", + "GIVEN", "WHEN", "DEFAULT", "TRY", "CATCH", "FINALLY", "LOOPEX", + "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP", "LSTOP", + "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK", "NOAMP", "LOCAL", "MY", + "REQUIRE", "COLONATTR", "FORMLBRACK", "FORMRBRACK", "SUBLEXSTART", + "SUBLEXEND", "DEFER", "PREC_LOW", "OROP", "ANDOP", "NOTOP", "ASSIGNOP", + "PERLY_QUESTION_MARK", "PERLY_COLON", "OROR", "DORDOR", "ANDAND", + "BITOROP", "BITANDOP", "CHEQOP", "NCEQOP", "CHRELOP", "NCRELOP", + "SHIFTOP", "MATCHOP", "PERLY_EXCLAMATION_MARK", "PERLY_TILDE", "UMINUS", + "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "POSTJOIN", + "ARROW", "PERLY_PAREN_CLOSE", "PERLY_PAREN_OPEN", "$accept", "grammar", + "@1", "@2", "@3", "@4", "@5", "@6", "@7", "block", "empty", "formblock", "remember", "mblock", "mremember", "stmtseq", "formstmtseq", "fullstmt", "labfullstmt", "barestmt", "$@8", "$@9", "$@10", "$@11", "$@12", "@13", "$@14", "$@15", "$@16", "formline", "formarg", "condition", "sideff", @@ -150,12 +387,18 @@ static const char *const yytname[] = "my_refgen", "amper", "scalar", "ary", "hsh", "arylen", "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -170,17 +413,17 @@ static const yytype_uint16 yytoknum[] = 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369 }; -# endif +#endif -#define YYPACT_NINF -498 +#define YYPACT_NINF (-498) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-498))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -300 +#define YYTABLE_NINF (-300) -#define yytable_value_is_error(Yytable_value) \ - (!!((Yytable_value) == (-300))) +#define yytable_value_is_error(Yyn) \ + ((Yyn) == YYTABLE_NINF) /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ @@ -252,7 +495,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { 0, 2, 4, 6, 8, 10, 12, 14, 0, 19, 17, 0, 0, 0, 17, 126, 1, 17, 0, 17, @@ -1124,7 +1367,7 @@ static const yytype_uint8 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 4, 0, 7, 0, @@ -1166,28 +1409,28 @@ typedef enum { /* type of each token/terminal */ static const toketypes yy_type_tab[] = { - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, + toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, - toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, - toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, + toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, @@ -1207,6 +1450,6 @@ static const toketypes yy_type_tab[] = }; /* Generated from: - * 979ab61527f6e4f14a05dffe99d51369abd1074d798becee74bedc780e3b519a perly.y + * 0caf1eb1cc4750131dc71e3a22ead383ed9a123dec61ccd23408ff13441fafde perly.y * acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl * ex: set ro: */ @@ -433,6 +433,10 @@ barestmt: PLUGSTMT } | FOR MY remember PERLY_PAREN_OPEN my_list_of_scalars PERLY_PAREN_CLOSE PERLY_PAREN_OPEN mexpr PERLY_PAREN_CLOSE mblock cont { + if ($my_list_of_scalars->op_type == OP_PADSV) + /* degenerate case of 1 var: for my ($x) .... + Flag it so it can be special-cased in newFOROP */ + $my_list_of_scalars->op_flags |= OPf_PARENS; $$ = block_end($remember, newFOROP(0, $my_list_of_scalars, $mexpr, $mblock, $cont)); parser->copline = (line_t)$FOR; } |