summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2006-12-11 00:48:06 +0000
committerDave Mitchell <davem@fdisolutions.com>2006-12-11 00:48:06 +0000
commit718a7425915fd79f2939210d3d2e5741c7fc47e1 (patch)
tree7bad6e3ac50a724c8641f6276ef85cdc01596142
parenta1cac82e623c5bbb331e6465011c5b46dfbfc277 (diff)
downloadperl-718a7425915fd79f2939210d3d2e5741c7fc47e1.tar.gz
fix eval qw(BEGIN{die}) style leaks (second attempt).
Repeat of change #28319 (backed out by change #28720), this time freeing ops using the right pad. Also backs out the remempad parser addition from change #29501; instead a new auxiliary paser stack is added, which records the current value of PL_comppad for every state. p4raw-link: @29501 on //depot/perl: 2af555bf3f2b3ca8e114df3f5f680d40bd24d6bf p4raw-link: @28720 on //depot/perl: c86b7e916b443ee192c5638ad9d077ad4e244713 p4raw-link: @28319 on //depot/perl: eb7d7d25d2f780edcbedc124a5bdca0d53ad8687 p4raw-id: //depot/perl@29504
-rw-r--r--perly.act707
-rw-r--r--perly.c151
-rw-r--r--perly.h1
-rw-r--r--perly.tab1213
-rw-r--r--perly.y56
-rw-r--r--t/comp/parser.t28
6 files changed, 1139 insertions, 1017 deletions
diff --git a/perly.act b/perly.act
index f6581423b1..6e35f50dcf 100644
--- a/perly.act
+++ b/perly.act
@@ -1,10 +1,10 @@
case 2:
-#line 135 "perly.y"
+#line 133 "perly.y"
{ (yyval.ival) = (yyvsp[(1) - (2)].ival); newPROG(block_end((yyvsp[(1) - (2)].ival),(yyvsp[(2) - (2)].opval))); ;}
break;
case 3:
-#line 140 "perly.y"
+#line 138 "perly.y"
{ if (PL_copline > (line_t)IVAL((yyvsp[(1) - (4)].i_tkval)))
PL_copline = (line_t)IVAL((yyvsp[(1) - (4)].i_tkval));
(yyval.opval) = block_end((yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].opval));
@@ -14,24 +14,24 @@ case 2:
break;
case 4:
-#line 149 "perly.y"
+#line 147 "perly.y"
{ (yyval.ival) = block_start(TRUE); ;}
break;
case 5:
-#line 153 "perly.y"
+#line 151 "perly.y"
{ (yyval.ival) = (I32) allocmy("$_"); ;}
break;
case 6:
-#line 157 "perly.y"
+#line 155 "perly.y"
{
PL_expect = XSTATE; (yyval.ival) = block_start(TRUE);
;}
break;
case 7:
-#line 164 "perly.y"
+#line 162 "perly.y"
{ if (PL_copline > (line_t)IVAL((yyvsp[(1) - (4)].i_tkval)))
PL_copline = (line_t)IVAL((yyvsp[(1) - (4)].i_tkval));
(yyval.opval) = block_end((yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].opval));
@@ -41,22 +41,22 @@ case 2:
break;
case 8:
-#line 173 "perly.y"
+#line 171 "perly.y"
{ (yyval.ival) = block_start(FALSE); ;}
break;
case 9:
-#line 177 "perly.y"
+#line 175 "perly.y"
{ (yyval.ival) = PL_savestack_ix; ;}
break;
case 10:
-#line 181 "perly.y"
+#line 179 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 11:
-#line 183 "perly.y"
+#line 181 "perly.y"
{
(yyval.opval) = IF_MAD(
append_list(OP_LINESEQ,
@@ -66,7 +66,7 @@ case 2:
break;
case 12:
-#line 190 "perly.y"
+#line 188 "perly.y"
{ LEAVE_SCOPE((yyvsp[(2) - (3)].ival));
(yyval.opval) = append_list(OP_LINESEQ,
(LISTOP*)(yyvsp[(1) - (3)].opval), (LISTOP*)(yyvsp[(3) - (3)].opval));
@@ -75,23 +75,23 @@ case 2:
break;
case 13:
-#line 199 "perly.y"
+#line 197 "perly.y"
{ (yyval.opval) = newSTATEOP(0, PVAL((yyvsp[(1) - (2)].p_tkval)), (yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].p_tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
break;
case 15:
-#line 203 "perly.y"
+#line 201 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 16:
-#line 205 "perly.y"
+#line 203 "perly.y"
{ (yyval.opval) = newSTATEOP(0, PVAL((yyvsp[(1) - (2)].p_tkval)), (yyvsp[(2) - (2)].opval)); ;}
break;
case 17:
-#line 207 "perly.y"
+#line 205 "perly.y"
{
if (PVAL((yyvsp[(1) - (2)].p_tkval))) {
(yyval.opval) = newSTATEOP(0, PVAL((yyvsp[(1) - (2)].p_tkval)), newOP(OP_NULL, 0));
@@ -111,7 +111,7 @@ case 2:
break;
case 18:
-#line 224 "perly.y"
+#line 222 "perly.y"
{
(yyval.opval) = newSTATEOP(0, PVAL((yyvsp[(1) - (3)].p_tkval)), (yyvsp[(2) - (3)].opval));
PL_expect = XSTATE;
@@ -130,45 +130,45 @@ case 2:
break;
case 19:
-#line 243 "perly.y"
+#line 241 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 20:
-#line 245 "perly.y"
+#line 243 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 21:
-#line 247 "perly.y"
+#line 245 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[(3) - (3)].opval), (yyvsp[(1) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'i');
;}
break;
case 22:
-#line 251 "perly.y"
+#line 249 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[(3) - (3)].opval), (yyvsp[(1) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'i');
;}
break;
case 23:
-#line 255 "perly.y"
+#line 253 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((yyvsp[(3) - (3)].opval)), (yyvsp[(1) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'w');
;}
break;
case 24:
-#line 259 "perly.y"
+#line 257 "perly.y"
{ (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (yyvsp[(3) - (3)].opval), (yyvsp[(1) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'w');
;}
break;
case 25:
-#line 263 "perly.y"
+#line 261 "perly.y"
{ (yyval.opval) = newFOROP(0, Nullch, (line_t)IVAL((yyvsp[(2) - (3)].i_tkval)),
Nullop, (yyvsp[(3) - (3)].opval), (yyvsp[(1) - (3)].opval), Nullop);
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),((LISTOP*)(yyval.opval))->op_first->op_sibling,'w');
@@ -176,19 +176,19 @@ case 2:
break;
case 26:
-#line 271 "perly.y"
+#line 269 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 27:
-#line 273 "perly.y"
+#line 271 "perly.y"
{ ((yyvsp[(2) - (2)].opval))->op_flags |= OPf_PARENS; (yyval.opval) = scope((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
case 28:
-#line 277 "perly.y"
+#line 275 "perly.y"
{ PL_copline = (line_t)IVAL((yyvsp[(1) - (6)].i_tkval));
(yyval.opval) = newCONDOP(0, (yyvsp[(3) - (6)].opval), scope((yyvsp[(5) - (6)].opval)), (yyvsp[(6) - (6)].opval));
PL_hints |= HINT_BLOCK_SCOPE;
@@ -199,7 +199,7 @@ case 2:
break;
case 29:
-#line 288 "perly.y"
+#line 286 "perly.y"
{ PL_copline = (line_t)IVAL((yyvsp[(1) - (7)].i_tkval));
(yyval.opval) = block_end((yyvsp[(3) - (7)].ival),
newCONDOP(0, (yyvsp[(4) - (7)].opval), scope((yyvsp[(6) - (7)].opval)), (yyvsp[(7) - (7)].opval)));
@@ -210,7 +210,7 @@ case 2:
break;
case 30:
-#line 296 "perly.y"
+#line 294 "perly.y"
{ PL_copline = (line_t)IVAL((yyvsp[(1) - (7)].i_tkval));
(yyval.opval) = block_end((yyvsp[(3) - (7)].ival),
newCONDOP(0, (yyvsp[(4) - (7)].opval), scope((yyvsp[(6) - (7)].opval)), (yyvsp[(7) - (7)].opval)));
@@ -221,30 +221,30 @@ case 2:
break;
case 31:
-#line 307 "perly.y"
+#line 305 "perly.y"
{ (yyval.opval) = block_end((yyvsp[(3) - (6)].ival),
newWHENOP((yyvsp[(4) - (6)].opval), scope((yyvsp[(6) - (6)].opval)))); ;}
break;
case 32:
-#line 310 "perly.y"
+#line 308 "perly.y"
{ (yyval.opval) = newWHENOP(0, scope((yyvsp[(2) - (2)].opval))); ;}
break;
case 33:
-#line 315 "perly.y"
+#line 313 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 34:
-#line 317 "perly.y"
+#line 315 "perly.y"
{ (yyval.opval) = scope((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
case 35:
-#line 324 "perly.y"
+#line 322 "perly.y"
{ OP *innerop;
PL_copline = (line_t)(yyvsp[(2) - (9)].i_tkval);
(yyval.opval) = block_end((yyvsp[(4) - (9)].ival),
@@ -259,7 +259,7 @@ case 2:
break;
case 36:
-#line 337 "perly.y"
+#line 335 "perly.y"
{ OP *innerop;
PL_copline = (line_t)(yyvsp[(2) - (9)].i_tkval);
(yyval.opval) = block_end((yyvsp[(4) - (9)].ival),
@@ -274,7 +274,7 @@ case 2:
break;
case 37:
-#line 349 "perly.y"
+#line 347 "perly.y"
{ OP *innerop;
(yyval.opval) = block_end((yyvsp[(4) - (10)].ival),
innerop = newFOROP(0, PVAL((yyvsp[(1) - (10)].p_tkval)), (line_t)IVAL((yyvsp[(2) - (10)].i_tkval)),
@@ -288,7 +288,7 @@ case 2:
break;
case 38:
-#line 360 "perly.y"
+#line 358 "perly.y"
{ OP *innerop;
(yyval.opval) = block_end((yyvsp[(5) - (9)].ival),
innerop = newFOROP(0, PVAL((yyvsp[(1) - (9)].p_tkval)), (line_t)IVAL((yyvsp[(2) - (9)].i_tkval)),
@@ -301,7 +301,7 @@ case 2:
break;
case 39:
-#line 370 "perly.y"
+#line 368 "perly.y"
{ OP *innerop;
(yyval.opval) = block_end((yyvsp[(4) - (8)].ival),
innerop = newFOROP(0, PVAL((yyvsp[(1) - (8)].p_tkval)), (line_t)IVAL((yyvsp[(2) - (8)].i_tkval)),
@@ -314,7 +314,7 @@ case 2:
break;
case 40:
-#line 382 "perly.y"
+#line 380 "perly.y"
{ OP *forop;
PL_copline = (line_t)IVAL((yyvsp[(2) - (12)].i_tkval));
forop = newSTATEOP(0, PVAL((yyvsp[(1) - (12)].p_tkval)),
@@ -351,7 +351,7 @@ case 2:
break;
case 41:
-#line 416 "perly.y"
+#line 414 "perly.y"
{ (yyval.opval) = newSTATEOP(0, PVAL((yyvsp[(1) - (3)].p_tkval)),
newWHILEOP(0, 1, (LOOP*)Nullop,
NOLINE, Nullop, (yyvsp[(2) - (3)].opval), (yyvsp[(3) - (3)].opval), 0));
@@ -359,7 +359,7 @@ case 2:
break;
case 42:
-#line 424 "perly.y"
+#line 422 "perly.y"
{ PL_copline = (line_t) (yyvsp[(2) - (8)].i_tkval);
(yyval.opval) = block_end((yyvsp[(4) - (8)].ival),
newSTATEOP(0, PVAL((yyvsp[(1) - (8)].p_tkval)),
@@ -368,46 +368,46 @@ case 2:
break;
case 43:
-#line 433 "perly.y"
+#line 431 "perly.y"
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
intro_my(); ;}
break;
case 44:
-#line 439 "perly.y"
+#line 437 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 46:
-#line 445 "perly.y"
+#line 443 "perly.y"
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
(yyval.opval) = tmplval.opval; ;}
break;
case 48:
-#line 453 "perly.y"
+#line 451 "perly.y"
{ (yyval.opval) = invert(scalar((yyvsp[(1) - (1)].opval))); ;}
break;
case 49:
-#line 458 "perly.y"
+#line 456 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); intro_my(); ;}
break;
case 50:
-#line 462 "perly.y"
+#line 460 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); intro_my(); ;}
break;
case 51:
-#line 466 "perly.y"
+#line 464 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); intro_my(); ;}
break;
case 52:
-#line 471 "perly.y"
+#line 469 "perly.y"
{
#ifdef MAD
YYSTYPE tmplval;
@@ -420,124 +420,119 @@ case 2:
break;
case 54:
-#line 485 "perly.y"
+#line 483 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 55:
-#line 487 "perly.y"
+#line 485 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 56:
-#line 489 "perly.y"
+#line 487 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 57:
-#line 491 "perly.y"
+#line 489 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 58:
-#line 493 "perly.y"
+#line 491 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 59:
-#line 498 "perly.y"
+#line 496 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 60:
-#line 502 "perly.y"
+#line 500 "perly.y"
{ (yyval.opval) = newOP(OP_NULL,0);
TOKEN_GETMAD((yyvsp[(1) - (1)].i_tkval),(yyval.opval),'p');
;}
break;
case 61:
-#line 508 "perly.y"
+#line 506 "perly.y"
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- (yyval.opval) = newFORM((yyvsp[(3) - (5)].ival), (yyvsp[(4) - (5)].opval), (yyvsp[(5) - (5)].opval));
- prepend_madprops((yyvsp[(1) - (5)].i_tkval)->tk_mad, (yyval.opval), 'F');
- (yyvsp[(1) - (5)].i_tkval)->tk_mad = 0;
- token_free((yyvsp[(1) - (5)].i_tkval));
+ (yyval.opval) = newFORM((yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].opval), (yyvsp[(4) - (4)].opval));
+ prepend_madprops((yyvsp[(1) - (4)].i_tkval)->tk_mad, (yyval.opval), 'F');
+ (yyvsp[(1) - (4)].i_tkval)->tk_mad = 0;
+ token_free((yyvsp[(1) - (4)].i_tkval));
#else
- newFORM((yyvsp[(3) - (5)].ival), (yyvsp[(4) - (5)].opval), (yyvsp[(5) - (5)].opval));
+ newFORM((yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].opval), (yyvsp[(4) - (4)].opval));
#endif
;}
break;
case 62:
-#line 520 "perly.y"
+#line 518 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 63:
-#line 521 "perly.y"
+#line 519 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
case 64:
-#line 526 "perly.y"
+#line 524 "perly.y"
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- (yyval.opval) = newMYSUB((yyvsp[(3) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval), (yyvsp[(7) - (7)].opval));
- token_getmad((yyvsp[(1) - (7)].i_tkval),(yyval.opval),'d');
+ (yyval.opval) = newMYSUB((yyvsp[(2) - (6)].ival), (yyvsp[(3) - (6)].opval), (yyvsp[(4) - (6)].opval), (yyvsp[(5) - (6)].opval), (yyvsp[(6) - (6)].opval));
+ token_getmad((yyvsp[(1) - (6)].i_tkval),(yyval.opval),'d');
#else
- newMYSUB((yyvsp[(3) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval), (yyvsp[(7) - (7)].opval));
+ newMYSUB((yyvsp[(2) - (6)].ival), (yyvsp[(3) - (6)].opval), (yyvsp[(4) - (6)].opval), (yyvsp[(5) - (6)].opval), (yyvsp[(6) - (6)].opval));
#endif
;}
break;
case 65:
-#line 538 "perly.y"
+#line 536 "perly.y"
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
OP* o = newSVOP(OP_ANONCODE, 0,
- (SV*)newATTRSUB((yyvsp[(3) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval), (yyvsp[(7) - (7)].opval)));
+ (SV*)newATTRSUB((yyvsp[(2) - (6)].ival), (yyvsp[(3) - (6)].opval), (yyvsp[(4) - (6)].opval), (yyvsp[(5) - (6)].opval), (yyvsp[(6) - (6)].opval)));
(yyval.opval) = newOP(OP_NULL,0);
op_getmad(o,(yyval.opval),'&');
- op_getmad((yyvsp[(4) - (7)].opval),(yyval.opval),'n');
- op_getmad((yyvsp[(5) - (7)].opval),(yyval.opval),'s');
- op_getmad((yyvsp[(6) - (7)].opval),(yyval.opval),'a');
- token_getmad((yyvsp[(1) - (7)].i_tkval),(yyval.opval),'d');
- append_madprops((yyvsp[(7) - (7)].opval)->op_madprop, (yyval.opval), 0);
- (yyvsp[(7) - (7)].opval)->op_madprop = 0;
+ op_getmad((yyvsp[(3) - (6)].opval),(yyval.opval),'n');
+ op_getmad((yyvsp[(4) - (6)].opval),(yyval.opval),'s');
+ op_getmad((yyvsp[(5) - (6)].opval),(yyval.opval),'a');
+ token_getmad((yyvsp[(1) - (6)].i_tkval),(yyval.opval),'d');
+ append_madprops((yyvsp[(6) - (6)].opval)->op_madprop, (yyval.opval), 0);
+ (yyvsp[(6) - (6)].opval)->op_madprop = 0;
#else
- newATTRSUB((yyvsp[(3) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval), (yyvsp[(7) - (7)].opval));
+ newATTRSUB((yyvsp[(2) - (6)].ival), (yyvsp[(3) - (6)].opval), (yyvsp[(4) - (6)].opval), (yyvsp[(5) - (6)].opval), (yyvsp[(6) - (6)].opval));
(yyval.opval) = Nullop;
#endif
;}
break;
case 66:
-#line 558 "perly.y"
- { (yyval.padval) = PL_comppad; ;}
- break;
-
- case 67:
-#line 562 "perly.y"
+#line 556 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, 0);
SAVEFREESV(PL_compcv); ;}
break;
- case 68:
-#line 568 "perly.y"
+ case 67:
+#line 562 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
SAVEFREESV(PL_compcv); ;}
break;
- case 69:
-#line 573 "perly.y"
+ case 68:
+#line 567 "perly.y"
{ (yyval.ival) = start_subparse(TRUE, 0);
SAVEFREESV(PL_compcv); ;}
break;
- case 70:
-#line 578 "perly.y"
+ case 69:
+#line 572 "perly.y"
{ const char *const name = SvPV_nolen_const(((SVOP*)(yyvsp[(1) - (1)].opval))->op_sv);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT") || strEQ(name, "CHECK")
@@ -546,25 +541,25 @@ case 2:
(yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 71:
-#line 588 "perly.y"
+ case 70:
+#line 582 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
- case 73:
-#line 594 "perly.y"
+ case 72:
+#line 588 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
- case 74:
-#line 596 "perly.y"
+ case 73:
+#line 590 "perly.y"
{ (yyval.opval) = (yyvsp[(2) - (2)].opval);
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),':');
;}
break;
- case 75:
-#line 600 "perly.y"
+ case 74:
+#line 594 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
Nullop
@@ -573,15 +568,15 @@ case 2:
;}
break;
- case 76:
-#line 610 "perly.y"
+ case 75:
+#line 604 "perly.y"
{ (yyval.opval) = (yyvsp[(2) - (2)].opval);
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),':');
;}
break;
- case 77:
-#line 614 "perly.y"
+ case 76:
+#line 608 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL, 0),
Nullop
@@ -590,13 +585,13 @@ case 2:
;}
break;
- case 78:
-#line 623 "perly.y"
+ case 77:
+#line 617 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 79:
-#line 624 "perly.y"
+ case 78:
+#line 618 "perly.y"
{ (yyval.opval) = IF_MAD(
newOP(OP_NULL,0),
Nullop
@@ -606,8 +601,8 @@ case 2:
;}
break;
- case 80:
-#line 634 "perly.y"
+ case 79:
+#line 628 "perly.y"
{
#ifdef MAD
(yyval.opval) = package((yyvsp[(2) - (3)].opval));
@@ -619,49 +614,49 @@ case 2:
;}
break;
- case 81:
-#line 646 "perly.y"
+ case 80:
+#line 640 "perly.y"
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
break;
- case 82:
-#line 648 "perly.y"
+ case 81:
+#line 642 "perly.y"
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- (yyval.opval) = utilize(IVAL((yyvsp[(1) - (8)].i_tkval)), (yyvsp[(3) - (8)].ival), (yyvsp[(5) - (8)].opval), (yyvsp[(6) - (8)].opval), (yyvsp[(7) - (8)].opval));
- token_getmad((yyvsp[(1) - (8)].i_tkval),(yyval.opval),'o');
- token_getmad((yyvsp[(8) - (8)].i_tkval),(yyval.opval),';');
+ (yyval.opval) = utilize(IVAL((yyvsp[(1) - (7)].i_tkval)), (yyvsp[(2) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval));
+ token_getmad((yyvsp[(1) - (7)].i_tkval),(yyval.opval),'o');
+ token_getmad((yyvsp[(7) - (7)].i_tkval),(yyval.opval),';');
if (PL_rsfp_filters && AvFILLp(PL_rsfp_filters) >= 0)
append_madprops(newMADPROP('!', MAD_PV, "", 0), (yyval.opval), 0);
#else
- utilize(IVAL((yyvsp[(1) - (8)].i_tkval)), (yyvsp[(3) - (8)].ival), (yyvsp[(5) - (8)].opval), (yyvsp[(6) - (8)].opval), (yyvsp[(7) - (8)].opval));
+ utilize(IVAL((yyvsp[(1) - (7)].i_tkval)), (yyvsp[(2) - (7)].ival), (yyvsp[(4) - (7)].opval), (yyvsp[(5) - (7)].opval), (yyvsp[(6) - (7)].opval));
#endif
;}
break;
- case 83:
-#line 663 "perly.y"
+ case 82:
+#line 657 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 84:
-#line 667 "perly.y"
+ case 83:
+#line 661 "perly.y"
{ (yyval.opval) = newLOGOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 85:
-#line 671 "perly.y"
+ case 84:
+#line 665 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 87:
-#line 679 "perly.y"
+ case 86:
+#line 673 "perly.y"
{
#ifdef MAD
OP* op = newNULLLIST();
@@ -673,8 +668,8 @@ case 2:
;}
break;
- case 88:
-#line 689 "perly.y"
+ case 87:
+#line 683 "perly.y"
{
DO_MAD(
(yyvsp[(3) - (3)].opval) = newUNOP(OP_NULL, 0, (yyvsp[(3) - (3)].opval));
@@ -684,16 +679,16 @@ case 2:
;}
break;
- case 90:
-#line 701 "perly.y"
+ case 89:
+#line 695 "perly.y"
{ (yyval.opval) = convert(IVAL((yyvsp[(1) - (3)].i_tkval)), OPf_STACKED,
prepend_elem(OP_LIST, newGVREF(IVAL((yyvsp[(1) - (3)].i_tkval)),(yyvsp[(2) - (3)].opval)), (yyvsp[(3) - (3)].opval)) );
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 91:
-#line 706 "perly.y"
+ case 90:
+#line 700 "perly.y"
{ (yyval.opval) = convert(IVAL((yyvsp[(1) - (5)].i_tkval)), OPf_STACKED,
prepend_elem(OP_LIST, newGVREF(IVAL((yyvsp[(1) - (5)].i_tkval)),(yyvsp[(3) - (5)].opval)), (yyvsp[(4) - (5)].opval)) );
TOKEN_GETMAD((yyvsp[(1) - (5)].i_tkval),(yyval.opval),'o');
@@ -702,8 +697,8 @@ case 2:
;}
break;
- case 92:
-#line 713 "perly.y"
+ case 91:
+#line 707 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
prepend_elem(OP_LIST, scalar((yyvsp[(1) - (6)].opval)), (yyvsp[(5) - (6)].opval)),
@@ -714,8 +709,8 @@ case 2:
;}
break;
- case 93:
-#line 722 "perly.y"
+ case 92:
+#line 716 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, scalar((yyvsp[(1) - (3)].opval)),
newUNOP(OP_METHOD, 0, (yyvsp[(3) - (3)].opval))));
@@ -723,8 +718,8 @@ case 2:
;}
break;
- case 94:
-#line 728 "perly.y"
+ case 93:
+#line 722 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
prepend_elem(OP_LIST, (yyvsp[(2) - (3)].opval), (yyvsp[(3) - (3)].opval)),
@@ -732,8 +727,8 @@ case 2:
;}
break;
- case 95:
-#line 734 "perly.y"
+ case 94:
+#line 728 "perly.y"
{ (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
prepend_elem(OP_LIST, (yyvsp[(2) - (5)].opval), (yyvsp[(4) - (5)].opval)),
@@ -743,15 +738,15 @@ case 2:
;}
break;
- case 96:
-#line 742 "perly.y"
+ case 95:
+#line 736 "perly.y"
{ (yyval.opval) = convert(IVAL((yyvsp[(1) - (2)].i_tkval)), 0, (yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 97:
-#line 746 "perly.y"
+ case 96:
+#line 740 "perly.y"
{ (yyval.opval) = convert(IVAL((yyvsp[(1) - (4)].i_tkval)), 0, (yyvsp[(3) - (4)].opval));
TOKEN_GETMAD((yyvsp[(1) - (4)].i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((yyvsp[(2) - (4)].i_tkval),(yyval.opval),'(');
@@ -759,22 +754,22 @@ case 2:
;}
break;
- case 98:
-#line 752 "perly.y"
+ case 97:
+#line 746 "perly.y"
{ SvREFCNT_inc(PL_compcv);
- (yyvsp[(4) - (4)].opval) = newANONATTRSUB((yyvsp[(3) - (4)].ival), 0, Nullop, (yyvsp[(4) - (4)].opval)); ;}
+ (yyvsp[(3) - (3)].opval) = newANONATTRSUB((yyvsp[(2) - (3)].ival), 0, Nullop, (yyvsp[(3) - (3)].opval)); ;}
break;
- case 99:
-#line 755 "perly.y"
+ case 98:
+#line 749 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
- prepend_elem(OP_LIST, (yyvsp[(4) - (6)].opval), (yyvsp[(6) - (6)].opval)), (yyvsp[(1) - (6)].opval)));
+ prepend_elem(OP_LIST, (yyvsp[(3) - (5)].opval), (yyvsp[(5) - (5)].opval)), (yyvsp[(1) - (5)].opval)));
;}
break;
- case 102:
-#line 770 "perly.y"
+ case 101:
+#line 764 "perly.y"
{ (yyval.opval) = newBINOP(OP_GELEM, 0, (yyvsp[(1) - (5)].opval), scalar((yyvsp[(3) - (5)].opval)));
PL_expect = XOPERATOR;
TOKEN_GETMAD((yyvsp[(2) - (5)].i_tkval),(yyval.opval),'{');
@@ -783,16 +778,16 @@ case 2:
;}
break;
- case 103:
-#line 777 "perly.y"
+ case 102:
+#line 771 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((yyvsp[(1) - (4)].opval)), scalar((yyvsp[(3) - (4)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (4)].i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((yyvsp[(4) - (4)].i_tkval),(yyval.opval),']');
;}
break;
- case 104:
-#line 782 "perly.y"
+ case 103:
+#line 776 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((yyvsp[(1) - (5)].opval)),OP_RV2AV),
scalar((yyvsp[(4) - (5)].opval)));
@@ -802,8 +797,8 @@ case 2:
;}
break;
- case 105:
-#line 790 "perly.y"
+ case 104:
+#line 784 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((yyvsp[(1) - (4)].opval)),OP_RV2AV),
scalar((yyvsp[(3) - (4)].opval)));
@@ -812,8 +807,8 @@ case 2:
;}
break;
- case 106:
-#line 797 "perly.y"
+ case 105:
+#line 791 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((yyvsp[(1) - (5)].opval)), jmaybe((yyvsp[(3) - (5)].opval)));
PL_expect = XOPERATOR;
TOKEN_GETMAD((yyvsp[(2) - (5)].i_tkval),(yyval.opval),'{');
@@ -822,8 +817,8 @@ case 2:
;}
break;
- case 107:
-#line 804 "perly.y"
+ case 106:
+#line 798 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((yyvsp[(1) - (6)].opval)),OP_RV2HV),
jmaybe((yyvsp[(4) - (6)].opval)));
@@ -835,8 +830,8 @@ case 2:
;}
break;
- case 108:
-#line 814 "perly.y"
+ case 107:
+#line 808 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((yyvsp[(1) - (5)].opval)),OP_RV2HV),
jmaybe((yyvsp[(3) - (5)].opval)));
@@ -847,8 +842,8 @@ case 2:
;}
break;
- case 109:
-#line 823 "perly.y"
+ case 108:
+#line 817 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((yyvsp[(1) - (4)].opval))));
TOKEN_GETMAD((yyvsp[(2) - (4)].i_tkval),(yyval.opval),'a');
@@ -857,8 +852,8 @@ case 2:
;}
break;
- case 110:
-#line 830 "perly.y"
+ case 109:
+#line 824 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, (yyvsp[(4) - (5)].opval),
newCVREF(0, scalar((yyvsp[(1) - (5)].opval)))));
@@ -868,8 +863,8 @@ case 2:
;}
break;
- case 111:
-#line 839 "perly.y"
+ case 110:
+#line 833 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, (yyvsp[(3) - (4)].opval),
newCVREF(0, scalar((yyvsp[(1) - (4)].opval)))));
@@ -878,8 +873,8 @@ case 2:
;}
break;
- case 112:
-#line 846 "perly.y"
+ case 111:
+#line 840 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar((yyvsp[(1) - (3)].opval))));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'(');
@@ -887,8 +882,8 @@ case 2:
;}
break;
- case 113:
-#line 852 "perly.y"
+ case 112:
+#line 846 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (yyvsp[(5) - (6)].opval), (yyvsp[(2) - (6)].opval));
TOKEN_GETMAD((yyvsp[(1) - (6)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(3) - (6)].i_tkval),(yyval.opval),')');
@@ -897,8 +892,8 @@ case 2:
;}
break;
- case 114:
-#line 859 "perly.y"
+ case 113:
+#line 853 "perly.y"
{ (yyval.opval) = newSLICEOP(0, (yyvsp[(4) - (5)].opval), Nullop);
TOKEN_GETMAD((yyvsp[(1) - (5)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(2) - (5)].i_tkval),(yyval.opval),')');
@@ -907,22 +902,22 @@ case 2:
;}
break;
- case 115:
-#line 869 "perly.y"
+ case 114:
+#line 863 "perly.y"
{ (yyval.opval) = newASSIGNOP(OPf_STACKED, (yyvsp[(1) - (3)].opval), IVAL((yyvsp[(2) - (3)].i_tkval)), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 116:
-#line 873 "perly.y"
+ case 115:
+#line 867 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 117:
-#line 877 "perly.y"
+ case 116:
+#line 871 "perly.y"
{ if (IVAL((yyvsp[(2) - (3)].i_tkval)) != OP_REPEAT)
scalar((yyvsp[(1) - (3)].opval));
(yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, (yyvsp[(1) - (3)].opval), scalar((yyvsp[(3) - (3)].opval)));
@@ -930,50 +925,50 @@ case 2:
;}
break;
+ case 117:
+#line 877 "perly.y"
+ { (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
+ TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
+ ;}
+ break;
+
case 118:
-#line 883 "perly.y"
+#line 881 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
case 119:
-#line 887 "perly.y"
+#line 885 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
case 120:
-#line 891 "perly.y"
+#line 889 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
case 121:
-#line 895 "perly.y"
+#line 893 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
case 122:
-#line 899 "perly.y"
+#line 897 "perly.y"
{ (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
case 123:
-#line 903 "perly.y"
- { (yyval.opval) = newBINOP(IVAL((yyvsp[(2) - (3)].i_tkval)), 0, scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
- TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
- ;}
- break;
-
- case 124:
-#line 907 "perly.y"
+#line 901 "perly.y"
{
(yyval.opval) = newRANGE(IVAL((yyvsp[(2) - (3)].i_tkval)), scalar((yyvsp[(1) - (3)].opval)), scalar((yyvsp[(3) - (3)].opval)));
DO_MAD(
@@ -987,29 +982,29 @@ case 2:
;}
break;
- case 125:
-#line 919 "perly.y"
+ case 124:
+#line 913 "perly.y"
{ (yyval.opval) = newLOGOP(OP_AND, 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 126:
-#line 923 "perly.y"
+ case 125:
+#line 917 "perly.y"
{ (yyval.opval) = newLOGOP(OP_OR, 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 127:
-#line 927 "perly.y"
+ case 126:
+#line 921 "perly.y"
{ (yyval.opval) = newLOGOP(OP_DOR, 0, (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 128:
-#line 931 "perly.y"
+ case 127:
+#line 925 "perly.y"
{ (yyval.opval) = bind_match(IVAL((yyvsp[(2) - (3)].i_tkval)), (yyvsp[(1) - (3)].opval), (yyvsp[(3) - (3)].opval));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),
((yyval.opval)->op_type == OP_NOT
@@ -1018,15 +1013,15 @@ case 2:
;}
break;
- case 129:
-#line 941 "perly.y"
+ case 128:
+#line 935 "perly.y"
{ (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((yyvsp[(2) - (2)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 130:
-#line 945 "perly.y"
+ case 129:
+#line 939 "perly.y"
{ (yyval.opval) = IF_MAD(
newUNOP(OP_NULL, 0, (yyvsp[(2) - (2)].opval)),
(yyvsp[(2) - (2)].opval)
@@ -1035,70 +1030,70 @@ case 2:
;}
break;
- case 131:
-#line 952 "perly.y"
+ case 130:
+#line 946 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[(2) - (2)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 132:
-#line 956 "perly.y"
+ case 131:
+#line 950 "perly.y"
{ (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((yyvsp[(2) - (2)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 133:
-#line 960 "perly.y"
+ case 132:
+#line 954 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
mod(scalar((yyvsp[(1) - (2)].opval)), OP_POSTINC));
TOKEN_GETMAD((yyvsp[(2) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 134:
-#line 965 "perly.y"
+ case 133:
+#line 959 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
mod(scalar((yyvsp[(1) - (2)].opval)), OP_POSTDEC));
TOKEN_GETMAD((yyvsp[(2) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 135:
-#line 970 "perly.y"
+ case 134:
+#line 964 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
mod(scalar((yyvsp[(2) - (2)].opval)), OP_PREINC));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 136:
-#line 975 "perly.y"
+ case 135:
+#line 969 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
mod(scalar((yyvsp[(2) - (2)].opval)), OP_PREDEC));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 137:
-#line 984 "perly.y"
+ case 136:
+#line 978 "perly.y"
{ (yyval.opval) = newANONLIST((yyvsp[(2) - (3)].opval));
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((yyvsp[(3) - (3)].i_tkval),(yyval.opval),']');
;}
break;
- case 138:
-#line 989 "perly.y"
+ case 137:
+#line 983 "perly.y"
{ (yyval.opval) = newANONLIST(Nullop);
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'[');
TOKEN_GETMAD((yyvsp[(2) - (2)].i_tkval),(yyval.opval),']');
;}
break;
- case 139:
-#line 994 "perly.y"
+ case 138:
+#line 988 "perly.y"
{ (yyval.opval) = newANONHASH((yyvsp[(2) - (4)].opval));
TOKEN_GETMAD((yyvsp[(1) - (4)].i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((yyvsp[(3) - (4)].i_tkval),(yyval.opval),';');
@@ -1106,8 +1101,8 @@ case 2:
;}
break;
- case 140:
-#line 1000 "perly.y"
+ case 139:
+#line 994 "perly.y"
{ (yyval.opval) = newANONHASH(Nullop);
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'{');
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),';');
@@ -1115,32 +1110,32 @@ case 2:
;}
break;
- case 141:
-#line 1006 "perly.y"
+ case 140:
+#line 1000 "perly.y"
{ SvREFCNT_inc(PL_compcv);
- (yyval.opval) = newANONATTRSUB((yyvsp[(3) - (6)].ival), (yyvsp[(4) - (6)].opval), (yyvsp[(5) - (6)].opval), (yyvsp[(6) - (6)].opval));
- TOKEN_GETMAD((yyvsp[(1) - (6)].i_tkval),(yyval.opval),'o');
- OP_GETMAD((yyvsp[(4) - (6)].opval),(yyval.opval),'s');
- OP_GETMAD((yyvsp[(5) - (6)].opval),(yyval.opval),'a');
+ (yyval.opval) = newANONATTRSUB((yyvsp[(2) - (5)].ival), (yyvsp[(3) - (5)].opval), (yyvsp[(4) - (5)].opval), (yyvsp[(5) - (5)].opval));
+ TOKEN_GETMAD((yyvsp[(1) - (5)].i_tkval),(yyval.opval),'o');
+ OP_GETMAD((yyvsp[(3) - (5)].opval),(yyval.opval),'s');
+ OP_GETMAD((yyvsp[(4) - (5)].opval),(yyval.opval),'a');
;}
break;
- case 142:
-#line 1017 "perly.y"
+ case 141:
+#line 1011 "perly.y"
{ (yyval.opval) = dofile((yyvsp[(2) - (2)].opval), IVAL((yyvsp[(1) - (2)].i_tkval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 143:
-#line 1021 "perly.y"
+ case 142:
+#line 1015 "perly.y"
{ (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((yyvsp[(2) - (2)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'D');
;}
break;
- case 144:
-#line 1025 "perly.y"
+ case 143:
+#line 1019 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
@@ -1154,8 +1149,8 @@ case 2:
;}
break;
- case 145:
-#line 1037 "perly.y"
+ case 144:
+#line 1031 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
@@ -1170,8 +1165,8 @@ case 2:
;}
break;
- case 146:
-#line 1050 "perly.y"
+ case 145:
+#line 1044 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
scalar(newCVREF(0,scalar((yyvsp[(2) - (4)].opval)))), Nullop)); dep();
@@ -1181,8 +1176,8 @@ case 2:
;}
break;
- case 147:
-#line 1058 "perly.y"
+ case 146:
+#line 1052 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
(yyvsp[(4) - (5)].opval),
@@ -1193,81 +1188,81 @@ case 2:
;}
break;
- case 152:
-#line 1074 "perly.y"
+ case 151:
+#line 1068 "perly.y"
{ (yyval.opval) = newCONDOP(0, (yyvsp[(1) - (5)].opval), (yyvsp[(3) - (5)].opval), (yyvsp[(5) - (5)].opval));
TOKEN_GETMAD((yyvsp[(2) - (5)].i_tkval),(yyval.opval),'?');
TOKEN_GETMAD((yyvsp[(4) - (5)].i_tkval),(yyval.opval),':');
;}
break;
- case 153:
-#line 1079 "perly.y"
+ case 152:
+#line 1073 "perly.y"
{ (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((yyvsp[(2) - (2)].opval),OP_REFGEN));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 154:
-#line 1083 "perly.y"
+ case 153:
+#line 1077 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 155:
-#line 1085 "perly.y"
+ case 154:
+#line 1079 "perly.y"
{ (yyval.opval) = localize((yyvsp[(2) - (2)].opval),IVAL((yyvsp[(1) - (2)].i_tkval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'d');
;}
break;
- case 156:
-#line 1089 "perly.y"
+ case 155:
+#line 1083 "perly.y"
{ (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(yyvsp[(2) - (3)].opval)), (yyvsp[(2) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(3) - (3)].i_tkval),(yyval.opval),')');
;}
break;
- case 157:
-#line 1094 "perly.y"
+ case 156:
+#line 1088 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(2) - (2)].i_tkval),(yyval.opval),')');
;}
break;
+ case 157:
+#line 1093 "perly.y"
+ { (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
+ break;
+
case 158:
-#line 1099 "perly.y"
+#line 1095 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 159:
-#line 1101 "perly.y"
+#line 1097 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 160:
-#line 1103 "perly.y"
+#line 1099 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
case 161:
-#line 1105 "perly.y"
- { (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
- break;
-
- case 162:
-#line 1107 "perly.y"
+#line 1101 "perly.y"
{ (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((yyvsp[(1) - (1)].opval), OP_AV2ARYLEN));;}
break;
- case 163:
-#line 1109 "perly.y"
+ case 162:
+#line 1103 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 164:
-#line 1111 "perly.y"
+ case 163:
+#line 1105 "perly.y"
{ (yyval.opval) = prepend_elem(OP_ASLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_ASLICE, 0,
@@ -1278,8 +1273,8 @@ case 2:
;}
break;
- case 165:
-#line 1120 "perly.y"
+ case 164:
+#line 1114 "perly.y"
{ (yyval.opval) = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1292,26 +1287,26 @@ case 2:
;}
break;
- case 166:
-#line 1131 "perly.y"
+ case 165:
+#line 1125 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 167:
-#line 1133 "perly.y"
+ case 166:
+#line 1127 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((yyvsp[(1) - (1)].opval))); ;}
break;
- case 168:
-#line 1135 "perly.y"
+ case 167:
+#line 1129 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[(1) - (3)].opval)));
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(3) - (3)].i_tkval),(yyval.opval),')');
;}
break;
- case 169:
-#line 1140 "perly.y"
+ case 168:
+#line 1134 "perly.y"
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, (yyvsp[(3) - (4)].opval), scalar((yyvsp[(1) - (4)].opval))));
@@ -1326,87 +1321,87 @@ case 2:
;}
break;
- case 170:
-#line 1153 "perly.y"
+ case 169:
+#line 1147 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, (yyvsp[(3) - (3)].opval), scalar((yyvsp[(2) - (3)].opval))));
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'o');
;}
break;
- case 171:
-#line 1158 "perly.y"
+ case 170:
+#line 1152 "perly.y"
{ (yyval.opval) = newOP(IVAL((yyvsp[(1) - (1)].i_tkval)), OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE;
TOKEN_GETMAD((yyvsp[(1) - (1)].i_tkval),(yyval.opval),'o');
;}
break;
- case 172:
-#line 1163 "perly.y"
+ case 171:
+#line 1157 "perly.y"
{ (yyval.opval) = newLOOPEX(IVAL((yyvsp[(1) - (2)].i_tkval)),(yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 173:
-#line 1167 "perly.y"
+ case 172:
+#line 1161 "perly.y"
{ (yyval.opval) = newUNOP(OP_NOT, 0, scalar((yyvsp[(2) - (2)].opval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 174:
-#line 1171 "perly.y"
+ case 173:
+#line 1165 "perly.y"
{ (yyval.opval) = newOP(IVAL((yyvsp[(1) - (1)].i_tkval)), 0);
TOKEN_GETMAD((yyvsp[(1) - (1)].i_tkval),(yyval.opval),'o');
;}
break;
- case 175:
-#line 1175 "perly.y"
+ case 174:
+#line 1169 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((yyvsp[(1) - (2)].i_tkval)), 0, (yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 176:
-#line 1179 "perly.y"
+ case 175:
+#line 1173 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((yyvsp[(1) - (2)].i_tkval)), 0, (yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'o');
;}
break;
- case 177:
-#line 1183 "perly.y"
+ case 176:
+#line 1177 "perly.y"
{ (yyval.opval) = newOP(OP_REQUIRE, (yyvsp[(1) - (1)].i_tkval) ? OPf_SPECIAL : 0); ;}
break;
- case 178:
-#line 1185 "perly.y"
+ case 177:
+#line 1179 "perly.y"
{ (yyval.opval) = newUNOP(OP_REQUIRE, (yyvsp[(1) - (2)].i_tkval) ? OPf_SPECIAL : 0, (yyvsp[(2) - (2)].opval)); ;}
break;
- case 179:
-#line 1187 "perly.y"
+ case 178:
+#line 1181 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((yyvsp[(1) - (1)].opval))); ;}
break;
- case 180:
-#line 1189 "perly.y"
+ case 179:
+#line 1183 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, (yyvsp[(2) - (2)].opval), scalar((yyvsp[(1) - (2)].opval)))); ;}
break;
- case 181:
-#line 1192 "perly.y"
+ case 180:
+#line 1186 "perly.y"
{ (yyval.opval) = newOP(IVAL((yyvsp[(1) - (1)].i_tkval)), 0);
TOKEN_GETMAD((yyvsp[(1) - (1)].i_tkval),(yyval.opval),'o');
;}
break;
- case 182:
-#line 1196 "perly.y"
+ case 181:
+#line 1190 "perly.y"
{ (yyval.opval) = newOP(IVAL((yyvsp[(1) - (3)].i_tkval)), 0);
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((yyvsp[(2) - (3)].i_tkval),(yyval.opval),'(');
@@ -1414,14 +1409,14 @@ case 2:
;}
break;
- case 183:
-#line 1202 "perly.y"
+ case 182:
+#line 1196 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar((yyvsp[(1) - (1)].opval))); ;}
break;
- case 184:
-#line 1205 "perly.y"
+ case 183:
+#line 1199 "perly.y"
{ (yyval.opval) = (IVAL((yyvsp[(1) - (3)].i_tkval)) == OP_NOT)
? newUNOP(IVAL((yyvsp[(1) - (3)].i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0)))
: newOP(IVAL((yyvsp[(1) - (3)].i_tkval)), OPf_SPECIAL);
@@ -1432,8 +1427,8 @@ case 2:
;}
break;
- case 185:
-#line 1214 "perly.y"
+ case 184:
+#line 1208 "perly.y"
{ (yyval.opval) = newUNOP(IVAL((yyvsp[(1) - (4)].i_tkval)), 0, (yyvsp[(3) - (4)].opval));
TOKEN_GETMAD((yyvsp[(1) - (4)].i_tkval),(yyval.opval),'o');
TOKEN_GETMAD((yyvsp[(2) - (4)].i_tkval),(yyval.opval),'(');
@@ -1441,16 +1436,16 @@ case 2:
;}
break;
- case 186:
-#line 1220 "perly.y"
+ case 185:
+#line 1214 "perly.y"
{ (yyval.opval) = pmruntime((yyvsp[(1) - (4)].opval), (yyvsp[(3) - (4)].opval), 1);
TOKEN_GETMAD((yyvsp[(2) - (4)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(4) - (4)].i_tkval),(yyval.opval),')');
;}
break;
- case 189:
-#line 1230 "perly.y"
+ case 188:
+#line 1224 "perly.y"
{ (yyval.opval) = my_attrs((yyvsp[(2) - (3)].opval),(yyvsp[(3) - (3)].opval));
DO_MAD(
token_getmad((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'d');
@@ -1460,66 +1455,66 @@ case 2:
;}
break;
- case 190:
-#line 1238 "perly.y"
+ case 189:
+#line 1232 "perly.y"
{ (yyval.opval) = localize((yyvsp[(2) - (2)].opval),IVAL((yyvsp[(1) - (2)].i_tkval)));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'d');
;}
break;
- case 191:
-#line 1245 "perly.y"
+ case 190:
+#line 1239 "perly.y"
{ (yyval.opval) = sawparens((yyvsp[(2) - (3)].opval));
TOKEN_GETMAD((yyvsp[(1) - (3)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(3) - (3)].i_tkval),(yyval.opval),')');
;}
break;
- case 192:
-#line 1250 "perly.y"
+ case 191:
+#line 1244 "perly.y"
{ (yyval.opval) = sawparens(newNULLLIST());
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'(');
TOKEN_GETMAD((yyvsp[(2) - (2)].i_tkval),(yyval.opval),')');
;}
break;
- case 193:
-#line 1255 "perly.y"
+ case 192:
+#line 1249 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 194:
-#line 1257 "perly.y"
+ case 193:
+#line 1251 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 195:
-#line 1259 "perly.y"
+ case 194:
+#line 1253 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 196:
-#line 1264 "perly.y"
+ case 195:
+#line 1258 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
- case 197:
-#line 1266 "perly.y"
+ case 196:
+#line 1260 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 198:
-#line 1270 "perly.y"
+ case 197:
+#line 1264 "perly.y"
{ (yyval.opval) = Nullop; ;}
break;
- case 199:
-#line 1272 "perly.y"
+ case 198:
+#line 1266 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
- case 200:
-#line 1274 "perly.y"
+ case 199:
+#line 1268 "perly.y"
{
#ifdef MAD
OP* op = newNULLLIST();
@@ -1532,70 +1527,70 @@ case 2:
;}
break;
- case 201:
-#line 1289 "perly.y"
+ case 200:
+#line 1283 "perly.y"
{ PL_in_my = 0; (yyval.opval) = my((yyvsp[(1) - (1)].opval)); ;}
break;
- case 202:
-#line 1293 "perly.y"
+ case 201:
+#line 1287 "perly.y"
{ (yyval.opval) = newCVREF(IVAL((yyvsp[(1) - (2)].i_tkval)),(yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'&');
;}
break;
- case 203:
-#line 1299 "perly.y"
+ case 202:
+#line 1293 "perly.y"
{ (yyval.opval) = newSVREF((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'$');
;}
break;
- case 204:
-#line 1305 "perly.y"
+ case 203:
+#line 1299 "perly.y"
{ (yyval.opval) = newAVREF((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'@');
;}
break;
- case 205:
-#line 1311 "perly.y"
+ case 204:
+#line 1305 "perly.y"
{ (yyval.opval) = newHVREF((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'%');
;}
break;
- case 206:
-#line 1317 "perly.y"
+ case 205:
+#line 1311 "perly.y"
{ (yyval.opval) = newAVREF((yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'l');
;}
break;
- case 207:
-#line 1323 "perly.y"
+ case 206:
+#line 1317 "perly.y"
{ (yyval.opval) = newGVREF(0,(yyvsp[(2) - (2)].opval));
TOKEN_GETMAD((yyvsp[(1) - (2)].i_tkval),(yyval.opval),'*');
;}
break;
- case 208:
-#line 1330 "perly.y"
+ case 207:
+#line 1324 "perly.y"
{ (yyval.opval) = scalar((yyvsp[(1) - (1)].opval)); ;}
break;
- case 209:
-#line 1332 "perly.y"
+ case 208:
+#line 1326 "perly.y"
{ (yyval.opval) = scalar((yyvsp[(1) - (1)].opval)); ;}
break;
- case 210:
-#line 1334 "perly.y"
+ case 209:
+#line 1328 "perly.y"
{ (yyval.opval) = scope((yyvsp[(1) - (1)].opval)); ;}
break;
- case 211:
-#line 1337 "perly.y"
+ case 210:
+#line 1331 "perly.y"
{ (yyval.opval) = (yyvsp[(1) - (1)].opval); ;}
break;
diff --git a/perly.c b/perly.c
index fe9acc8bcf..bc83ab48ee 100644
--- a/perly.c
+++ b/perly.c
@@ -268,6 +268,48 @@ yystpcpy (pTHX_ char *yydest, const char *yysrc)
#endif /* !YYERROR_VERBOSE */
+
+/* a snapshot of the current stack position variables for use by
+ * S_clear_yystack */
+
+typedef struct {
+ short *yyss;
+ short *yyssp;
+ YYSTYPE *yyvsp;
+ AV **yypsp;
+ int yylen;
+} yystack_positions;
+
+/* called during cleanup (via SAVEDESTRUCTOR_X) to free any items on the
+ * parse stack, thus avoiding leaks if we die */
+
+static void
+S_clear_yystack(pTHX_ const void *p)
+{
+ yystack_positions *y = (yystack_positions*) p;
+
+ if (!y->yyss)
+ return;
+ YYDPRINTF ((Perl_debug_log, "clearing the parse stack\n"));
+ y->yyvsp -= y->yylen; /* ignore the tokens that have just been reduced */
+ y->yyssp -= y->yylen;
+ y->yypsp -= y->yylen;
+ while (y->yyssp > y->yyss) {
+ if (yy_type_tab[yystos[*y->yyssp]] == toketype_opval) {
+ if (*y->yypsp != PL_comppad) {
+ PAD_RESTORE_LOCAL(*y->yypsp);
+ }
+ YYDPRINTF ((Perl_debug_log, "(freeing op)\n"));
+ op_free(y->yyvsp->opval);
+ }
+ y->yyvsp--;
+ y->yyssp--;
+ y->yypsp--;
+ }
+}
+
+
+
/*----------.
| yyparse. |
`----------*/
@@ -292,9 +334,11 @@ Perl_yyparse (pTHX)
/* Lookahead token as an internal (translated) token number. */
int yytoken = 0;
- /* two stacks and their tools:
+ /* three stacks and their tools:
yyss: related to states,
yyvs: related to semantic values,
+ yyps: current value of PL_comppad for each state
+
Refer to the stacks thru separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
@@ -307,17 +351,23 @@ Perl_yyparse (pTHX)
YYSTYPE *yyvs;
register YYSTYPE *yyvsp;
- /* for ease of re-allocation and automatic freeing, have two SVs whose
+ AV **yyps;
+ AV **yypsp;
+
+ /* for ease of re-allocation and automatic freeing, have three SVs whose
* SvPVX points to the stacks */
- SV *yyss_sv, *yyvs_sv;
+ SV *yyss_sv, *yyvs_sv, *yyps_sv;
+ SV *ss_save_sv;
+ yystack_positions *ss_save;
+
#ifdef DEBUGGING
/* maintain also a stack of token/rule names for debugging with -Dpv */
const char **yyns, **yynsp;
SV *yyns_sv;
-# define YYPOPSTACK (yyvsp--, yyssp--, yynsp--)
+# define YYPOPSTACK (yyvsp--, yyssp--, yypsp--, yynsp--)
#else
-# define YYPOPSTACK (yyvsp--, yyssp--)
+# define YYPOPSTACK (yyvsp--, yyssp--, yypsp--)
#endif
@@ -332,9 +382,6 @@ Perl_yyparse (pTHX)
rule. */
int yylen;
- /* keep track of which pad ops are currently using */
- AV* comppad = PL_comppad;
-
#ifndef PERL_IN_MADLY_C
# ifdef PERL_MAD
if (PL_madskills)
@@ -352,13 +399,25 @@ Perl_yyparse (pTHX)
yyss_sv = newSV(YYINITDEPTH * sizeof(short));
yyvs_sv = newSV(YYINITDEPTH * sizeof(YYSTYPE));
+ yyps_sv = newSV(YYINITDEPTH * sizeof(AV*));
+ ss_save_sv = newSV(sizeof(yystack_positions));
SAVEFREESV(yyss_sv);
SAVEFREESV(yyvs_sv);
+ SAVEFREESV(yyps_sv);
+ SAVEFREESV(ss_save_sv);
yyss = (short *) SvPVX(yyss_sv);
yyvs = (YYSTYPE *) SvPVX(yyvs_sv);
+ yyps = (AV **) SvPVX(yyps_sv);
+ ss_save = (yystack_positions *) SvPVX(ss_save_sv);
+
+ ss_save->yyss = NULL; /* disarm stack cleanup */
+ /* cleanup the parse stack on premature exit */
+ SAVEDESTRUCTOR_X(S_clear_yystack, (void*) ss_save);
+
/* note that elements zero of yyvs and yyns are not used */
yyssp = yyss;
yyvsp = yyvs;
+ yypsp = yyps;
#ifdef DEBUGGING
yyns_sv = newSV(YYINITDEPTH * sizeof(char *));
SAVEFREESV(yyns_sv);
@@ -401,8 +460,10 @@ Perl_yyparse (pTHX)
SvGROW(yyss_sv, yystacksize * sizeof(short));
SvGROW(yyvs_sv, yystacksize * sizeof(YYSTYPE));
+ SvGROW(yyps_sv, yystacksize * sizeof(AV*));
yyss = (short *) SvPVX(yyss_sv);
yyvs = (YYSTYPE *) SvPVX(yyvs_sv);
+ yyps = (AV **) SvPVX(yyps_sv);
#ifdef DEBUGGING
SvGROW(yyns_sv, yystacksize * sizeof(char *));
/* XXX This seems strange to cast char * to char ** */
@@ -411,11 +472,12 @@ Perl_yyparse (pTHX)
goto yyoverflowlab;
yynsp = yyns + yysize - 1;
#endif
- if (!yyss || ! yyvs)
+ if (!yyss || ! yyvs || ! yyps)
goto yyoverflowlab;
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
+ yypsp = yyps + yysize - 1;
YYDPRINTF ((Perl_debug_log, "Stack size increased to %lu\n",
@@ -493,6 +555,7 @@ Perl_yyparse (pTHX)
yychar = YYEMPTY;
*++yyvsp = yylval;
+ *++yypsp = PL_comppad;
#ifdef DEBUGGING
*++yynsp = (const char *)(yytname[yytoken]);
#endif
@@ -538,6 +601,16 @@ Perl_yyparse (pTHX)
YY_REDUCE_PRINT (yyn);
+
+ /* running external code may trigger a die (eg 'use nosuchmodule'):
+ * record the current stack state so that an unwind will
+ * free all the pesky OPs lounging around on the parse stack */
+ ss_save->yyss = yyss;
+ ss_save->yyssp = yyssp;
+ ss_save->yyvsp = yyvsp;
+ ss_save->yypsp = yypsp;
+ ss_save->yylen = yylen;
+
switch (yyn) {
@@ -570,13 +643,14 @@ Perl_yyparse (pTHX)
yyvsp -= yylen;
yyssp -= yylen;
+ yypsp -= yylen;
#ifdef DEBUGGING
yynsp -= yylen;
#endif
*++yyvsp = yyval;
- comppad = PL_comppad;
+ *++yypsp = PL_comppad;
#ifdef DEBUGGING
*++yynsp = (const char *)(yytname [yyr1[yyn]]);
@@ -602,6 +676,23 @@ Perl_yyparse (pTHX)
yyssp++;
*yyssp = yystate;
YY_STACK_PRINT (yyss, yyssp, yyvs, yyns);
+ if (yydebug && DEBUG_v_TEST)
+ {
+ /* XXX */
+ int i;
+ int start = 1;
+ int count = (int)(yyssp - yyss);
+
+ if (count > 8) {
+ start = count - 8 + 1;
+ count = 8;
+ }
+
+ PerlIO_printf(Perl_debug_log, "cppad:");
+ for (i=0; i < count; i++)
+ PerlIO_printf(Perl_debug_log, " %8p", yyps[start+i]);
+ PerlIO_printf(Perl_debug_log, "\n");
+ }
yyssp--;
#endif
@@ -674,15 +765,13 @@ Perl_yyparse (pTHX)
/* Pop the error token. */
YYPOPSTACK;
/* Pop the rest of the stack. */
- PAD_RESTORE_LOCAL(comppad);
while (yyss < yyssp) {
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp);
- if (yy_type_tab[yystos[*yyssp]] == toketype_padval) {
- comppad = yyvsp->padval;
- PAD_RESTORE_LOCAL(comppad);
- }
- else if (yy_type_tab[yystos[*yyssp]] == toketype_opval) {
+ if (yy_type_tab[yystos[*yyssp]] == toketype_opval) {
YYDPRINTF ((Perl_debug_log, "(freeing op)\n"));
+ if (*yypsp != PL_comppad) {
+ PAD_RESTORE_LOCAL(*yypsp);
+ }
op_free(yyvsp->opval);
}
YYPOPSTACK;
@@ -706,7 +795,6 @@ Perl_yyparse (pTHX)
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
- PAD_RESTORE_LOCAL(comppad);
for (;;) {
yyn = yypact[yystate];
if (yyn != YYPACT_NINF) {
@@ -723,21 +811,38 @@ Perl_yyparse (pTHX)
YYABORT;
YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp);
- if (yy_type_tab[yystos[*yyssp]] == toketype_padval) {
- comppad = yyvsp->padval;
- PAD_RESTORE_LOCAL(comppad);
- }
- else if (yy_type_tab[yystos[*yyssp]] == toketype_opval) {
+ if (yy_type_tab[yystos[*yyssp]] == toketype_opval) {
YYDPRINTF ((Perl_debug_log, "(freeing op)\n"));
+ if (*yypsp != PL_comppad) {
+ PAD_RESTORE_LOCAL(*yypsp);
+ }
op_free(yyvsp->opval);
}
yyvsp--;
+ yypsp--;
#ifdef DEBUGGING
yynsp--;
#endif
yystate = *--yyssp;
YY_STACK_PRINT (yyss, yyssp, yyvs, yyns);
+ if (yydebug && DEBUG_v_TEST)
+ {
+ /* XXX */
+ int i;
+ int start = 1;
+ int count = (int)(yyssp - yyss);
+
+ if (count > 8) {
+ start = count - 8 + 1;
+ count = 8;
+ }
+
+ PerlIO_printf(Perl_debug_log, "cppad:");
+ for (i=0; i < count; i++)
+ PerlIO_printf(Perl_debug_log, " %8p", yyps[start+i]);
+ PerlIO_printf(Perl_debug_log, "\n");
+ }
}
if (yyn == YYFINAL)
@@ -746,6 +851,7 @@ Perl_yyparse (pTHX)
YYDPRINTF ((Perl_debug_log, "Shifting error token, "));
*++yyvsp = yylval;
+ *++yypsp = PL_comppad;
#ifdef DEBUGGING
*++yynsp ="<err>";
#endif
@@ -780,6 +886,7 @@ Perl_yyparse (pTHX)
yyreturn:
+ ss_save->yyss = NULL; /* disarm parse stack cleanup */
LEAVE; /* force stack free before we return */
return yyresult;
diff --git a/perly.h b/perly.h
index a35ca82232..73dc4b842c 100644
--- a/perly.h
+++ b/perly.h
@@ -192,7 +192,6 @@ typedef union YYSTYPE
char *pval;
OP *opval;
GV *gvval;
- AV* padval;
#ifdef PERL_IN_MADLY_C
TOKEN* p_tkval;
TOKEN* i_tkval;
diff --git a/perly.tab b/perly.tab
index ac92e8c1ab..e20aef9fb9 100644
--- a/perly.tab
+++ b/perly.tab
@@ -1,15 +1,15 @@
#define YYFINAL 3
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2026
+#define YYLAST 2064
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 90
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 67
+#define YYNNTS 66
/* YYNRULES -- Number of rules. */
-#define YYNRULES 211
+#define YYNRULES 210
/* YYNRULES -- Number of states. */
-#define YYNSTATES 426
+#define YYNSTATES 420
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -67,22 +67,22 @@ static const yytype_uint16 yyprhs[] =
89, 97, 104, 107, 108, 111, 121, 131, 142, 152,
161, 174, 178, 187, 188, 189, 191, 192, 194, 196,
198, 200, 202, 203, 205, 207, 209, 211, 213, 215,
- 217, 219, 225, 227, 228, 236, 244, 245, 246, 247,
- 248, 250, 251, 253, 254, 257, 259, 262, 264, 266,
- 268, 272, 273, 282, 286, 290, 294, 296, 299, 303,
- 305, 309, 315, 322, 326, 330, 336, 339, 344, 345,
- 352, 354, 356, 362, 367, 373, 378, 384, 391, 397,
- 402, 408, 413, 417, 424, 430, 434, 438, 442, 446,
- 450, 454, 458, 462, 466, 470, 474, 478, 482, 486,
- 489, 492, 495, 498, 501, 504, 507, 510, 514, 517,
- 522, 526, 533, 536, 539, 544, 550, 555, 561, 563,
- 565, 567, 569, 575, 578, 580, 583, 587, 590, 592,
- 594, 596, 598, 600, 602, 607, 613, 615, 617, 621,
- 626, 630, 632, 635, 638, 640, 643, 646, 648, 651,
- 653, 656, 658, 662, 664, 668, 673, 678, 680, 682,
- 686, 689, 693, 696, 698, 700, 702, 703, 705, 706,
- 708, 711, 713, 716, 719, 722, 725, 728, 731, 733,
- 735, 737
+ 217, 219, 224, 226, 227, 234, 241, 242, 243, 244,
+ 246, 247, 249, 250, 253, 255, 258, 260, 262, 264,
+ 268, 269, 277, 281, 285, 289, 291, 294, 298, 300,
+ 304, 310, 317, 321, 325, 331, 334, 339, 340, 346,
+ 348, 350, 356, 361, 367, 372, 378, 385, 391, 396,
+ 402, 407, 411, 418, 424, 428, 432, 436, 440, 444,
+ 448, 452, 456, 460, 464, 468, 472, 476, 480, 483,
+ 486, 489, 492, 495, 498, 501, 504, 508, 511, 516,
+ 520, 526, 529, 532, 537, 543, 548, 554, 556, 558,
+ 560, 562, 568, 571, 573, 576, 580, 583, 585, 587,
+ 589, 591, 593, 595, 600, 606, 608, 610, 614, 619,
+ 623, 625, 628, 631, 633, 636, 639, 641, 644, 646,
+ 649, 651, 655, 657, 661, 666, 671, 673, 675, 679,
+ 682, 686, 689, 691, 693, 695, 696, 698, 699, 701,
+ 704, 706, 709, 712, 715, 718, 721, 724, 726, 728,
+ 730
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -92,103 +92,103 @@ static const yytype_int16 yyrhs[] =
-1, -1, -1, -1, 3, 97, 99, 4, -1, -1,
-1, -1, 99, 116, -1, 99, 98, 100, -1, 115,
103, -1, 106, -1, 107, -1, 115, 104, -1, 115,
- 14, -1, 115, 101, 14, -1, 1, -1, 134, -1,
- 134, 32, 134, -1, 134, 33, 134, -1, 134, 30,
- 134, -1, 134, 31, 111, -1, 134, 37, 134, -1,
+ 14, -1, 115, 101, 14, -1, 1, -1, 133, -1,
+ 133, 32, 133, -1, 133, 33, 133, -1, 133, 30,
+ 133, -1, 133, 31, 111, -1, 133, 37, 133, -1,
-1, 34, 96, -1, 35, 88, 112, 87, 96, 102,
-1, 32, 88, 93, 112, 87, 96, 102, -1, 33,
88, 93, 114, 87, 96, 102, -1, 39, 88, 93,
112, 87, 96, -1, 40, 92, -1, -1, 36, 92,
-1, 115, 30, 88, 93, 110, 87, 108, 96, 105,
-1, 115, 31, 88, 93, 111, 87, 108, 96, 105,
- -1, 115, 37, 57, 93, 149, 88, 112, 87, 96,
- 105, -1, 115, 37, 151, 88, 93, 112, 87, 96,
+ -1, 115, 37, 57, 93, 148, 88, 112, 87, 96,
+ 105, -1, 115, 37, 150, 88, 93, 112, 87, 96,
105, -1, 115, 37, 88, 93, 112, 87, 96, 105,
-1, 115, 37, 88, 93, 113, 14, 110, 14, 108,
113, 87, 96, -1, 115, 92, 105, -1, 115, 38,
88, 93, 94, 112, 87, 96, -1, -1, -1, 101,
- -1, -1, 134, -1, 134, -1, 134, -1, 109, -1,
+ -1, -1, 133, -1, 133, -1, 133, -1, 109, -1,
111, -1, -1, 24, -1, 118, -1, 121, -1, 120,
- -1, 131, -1, 132, -1, 117, -1, 89, -1, 25,
- 122, 125, 119, 92, -1, 15, -1, -1, 58, 122,
- 123, 126, 127, 128, 130, -1, 26, 122, 123, 126,
- 127, 128, 130, -1, -1, -1, -1, -1, 15, -1,
- -1, 18, -1, -1, 60, 18, -1, 60, -1, 60,
- 18, -1, 60, -1, 92, -1, 14, -1, 28, 15,
- 14, -1, -1, 29, 122, 123, 133, 15, 15, 147,
- 14, -1, 134, 64, 134, -1, 134, 63, 134, -1,
- 134, 62, 134, -1, 135, -1, 135, 66, -1, 135,
- 66, 144, -1, 144, -1, 47, 156, 135, -1, 45,
- 88, 156, 134, 87, -1, 144, 86, 138, 88, 148,
- 87, -1, 144, 86, 138, -1, 16, 156, 147, -1,
- 17, 156, 88, 148, 87, -1, 47, 147, -1, 45,
- 88, 148, 87, -1, -1, 23, 122, 124, 92, 137,
- 147, -1, 16, -1, 151, -1, 155, 3, 134, 14,
- 4, -1, 151, 5, 134, 6, -1, 144, 86, 5,
- 134, 6, -1, 139, 5, 134, 6, -1, 151, 3,
- 134, 14, 4, -1, 144, 86, 3, 134, 14, 4,
- -1, 139, 3, 134, 14, 4, -1, 144, 86, 88,
- 87, -1, 144, 86, 88, 134, 87, -1, 139, 88,
- 134, 87, -1, 139, 88, 87, -1, 88, 134, 87,
- 5, 134, 6, -1, 88, 87, 5, 134, 6, -1,
- 144, 67, 144, -1, 144, 81, 144, -1, 144, 50,
- 144, -1, 144, 51, 144, -1, 144, 75, 144, -1,
- 144, 48, 144, -1, 144, 49, 144, -1, 144, 74,
- 144, -1, 144, 73, 144, -1, 144, 42, 144, -1,
- 144, 72, 144, -1, 144, 71, 144, -1, 144, 70,
- 144, -1, 144, 76, 144, -1, 7, 144, -1, 8,
- 144, -1, 77, 144, -1, 78, 144, -1, 144, 83,
- -1, 144, 82, -1, 85, 144, -1, 84, 144, -1,
- 5, 134, 6, -1, 5, 6, -1, 54, 134, 14,
- 4, -1, 54, 14, 4, -1, 27, 122, 124, 127,
- 128, 92, -1, 53, 144, -1, 53, 92, -1, 53,
- 15, 88, 87, -1, 53, 15, 88, 134, 87, -1,
- 53, 151, 88, 87, -1, 53, 151, 88, 134, 87,
- -1, 140, -1, 141, -1, 142, -1, 143, -1, 144,
- 68, 144, 69, 144, -1, 79, 144, -1, 145, -1,
- 56, 144, -1, 88, 134, 87, -1, 88, 87, -1,
- 151, -1, 155, -1, 153, -1, 152, -1, 154, -1,
- 139, -1, 152, 5, 134, 6, -1, 152, 3, 134,
- 14, 4, -1, 18, -1, 150, -1, 150, 88, 87,
- -1, 150, 88, 134, 87, -1, 55, 15, 147, -1,
- 41, -1, 41, 144, -1, 65, 135, -1, 46, -1,
- 46, 92, -1, 46, 144, -1, 59, -1, 59, 144,
- -1, 22, -1, 22, 144, -1, 43, -1, 43, 88,
- 87, -1, 21, -1, 44, 88, 87, -1, 44, 88,
- 134, 87, -1, 19, 88, 135, 87, -1, 15, -1,
- 136, -1, 57, 146, 129, -1, 57, 146, -1, 88,
- 134, 87, -1, 88, 87, -1, 151, -1, 153, -1,
- 152, -1, -1, 135, -1, -1, 134, -1, 134, 66,
- -1, 151, -1, 13, 156, -1, 9, 156, -1, 10,
- 156, -1, 11, 156, -1, 52, 156, -1, 12, 156,
- -1, 15, -1, 151, -1, 92, -1, 20, -1
+ -1, 130, -1, 131, -1, 117, -1, 89, -1, 25,
+ 124, 119, 92, -1, 15, -1, -1, 58, 122, 125,
+ 126, 127, 129, -1, 26, 122, 125, 126, 127, 129,
+ -1, -1, -1, -1, 15, -1, -1, 18, -1, -1,
+ 60, 18, -1, 60, -1, 60, 18, -1, 60, -1,
+ 92, -1, 14, -1, 28, 15, 14, -1, -1, 29,
+ 122, 132, 15, 15, 146, 14, -1, 133, 64, 133,
+ -1, 133, 63, 133, -1, 133, 62, 133, -1, 134,
+ -1, 134, 66, -1, 134, 66, 143, -1, 143, -1,
+ 47, 155, 134, -1, 45, 88, 155, 133, 87, -1,
+ 143, 86, 137, 88, 147, 87, -1, 143, 86, 137,
+ -1, 16, 155, 146, -1, 17, 155, 88, 147, 87,
+ -1, 47, 146, -1, 45, 88, 147, 87, -1, -1,
+ 23, 123, 92, 136, 146, -1, 16, -1, 150, -1,
+ 154, 3, 133, 14, 4, -1, 150, 5, 133, 6,
+ -1, 143, 86, 5, 133, 6, -1, 138, 5, 133,
+ 6, -1, 150, 3, 133, 14, 4, -1, 143, 86,
+ 3, 133, 14, 4, -1, 138, 3, 133, 14, 4,
+ -1, 143, 86, 88, 87, -1, 143, 86, 88, 133,
+ 87, -1, 138, 88, 133, 87, -1, 138, 88, 87,
+ -1, 88, 133, 87, 5, 133, 6, -1, 88, 87,
+ 5, 133, 6, -1, 143, 67, 143, -1, 143, 81,
+ 143, -1, 143, 50, 143, -1, 143, 51, 143, -1,
+ 143, 75, 143, -1, 143, 48, 143, -1, 143, 49,
+ 143, -1, 143, 74, 143, -1, 143, 73, 143, -1,
+ 143, 42, 143, -1, 143, 72, 143, -1, 143, 71,
+ 143, -1, 143, 70, 143, -1, 143, 76, 143, -1,
+ 7, 143, -1, 8, 143, -1, 77, 143, -1, 78,
+ 143, -1, 143, 83, -1, 143, 82, -1, 85, 143,
+ -1, 84, 143, -1, 5, 133, 6, -1, 5, 6,
+ -1, 54, 133, 14, 4, -1, 54, 14, 4, -1,
+ 27, 123, 126, 127, 92, -1, 53, 143, -1, 53,
+ 92, -1, 53, 15, 88, 87, -1, 53, 15, 88,
+ 133, 87, -1, 53, 150, 88, 87, -1, 53, 150,
+ 88, 133, 87, -1, 139, -1, 140, -1, 141, -1,
+ 142, -1, 143, 68, 143, 69, 143, -1, 79, 143,
+ -1, 144, -1, 56, 143, -1, 88, 133, 87, -1,
+ 88, 87, -1, 150, -1, 154, -1, 152, -1, 151,
+ -1, 153, -1, 138, -1, 151, 5, 133, 6, -1,
+ 151, 3, 133, 14, 4, -1, 18, -1, 149, -1,
+ 149, 88, 87, -1, 149, 88, 133, 87, -1, 55,
+ 15, 146, -1, 41, -1, 41, 143, -1, 65, 134,
+ -1, 46, -1, 46, 92, -1, 46, 143, -1, 59,
+ -1, 59, 143, -1, 22, -1, 22, 143, -1, 43,
+ -1, 43, 88, 87, -1, 21, -1, 44, 88, 87,
+ -1, 44, 88, 133, 87, -1, 19, 88, 134, 87,
+ -1, 15, -1, 135, -1, 57, 145, 128, -1, 57,
+ 145, -1, 88, 133, 87, -1, 88, 87, -1, 150,
+ -1, 152, -1, 151, -1, -1, 134, -1, -1, 133,
+ -1, 133, 66, -1, 150, -1, 13, 155, -1, 9,
+ 155, -1, 10, 155, -1, 11, 155, -1, 52, 155,
+ -1, 12, 155, -1, 15, -1, 150, -1, 92, -1,
+ 20, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 133, 133, 139, 149, 153, 157, 163, 173, 177,
- 181, 182, 189, 198, 201, 202, 204, 206, 223, 242,
- 244, 246, 250, 254, 258, 262, 271, 272, 276, 287,
- 295, 306, 309, 315, 316, 323, 336, 348, 359, 369,
- 379, 415, 423, 433, 439, 440, 445, 448, 452, 457,
- 461, 465, 471, 480, 484, 486, 488, 490, 492, 497,
- 501, 507, 520, 521, 525, 537, 558, 562, 568, 573,
- 578, 588, 589, 594, 595, 599, 609, 613, 623, 624,
- 633, 646, 645, 662, 666, 670, 674, 678, 688, 696,
- 700, 705, 712, 721, 727, 733, 741, 745, 752, 751,
- 762, 763, 767, 776, 781, 789, 796, 803, 813, 822,
- 829, 838, 845, 851, 858, 868, 872, 876, 882, 886,
- 890, 894, 898, 902, 906, 918, 922, 926, 930, 940,
- 944, 951, 955, 959, 964, 969, 974, 983, 988, 993,
- 999, 1005, 1016, 1020, 1024, 1036, 1049, 1057, 1069, 1070,
- 1071, 1072, 1073, 1078, 1082, 1084, 1088, 1093, 1098, 1100,
- 1102, 1104, 1106, 1108, 1110, 1119, 1130, 1132, 1134, 1139,
- 1152, 1157, 1162, 1166, 1170, 1174, 1178, 1182, 1184, 1186,
- 1188, 1191, 1195, 1201, 1204, 1213, 1219, 1224, 1225, 1229,
- 1237, 1244, 1249, 1254, 1256, 1258, 1263, 1265, 1270, 1271,
- 1273, 1288, 1292, 1298, 1304, 1310, 1316, 1322, 1329, 1331,
- 1333, 1336
+ 0, 131, 131, 137, 147, 151, 155, 161, 171, 175,
+ 179, 180, 187, 196, 199, 200, 202, 204, 221, 240,
+ 242, 244, 248, 252, 256, 260, 269, 270, 274, 285,
+ 293, 304, 307, 313, 314, 321, 334, 346, 357, 367,
+ 377, 413, 421, 431, 437, 438, 443, 446, 450, 455,
+ 459, 463, 469, 478, 482, 484, 486, 488, 490, 495,
+ 499, 505, 518, 519, 523, 535, 556, 562, 567, 572,
+ 582, 583, 588, 589, 593, 603, 607, 617, 618, 627,
+ 640, 639, 656, 660, 664, 668, 672, 682, 690, 694,
+ 699, 706, 715, 721, 727, 735, 739, 746, 745, 756,
+ 757, 761, 770, 775, 783, 790, 797, 807, 816, 823,
+ 832, 839, 845, 852, 862, 866, 870, 876, 880, 884,
+ 888, 892, 896, 900, 912, 916, 920, 924, 934, 938,
+ 945, 949, 953, 958, 963, 968, 977, 982, 987, 993,
+ 999, 1010, 1014, 1018, 1030, 1043, 1051, 1063, 1064, 1065,
+ 1066, 1067, 1072, 1076, 1078, 1082, 1087, 1092, 1094, 1096,
+ 1098, 1100, 1102, 1104, 1113, 1124, 1126, 1128, 1133, 1146,
+ 1151, 1156, 1160, 1164, 1168, 1172, 1176, 1178, 1180, 1182,
+ 1185, 1189, 1195, 1198, 1207, 1213, 1218, 1219, 1223, 1231,
+ 1238, 1243, 1248, 1250, 1252, 1257, 1259, 1264, 1265, 1267,
+ 1282, 1286, 1292, 1298, 1304, 1310, 1316, 1323, 1325, 1327,
+ 1330
};
#endif
@@ -213,13 +213,12 @@ static const char *const yytname[] =
"mremember", "savescope", "lineseq", "line", "sideff", "else", "cond",
"case", "cont", "loop", "switch", "mintro", "nexpr", "texpr", "iexpr",
"mexpr", "mnexpr", "miexpr", "label", "decl", "peg", "format",
- "formname", "mysubrout", "subrout", "remempad", "startsub",
- "startanonsub", "startformsub", "subname", "proto", "subattrlist",
- "myattrlist", "subbody", "package", "use", "@1", "expr", "argexpr",
- "listop", "@2", "method", "subscripted", "termbinop", "termunop",
- "anonymous", "termdo", "term", "myattrterm", "myterm", "listexpr",
- "listexprcom", "my_scalar", "amper", "scalar", "ary", "hsh", "arylen",
- "star", "indirob", 0
+ "formname", "mysubrout", "subrout", "startsub", "startanonsub",
+ "startformsub", "subname", "proto", "subattrlist", "myattrlist",
+ "subbody", "package", "use", "@1", "expr", "argexpr", "listop", "@2",
+ "method", "subscripted", "termbinop", "termunop", "anonymous", "termdo",
+ "term", "myattrterm", "myterm", "listexpr", "listexprcom", "my_scalar",
+ "amper", "scalar", "ary", "hsh", "arylen", "star", "indirob", 0
};
#endif
@@ -250,21 +249,21 @@ static const yytype_uint8 yyr1[] =
106, 106, 107, 108, 109, 109, 110, 110, 111, 112,
113, 114, 115, 115, 116, 116, 116, 116, 116, 116,
117, 118, 119, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 127, 128, 128, 128, 129, 129, 130, 130,
- 131, 133, 132, 134, 134, 134, 134, 135, 135, 135,
- 136, 136, 136, 136, 136, 136, 136, 136, 137, 136,
- 138, 138, 139, 139, 139, 139, 139, 139, 139, 139,
- 139, 139, 139, 139, 139, 140, 140, 140, 140, 140,
- 140, 140, 140, 140, 140, 140, 140, 140, 140, 141,
- 141, 141, 141, 141, 141, 141, 141, 142, 142, 142,
- 142, 142, 143, 143, 143, 143, 143, 143, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
- 145, 146, 146, 146, 146, 146, 147, 147, 148, 148,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 156,
- 156, 156
+ 126, 126, 127, 127, 127, 128, 128, 129, 129, 130,
+ 132, 131, 133, 133, 133, 133, 134, 134, 134, 135,
+ 135, 135, 135, 135, 135, 135, 135, 136, 135, 137,
+ 137, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 140, 140,
+ 140, 140, 140, 140, 140, 140, 141, 141, 141, 141,
+ 141, 142, 142, 142, 142, 142, 142, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 144, 144,
+ 145, 145, 145, 145, 145, 146, 146, 147, 147, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 155, 155,
+ 155
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -276,22 +275,22 @@ static const yytype_uint8 yyr2[] =
7, 6, 2, 0, 2, 9, 9, 10, 9, 8,
12, 3, 8, 0, 0, 1, 0, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 1, 0, 7, 7, 0, 0, 0, 0,
- 1, 0, 1, 0, 2, 1, 2, 1, 1, 1,
- 3, 0, 8, 3, 3, 3, 1, 2, 3, 1,
- 3, 5, 6, 3, 3, 5, 2, 4, 0, 6,
- 1, 1, 5, 4, 5, 4, 5, 6, 5, 4,
- 5, 4, 3, 6, 5, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 3, 2, 4,
- 3, 6, 2, 2, 4, 5, 4, 5, 1, 1,
- 1, 1, 5, 2, 1, 2, 3, 2, 1, 1,
- 1, 1, 1, 1, 4, 5, 1, 1, 3, 4,
- 3, 1, 2, 2, 1, 2, 2, 1, 2, 1,
- 2, 1, 3, 1, 3, 4, 4, 1, 1, 3,
- 2, 3, 2, 1, 1, 1, 0, 1, 0, 1,
- 2, 1, 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1
+ 1, 4, 1, 0, 6, 6, 0, 0, 0, 1,
+ 0, 1, 0, 2, 1, 2, 1, 1, 1, 3,
+ 0, 7, 3, 3, 3, 1, 2, 3, 1, 3,
+ 5, 6, 3, 3, 5, 2, 4, 0, 5, 1,
+ 1, 5, 4, 5, 4, 5, 6, 5, 4, 5,
+ 4, 3, 6, 5, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
+ 2, 2, 2, 2, 2, 2, 3, 2, 4, 3,
+ 5, 2, 2, 4, 5, 4, 5, 1, 1, 1,
+ 1, 5, 2, 1, 2, 3, 2, 1, 1, 1,
+ 1, 1, 1, 4, 5, 1, 1, 3, 4, 3,
+ 1, 2, 2, 1, 2, 2, 1, 2, 1, 2,
+ 1, 3, 1, 3, 4, 4, 1, 1, 3, 2,
+ 3, 2, 1, 1, 1, 0, 1, 0, 1, 2,
+ 1, 2, 2, 2, 2, 2, 2, 1, 1, 1,
+ 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -299,453 +298,434 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 6, 0, 10, 1, 9, 66, 66, 0, 66, 66,
- 60, 52, 11, 59, 54, 56, 55, 57, 58, 69,
- 67, 0, 67, 67, 53, 12, 14, 15, 0, 63,
- 0, 80, 81, 0, 19, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 17, 187, 0, 0, 166, 0,
- 183, 179, 66, 66, 0, 0, 0, 0, 0, 0,
- 0, 0, 171, 181, 0, 0, 174, 196, 0, 0,
- 0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 13, 16, 20, 86, 188, 163,
- 148, 149, 150, 151, 89, 154, 167, 158, 161, 160,
- 162, 159, 62, 0, 70, 71, 0, 71, 10, 138,
- 0, 129, 130, 208, 211, 210, 209, 203, 204, 205,
- 207, 202, 196, 0, 0, 180, 68, 68, 4, 4,
- 4, 4, 4, 4, 0, 4, 4, 32, 172, 0,
- 0, 198, 175, 176, 208, 197, 96, 209, 0, 206,
- 187, 143, 142, 158, 0, 0, 196, 155, 0, 190,
- 193, 195, 194, 178, 173, 131, 132, 153, 136, 135,
- 157, 0, 0, 41, 18, 0, 0, 0, 0, 0,
- 0, 0, 0, 87, 0, 0, 0, 0, 0, 0,
+ 6, 0, 10, 1, 9, 68, 66, 0, 66, 66,
+ 60, 52, 11, 59, 54, 56, 55, 57, 58, 63,
+ 0, 0, 80, 0, 53, 12, 14, 15, 0, 62,
+ 0, 69, 70, 79, 0, 70, 19, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 186, 0, 0,
+ 165, 0, 182, 178, 67, 67, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 180, 0, 0, 173, 195,
+ 0, 0, 0, 0, 0, 0, 176, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 13, 16, 20, 85,
+ 187, 162, 147, 148, 149, 150, 88, 153, 166, 157,
+ 160, 159, 161, 158, 61, 71, 72, 0, 72, 10,
+ 137, 0, 128, 129, 207, 210, 209, 208, 202, 203,
+ 204, 206, 201, 195, 0, 0, 179, 0, 70, 4,
+ 4, 4, 4, 4, 4, 0, 4, 4, 32, 171,
+ 0, 0, 197, 174, 175, 207, 196, 95, 208, 0,
+ 205, 186, 142, 141, 157, 0, 0, 195, 154, 0,
+ 189, 192, 194, 193, 177, 172, 130, 131, 152, 135,
+ 134, 156, 0, 0, 41, 18, 0, 0, 0, 0,
+ 0, 0, 0, 0, 86, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 134, 133, 0, 0, 0, 0, 0, 0,
- 0, 61, 72, 73, 0, 73, 9, 137, 94, 198,
- 0, 0, 71, 46, 0, 0, 0, 0, 0, 4,
- 5, 0, 182, 184, 0, 199, 0, 0, 90, 0,
- 0, 140, 0, 170, 192, 0, 77, 189, 0, 156,
- 34, 23, 24, 48, 21, 22, 25, 85, 84, 83,
- 88, 0, 0, 112, 0, 124, 120, 121, 117, 118,
- 115, 0, 127, 126, 125, 123, 122, 119, 128, 116,
- 0, 0, 100, 0, 93, 101, 168, 0, 0, 0,
- 0, 0, 0, 75, 0, 196, 0, 3, 0, 186,
- 98, 73, 0, 47, 0, 0, 49, 51, 0, 0,
- 201, 45, 50, 0, 0, 20, 0, 0, 0, 185,
- 200, 97, 0, 144, 0, 146, 0, 139, 191, 76,
- 0, 0, 0, 105, 111, 0, 0, 0, 109, 0,
- 198, 169, 0, 103, 0, 164, 0, 74, 79, 78,
- 65, 0, 64, 95, 196, 0, 43, 43, 0, 0,
- 0, 0, 46, 0, 0, 0, 91, 145, 147, 114,
- 0, 108, 152, 0, 104, 110, 0, 106, 165, 102,
- 82, 99, 141, 0, 0, 8, 26, 26, 0, 33,
- 0, 0, 0, 31, 113, 107, 92, 33, 33, 10,
- 0, 0, 29, 30, 0, 39, 43, 33, 42, 35,
- 36, 9, 27, 0, 33, 0, 38, 7, 0, 37,
- 0, 0, 0, 26, 40, 28
+ 0, 0, 0, 133, 132, 0, 0, 0, 0, 0,
+ 0, 0, 74, 0, 195, 0, 9, 136, 93, 197,
+ 0, 97, 72, 46, 0, 0, 0, 0, 0, 4,
+ 5, 0, 181, 183, 0, 198, 0, 0, 89, 0,
+ 0, 139, 0, 169, 191, 0, 76, 188, 0, 155,
+ 34, 23, 24, 48, 21, 22, 25, 84, 83, 82,
+ 87, 0, 0, 111, 0, 123, 119, 120, 116, 117,
+ 114, 0, 126, 125, 124, 122, 121, 118, 127, 115,
+ 0, 0, 99, 0, 92, 100, 167, 0, 0, 0,
+ 0, 0, 0, 73, 78, 77, 65, 0, 64, 3,
+ 0, 185, 195, 0, 0, 47, 0, 0, 49, 51,
+ 0, 0, 200, 45, 50, 0, 0, 20, 0, 0,
+ 0, 184, 199, 96, 0, 143, 0, 145, 0, 138,
+ 190, 75, 0, 0, 0, 104, 110, 0, 0, 0,
+ 108, 0, 197, 168, 0, 102, 0, 163, 0, 81,
+ 94, 98, 140, 43, 43, 0, 0, 0, 0, 46,
+ 0, 0, 0, 90, 144, 146, 113, 0, 107, 151,
+ 0, 103, 109, 0, 105, 164, 101, 0, 0, 8,
+ 26, 26, 0, 33, 0, 0, 0, 31, 112, 106,
+ 91, 33, 33, 10, 0, 0, 29, 30, 0, 39,
+ 43, 33, 42, 35, 36, 9, 27, 0, 33, 0,
+ 38, 7, 0, 37, 0, 0, 0, 26, 40, 28
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 115, 108, 317, 2, 386, 399, 11, 4,
- 25, 311, 402, 84, 85, 173, 26, 27, 383, 312,
- 302, 252, 305, 314, 308, 28, 12, 13, 14, 103,
- 15, 16, 19, 30, 221, 29, 105, 213, 294, 247,
- 350, 17, 18, 106, 306, 87, 88, 354, 284, 89,
- 90, 91, 92, 93, 94, 95, 159, 146, 236, 309,
- 96, 97, 98, 99, 100, 101, 117
+ -1, 1, 116, 109, 319, 2, 380, 393, 11, 4,
+ 25, 313, 396, 86, 87, 174, 26, 27, 377, 314,
+ 304, 252, 307, 316, 310, 28, 12, 13, 14, 30,
+ 15, 16, 20, 127, 19, 32, 106, 213, 247, 296,
+ 17, 18, 34, 308, 89, 90, 302, 284, 91, 92,
+ 93, 94, 95, 96, 97, 160, 147, 236, 311, 98,
+ 99, 100, 101, 102, 103, 118
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -379
+#define YYPACT_NINF -370
static const yytype_int16 yypact[] =
{
- -379, 26, -379, -379, 39, -379, -379, 51, -379, -379,
- -379, 23, -379, -379, -379, -379, -379, -379, -379, -379,
- -379, 56, -379, -379, -379, -379, -379, -379, 314, 73,
- 90, -379, -379, 90, -379, -379, 876, 1712, 1712, 120,
- 120, 120, 120, 120, -379, -379, 120, 120, -379, 13,
- -379, 1712, -379, -379, 22, 27, 48, 49, 12, 58,
- 95, 106, 1712, 104, 105, 115, 648, 564, 120, 732,
- 958, 112, 1712, 45, 1712, 1712, 1712, 1712, 1712, 1712,
- 1712, 1040, 163, 209, -379, -379, 956, 158, -379, 19,
- -379, -379, -379, -379, 1856, -379, 159, 10, 68, -379,
- -379, 253, -379, 106, -379, 250, 256, 250, -379, -379,
- -2, 205, 205, -379, -379, -379, -379, -379, -379, -379,
- -379, -379, 1712, 186, 1712, 427, -379, -379, -379, -379,
- -379, -379, -379, -379, 187, -379, -379, -379, 1856, 189,
- 1124, 564, -379, 427, 1772, 158, -379, 793, 1712, -379,
- 190, -379, 427, 38, 297, 21, 1712, 427, 1208, 230,
- -379, -379, -379, 427, 158, 205, 205, 205, 86, 86,
- 300, 221, 106, -379, -379, 1712, 1712, 1712, 1712, 1712,
- 1712, 1712, 1712, 1712, 1712, 1712, 1292, 1712, 1712, 1712,
- 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
- 1712, 1712, -379, -379, 11, 1376, 1712, 1712, 1712, 1712,
- 1712, -379, -379, 242, 291, 242, 113, -379, -379, 1712,
- -59, 106, 250, 1712, 1712, 1712, 1712, 298, 396, -379,
- -379, 1712, -379, -379, 358, 144, 222, 1712, 158, 1460,
- 1544, -379, 312, -379, -379, 367, 321, -379, 1712, 313,
- -379, 111, -379, 111, 111, 111, 111, 276, 276, -379,
- 1856, 151, 32, -379, 464, 1940, 861, 719, 302, 680,
- 1856, 1814, 466, 466, 551, 634, 764, 384, 205, 205,
- 1712, 1712, -379, 1628, 254, -379, -379, 526, 202, 81,
- 232, 126, 235, 325, 20, 1712, 20, -379, 233, -379,
- -379, 242, 275, 111, 285, 288, 111, -379, 289, 292,
- -379, -379, -379, 295, 349, 395, 1712, 1712, 299, -379,
- -379, -379, 610, -379, 624, -379, 659, -379, -379, -379,
- 164, 1712, 385, -379, -379, 1712, 286, 195, -379, 765,
- 1712, -379, 386, -379, 390, -379, 391, -379, -379, -379,
- -379, 382, -379, -379, 1712, 106, -379, -379, 397, 397,
- 1712, 397, 1712, 329, 337, 397, -379, -379, -379, -379,
- 199, -379, 1898, 429, -379, -379, 351, -379, -379, -379,
- -379, -379, -379, 397, 397, -379, -16, -16, 357, 163,
- 422, 397, 397, -379, -379, -379, -379, 163, 163, -379,
- 397, 359, -379, -379, 397, -379, -379, 163, -379, -379,
- -379, 193, -379, 1712, 163, 478, -379, -379, 369, -379,
- 375, 397, 397, -16, -379, -379
+ -370, 30, -370, -370, 21, -370, -370, 36, -370, -370,
+ -370, 42, -370, -370, -370, -370, -370, -370, -370, 59,
+ 75, 22, -370, 75, -370, -370, -370, -370, 352, -370,
+ 86, -370, 80, -370, 96, 80, -370, -370, 914, 1750,
+ 1750, 336, 336, 336, 336, 336, -370, -370, 336, 336,
+ -370, 28, -370, 1750, -370, -370, 40, 55, 78, 89,
+ 47, 98, 102, 86, 1750, 106, 109, 111, 686, 602,
+ 336, 770, 996, 103, 1750, 76, 1750, 1750, 1750, 1750,
+ 1750, 1750, 1750, 1078, 129, 128, -370, -370, 139, 126,
+ -370, 4, -370, -370, -370, -370, 1894, -370, 117, 54,
+ 79, -370, -370, 203, -370, -370, 147, 199, 147, -370,
+ -370, 77, -48, -48, -370, -370, -370, -370, -370, -370,
+ -370, -370, -370, 1750, 127, 1750, 337, 86, 80, -370,
+ -370, -370, -370, -370, -370, 131, -370, -370, -370, 1894,
+ 160, 1162, 602, -370, 337, 1810, 126, -370, 831, 1750,
+ -370, 157, -370, 337, 12, 246, 240, 1750, 337, 1246,
+ 191, -370, -370, -370, 337, 126, -48, -48, -48, 20,
+ 20, 251, 211, 86, -370, -370, 1750, 1750, 1750, 1750,
+ 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1330, 1750, 1750,
+ 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750,
+ 1750, 1750, 1750, -370, -370, 158, 1414, 1750, 1750, 1750,
+ 1750, 1750, 250, 15, 1750, 15, 35, -370, -370, 1750,
+ -46, -370, 147, 1750, 1750, 1750, 1750, 258, 434, -370,
+ -370, 1750, -370, -370, 271, 249, 185, 1750, 126, 1498,
+ 1582, -370, 272, -370, -370, 338, 263, -370, 1750, 284,
+ -370, 74, -370, 74, 74, 74, 74, 232, 232, -370,
+ 1894, 244, 82, -370, 420, 1978, 802, 671, 718, 464,
+ 1894, 1852, 422, 422, 503, 588, 757, 382, -48, -48,
+ 1750, 1750, -370, 1666, 230, -370, -370, 564, 266, 154,
+ 274, 198, 280, -370, -370, -370, -370, 306, -370, -370,
+ 238, -370, 1750, 86, 245, 74, 253, 254, 74, -370,
+ 259, 239, -370, -370, -370, 265, 340, 260, 1750, 1750,
+ 285, -370, -370, -370, 578, -370, 613, -370, 648, -370,
+ -370, -370, 202, 1750, 372, -370, -370, 1750, 286, 207,
+ -370, 661, 1750, -370, 373, -370, 376, -370, 390, -370,
+ -370, -370, -370, -370, -370, 383, 383, 1750, 383, 1750,
+ 316, 323, 383, -370, -370, -370, -370, 220, -370, 1936,
+ 410, -370, -370, 328, -370, -370, -370, 383, 383, -370,
+ -12, -12, 329, 129, 407, 383, 383, -370, -370, -370,
+ -370, 129, 129, -370, 383, 334, -370, -370, 383, -370,
+ -370, 129, -370, -370, -370, 104, -370, 1750, 129, 516,
+ -370, -370, 339, -370, 341, 383, 383, -12, -370, -370
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -379, -379, -17, 31, -379, -379, -111, -379, -379, -107,
- -379, 418, -378, -379, -379, -33, -379, -379, -317, -379,
- 101, -40, -226, 53, -379, -379, -379, -379, -379, -379,
- -379, -379, 261, 28, 342, -379, 431, -97, -209, -379,
- 175, -379, -379, -379, -28, -50, -379, -379, -379, -379,
- -379, -379, -379, -379, 42, -379, -379, -110, -216, -379,
- -379, -10, 399, 403, -379, -379, 35
+ -370, -370, -26, -61, -370, -370, -99, -370, -370, -108,
+ -370, 396, -369, -370, -370, -82, -370, -370, -338, -370,
+ 68, -51, -223, 25, -370, -370, -370, -370, -370, -370,
+ -370, -370, 69, 399, -370, 415, -21, -95, -370, 247,
+ -370, -370, -370, -28, -58, -370, -370, -370, -370, -370,
+ -370, -370, -370, 41, -370, -370, -117, -216, -370, -370,
+ -17, 384, 385, -370, -370, 179
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -188
+#define YYTABLE_NINF -187
static const yytype_int16 yytable[] =
{
- 86, 216, 313, 298, 217, 318, 296, 183, 110, 403,
- 215, 82, 218, 206, 280, 207, 281, 145, 400, 401,
- 39, 39, 184, 35, 185, 164, 3, 282, 299, 116,
- 116, 116, 116, 116, 348, 242, 116, 116, 333, -2,
- 384, 206, 155, 207, 137, 425, 243, 24, 134, 142,
- 32, 33, 151, 171, 39, 40, 41, 147, 116, 153,
- 180, 181, 182, 160, 5, 6, 21, 7, 8, 132,
- 31, 208, 145, 209, 220, 118, 119, 120, 121, 111,
- 112, 122, 123, 180, 181, 182, 211, 343, 102, 415,
- 363, 364, 355, 125, 180, 181, 182, 9, 238, 283,
- 133, 124, 148, 149, 138, 104, 145, 186, 143, 35,
- 128, 152, 234, 235, 157, 129, 163, 297, 165, 166,
- 167, 168, 169, 35, 376, 301, 240, 156, 10, 39,
- 245, 147, 345, 158, 388, 113, 130, 131, 5, 6,
- 114, 7, 8, 180, 181, 182, 135, 251, 253, 254,
- 255, 256, 257, 258, 259, 250, 261, 262, 264, 223,
- 224, 225, 226, 227, 228, 332, 230, 231, -188, -188,
- 369, 9, 204, 180, 181, 182, 237, 287, 288, 289,
- 290, 291, 292, 136, 304, 351, 307, 418, 180, 181,
- 182, 235, 139, 140, 285, 303, 253, 417, 253, 172,
- 315, 374, 10, 141, 300, 394, 180, 181, 182, 322,
- 320, 324, 326, 180, 181, 182, 342, 310, 5, 6,
- 330, 7, 8, 174, 183, 260, 180, 181, 182, 265,
+ 88, 216, 84, 300, 104, 315, 218, 185, 320, 186,
+ 111, 146, 397, 215, 108, 207, 378, 208, 37, 165,
+ 184, -2, 394, 395, 117, 117, 117, 117, 117, 294,
+ 3, 117, 117, 202, 203, 204, 33, 138, 205, 299,
+ 243, 301, 143, 135, 156, 152, 5, 6, 419, 7,
+ 8, 21, 148, 117, 154, 172, 41, 207, 161, 208,
+ 5, 6, 409, 7, 8, 146, 24, 220, 223, 224,
+ 225, 226, 227, 228, 29, 230, 231, 22, 23, 9,
+ 112, 113, 209, 217, 210, 41, 42, 43, 335, 37,
+ 31, 238, 187, 9, 126, 360, 361, 297, 105, 146,
+ 240, 221, -187, -187, 133, 139, 205, 222, 411, 144,
+ 10, 107, 153, 234, 235, 158, 125, 164, 157, 166,
+ 167, 168, 169, 170, 10, 148, 373, 303, 129, 5,
+ 6, 245, 7, 8, 382, 134, 181, 182, 183, 181,
+ 182, 183, 175, 130, 181, 182, 183, 250, 251, 253,
+ 254, 255, 256, 257, 258, 259, 146, 261, 262, 264,
+ 345, 280, 9, 281, 159, 173, 131, 41, 318, 176,
+ 177, 178, 179, 306, 282, 309, 180, 132, 287, 288,
+ 289, 290, 291, 292, 412, 351, 136, 295, 285, 295,
+ 137, 235, 184, 10, 140, 305, 253, 141, 253, 142,
+ 317, 181, 182, 183, 347, 206, 211, 212, 366, 324,
+ 312, 326, 328, 371, 214, 219, 181, 182, 183, 229,
+ 332, 119, 120, 121, 122, 260, 388, 123, 124, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 381, 145, 344, 205, 387, 346,
- 389, 9, 336, 337, 393, 339, 210, 180, 181, 182,
- 316, 180, 181, 182, 180, 181, 182, 20, 212, 22,
- 23, 214, 397, 398, 219, 229, 232, 349, 239, 349,
- 407, 408, 10, 180, 181, 182, 201, 202, 203, 412,
- 246, 204, 411, 414, 180, 181, 182, 180, 181, 182,
- 373, 241, 293, 370, 145, 248, 295, 39, 249, 321,
- 423, 424, 235, 126, 127, 34, 327, 35, 331, 36,
- 353, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 303, 50, 51, 52, 382, 329,
- 182, 53, 340, 347, 54, 55, 56, 57, 180, 181,
- 182, 58, 59, 60, 61, 62, 405, 63, 64, 65,
- 66, 67, 356, 362, 409, 410, 68, 69, 70, 71,
- 72, 73, 357, 74, 416, 358, 359, 372, 200, 75,
- 360, 419, 361, 201, 202, 203, 365, 86, 204, 371,
- 377, 76, 77, 78, 378, 379, 380, 34, 79, 80,
- 385, 36, 81, 37, 38, 39, 40, 41, 42, 43,
- -44, 45, 46, 47, 48, 49, 391, 50, 51, 52,
- 180, 181, 182, 53, 392, 175, 176, 177, 178, 180,
- 181, 182, 179, 395, 190, 191, 406, 62, 396, 63,
- 64, 65, 66, 67, 404, 319, 83, 413, 68, 69,
- 70, 71, 72, 73, 328, 74, 421, 180, 181, 182,
- 200, 75, 422, 390, 107, 201, 202, 203, 420, 222,
- 204, 352, 161, 76, 77, 78, 162, 190, 191, 34,
- 79, 80, -49, 36, 81, 37, 38, 39, 40, 41,
- 42, 43, 0, 45, 46, 47, 48, 49, 0, 50,
- 51, 52, 199, 200, 0, 53, 0, 0, 201, 202,
- 203, 0, 0, 204, 188, 189, 190, 191, 0, 62,
- 0, 63, 64, 65, 66, 67, 180, 181, 182, 0,
- 68, 69, 70, 71, 72, 73, 0, 74, 196, 197,
- 198, 199, 200, 75, 0, 0, 0, 201, 202, 203,
- 0, 334, 204, 0, 0, 76, 77, 78, 0, 0,
- 0, 0, 79, 80, 0, -44, 81, 35, 0, 36,
- 0, 37, 38, 39, 40, 41, 42, 43, 0, 144,
- 46, 47, 48, 49, 114, 50, 51, 52, 180, 181,
- 182, 53, 0, 0, 0, 0, 0, 0, 0, 188,
- 189, 190, 191, 0, 0, 62, 0, 63, 64, 65,
- 66, 67, 0, 341, 0, 0, 68, 69, 70, 71,
- 72, 73, 0, 74, 197, 198, 199, 200, 0, 75,
- 0, 0, 201, 202, 203, 0, 0, 204, 0, 0,
- 0, 76, 77, 78, 0, 0, 0, 0, 79, 80,
- 0, 35, 81, 36, 0, 37, 38, 39, 40, 41,
- 42, 43, 0, 45, 46, 47, 48, 49, 0, 50,
- 51, 52, 180, 181, 182, 53, 0, 0, 0, 0,
- 0, 0, 188, 189, 190, 191, 180, 181, 182, 62,
- 0, 63, 64, 65, 66, 67, 0, 366, 0, 0,
- 68, 69, 70, 71, 72, 73, 0, 74, 198, 199,
- 200, 367, 0, 75, 0, 201, 202, 203, 0, 0,
- 204, 180, 181, 182, 0, 76, 77, 78, 0, 0,
- 190, 0, 79, 80, 0, 35, 81, 36, 0, 37,
- 38, 39, 40, 41, 42, 43, 368, 150, 46, 47,
- 48, 49, 0, 50, 51, 52, 200, 0, 0, 53,
- 0, 201, 202, 203, 0, 0, 204, 188, -188, 190,
- 191, 0, 0, 62, 0, 63, 64, 65, 66, 67,
- 0, 0, 0, 0, 68, 69, 70, 71, 72, 73,
- 0, 74, 0, 0, 199, 200, 206, 75, 207, -158,
- 201, 202, 203, 0, 0, 204, 0, -158, 0, 76,
- 77, 78, 188, 189, 190, 191, 79, 80, 0, 0,
- 81, 0, 0, -158, -158, -158, -158, 180, 181, 182,
- -158, 0, 0, 0, 0, -158, 0, 0, 0, 199,
- 200, -158, -158, -158, -158, 201, 202, 203, 0, 0,
- 204, 0, 375, 0, 0, -158, -158, -158, 0, -158,
- -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
- 0, 0, 0, 0, -158, -158, -158, 0, 0, -158,
- -158, 36, 109, 37, 38, 39, 40, 41, 42, 43,
- 0, 45, 46, 47, 48, 49, 0, 50, 51, 52,
- 0, 0, 0, 53, 0, 0, 0, 0, 0, -188,
- 0, 190, 191, 0, 0, 0, 0, 62, 0, 63,
- 64, 65, 66, 67, 0, 0, 0, 0, 68, 69,
- 70, 71, 72, 73, 0, 74, 199, 200, 0, 0,
- 0, 75, 201, 202, 203, 0, 0, 204, 0, 0,
- 0, 0, 0, 76, 77, 78, 0, 0, 0, 0,
- 79, 80, 0, 36, 81, 37, 38, 39, 40, 41,
- 42, 43, 154, 45, 46, 47, 48, 49, 0, 50,
- 51, 52, 0, 0, 0, 53, 175, 176, 177, 178,
- 0, 0, 0, 179, 0, 0, 0, 0, 0, 62,
- 0, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 0, 74, 180, 181,
- 182, 0, 0, 75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 76, 77, 78, 0, 0,
- 0, 0, 79, 80, 0, 36, 81, 37, 38, 39,
- 40, 41, 42, 43, 0, 45, 46, 47, 48, 49,
- 0, 50, 51, 52, 0, 0, 0, 53, 0, 0,
+ 276, 277, 278, 279, 146, 239, 283, 232, 149, 150,
+ 241, 246, 338, 339, 242, 341, 248, 381, 334, 383,
+ 181, 182, 183, 387, 181, 182, 183, 41, 293, 181,
+ 182, 183, 323, 181, 182, 183, 329, 352, 391, 392,
+ 344, 331, 181, 182, 183, 405, 401, 402, 346, 333,
+ 176, 177, 178, 179, 348, 406, 183, 180, 249, 408,
+ 370, 399, 181, 182, 183, 367, 181, 182, 183, 403,
+ 404, 181, 182, 183, 235, 322, 417, 418, 342, 410,
+ 349, 237, 181, 182, 183, 350, 413, 357, 181, 182,
+ 183, 305, 353, 181, 182, 183, 181, 182, 183, 37,
+ 354, 355, 181, 182, 183, 41, 356, -49, 181, 182,
+ 183, 114, 358, 36, 359, 37, 115, 38, 321, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 362, 52, 53, 54, 368, 374, 369, 55,
+ 375, 88, 56, 57, 58, 59, 379, 191, 192, 60,
+ 61, 62, 63, 64, 376, 65, 66, 67, 68, 69,
+ 181, 182, 183, 385, 70, 71, 72, 73, 74, 75,
+ 386, 76, 200, 201, 389, 390, 398, 77, 202, 203,
+ 204, 400, 407, 205, 85, 330, 415, 384, 416, 78,
+ 79, 80, 191, 192, 414, 36, 81, 82, 35, 38,
+ 83, 39, 40, 41, 42, 43, 44, 45, -44, 47,
+ 48, 49, 50, 51, 128, 52, 53, 54, 201, 162,
+ 163, 55, 298, 202, 203, 204, 0, 0, 205, 0,
+ 189, 190, 191, 192, 0, 64, 0, 65, 66, 67,
+ 68, 69, 181, 182, 183, 0, 70, 71, 72, 73,
+ 74, 75, 0, 76, 197, 198, 199, 200, 201, 77,
+ 0, 0, 0, 202, 203, 204, 0, 336, 205, 0,
+ 0, 78, 79, 80, 191, 0, 0, 36, 81, 82,
+ 0, 38, 83, 39, 40, 41, 42, 43, 44, 45,
+ 0, 47, 48, 49, 50, 51, 0, 52, 53, 54,
+ 201, 0, 0, 55, 0, 202, 203, 204, 0, 0,
+ 205, 189, 190, 191, 192, 0, 0, 64, 0, 65,
+ 66, 67, 68, 69, 0, 0, 0, 0, 70, 71,
+ 72, 73, 74, 75, 0, 76, 198, 199, 200, 201,
+ 0, 77, 0, 0, 202, 203, 204, 0, 0, 205,
+ 0, 0, 0, 78, 79, 80, 0, 0, 0, 0,
+ 81, 82, 0, -44, 83, 37, 0, 38, 0, 39,
+ 40, 41, 42, 43, 44, 45, 0, 145, 48, 49,
+ 50, 51, 115, 52, 53, 54, 181, 182, 183, 55,
+ 0, 0, 0, 0, 0, 0, 189, 190, 191, 192,
+ 181, 182, 183, 64, 0, 65, 66, 67, 68, 69,
+ 0, 343, 0, 0, 70, 71, 72, 73, 74, 75,
+ 0, 76, 199, 200, 201, 363, 0, 77, 0, 202,
+ 203, 204, 0, 0, 205, 181, 182, 183, 0, 78,
+ 79, 80, 0, 0, 0, 0, 81, 82, 0, 37,
+ 83, 38, 0, 39, 40, 41, 42, 43, 44, 45,
+ 364, 47, 48, 49, 50, 51, 0, 52, 53, 54,
+ 181, 182, 183, 55, 0, 0, 0, 0, 0, 189,
+ -187, 191, 192, 181, 182, 183, 0, 64, 0, 65,
+ 66, 67, 68, 69, 0, 365, 0, 0, 70, 71,
+ 72, 73, 74, 75, 0, 76, 200, 201, 372, 0,
+ 0, 77, 202, 203, 204, 0, 0, 205, 0, 0,
+ 0, 0, 0, 78, 79, 80, 0, 0, 0, 0,
+ 81, 82, 0, 37, 83, 38, 0, 39, 40, 41,
+ 42, 43, 44, 45, 0, 151, 48, 49, 50, 51,
+ 0, 52, 53, 54, 201, 0, 0, 55, 0, 202,
+ 203, 204, 0, 0, 205, 189, 190, 191, 192, 0,
+ 0, 64, 0, 65, 66, 67, 68, 69, 0, 0,
+ 0, 0, 70, 71, 72, 73, 74, 75, 0, 76,
+ 0, 0, 200, 201, 207, 77, 208, -157, 202, 203,
+ 204, 0, 0, 205, 0, -157, 0, 78, 79, 80,
+ -187, 0, 191, 192, 81, 82, 0, 0, 83, 0,
+ 0, -157, -157, -157, -157, 0, 0, 0, -157, 0,
+ 0, 0, 0, -157, 0, 0, 0, 200, 201, -157,
+ -157, -157, -157, 202, 203, 204, 0, 0, 205, 0,
+ 0, 0, 0, -157, -157, -157, 0, -157, -157, -157,
+ -157, -157, -157, -157, -157, -157, -157, -157, 0, 0,
+ 0, 0, -157, -157, -157, 0, 0, -157, -157, 38,
+ 110, 39, 40, 41, 42, 43, 44, 45, 0, 47,
+ 48, 49, 50, 51, 0, 52, 53, 54, 0, 0,
+ 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 64, 0, 65, 66, 67,
+ 68, 69, 0, 0, 0, 0, 70, 71, 72, 73,
+ 74, 75, 0, 76, 0, 0, 0, 0, 0, 77,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 68, 69, 70, 71, 72, 73, 0, 74,
- 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 76, 77, 78,
- 0, 0, 0, 0, 79, 80, 0, 170, 81, 36,
- 0, 37, 38, 39, 40, 41, 42, 43, 0, 45,
- 46, 47, 48, 49, 0, 50, 51, 52, 0, 0,
- 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 62, 0, 63, 64, 65,
- 66, 67, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 0, 74, 0, 0, 0, 0, 0, 75,
+ 0, 78, 79, 80, 0, 0, 0, 0, 81, 82,
+ 0, 38, 83, 39, 40, 41, 42, 43, 44, 45,
+ 155, 47, 48, 49, 50, 51, 0, 52, 53, 54,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 64, 0, 65,
+ 66, 67, 68, 69, 0, 0, 0, 0, 70, 71,
+ 72, 73, 74, 75, 0, 76, 0, 0, 0, 0,
+ 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 80, 0, 0, 0, 0,
+ 81, 82, 0, 38, 83, 39, 40, 41, 42, 43,
+ 44, 45, 0, 47, 48, 49, 50, 51, 0, 52,
+ 53, 54, 0, 0, 0, 55, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
+ 0, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+ 70, 71, 72, 73, 74, 75, 0, 76, 0, 0,
+ 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 78, 79, 80, 0, 0,
+ 0, 0, 81, 82, 0, 171, 83, 38, 0, 39,
+ 40, 41, 42, 43, 44, 45, 0, 47, 48, 49,
+ 50, 51, 0, 52, 53, 54, 0, 0, 0, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 76, 77, 78, 0, 0, 0, 0, 79, 80,
- 0, 233, 81, 36, 0, 37, 38, 39, 40, 41,
- 42, 43, 0, 45, 46, 47, 48, 49, 0, 50,
- 51, 52, 0, 0, 0, 53, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 0, 74, 0, 0,
- 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 76, 77, 78, 0, 0,
- 0, 0, 79, 80, 0, 244, 81, 36, 0, 37,
- 38, 39, 40, 41, 42, 43, 0, 45, 46, 47,
- 48, 49, 0, 50, 51, 52, 0, 0, 0, 53,
+ 0, 0, 0, 64, 0, 65, 66, 67, 68, 69,
+ 0, 0, 0, 0, 70, 71, 72, 73, 74, 75,
+ 0, 76, 0, 0, 0, 0, 0, 77, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
+ 79, 80, 0, 0, 0, 0, 81, 82, 0, 233,
+ 83, 38, 0, 39, 40, 41, 42, 43, 44, 45,
+ 0, 47, 48, 49, 50, 51, 0, 52, 53, 54,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 64, 0, 65,
+ 66, 67, 68, 69, 0, 0, 0, 0, 70, 71,
+ 72, 73, 74, 75, 0, 76, 0, 0, 0, 0,
+ 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 80, 0, 0, 0, 0,
+ 81, 82, 0, 244, 83, 38, 0, 39, 40, 41,
+ 42, 43, 44, 45, 0, 47, 48, 49, 50, 51,
+ 0, 52, 53, 54, 0, 0, 0, 55, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 62, 0, 63, 64, 65, 66, 67,
- 0, 0, 0, 0, 68, 69, 70, 71, 72, 73,
- 0, 74, 0, 0, 0, 0, 0, 75, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
- 77, 78, 0, 0, 0, 0, 79, 80, 0, 263,
- 81, 36, 0, 37, 38, 39, 40, 41, 42, 43,
- 0, 45, 46, 47, 48, 49, 0, 50, 51, 52,
- 0, 0, 0, 53, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 62, 0, 63,
- 64, 65, 66, 67, 0, 0, 0, 0, 68, 69,
- 70, 71, 72, 73, 0, 74, 0, 0, 0, 0,
- 0, 75, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 76, 77, 78, 0, 0, 0, 0,
- 79, 80, 0, 286, 81, 36, 0, 37, 38, 39,
- 40, 41, 42, 43, 0, 45, 46, 47, 48, 49,
- 0, 50, 51, 52, 0, 0, 0, 53, 0, 0,
+ 0, 64, 0, 65, 66, 67, 68, 69, 0, 0,
+ 0, 0, 70, 71, 72, 73, 74, 75, 0, 76,
+ 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 78, 79, 80,
+ 0, 0, 0, 0, 81, 82, 0, 263, 83, 38,
+ 0, 39, 40, 41, 42, 43, 44, 45, 0, 47,
+ 48, 49, 50, 51, 0, 52, 53, 54, 0, 0,
+ 0, 55, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 64, 0, 65, 66, 67,
+ 68, 69, 0, 0, 0, 0, 70, 71, 72, 73,
+ 74, 75, 0, 76, 0, 0, 0, 0, 0, 77,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 63, 64, 65, 66, 67, 0, 0,
- 0, 0, 68, 69, 70, 71, 72, 73, 0, 74,
- 0, 0, 0, 0, 0, 75, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 76, 77, 78,
- 0, 0, 0, 0, 79, 80, 0, 323, 81, 36,
- 0, 37, 38, 39, 40, 41, 42, 43, 0, 45,
- 46, 47, 48, 49, 0, 50, 51, 52, 0, 0,
- 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 62, 0, 63, 64, 65,
- 66, 67, 0, 0, 0, 0, 68, 69, 70, 71,
- 72, 73, 0, 74, 0, 0, 0, 0, 0, 75,
+ 0, 78, 79, 80, 0, 0, 0, 0, 81, 82,
+ 0, 286, 83, 38, 0, 39, 40, 41, 42, 43,
+ 44, 45, 0, 47, 48, 49, 50, 51, 0, 52,
+ 53, 54, 0, 0, 0, 55, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
+ 0, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+ 70, 71, 72, 73, 74, 75, 0, 76, 0, 0,
+ 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 78, 79, 80, 0, 0,
+ 0, 0, 81, 82, 0, 325, 83, 38, 0, 39,
+ 40, 41, 42, 43, 44, 45, 0, 47, 48, 49,
+ 50, 51, 0, 52, 53, 54, 0, 0, 0, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 76, 77, 78, 0, 0, 0, 0, 79, 80,
- 0, 325, 81, 36, 0, 37, 38, 39, 40, 41,
- 42, 43, 0, 45, 46, 47, 48, 49, 0, 50,
- 51, 52, 0, 0, 0, 53, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
- 0, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 68, 69, 70, 71, 72, 73, 0, 74, 0, 0,
- 0, 0, 0, 75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 76, 77, 78, 0, 0,
- 0, 0, 79, 80, 0, 338, 81, 36, 0, 37,
- 38, 39, 40, 41, 42, 43, 0, 45, 46, 47,
- 48, 49, 0, 50, 51, 52, 0, 0, 0, 53,
+ 0, 0, 0, 64, 0, 65, 66, 67, 68, 69,
+ 0, 0, 0, 0, 70, 71, 72, 73, 74, 75,
+ 0, 76, 0, 0, 0, 0, 0, 77, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
+ 79, 80, 0, 0, 0, 0, 81, 82, 0, 327,
+ 83, 38, 0, 39, 40, 41, 42, 43, 44, 45,
+ 0, 47, 48, 49, 50, 51, 0, 52, 53, 54,
+ 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 64, 0, 65,
+ 66, 67, 68, 69, 0, 0, 0, 0, 70, 71,
+ 72, 73, 74, 75, 0, 76, 0, 0, 0, 0,
+ 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 80, 0, 0, 0, 0,
+ 81, 82, 0, 340, 83, 38, 0, 39, 40, 41,
+ 42, 43, 44, 45, 0, 47, 48, 49, 50, 51,
+ 0, 52, 53, 54, 0, 0, 0, 55, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 62, 0, 63, 64, 65, 66, 67,
- 0, 0, 0, 0, 68, 69, 70, 71, 72, 73,
- 0, 74, 0, 0, 0, 0, 0, 75, -187, 0,
- 0, 0, 0, 0, 0, 0, -187, 0, 0, 76,
- 77, 78, 0, 0, 0, 0, 79, 80, 0, 0,
- 81, 0, -187, -187, -187, -187, 0, 0, 0, -187,
- 0, 0, 0, 0, -187, 0, 0, 0, 0, 0,
- -187, -187, -187, -187, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, -187, -187, -187, 0, -187, -187,
- -187, -187, -187, -187, -187, -187, -187, -187, -187, 0,
- 0, 0, 0, -187, -187, -187, 187, 0, -187, -187,
- 0, 0, 188, 189, 190, 191, 0, 0, 0, 0,
+ 0, 64, 0, 65, 66, 67, 68, 69, 0, 0,
+ 0, 0, 70, 71, 72, 73, 74, 75, 0, 76,
+ 0, 0, 0, 0, 0, 77, -186, 0, 0, 0,
+ 0, 0, 0, 0, -186, 0, 0, 78, 79, 80,
+ 0, 0, 0, 0, 81, 82, 0, 0, 83, 0,
+ -186, -186, -186, -186, 0, 0, 0, -186, 0, 0,
+ 0, 0, -186, 0, 0, 0, 0, 0, -186, -186,
+ -186, -186, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -186, -186, -186, 0, -186, -186, -186, -186,
+ -186, -186, -186, -186, -186, -186, -186, 0, 0, 0,
+ 0, -186, -186, -186, 188, 0, -186, -186, 0, 0,
+ 189, 190, 191, 192, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 193,
+ 194, 337, 195, 196, 197, 198, 199, 200, 201, 0,
+ 0, 0, 0, 202, 203, 204, 188, 0, 205, 0,
+ 0, 0, 189, 190, 191, 192, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 192, 193, 335, 194, 195, 196, 197, 198, 199,
- 200, 0, 0, 0, 0, 201, 202, 203, 187, 0,
- 204, 0, 0, 0, 188, 189, 190, 191, 0, 0,
+ 0, 193, 194, 0, 195, 196, 197, 198, 199, 200,
+ 201, 0, 0, 0, 0, 202, 203, 204, 188, 0,
+ 205, 0, 0, 0, 189, 190, 191, 192, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 192, 193, 0, 194, 195, 196, 197,
- 198, 199, 200, 0, 0, 0, 0, 201, 202, 203,
- 187, 0, 204, 0, 0, 0, 188, 189, 190, 191,
+ 0, 0, 0, 0, 194, 0, 195, 196, 197, 198,
+ 199, 200, 201, 0, 0, 0, 0, 202, 203, 204,
+ -187, 0, 205, 0, 0, 0, 189, 190, 191, 192,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 193, 0, 194, 195,
- 196, 197, 198, 199, 200, 0, 0, 0, 0, 201,
- 202, 203, -188, 0, 204, 0, 0, 0, 188, 189,
- 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 194, 195, 196, 197, 198, 199, 200, 0, 0, 0,
- 0, 201, 202, 203, 0, 0, 204
+ 0, 0, 0, 0, 0, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 0, 0, 0, 0, 202,
+ 203, 204, 0, 0, 205
};
static const yytype_int16 yycheck[] =
{
- 28, 108, 228, 219, 6, 231, 215, 66, 36, 387,
- 107, 28, 122, 3, 3, 5, 5, 67, 34, 35,
- 9, 9, 3, 3, 5, 75, 0, 16, 87, 39,
- 40, 41, 42, 43, 14, 14, 46, 47, 6, 0,
- 357, 3, 70, 5, 61, 423, 156, 24, 58, 66,
- 22, 23, 69, 81, 9, 10, 11, 67, 68, 69,
- 62, 63, 64, 73, 25, 26, 15, 28, 29, 57,
- 14, 3, 122, 5, 124, 40, 41, 42, 43, 37,
- 38, 46, 47, 62, 63, 64, 103, 6, 15, 406,
- 316, 317, 301, 51, 62, 63, 64, 58, 148, 88,
- 88, 88, 67, 68, 62, 15, 156, 88, 66, 3,
- 88, 69, 140, 141, 72, 88, 74, 4, 76, 77,
- 78, 79, 80, 3, 340, 222, 88, 15, 89, 9,
- 158, 141, 6, 88, 360, 15, 88, 88, 25, 26,
- 20, 28, 29, 62, 63, 64, 88, 175, 176, 177,
- 178, 179, 180, 181, 182, 172, 184, 185, 186, 128,
- 129, 130, 131, 132, 133, 14, 135, 136, 82, 83,
- 6, 58, 86, 62, 63, 64, 141, 205, 206, 207,
- 208, 209, 210, 88, 224, 295, 226, 413, 62, 63,
- 64, 219, 88, 88, 204, 223, 224, 4, 226, 36,
- 228, 6, 89, 88, 221, 6, 62, 63, 64, 237,
- 66, 239, 240, 62, 63, 64, 14, 227, 25, 26,
- 248, 28, 29, 14, 66, 183, 62, 63, 64, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 354, 295, 14, 88, 359, 14,
- 361, 58, 280, 281, 365, 283, 3, 62, 63, 64,
- 229, 62, 63, 64, 62, 63, 64, 6, 18, 8,
- 9, 15, 383, 384, 88, 88, 87, 294, 88, 296,
- 391, 392, 89, 62, 63, 64, 81, 82, 83, 400,
- 60, 86, 399, 404, 62, 63, 64, 62, 63, 64,
- 14, 4, 60, 331, 354, 5, 15, 9, 87, 87,
- 421, 422, 340, 52, 53, 1, 4, 3, 5, 5,
- 87, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 362, 21, 22, 23, 355, 18,
- 64, 27, 88, 18, 30, 31, 32, 33, 62, 63,
- 64, 37, 38, 39, 40, 41, 389, 43, 44, 45,
- 46, 47, 87, 14, 397, 398, 52, 53, 54, 55,
- 56, 57, 87, 59, 407, 87, 87, 335, 76, 65,
- 88, 414, 87, 81, 82, 83, 87, 415, 86, 4,
- 4, 77, 78, 79, 4, 4, 14, 1, 84, 85,
- 3, 5, 88, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 87, 21, 22, 23,
- 62, 63, 64, 27, 87, 30, 31, 32, 33, 62,
- 63, 64, 37, 4, 50, 51, 14, 41, 87, 43,
- 44, 45, 46, 47, 87, 87, 28, 88, 52, 53,
- 54, 55, 56, 57, 87, 59, 87, 62, 63, 64,
- 76, 65, 87, 362, 33, 81, 82, 83, 415, 127,
- 86, 296, 73, 77, 78, 79, 73, 50, 51, 1,
- 84, 85, 87, 5, 88, 7, 8, 9, 10, 11,
- 12, 13, -1, 15, 16, 17, 18, 19, -1, 21,
- 22, 23, 75, 76, -1, 27, -1, -1, 81, 82,
- 83, -1, -1, 86, 48, 49, 50, 51, -1, 41,
- -1, 43, 44, 45, 46, 47, 62, 63, 64, -1,
- 52, 53, 54, 55, 56, 57, -1, 59, 72, 73,
- 74, 75, 76, 65, -1, -1, -1, 81, 82, 83,
- -1, 87, 86, -1, -1, 77, 78, 79, -1, -1,
- -1, -1, 84, 85, -1, 87, 88, 3, -1, 5,
- -1, 7, 8, 9, 10, 11, 12, 13, -1, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 62, 63,
- 64, 27, -1, -1, -1, -1, -1, -1, -1, 48,
- 49, 50, 51, -1, -1, 41, -1, 43, 44, 45,
- 46, 47, -1, 87, -1, -1, 52, 53, 54, 55,
- 56, 57, -1, 59, 73, 74, 75, 76, -1, 65,
- -1, -1, 81, 82, 83, -1, -1, 86, -1, -1,
- -1, 77, 78, 79, -1, -1, -1, -1, 84, 85,
- -1, 3, 88, 5, -1, 7, 8, 9, 10, 11,
- 12, 13, -1, 15, 16, 17, 18, 19, -1, 21,
- 22, 23, 62, 63, 64, 27, -1, -1, -1, -1,
- -1, -1, 48, 49, 50, 51, 62, 63, 64, 41,
- -1, 43, 44, 45, 46, 47, -1, 87, -1, -1,
- 52, 53, 54, 55, 56, 57, -1, 59, 74, 75,
- 76, 87, -1, 65, -1, 81, 82, 83, -1, -1,
- 86, 62, 63, 64, -1, 77, 78, 79, -1, -1,
- 50, -1, 84, 85, -1, 3, 88, 5, -1, 7,
- 8, 9, 10, 11, 12, 13, 87, 15, 16, 17,
- 18, 19, -1, 21, 22, 23, 76, -1, -1, 27,
- -1, 81, 82, 83, -1, -1, 86, 48, 49, 50,
- 51, -1, -1, 41, -1, 43, 44, 45, 46, 47,
- -1, -1, -1, -1, 52, 53, 54, 55, 56, 57,
- -1, 59, -1, -1, 75, 76, 3, 65, 5, 6,
- 81, 82, 83, -1, -1, 86, -1, 14, -1, 77,
- 78, 79, 48, 49, 50, 51, 84, 85, -1, -1,
- 88, -1, -1, 30, 31, 32, 33, 62, 63, 64,
- 37, -1, -1, -1, -1, 42, -1, -1, -1, 75,
- 76, 48, 49, 50, 51, 81, 82, 83, -1, -1,
- 86, -1, 87, -1, -1, 62, 63, 64, -1, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- -1, -1, -1, -1, 81, 82, 83, -1, -1, 86,
- 87, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 28, 109, 28, 219, 30, 228, 123, 3, 231, 5,
+ 38, 69, 381, 108, 35, 3, 354, 5, 3, 77,
+ 66, 0, 34, 35, 41, 42, 43, 44, 45, 14,
+ 0, 48, 49, 81, 82, 83, 14, 63, 86, 4,
+ 157, 87, 68, 60, 72, 71, 25, 26, 417, 28,
+ 29, 15, 69, 70, 71, 83, 9, 3, 75, 5,
+ 25, 26, 400, 28, 29, 123, 24, 125, 129, 130,
+ 131, 132, 133, 134, 15, 136, 137, 8, 9, 58,
+ 39, 40, 3, 6, 5, 9, 10, 11, 6, 3,
+ 15, 149, 88, 58, 53, 318, 319, 214, 18, 157,
+ 88, 127, 82, 83, 57, 64, 86, 128, 4, 68,
+ 89, 15, 71, 141, 142, 74, 88, 76, 15, 78,
+ 79, 80, 81, 82, 89, 142, 342, 222, 88, 25,
+ 26, 159, 28, 29, 357, 88, 62, 63, 64, 62,
+ 63, 64, 14, 88, 62, 63, 64, 173, 176, 177,
+ 178, 179, 180, 181, 182, 183, 214, 185, 186, 187,
+ 6, 3, 58, 5, 88, 36, 88, 9, 229, 30,
+ 31, 32, 33, 224, 16, 226, 37, 88, 206, 207,
+ 208, 209, 210, 211, 407, 302, 88, 213, 205, 215,
+ 88, 219, 66, 89, 88, 223, 224, 88, 226, 88,
+ 228, 62, 63, 64, 6, 88, 3, 60, 6, 237,
+ 227, 239, 240, 6, 15, 88, 62, 63, 64, 88,
+ 248, 42, 43, 44, 45, 184, 6, 48, 49, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 302, 88, 88, 87, 69, 70,
+ 4, 60, 280, 281, 14, 283, 5, 356, 14, 358,
+ 62, 63, 64, 362, 62, 63, 64, 9, 18, 62,
+ 63, 64, 87, 62, 63, 64, 4, 303, 377, 378,
+ 14, 18, 62, 63, 64, 393, 385, 386, 14, 5,
+ 30, 31, 32, 33, 14, 394, 64, 37, 87, 398,
+ 14, 383, 62, 63, 64, 333, 62, 63, 64, 391,
+ 392, 62, 63, 64, 342, 66, 415, 416, 88, 401,
+ 14, 142, 62, 63, 64, 87, 408, 88, 62, 63,
+ 64, 359, 87, 62, 63, 64, 62, 63, 64, 3,
+ 87, 87, 62, 63, 64, 9, 87, 87, 62, 63,
+ 64, 15, 87, 1, 14, 3, 20, 5, 87, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 87, 21, 22, 23, 4, 4, 337, 27,
+ 4, 409, 30, 31, 32, 33, 3, 50, 51, 37,
+ 38, 39, 40, 41, 4, 43, 44, 45, 46, 47,
+ 62, 63, 64, 87, 52, 53, 54, 55, 56, 57,
+ 87, 59, 75, 76, 4, 87, 87, 65, 81, 82,
+ 83, 14, 88, 86, 28, 87, 87, 359, 87, 77,
+ 78, 79, 50, 51, 409, 1, 84, 85, 23, 5,
+ 88, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 55, 21, 22, 23, 76, 75,
+ 75, 27, 215, 81, 82, 83, -1, -1, 86, -1,
+ 48, 49, 50, 51, -1, 41, -1, 43, 44, 45,
+ 46, 47, 62, 63, 64, -1, 52, 53, 54, 55,
+ 56, 57, -1, 59, 72, 73, 74, 75, 76, 65,
+ -1, -1, -1, 81, 82, 83, -1, 87, 86, -1,
+ -1, 77, 78, 79, 50, -1, -1, 1, 84, 85,
+ -1, 5, 88, 7, 8, 9, 10, 11, 12, 13,
-1, 15, 16, 17, 18, 19, -1, 21, 22, 23,
- -1, -1, -1, 27, -1, -1, -1, -1, -1, 48,
- -1, 50, 51, -1, -1, -1, -1, 41, -1, 43,
+ 76, -1, -1, 27, -1, 81, 82, 83, -1, -1,
+ 86, 48, 49, 50, 51, -1, -1, 41, -1, 43,
44, 45, 46, 47, -1, -1, -1, -1, 52, 53,
- 54, 55, 56, 57, -1, 59, 75, 76, -1, -1,
+ 54, 55, 56, 57, -1, 59, 73, 74, 75, 76,
+ -1, 65, -1, -1, 81, 82, 83, -1, -1, 86,
+ -1, -1, -1, 77, 78, 79, -1, -1, -1, -1,
+ 84, 85, -1, 87, 88, 3, -1, 5, -1, 7,
+ 8, 9, 10, 11, 12, 13, -1, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 62, 63, 64, 27,
+ -1, -1, -1, -1, -1, -1, 48, 49, 50, 51,
+ 62, 63, 64, 41, -1, 43, 44, 45, 46, 47,
+ -1, 87, -1, -1, 52, 53, 54, 55, 56, 57,
+ -1, 59, 74, 75, 76, 87, -1, 65, -1, 81,
+ 82, 83, -1, -1, 86, 62, 63, 64, -1, 77,
+ 78, 79, -1, -1, -1, -1, 84, 85, -1, 3,
+ 88, 5, -1, 7, 8, 9, 10, 11, 12, 13,
+ 87, 15, 16, 17, 18, 19, -1, 21, 22, 23,
+ 62, 63, 64, 27, -1, -1, -1, -1, -1, 48,
+ 49, 50, 51, 62, 63, 64, -1, 41, -1, 43,
+ 44, 45, 46, 47, -1, 87, -1, -1, 52, 53,
+ 54, 55, 56, 57, -1, 59, 75, 76, 87, -1,
-1, 65, 81, 82, 83, -1, -1, 86, -1, -1,
-1, -1, -1, 77, 78, 79, -1, -1, -1, -1,
- 84, 85, -1, 5, 88, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, -1, 21,
- 22, 23, -1, -1, -1, 27, 30, 31, 32, 33,
- -1, -1, -1, 37, -1, -1, -1, -1, -1, 41,
- -1, 43, 44, 45, 46, 47, -1, -1, -1, -1,
- 52, 53, 54, 55, 56, 57, -1, 59, 62, 63,
- 64, -1, -1, 65, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 77, 78, 79, -1, -1,
- -1, -1, 84, 85, -1, 5, 88, 7, 8, 9,
+ 84, 85, -1, 3, 88, 5, -1, 7, 8, 9,
10, 11, 12, 13, -1, 15, 16, 17, 18, 19,
- -1, 21, 22, 23, -1, -1, -1, 27, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 21, 22, 23, 76, -1, -1, 27, -1, 81,
+ 82, 83, -1, -1, 86, 48, 49, 50, 51, -1,
-1, 41, -1, 43, 44, 45, 46, 47, -1, -1,
-1, -1, 52, 53, 54, 55, 56, 57, -1, 59,
- -1, -1, -1, -1, -1, 65, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
- -1, -1, -1, -1, 84, 85, -1, 87, 88, 5,
- -1, 7, 8, 9, 10, 11, 12, 13, -1, 15,
+ -1, -1, 75, 76, 3, 65, 5, 6, 81, 82,
+ 83, -1, -1, 86, -1, 14, -1, 77, 78, 79,
+ 48, -1, 50, 51, 84, 85, -1, -1, 88, -1,
+ -1, 30, 31, 32, 33, -1, -1, -1, 37, -1,
+ -1, -1, -1, 42, -1, -1, -1, 75, 76, 48,
+ 49, 50, 51, 81, 82, 83, -1, -1, 86, -1,
+ -1, -1, -1, 62, 63, 64, -1, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, -1, 81, 82, 83, -1, -1, 86, 87, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, -1, 15,
16, 17, 18, 19, -1, 21, 22, 23, -1, -1,
-1, 27, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 41, -1, 43, 44, 45,
@@ -753,7 +733,15 @@ static const yytype_int16 yycheck[] =
56, 57, -1, 59, -1, -1, -1, -1, -1, 65,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 77, 78, 79, -1, -1, -1, -1, 84, 85,
- -1, 87, 88, 5, -1, 7, 8, 9, 10, 11,
+ -1, 5, 88, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, 21, 22, 23,
+ -1, -1, -1, 27, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, -1, 43,
+ 44, 45, 46, 47, -1, -1, -1, -1, 52, 53,
+ 54, 55, 56, 57, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 77, 78, 79, -1, -1, -1, -1,
+ 84, 85, -1, 5, 88, 7, 8, 9, 10, 11,
12, 13, -1, 15, 16, 17, 18, 19, -1, 21,
22, 23, -1, -1, -1, 27, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
@@ -809,32 +797,49 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 41, -1, 43, 44, 45, 46, 47,
-1, -1, -1, -1, 52, 53, 54, 55, 56, 57,
- -1, 59, -1, -1, -1, -1, -1, 65, 6, -1,
- -1, -1, -1, -1, -1, -1, 14, -1, -1, 77,
- 78, 79, -1, -1, -1, -1, 84, 85, -1, -1,
- 88, -1, 30, 31, 32, 33, -1, -1, -1, 37,
- -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ -1, 59, -1, -1, -1, -1, -1, 65, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
+ 78, 79, -1, -1, -1, -1, 84, 85, -1, 87,
+ 88, 5, -1, 7, 8, 9, 10, 11, 12, 13,
+ -1, 15, 16, 17, 18, 19, -1, 21, 22, 23,
+ -1, -1, -1, 27, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, -1, 43,
+ 44, 45, 46, 47, -1, -1, -1, -1, 52, 53,
+ 54, 55, 56, 57, -1, 59, -1, -1, -1, -1,
+ -1, 65, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 77, 78, 79, -1, -1, -1, -1,
+ 84, 85, -1, 87, 88, 5, -1, 7, 8, 9,
+ 10, 11, 12, 13, -1, 15, 16, 17, 18, 19,
+ -1, 21, 22, 23, -1, -1, -1, 27, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, -1, 43, 44, 45, 46, 47, -1, -1,
+ -1, -1, 52, 53, 54, 55, 56, 57, -1, 59,
+ -1, -1, -1, -1, -1, 65, 6, -1, -1, -1,
+ -1, -1, -1, -1, 14, -1, -1, 77, 78, 79,
+ -1, -1, -1, -1, 84, 85, -1, -1, 88, -1,
+ 30, 31, 32, 33, -1, -1, -1, 37, -1, -1,
+ -1, -1, 42, -1, -1, -1, -1, -1, 48, 49,
+ 50, 51, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 62, 63, 64, -1, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, 81, 82, 83, 42, -1, 86, 87, -1, -1,
48, 49, 50, 51, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, -1,
- -1, -1, -1, 81, 82, 83, 42, -1, 86, 87,
+ -1, -1, -1, 81, 82, 83, 42, -1, 86, -1,
-1, -1, 48, 49, 50, 51, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ -1, 67, 68, -1, 70, 71, 72, 73, 74, 75,
76, -1, -1, -1, -1, 81, 82, 83, 42, -1,
86, -1, -1, -1, 48, 49, 50, 51, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 67, 68, -1, 70, 71, 72, 73,
+ -1, -1, -1, -1, 68, -1, 70, 71, 72, 73,
74, 75, 76, -1, -1, -1, -1, 81, 82, 83,
42, -1, 86, -1, -1, -1, 48, 49, 50, 51,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 68, -1, 70, 71,
+ -1, -1, -1, -1, -1, -1, -1, -1, 70, 71,
72, 73, 74, 75, 76, -1, -1, -1, -1, 81,
- 82, 83, 42, -1, 86, -1, -1, -1, 48, 49,
- 50, 51, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
- -1, 81, 82, 83, -1, -1, 86
+ 82, 83, -1, -1, 86
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -842,52 +847,51 @@ static const yytype_int16 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 91, 95, 0, 99, 25, 26, 28, 29, 58,
- 89, 98, 116, 117, 118, 120, 121, 131, 132, 122,
- 122, 15, 122, 122, 24, 100, 106, 107, 115, 125,
- 123, 14, 123, 123, 1, 3, 5, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 21, 22, 23, 27, 30, 31, 32, 33, 37, 38,
- 39, 40, 41, 43, 44, 45, 46, 47, 52, 53,
- 54, 55, 56, 57, 59, 65, 77, 78, 79, 84,
- 85, 88, 92, 101, 103, 104, 134, 135, 136, 139,
- 140, 141, 142, 143, 144, 145, 150, 151, 152, 153,
- 154, 155, 15, 119, 15, 126, 133, 126, 93, 6,
- 134, 144, 144, 15, 20, 92, 151, 156, 156, 156,
- 156, 156, 156, 156, 88, 144, 122, 122, 88, 88,
- 88, 88, 57, 88, 151, 88, 88, 92, 144, 88,
- 88, 88, 92, 144, 15, 135, 147, 151, 156, 156,
- 15, 92, 144, 151, 14, 134, 15, 144, 88, 146,
- 151, 152, 153, 144, 135, 144, 144, 144, 144, 144,
- 87, 134, 36, 105, 14, 30, 31, 32, 33, 37,
- 62, 63, 64, 66, 3, 5, 88, 42, 48, 49,
- 50, 51, 67, 68, 70, 71, 72, 73, 74, 75,
- 76, 81, 82, 83, 86, 88, 3, 5, 3, 5,
- 3, 92, 18, 127, 15, 127, 99, 6, 147, 88,
- 135, 124, 124, 93, 93, 93, 93, 93, 93, 88,
- 93, 93, 87, 87, 134, 134, 148, 156, 135, 88,
- 88, 4, 14, 147, 87, 134, 60, 129, 5, 87,
- 92, 134, 111, 134, 134, 134, 134, 134, 134, 134,
- 144, 134, 134, 87, 134, 144, 144, 144, 144, 144,
- 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 3, 5, 16, 88, 138, 151, 87, 134, 134, 134,
- 134, 134, 134, 60, 128, 15, 128, 4, 148, 87,
- 92, 127, 110, 134, 111, 112, 134, 111, 114, 149,
- 151, 101, 109, 112, 113, 134, 93, 94, 112, 87,
- 66, 87, 134, 87, 134, 87, 134, 4, 87, 18,
- 134, 5, 14, 6, 87, 69, 134, 134, 87, 134,
- 88, 87, 14, 6, 14, 6, 14, 18, 14, 92,
- 130, 147, 130, 87, 137, 128, 87, 87, 87, 87,
- 88, 87, 14, 112, 112, 87, 87, 87, 87, 6,
- 134, 4, 144, 14, 6, 87, 148, 4, 4, 4,
- 14, 147, 92, 108, 108, 3, 96, 96, 112, 96,
- 110, 87, 87, 96, 6, 4, 87, 96, 96, 97,
- 34, 35, 102, 102, 87, 105, 14, 96, 96, 105,
- 105, 99, 96, 88, 96, 108, 105, 4, 112, 105,
- 113, 87, 87, 96, 96, 102
+ 89, 98, 116, 117, 118, 120, 121, 130, 131, 124,
+ 122, 15, 122, 122, 24, 100, 106, 107, 115, 15,
+ 119, 15, 125, 14, 132, 125, 1, 3, 5, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 21, 22, 23, 27, 30, 31, 32, 33,
+ 37, 38, 39, 40, 41, 43, 44, 45, 46, 47,
+ 52, 53, 54, 55, 56, 57, 59, 65, 77, 78,
+ 79, 84, 85, 88, 92, 101, 103, 104, 133, 134,
+ 135, 138, 139, 140, 141, 142, 143, 144, 149, 150,
+ 151, 152, 153, 154, 92, 18, 126, 15, 126, 93,
+ 6, 133, 143, 143, 15, 20, 92, 150, 155, 155,
+ 155, 155, 155, 155, 155, 88, 143, 123, 123, 88,
+ 88, 88, 88, 57, 88, 150, 88, 88, 92, 143,
+ 88, 88, 88, 92, 143, 15, 134, 146, 150, 155,
+ 155, 15, 92, 143, 150, 14, 133, 15, 143, 88,
+ 145, 150, 151, 152, 143, 134, 143, 143, 143, 143,
+ 143, 87, 133, 36, 105, 14, 30, 31, 32, 33,
+ 37, 62, 63, 64, 66, 3, 5, 88, 42, 48,
+ 49, 50, 51, 67, 68, 70, 71, 72, 73, 74,
+ 75, 76, 81, 82, 83, 86, 88, 3, 5, 3,
+ 5, 3, 60, 127, 15, 127, 99, 6, 146, 88,
+ 134, 92, 126, 93, 93, 93, 93, 93, 93, 88,
+ 93, 93, 87, 87, 133, 133, 147, 155, 134, 88,
+ 88, 4, 14, 146, 87, 133, 60, 128, 5, 87,
+ 92, 133, 111, 133, 133, 133, 133, 133, 133, 133,
+ 143, 133, 133, 87, 133, 143, 143, 143, 143, 143,
+ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
+ 3, 5, 16, 88, 137, 150, 87, 133, 133, 133,
+ 133, 133, 133, 18, 14, 92, 129, 146, 129, 4,
+ 147, 87, 136, 127, 110, 133, 111, 112, 133, 111,
+ 114, 148, 150, 101, 109, 112, 113, 133, 93, 94,
+ 112, 87, 66, 87, 133, 87, 133, 87, 133, 4,
+ 87, 18, 133, 5, 14, 6, 87, 69, 133, 133,
+ 87, 133, 88, 87, 14, 6, 14, 6, 14, 14,
+ 87, 146, 92, 87, 87, 87, 87, 88, 87, 14,
+ 112, 112, 87, 87, 87, 87, 6, 133, 4, 143,
+ 14, 6, 87, 147, 4, 4, 4, 108, 108, 3,
+ 96, 96, 112, 96, 110, 87, 87, 96, 6, 4,
+ 87, 96, 96, 97, 34, 35, 102, 102, 87, 105,
+ 14, 96, 96, 105, 105, 99, 96, 88, 96, 108,
+ 105, 4, 112, 105, 113, 87, 87, 96, 96, 102
};
typedef enum {
- toketype_i_tkval, toketype_ival, toketype_opval, toketype_p_tkval, toketype_padval
+ toketype_i_tkval, toketype_ival, toketype_opval, toketype_p_tkval
} toketypes;
/* type of each token/terminal */
@@ -910,11 +914,10 @@ static const toketypes yy_type_tab[] =
toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_opval, toketype_opval, toketype_p_tkval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_padval, toketype_ival,
- toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, 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_ival, toketype_opval, toketype_opval, toketype_opval, 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_opval,
- toketype_opval, toketype_opval
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval
};
diff --git a/perly.y b/perly.y
index ad0e604543..af62341bba 100644
--- a/perly.y
+++ b/perly.y
@@ -48,7 +48,6 @@
char *pval;
OP *opval;
GV *gvval;
- AV* padval;
#ifdef PERL_IN_MADLY_C
TOKEN* p_tkval;
TOKEN* i_tkval;
@@ -92,7 +91,6 @@
%type <opval> termbinop termunop anonymous termdo
%type <opval> switch case
%type <p_tkval> label
-%type <padval> remempad
%nonassoc <i_tkval> PREC_LOW
%nonassoc LOOPEX
@@ -504,15 +502,15 @@ peg : PEG
}
;
-format : FORMAT remempad startformsub formname block
+format : FORMAT startformsub formname block
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- $$ = newFORM($3, $4, $5);
+ $$ = newFORM($2, $3, $4);
prepend_madprops($1->tk_mad, $$, 'F');
$1->tk_mad = 0;
token_free($1);
#else
- newFORM($3, $4, $5);
+ newFORM($2, $3, $4);
#endif
}
;
@@ -522,42 +520,38 @@ formname: WORD { $$ = $1; }
;
/* Unimplemented "my sub foo { }" */
-mysubrout: MYSUB remempad startsub subname proto subattrlist subbody
+mysubrout: MYSUB startsub subname proto subattrlist subbody
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- $$ = newMYSUB($3, $4, $5, $6, $7);
+ $$ = newMYSUB($2, $3, $4, $5, $6);
token_getmad($1,$$,'d');
#else
- newMYSUB($3, $4, $5, $6, $7);
+ newMYSUB($2, $3, $4, $5, $6);
#endif
}
;
/* Subroutine definition */
-subrout : SUB remempad startsub subname proto subattrlist subbody
+subrout : SUB startsub subname proto subattrlist subbody
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
OP* o = newSVOP(OP_ANONCODE, 0,
- (SV*)newATTRSUB($3, $4, $5, $6, $7));
+ (SV*)newATTRSUB($2, $3, $4, $5, $6));
$$ = newOP(OP_NULL,0);
op_getmad(o,$$,'&');
- op_getmad($4,$$,'n');
- op_getmad($5,$$,'s');
- op_getmad($6,$$,'a');
+ op_getmad($3,$$,'n');
+ op_getmad($4,$$,'s');
+ op_getmad($5,$$,'a');
token_getmad($1,$$,'d');
- append_madprops($7->op_madprop, $$, 0);
- $7->op_madprop = 0;
+ append_madprops($6->op_madprop, $$, 0);
+ $6->op_madprop = 0;
#else
- newATTRSUB($3, $4, $5, $6, $7);
+ newATTRSUB($2, $3, $4, $5, $6);
$$ = Nullop;
#endif
}
;
-remempad: /* NULL */ /* remember current value of PL_comppad */
- { $$ = PL_comppad; }
- ;
-
startsub: /* NULL */ /* start a regular subroutine scope */
{ $$ = start_subparse(FALSE, 0);
SAVEFREESV(PL_compcv); }
@@ -642,18 +636,18 @@ package : PACKAGE WORD ';'
}
;
-use : USE remempad startsub
+use : USE startsub
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
WORD WORD listexpr ';'
{ SvREFCNT_inc(PL_compcv);
#ifdef MAD
- $$ = utilize(IVAL($1), $3, $5, $6, $7);
+ $$ = utilize(IVAL($1), $2, $4, $5, $6);
token_getmad($1,$$,'o');
- token_getmad($8,$$,';');
+ token_getmad($7,$$,';');
if (PL_rsfp_filters && AvFILLp(PL_rsfp_filters) >= 0)
append_madprops(newMADPROP('!', MAD_PV, "", 0), $$, 0);
#else
- utilize(IVAL($1), $3, $5, $6, $7);
+ utilize(IVAL($1), $2, $4, $5, $6);
#endif
}
;
@@ -748,13 +742,13 @@ listop : LSTOP indirob argexpr /* map {...} @args or print $fh @args */
TOKEN_GETMAD($2,$$,'(');
TOKEN_GETMAD($4,$$,')');
}
- | LSTOPSUB remempad startanonsub block /* sub f(&@); f {foo} ... */
+ | LSTOPSUB startanonsub block /* sub f(&@); f { foo } ... */
{ SvREFCNT_inc(PL_compcv);
- $4 = newANONATTRSUB($3, 0, Nullop, $4); }
+ $3 = newANONATTRSUB($2, 0, Nullop, $3); }
listexpr %prec LSTOP /* ... @bar */
{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
- prepend_elem(OP_LIST, $4, $6), $1));
+ prepend_elem(OP_LIST, $3, $5), $1));
}
;
@@ -1002,12 +996,12 @@ anonymous: '[' expr ']'
TOKEN_GETMAD($2,$$,';');
TOKEN_GETMAD($3,$$,'}');
}
- | ANONSUB remempad startanonsub proto subattrlist block %prec '('
+ | ANONSUB startanonsub proto subattrlist block %prec '('
{ SvREFCNT_inc(PL_compcv);
- $$ = newANONATTRSUB($3, $4, $5, $6);
+ $$ = newANONATTRSUB($2, $3, $4, $5);
TOKEN_GETMAD($1,$$,'o');
- OP_GETMAD($4,$$,'s');
- OP_GETMAD($5,$$,'a');
+ OP_GETMAD($3,$$,'s');
+ OP_GETMAD($4,$$,'a');
}
;
diff --git a/t/comp/parser.t b/t/comp/parser.t
index 55c645987f..ddbb7608e6 100644
--- a/t/comp/parser.t
+++ b/t/comp/parser.t
@@ -9,7 +9,7 @@ BEGIN {
}
BEGIN { require "./test.pl"; }
-plan( tests => 62 );
+plan( tests => 65 );
eval '%@x=0;';
like( $@, qr/^Can't modify hash dereference in repeat \(x\)/, '%@x=0' );
@@ -211,7 +211,7 @@ like( $@, qr/Assignment to both a list and a scalar/, 'Assignment to both a list
eval q{ s/x/#/e };
is( $@, '', 'comments in s///e' );
-# these two used to coredump because the op cleanup on parse error could
+# these five used to coredump because the op cleanup on parse error could
# be to the wrong pad
eval q[
@@ -227,3 +227,27 @@ eval q[
];
like($@, qr/Missing right curly/, 'nested sub syntax error 2' );
+eval q[
+ sub { our $a= 1;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;$a;
+ use DieDieDie;
+];
+
+like($@, qr/Can't locate DieDieDie.pm/, 'croak cleanup' );
+
+eval q[
+ sub { my ($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$q,$r,$s,$r);
+ use DieDieDie;
+];
+
+like($@, qr/Can't locate DieDieDie.pm/, 'croak cleanup 2' );
+
+
+eval q[
+ my @a;
+ my ($a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l,$m,$n,$o,$p,$q,$r,$s,$r);
+ @a =~ s/a/b/; # compile-time error
+ use DieDieDie;
+];
+
+like($@, qr/Can't modify/, 'croak cleanup 3' );
+