summaryrefslogtreecommitdiff
path: root/perly.act
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-06-30 23:20:25 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-09-15 22:44:53 -0700
commit764212cf73683dc2fdc86061a1e2cf4193b89919 (patch)
treecb60c2baba72a0945a0aa44120d8b17d9f2f226d /perly.act
parent9ccb8d54fdbdc68755020d2a7cce3b889106c1e1 (diff)
downloadperl-764212cf73683dc2fdc86061a1e2cf4193b89919.tar.gz
Allocate ‘our sub’ in the pad
Currently the name is only allocated there. Nothing fetches it yet. Notes on the implementation: S_pending_ident contains the logic for determining whether $foo or @foo refers to a lexical or package variable. yylex defers to S_pending_ident if PL_pending_ident is set. The KEY_sub case in yylex is changed to set PL_pending_ident instead of using force_word. For package variables (including our), S_pending_ident returns a WORD token, which is the same thing that force_word produces. So *that* aspect of this change does not affect the grammar. However.... The barestmt rule’s SUB branch begins with ‘SUB startsub subname’. startsub is a null rule that creates a new sub in PL_compcv via start_subparse(). subname is defined in terms of WORD and also checks whether this is a special block, turning on CvSPECIAL(PL_compcv) if it is. That flag has to be visible during compilation of the sub. But for a lexical name, such as ‘our foo’, to be allocated in the right pad, it has to come *before* startsub, i.e., ‘SUB subname startsub’. But subname needs to modify the sub that startsub created, set- ting the flag. So I copied (not moved, because MYSUB still uses it) the name-checking code from the subname rule into the SUB branch of barestmt. Now that uses WORD directly instead of invoking subname. That allows the code there to set everything up in the right order.
Diffstat (limited to 'perly.act')
-rw-r--r--perly.act751
1 files changed, 382 insertions, 369 deletions
diff --git a/perly.act b/perly.act
index 270d6175aa..dfa1d3ab24 100644
--- a/perly.act
+++ b/perly.act
@@ -241,30 +241,43 @@ case 2:
case 30:
#line 318 "perly.y"
+ { const char *const name = SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+ if (strEQ(name, "BEGIN") || strEQ(name, "END")
+ || strEQ(name, "INIT") || strEQ(name, "CHECK")
+ || strEQ(name, "UNITCHECK"))
+ CvSPECIAL_on(PL_compcv);
+ PL_parser->in_my = 0;
+ PL_parser->in_my_stash = NULL;
+ ;}
+ break;
+
+ case 31:
+#line 327 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
#ifdef MAD
{
OP* o = newSVOP(OP_ANONCODE, 0,
- (SV*)newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval)));
+ (SV*)newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
(yyval.opval) = newOP(OP_NULL,0);
op_getmad(o,(yyval.opval),'&');
- op_getmad((ps[(3) - (6)].val.opval),(yyval.opval),'n');
- op_getmad((ps[(4) - (6)].val.opval),(yyval.opval),'s');
- op_getmad((ps[(5) - (6)].val.opval),(yyval.opval),'a');
- token_getmad((ps[(1) - (6)].val.i_tkval),(yyval.opval),'d');
- append_madprops((ps[(6) - (6)].val.opval)->op_madprop, (yyval.opval), 0);
- (ps[(6) - (6)].val.opval)->op_madprop = 0;
+ op_getmad((ps[(2) - (7)].val.opval),(yyval.opval),'n');
+ op_getmad((ps[(5) - (7)].val.opval),(yyval.opval),'s');
+ op_getmad((ps[(6) - (7)].val.opval),(yyval.opval),'a');
+ token_getmad((ps[(1) - (7)].val.i_tkval),(yyval.opval),'d');
+ append_madprops((ps[(7) - (7)].val.opval)->op_madprop, (yyval.opval), 0);
+ (ps[(7) - (7)].val.opval)->op_madprop = 0;
}
#else
- newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) - (6)].val.opval));
+ newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval));
(yyval.opval) = (OP*)NULL;
#endif
+ intro_my();
;}
break;
- case 31:
-#line 339 "perly.y"
+ case 32:
+#line 349 "perly.y"
{
/* Unimplemented "my sub foo { }" */
SvREFCNT_inc_simple_void(PL_compcv);
@@ -278,8 +291,8 @@ case 2:
;}
break;
- case 32:
-#line 351 "perly.y"
+ case 33:
+#line 361 "perly.y"
{
#ifdef MAD
(yyval.opval) = package((ps[(3) - (4)].val.opval));
@@ -296,13 +309,13 @@ case 2:
;}
break;
- case 33:
-#line 366 "perly.y"
+ case 34:
+#line 376 "perly.y"
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
break;
- case 34:
-#line 368 "perly.y"
+ case 35:
+#line 378 "perly.y"
{
SvREFCNT_inc_simple_void(PL_compcv);
#ifdef MAD
@@ -319,8 +332,8 @@ case 2:
;}
break;
- case 35:
-#line 383 "perly.y"
+ case 36:
+#line 393 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
@@ -331,8 +344,8 @@ case 2:
;}
break;
- case 36:
-#line 392 "perly.y"
+ case 37:
+#line 402 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
@@ -343,8 +356,8 @@ case 2:
;}
break;
- case 37:
-#line 401 "perly.y"
+ case 38:
+#line 411 "perly.y"
{
const PADOFFSET offset = pad_findmy_pvs("$_", 0);
(yyval.opval) = block_end((ps[(3) - (6)].val.ival),
@@ -357,18 +370,18 @@ case 2:
;}
break;
- case 38:
-#line 412 "perly.y"
+ case 39:
+#line 422 "perly.y"
{ (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
break;
- case 39:
-#line 414 "perly.y"
+ case 40:
+#line 424 "perly.y"
{ (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
break;
- case 40:
-#line 416 "perly.y"
+ case 41:
+#line 426 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -380,8 +393,8 @@ case 2:
;}
break;
- case 41:
-#line 426 "perly.y"
+ case 42:
+#line 436 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (8)].val.ival),
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -393,8 +406,8 @@ case 2:
;}
break;
- case 42:
-#line 437 "perly.y"
+ case 43:
+#line 447 "perly.y"
{
OP *initop = IF_MAD((ps[(4) - (11)].val.opval) ? (ps[(4) - (11)].val.opval) : newOP(OP_NULL, 0), (ps[(4) - (11)].val.opval));
OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -416,8 +429,8 @@ case 2:
;}
break;
- case 43:
-#line 457 "perly.y"
+ case 44:
+#line 467 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
TOKEN_GETMAD((ps[(1) - (9)].val.i_tkval),(yyval.opval),'W');
@@ -428,8 +441,8 @@ case 2:
;}
break;
- case 44:
-#line 466 "perly.y"
+ case 45:
+#line 476 "perly.y"
{
(yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
@@ -440,8 +453,8 @@ case 2:
;}
break;
- case 45:
-#line 475 "perly.y"
+ case 46:
+#line 485 "perly.y"
{
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
@@ -452,8 +465,8 @@ case 2:
;}
break;
- case 46:
-#line 484 "perly.y"
+ case 47:
+#line 494 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -461,8 +474,8 @@ case 2:
;}
break;
- case 47:
-#line 490 "perly.y"
+ case 48:
+#line 500 "perly.y"
{
package((ps[(3) - (5)].val.opval));
if ((ps[(2) - (5)].val.opval)) {
@@ -471,8 +484,8 @@ case 2:
;}
break;
- case 48:
-#line 497 "perly.y"
+ case 49:
+#line 507 "perly.y"
{
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
@@ -484,8 +497,8 @@ case 2:
;}
break;
- case 49:
-#line 507 "perly.y"
+ case 50:
+#line 517 "perly.y"
{
PL_parser->expect = XSTATE;
(yyval.opval) = (ps[(1) - (2)].val.opval);
@@ -493,8 +506,8 @@ case 2:
;}
break;
- case 50:
-#line 513 "perly.y"
+ case 51:
+#line 523 "perly.y"
{
PL_parser->expect = XSTATE;
(yyval.opval) = IF_MAD(newOP(OP_NULL, 0), (OP*)NULL);
@@ -503,8 +516,8 @@ case 2:
;}
break;
- case 51:
-#line 523 "perly.y"
+ case 52:
+#line 533 "perly.y"
{ OP *list;
if ((ps[(2) - (2)].val.opval)) {
OP *term = (ps[(2) - (2)].val.opval);
@@ -527,74 +540,74 @@ case 2:
;}
break;
- case 52:
-#line 546 "perly.y"
+ case 53:
+#line 556 "perly.y"
{ (yyval.opval) = NULL; ;}
break;
- case 53:
-#line 548 "perly.y"
+ case 54:
+#line 558 "perly.y"
{ (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;}
break;
- case 54:
-#line 553 "perly.y"
+ case 55:
+#line 563 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 55:
-#line 555 "perly.y"
+ case 56:
+#line 565 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 56:
-#line 557 "perly.y"
+ case 57:
+#line 567 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
;}
break;
- case 57:
-#line 561 "perly.y"
+ case 58:
+#line 571 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'i');
;}
break;
- case 58:
-#line 565 "perly.y"
+ case 59:
+#line 575 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
;}
break;
- case 59:
-#line 569 "perly.y"
+ case 60:
+#line 579 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
;}
break;
- case 60:
-#line 573 "perly.y"
+ case 61:
+#line 583 "perly.y"
{ (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'w');
PL_parser->copline = (line_t)IVAL((ps[(2) - (3)].val.i_tkval));
;}
break;
- case 61:
-#line 578 "perly.y"
+ case 62:
+#line 588 "perly.y"
{ (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
break;
- case 62:
-#line 583 "perly.y"
+ case 63:
+#line 593 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 63:
-#line 585 "perly.y"
+ case 64:
+#line 595 "perly.y"
{
((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
@@ -602,8 +615,8 @@ case 2:
;}
break;
- case 64:
-#line 591 "perly.y"
+ case 65:
+#line 601 "perly.y"
{ PL_parser->copline = (line_t)IVAL((ps[(1) - (6)].val.i_tkval));
(yyval.opval) = newCONDOP(0,
newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
@@ -615,88 +628,88 @@ case 2:
;}
break;
- case 65:
-#line 604 "perly.y"
+ case 66:
+#line 614 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 66:
-#line 606 "perly.y"
+ case 67:
+#line 616 "perly.y"
{
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 67:
-#line 614 "perly.y"
+ case 68:
+#line 624 "perly.y"
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
intro_my(); ;}
break;
- case 68:
-#line 620 "perly.y"
+ case 69:
+#line 630 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 70:
-#line 626 "perly.y"
+ case 71:
+#line 636 "perly.y"
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
(yyval.opval) = tmplval.opval; ;}
break;
- case 72:
-#line 634 "perly.y"
- { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
- break;
-
case 73:
-#line 639 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+#line 644 "perly.y"
+ { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
break;
case 74:
-#line 643 "perly.y"
+#line 649 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
break;
case 75:
-#line 647 "perly.y"
+#line 653 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
break;
case 76:
-#line 650 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 657 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
break;
case 77:
-#line 651 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+#line 660 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 78:
-#line 655 "perly.y"
+#line 661 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
+ break;
+
+ case 79:
+#line 665 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, 0);
SAVEFREESV(PL_compcv); ;}
break;
- case 79:
-#line 661 "perly.y"
+ case 80:
+#line 671 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
SAVEFREESV(PL_compcv); ;}
break;
- case 80:
-#line 666 "perly.y"
+ case 81:
+#line 676 "perly.y"
{ (yyval.ival) = start_subparse(TRUE, 0);
SAVEFREESV(PL_compcv); ;}
break;
- case 81:
-#line 671 "perly.y"
+ case 82:
+#line 681 "perly.y"
{ const char *const name = SvPV_nolen_const(((SVOP*)(ps[(1) - (1)].val.opval))->op_sv);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT") || strEQ(name, "CHECK")
@@ -705,25 +718,25 @@ case 2:
(yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 82:
-#line 681 "perly.y"
+ case 83:
+#line 691 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 84:
-#line 687 "perly.y"
+ case 85:
+#line 697 "perly.y"
{ (yyval.opval) = (OP*)NULL; ;}
break;
- case 85:
-#line 689 "perly.y"
+ case 86:
+#line 699 "perly.y"
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
;}
break;
- case 86:
-#line 693 "perly.y"
+ case 87:
+#line 703 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
(OP*)NULL
@@ -732,15 +745,15 @@ case 2:
;}
break;
- case 87:
-#line 703 "perly.y"
+ case 88:
+#line 713 "perly.y"
{ (yyval.opval) = (ps[(2) - (2)].val.opval);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),':');
;}
break;
- case 88:
-#line 707 "perly.y"
+ case 89:
+#line 717 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
(OP*)NULL
@@ -749,13 +762,13 @@ case 2:
;}
break;
- case 89:
-#line 716 "perly.y"
+ case 90:
+#line 726 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 90:
-#line 717 "perly.y"
+ case 91:
+#line 727 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL,0),
(OP*)NULL
@@ -765,29 +778,29 @@ case 2:
;}
break;
- case 91:
-#line 728 "perly.y"
+ case 92:
+#line 738 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 92:
-#line 732 "perly.y"
+ case 93:
+#line 742 "perly.y"
{ (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 93:
-#line 736 "perly.y"
+ case 94:
+#line 746 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 95:
-#line 744 "perly.y"
+ case 96:
+#line 754 "perly.y"
{
#ifdef MAD
OP* op = newNULLLIST();
@@ -799,8 +812,8 @@ case 2:
;}
break;
- case 96:
-#line 754 "perly.y"
+ case 97:
+#line 764 "perly.y"
{
OP* term = (ps[(3) - (3)].val.opval);
DO_MAD(
@@ -811,16 +824,16 @@ case 2:
;}
break;
- case 98:
-#line 767 "perly.y"
+ case 99:
+#line 777 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 99:
-#line 772 "perly.y"
+ case 100:
+#line 782 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
@@ -829,8 +842,8 @@ case 2:
;}
break;
- case 100:
-#line 779 "perly.y"
+ case 101:
+#line 789 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
@@ -841,8 +854,8 @@ case 2:
;}
break;
- case 101:
-#line 788 "perly.y"
+ case 102:
+#line 798 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
@@ -850,8 +863,8 @@ case 2:
;}
break;
- case 102:
-#line 794 "perly.y"
+ case 103:
+#line 804 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
@@ -859,8 +872,8 @@ case 2:
;}
break;
- case 103:
-#line 800 "perly.y"
+ case 104:
+#line 810 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
@@ -870,15 +883,15 @@ case 2:
;}
break;
- case 104:
-#line 808 "perly.y"
+ case 105:
+#line 818 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 105:
-#line 812 "perly.y"
+ case 106:
+#line 822 "perly.y"
{ (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
@@ -886,22 +899,22 @@ case 2:
;}
break;
- case 106:
-#line 818 "perly.y"
+ case 107:
+#line 828 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
break;
- case 107:
-#line 821 "perly.y"
+ case 108:
+#line 831 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
;}
break;
- case 110:
-#line 836 "perly.y"
+ case 111:
+#line 846 "perly.y"
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval)));
PL_parser->expect = XOPERATOR;
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
@@ -910,16 +923,16 @@ case 2:
;}
break;
- case 111:
-#line 843 "perly.y"
+ case 112:
+#line 853 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
;}
break;
- case 112:
-#line 848 "perly.y"
+ case 113:
+#line 858 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
scalar((ps[(4) - (5)].val.opval)));
@@ -929,8 +942,8 @@ case 2:
;}
break;
- case 113:
-#line 856 "perly.y"
+ case 114:
+#line 866 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
scalar((ps[(3) - (4)].val.opval)));
@@ -939,8 +952,8 @@ case 2:
;}
break;
- case 114:
-#line 863 "perly.y"
+ case 115:
+#line 873 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
PL_parser->expect = XOPERATOR;
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{');
@@ -949,8 +962,8 @@ case 2:
;}
break;
- case 115:
-#line 870 "perly.y"
+ case 116:
+#line 880 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
jmaybe((ps[(4) - (6)].val.opval)));
@@ -962,8 +975,8 @@ case 2:
;}
break;
- case 116:
-#line 880 "perly.y"
+ case 117:
+#line 890 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
jmaybe((ps[(3) - (5)].val.opval)));
@@ -974,8 +987,8 @@ case 2:
;}
break;
- case 117:
-#line 889 "perly.y"
+ case 118:
+#line 899 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[(1) - (4)].val.opval))));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a');
@@ -984,8 +997,8 @@ case 2:
;}
break;
- case 118:
-#line 896 "perly.y"
+ case 119:
+#line 906 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
newCVREF(0, scalar((ps[(1) - (5)].val.opval)))));
@@ -995,8 +1008,8 @@ case 2:
;}
break;
- case 119:
-#line 905 "perly.y"
+ case 120:
+#line 915 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
newCVREF(0, scalar((ps[(1) - (4)].val.opval)))));
@@ -1005,8 +1018,8 @@ case 2:
;}
break;
- case 120:
-#line 912 "perly.y"
+ case 121:
+#line 922 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((ps[(1) - (3)].val.opval))));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
@@ -1014,8 +1027,8 @@ case 2:
;}
break;
- case 121:
-#line 918 "perly.y"
+ case 122:
+#line 928 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval));
TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')');
@@ -1024,16 +1037,16 @@ case 2:
;}
break;
- case 122:
-#line 925 "perly.y"
+ case 123:
+#line 935 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval));
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']');
;}
break;
- case 123:
-#line 930 "perly.y"
+ case 124:
+#line 940 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')');
@@ -1042,22 +1055,22 @@ case 2:
;}
break;
- case 124:
-#line 940 "perly.y"
+ case 125:
+#line 950 "perly.y"
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 125:
-#line 944 "perly.y"
+ case 126:
+#line 954 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 126:
-#line 948 "perly.y"
+ case 127:
+#line 958 "perly.y"
{ if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT)
scalar((ps[(1) - (3)].val.opval));
(yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
@@ -1065,50 +1078,50 @@ case 2:
;}
break;
- case 127:
-#line 954 "perly.y"
- { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
- TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
- ;}
- break;
-
case 128:
-#line 958 "perly.y"
+#line 964 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
case 129:
-#line 962 "perly.y"
+#line 968 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
case 130:
-#line 966 "perly.y"
+#line 972 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
case 131:
-#line 970 "perly.y"
+#line 976 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
case 132:
-#line 974 "perly.y"
+#line 980 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
case 133:
-#line 978 "perly.y"
+#line 984 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
+ TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
+ case 134:
+#line 988 "perly.y"
{
(yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval)));
DO_MAD({
@@ -1122,29 +1135,29 @@ case 2:
;}
break;
- case 134:
-#line 990 "perly.y"
+ case 135:
+#line 1000 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 135:
-#line 994 "perly.y"
+ case 136:
+#line 1004 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 136:
-#line 998 "perly.y"
+ case 137:
+#line 1008 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 137:
-#line 1002 "perly.y"
+ case 138:
+#line 1012 "perly.y"
{ (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),
((yyval.opval)->op_type == OP_NOT
@@ -1153,15 +1166,15 @@ case 2:
;}
break;
- case 138:
-#line 1012 "perly.y"
+ case 139:
+#line 1022 "perly.y"
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 139:
-#line 1016 "perly.y"
+ case 140:
+#line 1026 "perly.y"
{ (yyval.opval) = IF_MAD(
newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)),
(ps[(2) - (2)].val.opval)
@@ -1170,70 +1183,70 @@ case 2:
;}
break;
- case 140:
-#line 1023 "perly.y"
+ case 141:
+#line 1033 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 141:
-#line 1027 "perly.y"
+ case 142:
+#line 1037 "perly.y"
{ (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 142:
-#line 1031 "perly.y"
+ case 143:
+#line 1041 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC));
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 143:
-#line 1036 "perly.y"
+ case 144:
+#line 1046 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 144:
-#line 1041 "perly.y"
+ case 145:
+#line 1051 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 145:
-#line 1046 "perly.y"
+ case 146:
+#line 1056 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 146:
-#line 1055 "perly.y"
+ case 147:
+#line 1065 "perly.y"
{ (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']');
;}
break;
- case 147:
-#line 1060 "perly.y"
+ case 148:
+#line 1070 "perly.y"
{ (yyval.opval) = newANONLIST((OP*)NULL);
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']');
;}
break;
- case 148:
-#line 1065 "perly.y"
+ case 149:
+#line 1075 "perly.y"
{ (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';');
@@ -1241,8 +1254,8 @@ case 2:
;}
break;
- case 149:
-#line 1071 "perly.y"
+ case 150:
+#line 1081 "perly.y"
{ (yyval.opval) = newANONHASH((OP*)NULL);
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';');
@@ -1250,8 +1263,8 @@ case 2:
;}
break;
- case 150:
-#line 1077 "perly.y"
+ case 151:
+#line 1087 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
(yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval));
TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o');
@@ -1260,22 +1273,22 @@ case 2:
;}
break;
- case 151:
-#line 1088 "perly.y"
+ case 152:
+#line 1098 "perly.y"
{ (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 152:
-#line 1092 "perly.y"
+ case 153:
+#line 1102 "perly.y"
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D');
;}
break;
- case 153:
-#line 1096 "perly.y"
+ case 154:
+#line 1106 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
@@ -1289,8 +1302,8 @@ case 2:
;}
break;
- case 154:
-#line 1108 "perly.y"
+ case 155:
+#line 1118 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
op_append_elem(OP_LIST,
@@ -1305,8 +1318,8 @@ case 2:
;}
break;
- case 155:
-#line 1121 "perly.y"
+ case 156:
+#line 1131 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep();
@@ -1316,8 +1329,8 @@ case 2:
;}
break;
- case 156:
-#line 1129 "perly.y"
+ case 157:
+#line 1139 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
op_prepend_elem(OP_LIST,
(ps[(4) - (5)].val.opval),
@@ -1328,86 +1341,86 @@ case 2:
;}
break;
- case 161:
-#line 1145 "perly.y"
+ case 162:
+#line 1155 "perly.y"
{ (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval));
TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?');
TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':');
;}
break;
- case 162:
-#line 1150 "perly.y"
+ case 163:
+#line 1160 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 163:
-#line 1154 "perly.y"
+ case 164:
+#line 1164 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 164:
-#line 1156 "perly.y"
+ case 165:
+#line 1166 "perly.y"
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k');
;}
break;
- case 165:
-#line 1160 "perly.y"
+ case 166:
+#line 1170 "perly.y"
{ (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval)));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 166:
-#line 1165 "perly.y"
+ case 167:
+#line 1175 "perly.y"
{ (yyval.opval) = IF_MAD(newUNOP(OP_NULL,0,(ps[(1) - (1)].val.opval)), (ps[(1) - (1)].val.opval)); ;}
break;
- case 167:
-#line 1167 "perly.y"
+ case 168:
+#line 1177 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 168:
-#line 1172 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
- break;
-
case 169:
-#line 1174 "perly.y"
+#line 1182 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 170:
-#line 1176 "perly.y"
+#line 1184 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 171:
-#line 1178 "perly.y"
+#line 1186 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 172:
-#line 1180 "perly.y"
- { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
+#line 1188 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 173:
-#line 1182 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1190 "perly.y"
+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
break;
case 174:
-#line 1184 "perly.y"
+#line 1192 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ break;
+
+ case 175:
+#line 1194 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
@@ -1418,8 +1431,8 @@ case 2:
;}
break;
- case 175:
-#line 1193 "perly.y"
+ case 176:
+#line 1203 "perly.y"
{ (yyval.opval) = op_prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1432,26 +1445,26 @@ case 2:
;}
break;
- case 176:
-#line 1204 "perly.y"
+ case 177:
+#line 1214 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 177:
-#line 1206 "perly.y"
+ case 178:
+#line 1216 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
break;
- case 178:
-#line 1208 "perly.y"
+ case 179:
+#line 1218 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 179:
-#line 1213 "perly.y"
+ case 180:
+#line 1223 "perly.y"
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
@@ -1466,91 +1479,91 @@ case 2:
;}
break;
- case 180:
-#line 1226 "perly.y"
+ case 181:
+#line 1236 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 181:
-#line 1231 "perly.y"
+ case 182:
+#line 1241 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE;
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 182:
-#line 1236 "perly.y"
+ case 183:
+#line 1246 "perly.y"
{ (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 183:
-#line 1240 "perly.y"
+ case 184:
+#line 1250 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 184:
-#line 1244 "perly.y"
+ case 185:
+#line 1254 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 185:
-#line 1248 "perly.y"
+ case 186:
+#line 1258 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 186:
-#line 1252 "perly.y"
+ case 187:
+#line 1262 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 187:
-#line 1256 "perly.y"
+ case 188:
+#line 1266 "perly.y"
{ (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 188:
-#line 1260 "perly.y"
+ case 189:
+#line 1270 "perly.y"
{ (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 189:
-#line 1264 "perly.y"
+ case 190:
+#line 1274 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
break;
- case 190:
-#line 1266 "perly.y"
+ case 191:
+#line 1276 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
break;
- case 191:
-#line 1269 "perly.y"
+ case 192:
+#line 1279 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o');
;}
break;
- case 192:
-#line 1273 "perly.y"
+ case 193:
+#line 1283 "perly.y"
{ (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0);
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
@@ -1558,27 +1571,27 @@ case 2:
;}
break;
- case 193:
-#line 1279 "perly.y"
+ case 194:
+#line 1289 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
- case 194:
-#line 1281 "perly.y"
+ case 195:
+#line 1291 "perly.y"
{ (yyval.opval) = (ps[(1) - (3)].val.opval);
TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 195:
-#line 1286 "perly.y"
+ case 196:
+#line 1296 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar((ps[(1) - (1)].val.opval))); ;}
break;
- case 196:
-#line 1289 "perly.y"
+ case 197:
+#line 1299 "perly.y"
{ (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT)
? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
: newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL);
@@ -1589,8 +1602,8 @@ case 2:
;}
break;
- case 197:
-#line 1298 "perly.y"
+ case 198:
+#line 1308 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval));
TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'(');
@@ -1598,8 +1611,8 @@ case 2:
;}
break;
- case 198:
-#line 1304 "perly.y"
+ case 199:
+#line 1314 "perly.y"
{
if ( (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
&& (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
@@ -1612,16 +1625,16 @@ case 2:
;}
break;
- case 199:
-#line 1315 "perly.y"
+ case 200:
+#line 1325 "perly.y"
{ (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival));
TOKEN_GETMAD((ps[(3) - (5)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(5) - (5)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 202:
-#line 1322 "perly.y"
+ case 203:
+#line 1332 "perly.y"
{
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
@@ -1629,8 +1642,8 @@ case 2:
;}
break;
- case 204:
-#line 1332 "perly.y"
+ case 205:
+#line 1342 "perly.y"
{ (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval));
DO_MAD(
token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d');
@@ -1640,128 +1653,128 @@ case 2:
;}
break;
- case 205:
-#line 1340 "perly.y"
+ case 206:
+#line 1350 "perly.y"
{ (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval)));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d');
;}
break;
- case 206:
-#line 1347 "perly.y"
+ case 207:
+#line 1357 "perly.y"
{ (yyval.opval) = sawparens((ps[(2) - (3)].val.opval));
TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 207:
-#line 1352 "perly.y"
+ case 208:
+#line 1362 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')');
;}
break;
- case 208:
-#line 1357 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
- break;
-
case 209:
-#line 1359 "perly.y"
+#line 1367 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 210:
-#line 1361 "perly.y"
+#line 1369 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 211:
-#line 1366 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+#line 1371 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 212:
-#line 1368 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1376 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
break;
case 213:
-#line 1372 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+#line 1378 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 214:
-#line 1374 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1382 "perly.y"
+ { (yyval.opval) = (OP*)NULL; ;}
break;
case 215:
-#line 1380 "perly.y"
- { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
+#line 1384 "perly.y"
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
case 216:
-#line 1384 "perly.y"
+#line 1390 "perly.y"
+ { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
+ break;
+
+ case 217:
+#line 1394 "perly.y"
{ (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&');
;}
break;
- case 217:
-#line 1390 "perly.y"
+ case 218:
+#line 1400 "perly.y"
{ (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$');
;}
break;
- case 218:
-#line 1396 "perly.y"
+ case 219:
+#line 1406 "perly.y"
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@');
;}
break;
- case 219:
-#line 1402 "perly.y"
+ case 220:
+#line 1412 "perly.y"
{ (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%');
;}
break;
- case 220:
-#line 1408 "perly.y"
+ case 221:
+#line 1418 "perly.y"
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l');
;}
break;
- case 221:
-#line 1414 "perly.y"
+ case 222:
+#line 1424 "perly.y"
{ (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval));
TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*');
;}
break;
- case 222:
-#line 1421 "perly.y"
+ case 223:
+#line 1431 "perly.y"
{ (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
break;
- case 223:
-#line 1423 "perly.y"
+ case 224:
+#line 1433 "perly.y"
{ (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
break;
- case 224:
-#line 1425 "perly.y"
+ case 225:
+#line 1435 "perly.y"
{ (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
break;
- case 225:
-#line 1428 "perly.y"
+ case 226:
+#line 1438 "perly.y"
{ (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
break;
@@ -1772,6 +1785,6 @@ case 2:
/* Generated from:
- * 580d1bac82838fb0ae1e092010e776fb247f0d4cb68834a166507fae86707700 perly.y
+ * 3e01d5213d0f6a4dd26b90cfb22baf8eaf3c89d8ae0025fdc9e06ec1f871e826 perly.y
* 4a3ced51fe6585f6ec59e65e1ffd74bc976c498b0e6992eaab337219fee72e51 regen_perly.pl
* ex: set ro: */