From: Dave Mitchell Date: Sun, 15 Feb 2004 00:24:26 +0000 (+0000) Subject: [perl #25824] Segmentation fault with X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=500bedb6c28d0918a4bd28632e742d0905ce8519;p=p5sagit%2Fp5-mst-13.2.git [perl #25824] Segmentation fault with sub x { shift; @a = @b; eval +{ use } } p4raw-id: //depot/perl@22306 --- diff --git a/op.c b/op.c index 8a116d7..871a0f6 100644 --- a/op.c +++ b/op.c @@ -1769,12 +1769,6 @@ int Perl_block_start(pTHX_ int full) { int retval = PL_savestack_ix; - /* If there were syntax errors, don't try to start a block */ - /* XXX DAPM 13-Feb-04. This symbol no longer gloabl. Think of a better - * way - * if (PL_yynerrs) return retval; - */ - pad_block_start(full); SAVEHINTS(); PL_hints &= ~HINT_BLOCK_SCOPE; @@ -1796,11 +1790,6 @@ Perl_block_end(pTHX_ I32 floor, OP *seq) { int needblockscope = PL_hints & HINT_BLOCK_SCOPE; OP* retval = scalarseq(seq); - /* If there were syntax errors, don't try to close a block */ - /* XXX DAPM 13-Feb-04. This symbol no longer gloabl. Think of a better - * way - * if (PL_yynerrs) return retval; - */ LEAVE_SCOPE(floor); PL_compiling.op_private = (U8)(PL_hints & HINT_PRIVATE_MASK); if (needblockscope) diff --git a/perly.act b/perly.act index eafa340..9c5405e 100644 --- a/perly.act +++ b/perly.act @@ -35,30 +35,36 @@ case 2: break; case 8: -#line 121 "perly.y" - { yyval.opval = Nullop; ;} +#line 120 "perly.y" + { yyval.ival = PL_savestack_ix; ;} break; case 9: -#line 123 "perly.y" - { yyval.opval = yyvsp[-1].opval; ;} +#line 124 "perly.y" + { yyval.opval = Nullop; ;} break; case 10: -#line 125 "perly.y" - { yyval.opval = append_list(OP_LINESEQ, - (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); - PL_pad_reset_pending = TRUE; - if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; ;} +#line 126 "perly.y" + { yyval.opval = yyvsp[-1].opval; ;} break; case 11: -#line 133 "perly.y" +#line 128 "perly.y" + { LEAVE_SCOPE(yyvsp[-1].ival); + yyval.opval = append_list(OP_LINESEQ, + (LISTOP*)yyvsp[-2].opval, (LISTOP*)yyvsp[0].opval); + PL_pad_reset_pending = TRUE; + if (yyvsp[-2].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; ;} + break; + + case 12: +#line 137 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); ;} break; - case 13: -#line 136 "perly.y" + case 14: +#line 140 "perly.y" { if (yyvsp[-1].pval != Nullch) { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); } @@ -69,91 +75,91 @@ case 2: PL_expect = XSTATE; ;} break; - case 14: -#line 145 "perly.y" + case 15: +#line 149 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); PL_expect = XSTATE; ;} break; - case 15: -#line 151 "perly.y" + case 16: +#line 155 "perly.y" { yyval.opval = Nullop; ;} break; - case 16: -#line 153 "perly.y" + case 17: +#line 157 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; - case 17: -#line 155 "perly.y" + case 18: +#line 159 "perly.y" { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); ;} break; - case 18: -#line 157 "perly.y" + case 19: +#line 161 "perly.y" { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); ;} break; - case 19: -#line 159 "perly.y" + case 20: +#line 163 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); ;} break; - case 20: -#line 161 "perly.y" + case 21: +#line 165 "perly.y" { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);;} break; - case 21: -#line 163 "perly.y" + case 22: +#line 167 "perly.y" { yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival, Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); ;} break; - case 22: -#line 169 "perly.y" + case 23: +#line 173 "perly.y" { yyval.opval = Nullop; ;} break; - case 23: -#line 171 "perly.y" + case 24: +#line 175 "perly.y" { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); ;} break; - case 24: -#line 173 "perly.y" + case 25: +#line 177 "perly.y" { PL_copline = (line_t)yyvsp[-5].ival; yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); PL_hints |= HINT_BLOCK_SCOPE; ;} break; - case 25: -#line 180 "perly.y" + case 26: +#line 184 "perly.y" { PL_copline = (line_t)yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;} break; - case 26: -#line 184 "perly.y" + case 27: +#line 188 "perly.y" { PL_copline = (line_t)yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;} break; - case 27: -#line 191 "perly.y" + case 28: +#line 195 "perly.y" { yyval.opval = Nullop; ;} break; - case 28: -#line 193 "perly.y" + case 29: +#line 197 "perly.y" { yyval.opval = scope(yyvsp[0].opval); ;} break; - case 29: -#line 198 "perly.y" + case 30: +#line 202 "perly.y" { PL_copline = (line_t)yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -161,8 +167,8 @@ case 2: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;} break; - case 30: -#line 204 "perly.y" + case 31: +#line 208 "perly.y" { PL_copline = (line_t)yyvsp[-6].ival; yyval.opval = block_end(yyvsp[-4].ival, newSTATEOP(0, yyvsp[-7].pval, @@ -170,27 +176,27 @@ case 2: yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;} break; - case 31: -#line 210 "perly.y" + case 32: +#line 214 "perly.y" { yyval.opval = block_end(yyvsp[-6].ival, newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} break; - case 32: -#line 213 "perly.y" + case 33: +#line 217 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} break; - case 33: -#line 217 "perly.y" + case 34: +#line 221 "perly.y" { yyval.opval = block_end(yyvsp[-4].ival, newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} break; - case 34: -#line 221 "perly.y" + case 35: +#line 225 "perly.y" { OP *forop; PL_copline = (line_t)yyvsp[-9].ival; forop = newSTATEOP(0, yyvsp[-10].pval, @@ -207,31 +213,26 @@ case 2: yyval.opval = block_end(yyvsp[-7].ival, forop); ;} break; - case 35: -#line 236 "perly.y" + case 36: +#line 240 "perly.y" { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop, NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); ;} break; - case 36: -#line 243 "perly.y" + case 37: +#line 247 "perly.y" { yyval.opval = Nullop; ;} break; - case 38: -#line 249 "perly.y" + case 39: +#line 253 "perly.y" { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; ;} break; - case 40: -#line 255 "perly.y" - { yyval.opval = invert(scalar(yyvsp[0].opval)); ;} - break; - case 41: -#line 260 "perly.y" - { yyval.opval = yyvsp[0].opval; intro_my(); ;} +#line 259 "perly.y" + { yyval.opval = invert(scalar(yyvsp[0].opval)); ;} break; case 42: @@ -250,77 +251,82 @@ case 2: break; case 45: -#line 277 "perly.y" - { yyval.pval = Nullch; ;} +#line 276 "perly.y" + { yyval.opval = yyvsp[0].opval; intro_my(); ;} break; - case 47: -#line 283 "perly.y" - { yyval.ival = 0; ;} + case 46: +#line 281 "perly.y" + { yyval.pval = Nullch; ;} break; case 48: -#line 285 "perly.y" +#line 287 "perly.y" { yyval.ival = 0; ;} break; case 49: -#line 287 "perly.y" +#line 289 "perly.y" { yyval.ival = 0; ;} break; case 50: -#line 289 "perly.y" +#line 291 "perly.y" { yyval.ival = 0; ;} break; case 51: -#line 291 "perly.y" +#line 293 "perly.y" { yyval.ival = 0; ;} break; case 52: #line 295 "perly.y" - { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); ;} + { yyval.ival = 0; ;} break; case 53: -#line 298 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 299 "perly.y" + { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); ;} break; case 54: -#line 299 "perly.y" - { yyval.opval = Nullop; ;} +#line 302 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 55: -#line 304 "perly.y" - { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} +#line 303 "perly.y" + { yyval.opval = Nullop; ;} break; case 56: -#line 309 "perly.y" - { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} +#line 308 "perly.y" + { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} break; case 57: #line 313 "perly.y" - { yyval.ival = start_subparse(FALSE, 0); ;} + { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} break; case 58: #line 317 "perly.y" - { yyval.ival = start_subparse(FALSE, CVf_ANON); ;} + { yyval.ival = start_subparse(FALSE, 0); ;} break; case 59: #line 321 "perly.y" - { yyval.ival = start_subparse(TRUE, 0); ;} + { yyval.ival = start_subparse(FALSE, CVf_ANON); ;} break; case 60: #line 325 "perly.y" + { yyval.ival = start_subparse(TRUE, 0); ;} + break; + + case 61: +#line 329 "perly.y" { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); if (strEQ(name, "BEGIN") || strEQ(name, "END") || strEQ(name, "INIT") || strEQ(name, "CHECK")) @@ -328,377 +334,377 @@ case 2: yyval.opval = yyvsp[0].opval; ;} break; - case 61: -#line 334 "perly.y" - { yyval.opval = Nullop; ;} - break; - - case 63: -#line 340 "perly.y" + case 62: +#line 338 "perly.y" { yyval.opval = Nullop; ;} break; case 64: -#line 342 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 344 "perly.y" + { yyval.opval = Nullop; ;} break; case 65: -#line 344 "perly.y" - { yyval.opval = Nullop; ;} +#line 346 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 66: -#line 349 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 348 "perly.y" + { yyval.opval = Nullop; ;} break; case 67: -#line 351 "perly.y" - { yyval.opval = Nullop; ;} +#line 353 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 68: #line 355 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} + { yyval.opval = Nullop; ;} break; case 69: -#line 356 "perly.y" - { yyval.opval = Nullop; PL_expect = XSTATE; ;} +#line 359 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 70: #line 360 "perly.y" - { package(yyvsp[-1].opval); ;} + { yyval.opval = Nullop; PL_expect = XSTATE; ;} break; case 71: #line 364 "perly.y" - { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;} + { package(yyvsp[-1].opval); ;} break; case 72: -#line 366 "perly.y" - { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); ;} +#line 368 "perly.y" + { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;} break; case 73: -#line 371 "perly.y" - { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 370 "perly.y" + { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); ;} break; case 74: -#line 373 "perly.y" - { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 375 "perly.y" + { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 75: -#line 375 "perly.y" +#line 377 "perly.y" + { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 76: +#line 379 "perly.y" { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} break; - case 77: -#line 381 "perly.y" + case 78: +#line 385 "perly.y" { yyval.opval = yyvsp[-1].opval; ;} break; - case 78: -#line 383 "perly.y" + case 79: +#line 387 "perly.y" { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); ;} break; - case 80: -#line 389 "perly.y" + case 81: +#line 393 "perly.y" { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); ;} break; - case 81: -#line 392 "perly.y" + case 82: +#line 396 "perly.y" { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); ;} break; - case 82: -#line 395 "perly.y" + case 83: +#line 399 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); ;} break; - case 83: -#line 400 "perly.y" + case 84: +#line 404 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, scalar(yyvsp[-2].opval), newUNOP(OP_METHOD, 0, yyvsp[0].opval))); ;} break; - case 84: -#line 404 "perly.y" + case 85: +#line 408 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); ;} break; - case 85: -#line 409 "perly.y" + case 86: +#line 413 "perly.y" { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); ;} break; - case 86: -#line 414 "perly.y" + case 87: +#line 418 "perly.y" { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} break; - case 87: -#line 416 "perly.y" + case 88: +#line 420 "perly.y" { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;} break; - case 88: -#line 418 "perly.y" + case 89: +#line 422 "perly.y" { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); ;} break; - case 89: -#line 420 "perly.y" + case 90: +#line 424 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); ;} break; - case 92: -#line 434 "perly.y" + case 93: +#line 438 "perly.y" { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); PL_expect = XOPERATOR; ;} break; - case 93: -#line 437 "perly.y" + case 94: +#line 441 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); ;} break; - case 94: -#line 439 "perly.y" + case 95: +#line 443 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), scalar(yyvsp[-1].opval));;} break; - case 95: -#line 443 "perly.y" + case 96: +#line 447 "perly.y" { yyval.opval = newBINOP(OP_AELEM, 0, ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), scalar(yyvsp[-1].opval));;} break; - case 96: -#line 447 "perly.y" + case 97: +#line 451 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; ;} break; - case 97: -#line 450 "perly.y" + case 98: +#line 454 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; ;} break; - case 98: -#line 455 "perly.y" + case 99: +#line 459 "perly.y" { yyval.opval = newBINOP(OP_HELEM, 0, ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), jmaybe(yyvsp[-2].opval)); PL_expect = XOPERATOR; ;} break; - case 99: -#line 460 "perly.y" + case 100: +#line 464 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-3].opval))); ;} break; - case 100: -#line 463 "perly.y" + case 101: +#line 467 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-4].opval)))); ;} break; - case 101: -#line 468 "perly.y" + case 102: +#line 472 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, newCVREF(0, scalar(yyvsp[-3].opval)))); ;} break; - case 102: -#line 472 "perly.y" + case 103: +#line 476 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar(yyvsp[-2].opval))); ;} break; - case 103: -#line 478 "perly.y" + case 104: +#line 482 "perly.y" { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); ;} break; - case 104: -#line 480 "perly.y" + case 105: +#line 484 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; - case 105: -#line 482 "perly.y" + case 106: +#line 486 "perly.y" { if (yyvsp[-1].ival != OP_REPEAT) scalar(yyvsp[-2].opval); yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); ;} break; - case 106: -#line 486 "perly.y" - { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} - break; - case 107: -#line 488 "perly.y" +#line 490 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 108: -#line 490 "perly.y" +#line 492 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 109: -#line 492 "perly.y" +#line 494 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 110: -#line 494 "perly.y" +#line 496 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 111: -#line 496 "perly.y" +#line 498 "perly.y" { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 112: -#line 498 "perly.y" - { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));;} +#line 500 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} break; case 113: -#line 500 "perly.y" - { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 502 "perly.y" + { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));;} break; case 114: -#line 502 "perly.y" - { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 504 "perly.y" + { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 115: -#line 504 "perly.y" - { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 506 "perly.y" + { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 116: -#line 506 "perly.y" - { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); ;} +#line 508 "perly.y" + { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 117: -#line 511 "perly.y" - { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); ;} +#line 510 "perly.y" + { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 118: -#line 513 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 515 "perly.y" + { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); ;} break; case 119: -#line 515 "perly.y" - { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;} +#line 517 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 120: -#line 517 "perly.y" - { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));;} +#line 519 "perly.y" + { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;} break; case 121: -#line 519 "perly.y" +#line 521 "perly.y" + { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));;} + break; + + case 122: +#line 523 "perly.y" { yyval.opval = newUNOP(OP_POSTINC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTINC)); ;} break; - case 122: -#line 522 "perly.y" + case 123: +#line 526 "perly.y" { yyval.opval = newUNOP(OP_POSTDEC, 0, mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); ;} break; - case 123: -#line 525 "perly.y" + case 124: +#line 529 "perly.y" { yyval.opval = newUNOP(OP_PREINC, 0, mod(scalar(yyvsp[0].opval), OP_PREINC)); ;} break; - case 124: -#line 528 "perly.y" + case 125: +#line 532 "perly.y" { yyval.opval = newUNOP(OP_PREDEC, 0, mod(scalar(yyvsp[0].opval), OP_PREDEC)); ;} break; - case 125: -#line 535 "perly.y" + case 126: +#line 539 "perly.y" { yyval.opval = newANONLIST(yyvsp[-1].opval); ;} break; - case 126: -#line 537 "perly.y" + case 127: +#line 541 "perly.y" { yyval.opval = newANONLIST(Nullop); ;} break; - case 127: -#line 539 "perly.y" + case 128: +#line 543 "perly.y" { yyval.opval = newANONHASH(yyvsp[-2].opval); ;} break; - case 128: -#line 541 "perly.y" + case 129: +#line 545 "perly.y" { yyval.opval = newANONHASH(Nullop); ;} break; - case 129: -#line 543 "perly.y" + case 130: +#line 547 "perly.y" { yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} break; - case 130: -#line 549 "perly.y" + case 131: +#line 553 "perly.y" { yyval.opval = dofile(yyvsp[0].opval); ;} break; - case 131: -#line 551 "perly.y" + case 132: +#line 555 "perly.y" { yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); ;} break; - case 132: -#line 553 "perly.y" + case 133: +#line 557 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, @@ -708,8 +714,8 @@ case 2: )),Nullop)); dep();;} break; - case 133: -#line 561 "perly.y" + case 134: +#line 565 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, append_elem(OP_LIST, @@ -720,93 +726,93 @@ case 2: )))); dep();;} break; - case 134: -#line 570 "perly.y" + case 135: +#line 574 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();;} break; - case 135: -#line 574 "perly.y" + case 136: +#line 578 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, yyvsp[-1].opval, scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();;} break; - case 140: -#line 586 "perly.y" - { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); ;} - break; - case 141: -#line 588 "perly.y" - { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); ;} +#line 590 "perly.y" + { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); ;} break; case 142: -#line 590 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 592 "perly.y" + { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); ;} break; case 143: -#line 592 "perly.y" - { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} +#line 594 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 144: -#line 594 "perly.y" - { yyval.opval = sawparens(yyvsp[-1].opval); ;} +#line 596 "perly.y" + { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} break; case 145: -#line 596 "perly.y" - { yyval.opval = sawparens(newNULLLIST()); ;} +#line 598 "perly.y" + { yyval.opval = sawparens(yyvsp[-1].opval); ;} break; case 146: -#line 598 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 600 "perly.y" + { yyval.opval = sawparens(newNULLLIST()); ;} break; case 147: -#line 600 "perly.y" +#line 602 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; case 148: -#line 602 "perly.y" +#line 604 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; case 149: -#line 604 "perly.y" +#line 606 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; case 150: -#line 606 "perly.y" - { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));;} +#line 608 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 151: -#line 608 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 610 "perly.y" + { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));;} break; case 152: -#line 610 "perly.y" - { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); ;} +#line 612 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 153: -#line 612 "perly.y" - { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); ;} +#line 614 "perly.y" + { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); ;} break; case 154: -#line 614 "perly.y" +#line 616 "perly.y" + { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); ;} + break; + + case 155: +#line 618 "perly.y" { yyval.opval = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -814,8 +820,8 @@ case 2: ref(yyvsp[-3].opval, OP_ASLICE))); ;} break; - case 155: -#line 620 "perly.y" + case 156: +#line 624 "perly.y" { yyval.opval = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -824,218 +830,218 @@ case 2: PL_expect = XOPERATOR; ;} break; - case 156: -#line 627 "perly.y" + case 157: +#line 631 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; - case 157: -#line 629 "perly.y" + case 158: +#line 633 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); ;} break; - case 158: -#line 631 "perly.y" + case 159: +#line 635 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); ;} break; - case 159: -#line 633 "perly.y" + case 160: +#line 637 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); ;} break; - case 160: -#line 636 "perly.y" + case 161: +#line 640 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;} break; - case 161: -#line 639 "perly.y" + case 162: +#line 643 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; ;} break; - case 162: -#line 642 "perly.y" + case 163: +#line 646 "perly.y" { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); ;} break; - case 163: -#line 644 "perly.y" + case 164: +#line 648 "perly.y" { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;} break; - case 164: -#line 646 "perly.y" + case 165: +#line 650 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); ;} break; - case 165: -#line 648 "perly.y" + case 166: +#line 652 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} break; - case 166: -#line 650 "perly.y" + case 167: +#line 654 "perly.y" { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} break; - case 167: -#line 652 "perly.y" + case 168: +#line 656 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;} break; - case 168: -#line 655 "perly.y" + case 169: +#line 659 "perly.y" { yyval.opval = newOP(yyvsp[0].ival, 0); ;} break; - case 169: -#line 657 "perly.y" + case 170: +#line 661 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, 0); ;} break; - case 170: -#line 659 "perly.y" + case 171: +#line 663 "perly.y" { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[0].opval)); ;} break; - case 171: -#line 662 "perly.y" + case 172: +#line 666 "perly.y" { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); ;} break; - case 172: -#line 664 "perly.y" + case 173: +#line 668 "perly.y" { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;} break; - case 173: -#line 666 "perly.y" + case 174: +#line 670 "perly.y" { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); ;} break; - case 174: -#line 668 "perly.y" + case 175: +#line 672 "perly.y" { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); ;} break; - case 177: -#line 675 "perly.y" - { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); ;} - break; - case 178: -#line 677 "perly.y" - { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} +#line 679 "perly.y" + { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); ;} break; case 179: -#line 682 "perly.y" - { yyval.opval = sawparens(yyvsp[-1].opval); ;} +#line 681 "perly.y" + { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} break; case 180: -#line 684 "perly.y" - { yyval.opval = sawparens(newNULLLIST()); ;} +#line 686 "perly.y" + { yyval.opval = sawparens(yyvsp[-1].opval); ;} break; case 181: -#line 686 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 688 "perly.y" + { yyval.opval = sawparens(newNULLLIST()); ;} break; case 182: -#line 688 "perly.y" +#line 690 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; case 183: -#line 690 "perly.y" +#line 692 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; case 184: -#line 695 "perly.y" - { yyval.opval = Nullop; ;} +#line 694 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 185: -#line 697 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 699 "perly.y" + { yyval.opval = Nullop; ;} break; case 186: #line 701 "perly.y" - { yyval.opval = Nullop; ;} + { yyval.opval = yyvsp[0].opval; ;} break; case 187: -#line 703 "perly.y" - { yyval.opval = yyvsp[0].opval; ;} +#line 705 "perly.y" + { yyval.opval = Nullop; ;} break; case 188: -#line 705 "perly.y" - { yyval.opval = yyvsp[-1].opval; ;} +#line 707 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} break; case 189: -#line 711 "perly.y" - { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); ;} +#line 709 "perly.y" + { yyval.opval = yyvsp[-1].opval; ;} break; case 190: #line 715 "perly.y" - { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); ;} + { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); ;} break; case 191: #line 719 "perly.y" - { yyval.opval = newSVREF(yyvsp[0].opval); ;} + { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); ;} break; case 192: #line 723 "perly.y" - { yyval.opval = newAVREF(yyvsp[0].opval); ;} + { yyval.opval = newSVREF(yyvsp[0].opval); ;} break; case 193: #line 727 "perly.y" - { yyval.opval = newHVREF(yyvsp[0].opval); ;} + { yyval.opval = newAVREF(yyvsp[0].opval); ;} break; case 194: #line 731 "perly.y" - { yyval.opval = newAVREF(yyvsp[0].opval); ;} + { yyval.opval = newHVREF(yyvsp[0].opval); ;} break; case 195: #line 735 "perly.y" - { yyval.opval = newGVREF(0,yyvsp[0].opval); ;} + { yyval.opval = newAVREF(yyvsp[0].opval); ;} break; case 196: -#line 740 "perly.y" - { yyval.opval = scalar(yyvsp[0].opval); ;} +#line 739 "perly.y" + { yyval.opval = newGVREF(0,yyvsp[0].opval); ;} break; case 197: -#line 742 "perly.y" - { yyval.opval = scalar(yyvsp[0].opval); ;} +#line 744 "perly.y" + { yyval.opval = scalar(yyvsp[0].opval); ;} break; case 198: -#line 744 "perly.y" - { yyval.opval = scope(yyvsp[0].opval); ;} +#line 746 "perly.y" + { yyval.opval = scalar(yyvsp[0].opval); ;} break; case 199: -#line 747 "perly.y" +#line 748 "perly.y" + { yyval.opval = scope(yyvsp[0].opval); ;} + break; + + case 200: +#line 751 "perly.y" { yyval.opval = yyvsp[0].opval; ;} break; diff --git a/perly.tab b/perly.tab index 4380332..d26cc2c 100644 --- a/perly.tab +++ b/perly.tab @@ -1,15 +1,15 @@ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2088 +#define YYLAST 2062 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 85 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 61 +#define YYNNTS 62 /* YYNRULES -- Number of rules. */ -#define YYNRULES 199 +#define YYNRULES 200 /* YYNRULES -- Number of states. */ -#define YYNSTATES 399 +#define YYNSTATES 400 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -62,125 +62,128 @@ static const unsigned char yytranslate[] = static const unsigned short yyprhs[] = { 0, 0, 3, 6, 11, 12, 13, 18, 19, 20, - 23, 26, 29, 31, 34, 38, 40, 42, 46, 50, - 54, 58, 62, 63, 66, 73, 81, 89, 90, 93, - 102, 111, 122, 132, 141, 153, 157, 158, 160, 161, - 163, 165, 167, 169, 171, 173, 174, 176, 178, 180, - 182, 184, 186, 191, 193, 194, 201, 208, 209, 210, - 211, 213, 214, 216, 217, 220, 222, 225, 227, 229, - 231, 235, 236, 244, 248, 252, 256, 258, 261, 265, - 267, 271, 277, 284, 288, 292, 298, 301, 306, 307, - 313, 315, 317, 323, 328, 334, 339, 345, 352, 358, - 363, 369, 374, 378, 382, 386, 390, 394, 398, 402, - 406, 410, 414, 418, 422, 426, 430, 434, 437, 440, - 443, 446, 449, 452, 455, 458, 462, 465, 470, 474, - 480, 483, 486, 491, 497, 502, 508, 510, 512, 514, - 516, 522, 525, 527, 530, 534, 537, 539, 541, 543, - 545, 547, 549, 556, 562, 567, 573, 575, 577, 581, - 586, 590, 592, 595, 598, 600, 603, 606, 609, 611, - 615, 617, 621, 626, 631, 638, 640, 642, 646, 649, - 653, 656, 658, 660, 662, 663, 665, 666, 668, 671, - 673, 676, 679, 682, 685, 688, 691, 693, 695, 697 + 21, 24, 28, 31, 33, 36, 40, 42, 44, 48, + 52, 56, 60, 64, 65, 68, 75, 83, 91, 92, + 95, 104, 113, 124, 134, 143, 155, 159, 160, 162, + 163, 165, 167, 169, 171, 173, 175, 176, 178, 180, + 182, 184, 186, 188, 193, 195, 196, 203, 210, 211, + 212, 213, 215, 216, 218, 219, 222, 224, 227, 229, + 231, 233, 237, 238, 246, 250, 254, 258, 260, 263, + 267, 269, 273, 279, 286, 290, 294, 300, 303, 308, + 309, 315, 317, 319, 325, 330, 336, 341, 347, 354, + 360, 365, 371, 376, 380, 384, 388, 392, 396, 400, + 404, 408, 412, 416, 420, 424, 428, 432, 436, 439, + 442, 445, 448, 451, 454, 457, 460, 464, 467, 472, + 476, 482, 485, 488, 493, 499, 504, 510, 512, 514, + 516, 518, 524, 527, 529, 532, 536, 539, 541, 543, + 545, 547, 549, 551, 558, 564, 569, 575, 577, 579, + 583, 588, 592, 594, 597, 600, 602, 605, 608, 611, + 613, 617, 619, 623, 628, 633, 640, 642, 644, 648, + 651, 655, 658, 660, 662, 664, 665, 667, 668, 670, + 673, 675, 678, 681, 684, 687, 690, 693, 695, 697, + 699 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short yyrhs[] = { - 86, 0, -1, 89, 92, -1, 3, 88, 92, 76, - -1, -1, -1, 3, 91, 92, 76, -1, -1, -1, - 92, 107, -1, 92, 93, -1, 106, 96, -1, 98, - -1, 106, 77, -1, 106, 94, 77, -1, 1, -1, - 123, -1, 123, 21, 123, -1, 123, 22, 123, -1, - 123, 19, 123, -1, 123, 20, 101, -1, 123, 26, - 123, -1, -1, 23, 90, -1, 24, 74, 102, 73, - 90, 95, -1, 21, 74, 88, 102, 73, 90, 95, - -1, 22, 74, 88, 105, 73, 90, 95, -1, -1, - 25, 87, -1, 106, 19, 74, 88, 104, 73, 90, - 97, -1, 106, 20, 74, 88, 105, 73, 90, 97, - -1, 106, 26, 43, 88, 138, 74, 102, 73, 90, - 97, -1, 106, 26, 140, 74, 88, 102, 73, 90, - 97, -1, 106, 26, 74, 88, 102, 73, 90, 97, - -1, 106, 26, 74, 88, 103, 77, 104, 77, 103, - 73, 90, -1, 106, 87, 97, -1, -1, 94, -1, - -1, 123, -1, 123, -1, 123, -1, 99, -1, 100, - -1, 101, -1, -1, 13, -1, 108, -1, 111, -1, - 110, -1, 120, -1, 121, -1, 14, 114, 109, 87, - -1, 4, -1, -1, 44, 112, 115, 116, 117, 119, - -1, 15, 112, 115, 116, 117, 119, -1, -1, -1, - -1, 4, -1, -1, 7, -1, -1, 45, 7, -1, - 45, -1, 45, 7, -1, 45, -1, 87, -1, 77, - -1, 17, 4, 77, -1, -1, 18, 112, 122, 4, - 4, 136, 77, -1, 123, 50, 123, -1, 123, 49, - 123, -1, 123, 48, 123, -1, 124, -1, 124, 52, - -1, 124, 52, 133, -1, 133, -1, 33, 145, 124, - -1, 31, 74, 145, 123, 73, -1, 133, 72, 127, - 74, 137, 73, -1, 133, 72, 127, -1, 5, 145, - 136, -1, 6, 145, 74, 137, 73, -1, 33, 136, - -1, 31, 74, 137, 73, -1, -1, 12, 113, 87, - 126, 136, -1, 5, -1, 140, -1, 144, 3, 123, - 77, 76, -1, 140, 75, 123, 78, -1, 133, 72, - 75, 123, 78, -1, 128, 75, 123, 78, -1, 140, - 3, 123, 77, 76, -1, 133, 72, 3, 123, 77, - 76, -1, 128, 3, 123, 77, 76, -1, 133, 72, - 74, 73, -1, 133, 72, 74, 123, 73, -1, 128, - 74, 123, 73, -1, 128, 74, 73, -1, 133, 53, - 133, -1, 133, 67, 133, -1, 133, 36, 133, -1, - 133, 37, 133, -1, 133, 61, 133, -1, 133, 34, - 133, -1, 133, 35, 133, -1, 133, 60, 133, -1, - 133, 59, 133, -1, 133, 28, 133, -1, 133, 58, - 133, -1, 133, 57, 133, -1, 133, 56, 133, -1, - 133, 62, 133, -1, 79, 133, -1, 80, 133, -1, - 63, 133, -1, 64, 133, -1, 133, 69, -1, 133, - 68, -1, 71, 133, -1, 70, 133, -1, 75, 123, - 78, -1, 75, 78, -1, 40, 123, 77, 76, -1, - 40, 77, 76, -1, 16, 113, 116, 117, 87, -1, - 39, 133, -1, 39, 87, -1, 39, 4, 74, 73, - -1, 39, 4, 74, 123, 73, -1, 39, 140, 74, - 73, -1, 39, 140, 74, 123, 73, -1, 129, -1, - 130, -1, 131, -1, 132, -1, 133, 54, 133, 55, - 133, -1, 65, 133, -1, 134, -1, 42, 133, -1, - 74, 123, 73, -1, 74, 73, -1, 140, -1, 144, - -1, 142, -1, 141, -1, 143, -1, 128, -1, 74, - 123, 73, 75, 123, 78, -1, 74, 73, 75, 123, - 78, -1, 141, 75, 123, 78, -1, 141, 3, 123, - 77, 76, -1, 7, -1, 139, -1, 139, 74, 73, - -1, 139, 74, 123, 73, -1, 41, 4, 136, -1, - 27, -1, 27, 133, -1, 51, 124, -1, 32, -1, - 32, 87, -1, 32, 133, -1, 11, 133, -1, 29, - -1, 29, 74, 73, -1, 10, -1, 30, 74, 73, - -1, 30, 74, 123, 73, -1, 8, 74, 133, 73, - -1, 8, 74, 133, 52, 133, 73, -1, 4, -1, - 125, -1, 43, 135, 118, -1, 43, 135, -1, 74, - 123, 73, -1, 74, 73, -1, 140, -1, 142, -1, - 141, -1, -1, 124, -1, -1, 123, -1, 123, 52, - -1, 140, -1, 46, 145, -1, 81, 145, -1, 82, - 145, -1, 83, 145, -1, 38, 145, -1, 84, 145, - -1, 4, -1, 140, -1, 87, -1, 9, -1 + 86, 0, -1, 89, 93, -1, 3, 88, 93, 76, + -1, -1, -1, 3, 91, 93, 76, -1, -1, -1, + -1, 93, 108, -1, 93, 92, 94, -1, 107, 97, + -1, 99, -1, 107, 77, -1, 107, 95, 77, -1, + 1, -1, 124, -1, 124, 21, 124, -1, 124, 22, + 124, -1, 124, 19, 124, -1, 124, 20, 102, -1, + 124, 26, 124, -1, -1, 23, 90, -1, 24, 74, + 103, 73, 90, 96, -1, 21, 74, 88, 103, 73, + 90, 96, -1, 22, 74, 88, 106, 73, 90, 96, + -1, -1, 25, 87, -1, 107, 19, 74, 88, 105, + 73, 90, 98, -1, 107, 20, 74, 88, 106, 73, + 90, 98, -1, 107, 26, 43, 88, 139, 74, 103, + 73, 90, 98, -1, 107, 26, 141, 74, 88, 103, + 73, 90, 98, -1, 107, 26, 74, 88, 103, 73, + 90, 98, -1, 107, 26, 74, 88, 104, 77, 105, + 77, 104, 73, 90, -1, 107, 87, 98, -1, -1, + 95, -1, -1, 124, -1, 124, -1, 124, -1, 100, + -1, 101, -1, 102, -1, -1, 13, -1, 109, -1, + 112, -1, 111, -1, 121, -1, 122, -1, 14, 115, + 110, 87, -1, 4, -1, -1, 44, 113, 116, 117, + 118, 120, -1, 15, 113, 116, 117, 118, 120, -1, + -1, -1, -1, 4, -1, -1, 7, -1, -1, 45, + 7, -1, 45, -1, 45, 7, -1, 45, -1, 87, + -1, 77, -1, 17, 4, 77, -1, -1, 18, 113, + 123, 4, 4, 137, 77, -1, 124, 50, 124, -1, + 124, 49, 124, -1, 124, 48, 124, -1, 125, -1, + 125, 52, -1, 125, 52, 134, -1, 134, -1, 33, + 146, 125, -1, 31, 74, 146, 124, 73, -1, 134, + 72, 128, 74, 138, 73, -1, 134, 72, 128, -1, + 5, 146, 137, -1, 6, 146, 74, 138, 73, -1, + 33, 137, -1, 31, 74, 138, 73, -1, -1, 12, + 114, 87, 127, 137, -1, 5, -1, 141, -1, 145, + 3, 124, 77, 76, -1, 141, 75, 124, 78, -1, + 134, 72, 75, 124, 78, -1, 129, 75, 124, 78, + -1, 141, 3, 124, 77, 76, -1, 134, 72, 3, + 124, 77, 76, -1, 129, 3, 124, 77, 76, -1, + 134, 72, 74, 73, -1, 134, 72, 74, 124, 73, + -1, 129, 74, 124, 73, -1, 129, 74, 73, -1, + 134, 53, 134, -1, 134, 67, 134, -1, 134, 36, + 134, -1, 134, 37, 134, -1, 134, 61, 134, -1, + 134, 34, 134, -1, 134, 35, 134, -1, 134, 60, + 134, -1, 134, 59, 134, -1, 134, 28, 134, -1, + 134, 58, 134, -1, 134, 57, 134, -1, 134, 56, + 134, -1, 134, 62, 134, -1, 79, 134, -1, 80, + 134, -1, 63, 134, -1, 64, 134, -1, 134, 69, + -1, 134, 68, -1, 71, 134, -1, 70, 134, -1, + 75, 124, 78, -1, 75, 78, -1, 40, 124, 77, + 76, -1, 40, 77, 76, -1, 16, 114, 117, 118, + 87, -1, 39, 134, -1, 39, 87, -1, 39, 4, + 74, 73, -1, 39, 4, 74, 124, 73, -1, 39, + 141, 74, 73, -1, 39, 141, 74, 124, 73, -1, + 130, -1, 131, -1, 132, -1, 133, -1, 134, 54, + 134, 55, 134, -1, 65, 134, -1, 135, -1, 42, + 134, -1, 74, 124, 73, -1, 74, 73, -1, 141, + -1, 145, -1, 143, -1, 142, -1, 144, -1, 129, + -1, 74, 124, 73, 75, 124, 78, -1, 74, 73, + 75, 124, 78, -1, 142, 75, 124, 78, -1, 142, + 3, 124, 77, 76, -1, 7, -1, 140, -1, 140, + 74, 73, -1, 140, 74, 124, 73, -1, 41, 4, + 137, -1, 27, -1, 27, 134, -1, 51, 125, -1, + 32, -1, 32, 87, -1, 32, 134, -1, 11, 134, + -1, 29, -1, 29, 74, 73, -1, 10, -1, 30, + 74, 73, -1, 30, 74, 124, 73, -1, 8, 74, + 134, 73, -1, 8, 74, 134, 52, 134, 73, -1, + 4, -1, 126, -1, 43, 136, 119, -1, 43, 136, + -1, 74, 124, 73, -1, 74, 73, -1, 141, -1, + 143, -1, 142, -1, -1, 125, -1, -1, 124, -1, + 124, 52, -1, 141, -1, 46, 146, -1, 81, 146, + -1, 82, 146, -1, 83, 146, -1, 38, 146, -1, + 84, 146, -1, 4, -1, 141, -1, 87, -1, 9, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 86, 86, 92, 99, 103, 109, 116, 121, 122, - 124, 132, 134, 135, 144, 150, 152, 154, 156, 158, - 160, 162, 169, 170, 172, 179, 183, 191, 192, 197, - 203, 209, 212, 216, 219, 235, 243, 244, 249, 250, - 254, 259, 263, 267, 271, 277, 278, 282, 284, 286, - 288, 290, 294, 298, 299, 303, 308, 313, 317, 321, - 325, 334, 335, 340, 341, 343, 348, 350, 355, 356, - 359, 364, 363, 370, 372, 374, 376, 380, 382, 384, - 388, 391, 394, 399, 403, 408, 413, 415, 418, 417, - 426, 427, 431, 436, 438, 442, 446, 449, 454, 459, - 462, 467, 471, 477, 479, 481, 485, 487, 489, 491, - 493, 495, 497, 499, 501, 503, 505, 510, 512, 514, - 516, 518, 521, 524, 527, 534, 536, 538, 540, 542, - 548, 550, 552, 560, 569, 573, 581, 582, 583, 584, - 585, 587, 589, 591, 593, 595, 597, 599, 601, 603, - 605, 607, 609, 611, 613, 619, 626, 628, 630, 632, - 635, 638, 641, 643, 645, 647, 649, 651, 654, 656, - 658, 661, 663, 665, 667, 669, 670, 674, 676, 681, - 683, 685, 687, 689, 694, 696, 701, 702, 704, 710, - 714, 718, 722, 726, 730, 734, 739, 741, 743, 746 + 0, 86, 86, 92, 99, 103, 109, 116, 120, 124, + 125, 127, 136, 138, 139, 148, 154, 156, 158, 160, + 162, 164, 166, 173, 174, 176, 183, 187, 195, 196, + 201, 207, 213, 216, 220, 223, 239, 247, 248, 253, + 254, 258, 263, 267, 271, 275, 281, 282, 286, 288, + 290, 292, 294, 298, 302, 303, 307, 312, 317, 321, + 325, 329, 338, 339, 344, 345, 347, 352, 354, 359, + 360, 363, 368, 367, 374, 376, 378, 380, 384, 386, + 388, 392, 395, 398, 403, 407, 412, 417, 419, 422, + 421, 430, 431, 435, 440, 442, 446, 450, 453, 458, + 463, 466, 471, 475, 481, 483, 485, 489, 491, 493, + 495, 497, 499, 501, 503, 505, 507, 509, 514, 516, + 518, 520, 522, 525, 528, 531, 538, 540, 542, 544, + 546, 552, 554, 556, 564, 573, 577, 585, 586, 587, + 588, 589, 591, 593, 595, 597, 599, 601, 603, 605, + 607, 609, 611, 613, 615, 617, 623, 630, 632, 634, + 636, 639, 642, 645, 647, 649, 651, 653, 655, 658, + 660, 662, 665, 667, 669, 671, 673, 674, 678, 680, + 685, 687, 689, 691, 693, 698, 700, 705, 706, 708, + 714, 718, 722, 726, 730, 734, 738, 743, 745, 747, + 750 }; #endif @@ -201,8 +204,8 @@ static const char *const yytname[] = "POWOP", "POSTDEC", "POSTINC", "PREDEC", "PREINC", "ARROW", "')'", "'('", "'['", "'}'", "';'", "']'", "'-'", "'+'", "'$'", "'@'", "'%'", "'*'", "$accept", "prog", "block", "remember", "progstart", "mblock", - "mremember", "lineseq", "line", "sideff", "else", "cond", "cont", - "loop", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "mtexpr", + "mremember", "savescope", "lineseq", "line", "sideff", "else", "cond", + "cont", "loop", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "mtexpr", "miexpr", "label", "decl", "format", "formname", "mysubrout", "subrout", "startsub", "startanonsub", "startformsub", "subname", "proto", "subattrlist", "myattrlist", "subbody", "package", "use", "@1", "expr", @@ -233,51 +236,53 @@ static const unsigned short yytoknum[] = /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 85, 86, 87, 88, 89, 90, 91, 92, 92, - 92, 93, 93, 93, 93, 94, 94, 94, 94, 94, - 94, 94, 95, 95, 95, 96, 96, 97, 97, 98, - 98, 98, 98, 98, 98, 98, 99, 99, 100, 100, - 101, 102, 103, 104, 105, 106, 106, 107, 107, 107, - 107, 107, 108, 109, 109, 110, 111, 112, 113, 114, - 115, 116, 116, 117, 117, 117, 118, 118, 119, 119, - 120, 122, 121, 123, 123, 123, 123, 124, 124, 124, - 125, 125, 125, 125, 125, 125, 125, 125, 126, 125, - 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 130, 130, 130, - 130, 130, 130, 130, 130, 131, 131, 131, 131, 131, - 132, 132, 132, 132, 132, 132, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 134, 134, 135, - 135, 135, 135, 135, 136, 136, 137, 137, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 145, 145, 145 + 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 93, 93, 94, 94, 94, 94, 95, 95, 95, 95, + 95, 95, 95, 96, 96, 96, 97, 97, 98, 98, + 99, 99, 99, 99, 99, 99, 99, 100, 100, 101, + 101, 102, 103, 104, 105, 106, 107, 107, 108, 108, + 108, 108, 108, 109, 110, 110, 111, 112, 113, 114, + 115, 116, 117, 117, 118, 118, 118, 119, 119, 120, + 120, 121, 123, 122, 124, 124, 124, 124, 125, 125, + 125, 126, 126, 126, 126, 126, 126, 126, 126, 127, + 126, 128, 128, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 131, 131, + 131, 131, 131, 131, 131, 131, 132, 132, 132, 132, + 132, 133, 133, 133, 133, 133, 133, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, + 136, 136, 136, 136, 136, 137, 137, 138, 138, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 146, 146, + 146 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const unsigned char yyr2[] = { - 0, 2, 2, 4, 0, 0, 4, 0, 0, 2, - 2, 2, 1, 2, 3, 1, 1, 3, 3, 3, - 3, 3, 0, 2, 6, 7, 7, 0, 2, 8, - 8, 10, 9, 8, 11, 3, 0, 1, 0, 1, - 1, 1, 1, 1, 1, 0, 1, 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, 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, 6, 5, 4, 5, 1, 1, 3, 4, - 3, 1, 2, 2, 1, 2, 2, 2, 1, 3, - 1, 3, 4, 4, 6, 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 + 0, 2, 2, 4, 0, 0, 4, 0, 0, 0, + 2, 3, 2, 1, 2, 3, 1, 1, 3, 3, + 3, 3, 3, 0, 2, 6, 7, 7, 0, 2, + 8, 8, 10, 9, 8, 11, 3, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 0, 1, 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, 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, 6, 5, 4, 5, 1, 1, 3, + 4, 3, 1, 2, 2, 1, 2, 2, 2, 1, + 3, 1, 3, 4, 4, 6, 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 @@ -285,436 +290,441 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned char yydefact[] = { - 5, 0, 8, 1, 45, 46, 59, 57, 0, 57, - 57, 10, 12, 0, 9, 47, 49, 48, 50, 51, - 54, 0, 0, 71, 0, 15, 4, 175, 0, 0, - 156, 0, 170, 0, 58, 58, 0, 0, 0, 0, - 0, 161, 168, 0, 0, 164, 184, 0, 0, 0, + 5, 0, 9, 1, 8, 60, 58, 0, 58, 58, + 46, 10, 48, 50, 49, 51, 52, 55, 0, 0, + 72, 0, 47, 11, 13, 0, 54, 0, 61, 62, + 71, 0, 62, 16, 4, 176, 0, 0, 157, 0, + 171, 0, 59, 59, 0, 0, 0, 0, 0, 162, + 169, 0, 0, 165, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 0, 0, 0, 0, 0, 0, 27, - 0, 11, 16, 76, 176, 151, 136, 137, 138, 139, - 79, 142, 157, 146, 149, 148, 150, 147, 53, 0, - 60, 61, 70, 0, 61, 8, 196, 199, 198, 197, - 184, 0, 0, 167, 0, 61, 4, 4, 4, 4, - 4, 4, 0, 162, 0, 0, 186, 165, 166, 196, - 185, 86, 197, 0, 194, 175, 131, 130, 146, 0, - 0, 184, 143, 0, 178, 181, 183, 182, 190, 163, - 119, 120, 141, 124, 123, 145, 0, 126, 0, 117, - 118, 191, 192, 193, 195, 0, 35, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, + 14, 0, 0, 0, 0, 0, 0, 28, 0, 12, + 17, 77, 177, 152, 137, 138, 139, 140, 80, 143, + 158, 147, 150, 149, 151, 148, 53, 63, 64, 0, + 64, 9, 197, 200, 199, 198, 185, 0, 0, 168, + 0, 62, 4, 4, 4, 4, 4, 4, 0, 163, + 0, 0, 187, 166, 167, 197, 186, 87, 198, 0, + 195, 176, 132, 131, 147, 0, 0, 185, 144, 0, + 179, 182, 184, 183, 191, 164, 120, 121, 142, 125, + 124, 146, 0, 127, 0, 118, 119, 192, 193, 194, + 196, 0, 36, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 122, 121, 0, 0, 0, - 0, 0, 0, 0, 52, 62, 63, 0, 63, 45, - 84, 186, 0, 88, 63, 38, 0, 0, 0, 0, - 0, 4, 169, 171, 0, 187, 0, 0, 80, 0, - 0, 128, 0, 160, 180, 0, 67, 177, 0, 144, - 125, 28, 19, 20, 40, 17, 18, 21, 75, 74, - 73, 78, 0, 102, 0, 0, 112, 108, 109, 105, - 106, 103, 0, 115, 114, 113, 111, 110, 107, 116, - 104, 0, 90, 0, 0, 83, 91, 158, 0, 0, - 0, 0, 0, 0, 65, 0, 184, 0, 3, 0, - 0, 173, 184, 0, 43, 0, 39, 44, 0, 0, - 41, 0, 0, 189, 37, 42, 0, 0, 16, 0, - 172, 188, 87, 0, 132, 0, 134, 0, 127, 179, - 66, 0, 0, 0, 101, 95, 0, 0, 99, 0, - 0, 186, 159, 0, 93, 0, 154, 0, 64, 69, - 68, 56, 0, 55, 85, 0, 89, 129, 0, 0, - 0, 0, 0, 0, 38, 0, 81, 133, 135, 153, - 0, 98, 140, 0, 100, 94, 0, 96, 155, 92, - 72, 174, 7, 27, 27, 22, 22, 0, 27, 0, - 0, 152, 97, 82, 8, 29, 30, 0, 0, 25, - 26, 0, 33, 0, 27, 45, 23, 0, 27, 0, - 32, 6, 0, 31, 0, 0, 34, 22, 24 + 0, 123, 122, 0, 0, 0, 0, 0, 0, 0, + 66, 0, 185, 0, 8, 85, 187, 0, 89, 64, + 39, 0, 0, 0, 0, 0, 4, 170, 172, 0, + 188, 0, 0, 81, 0, 0, 129, 0, 161, 181, + 0, 68, 178, 0, 145, 126, 29, 20, 21, 41, + 18, 19, 22, 76, 75, 74, 79, 0, 103, 0, + 0, 113, 109, 110, 106, 107, 104, 0, 116, 115, + 114, 112, 111, 108, 117, 105, 0, 91, 0, 0, + 84, 92, 159, 0, 0, 0, 0, 0, 0, 65, + 70, 69, 57, 0, 56, 3, 0, 0, 174, 185, + 0, 44, 0, 40, 45, 0, 0, 42, 0, 0, + 190, 38, 43, 0, 0, 17, 0, 173, 189, 88, + 0, 133, 0, 135, 0, 128, 180, 67, 0, 0, + 0, 102, 96, 0, 0, 100, 0, 0, 187, 160, + 0, 94, 0, 155, 0, 73, 86, 0, 90, 130, + 0, 0, 0, 0, 0, 0, 39, 0, 82, 134, + 136, 154, 0, 99, 141, 0, 101, 95, 0, 97, + 156, 93, 175, 7, 28, 28, 23, 23, 0, 28, + 0, 0, 153, 98, 83, 9, 30, 31, 0, 0, + 26, 27, 0, 34, 0, 28, 8, 24, 0, 28, + 0, 33, 6, 0, 32, 0, 0, 35, 23, 25 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - -1, 1, 98, 95, 2, 363, 374, 4, 11, 294, - 379, 71, 156, 12, 295, 284, 287, 289, 297, 285, - 288, 13, 14, 15, 89, 16, 17, 21, 104, 20, - 91, 196, 275, 227, 331, 18, 19, 93, 290, 73, - 74, 282, 265, 75, 76, 77, 78, 79, 80, 81, - 134, 121, 216, 292, 82, 83, 84, 85, 86, 87, - 100 + -1, 1, 104, 101, 2, 364, 375, 10, 4, 23, + 301, 380, 79, 162, 24, 302, 291, 294, 296, 304, + 292, 295, 25, 11, 12, 27, 13, 14, 18, 110, + 17, 29, 98, 201, 232, 282, 15, 16, 31, 297, + 81, 82, 289, 270, 83, 84, 85, 86, 87, 88, + 89, 140, 127, 221, 299, 90, 91, 92, 93, 94, + 95, 106 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -337 +#define YYPACT_NINF -359 static const short yypact[] = { - -337, 18, -337, -337, 244, -337, -337, -337, 31, -337, - -337, -337, -337, 314, -337, -337, -337, -337, -337, -337, - 50, 56, -14, -337, 56, -337, -337, -337, 49, 49, - -337, -7, -337, 1619, -337, -337, 10, 25, 47, 53, - -19, 1619, 55, 60, 61, 646, 564, 49, 728, 809, - 138, 1619, -17, 49, 1619, 1619, 1619, 1619, 1619, 1619, - 890, 971, -337, 1619, 1619, 49, 49, 49, 49, 118, - 76, -337, 611, 35, -337, 11, -337, -337, -337, -337, - 1917, -337, 92, 23, 26, -337, -337, 170, -337, 171, - -337, 174, -337, 181, 174, -337, -337, -337, -337, -337, - 1619, 112, 1619, 795, 171, 174, -337, -337, -337, -337, - -337, -337, 116, 1917, 123, 1052, 564, -337, 795, 1745, - 35, -337, 1685, 1619, -337, 117, -337, 795, 22, 125, - 83, 1619, 795, 1133, 153, -337, -337, -337, -337, 35, - 344, 344, 344, 40, 40, 124, 197, -337, -4, 344, - 344, -337, -337, -337, -337, 171, -337, -337, 1619, 1619, - 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1214, 1619, - 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, - 1619, 1619, 1619, 1619, 1619, -337, -337, 14, 1295, 1619, - 1619, 1619, 1619, 1619, -337, -337, 157, 201, 157, 62, - -337, 1619, 1791, -337, 157, 1619, 1619, 1619, 1619, 130, - 398, -337, -337, -337, 219, 447, 139, 1619, 35, 1376, - 1457, -337, 140, -337, -337, 301, 207, -337, 1619, 142, - -337, -337, 332, -337, 332, 332, 332, 332, 173, 173, - -337, 1917, 261, -337, 319, 33, 2001, 714, 550, 141, - 229, 1917, 1875, 2016, 2016, 386, 469, 632, 217, 344, - 344, 1619, -337, 1538, 1619, 147, -337, -337, 369, 313, - 91, 323, 109, 500, 220, 13, 1619, 13, -337, 151, - 1619, -337, 1619, 171, -337, 155, 332, -337, 179, 182, - 332, 190, 209, -337, -337, -337, 198, 213, 256, 1619, - -337, -337, -337, 384, -337, 510, -337, 540, -337, -337, - -337, 122, 1619, 224, -337, -337, 1619, 664, -337, 551, - 245, 1619, -337, 226, -337, 227, -337, 231, -337, -337, - -337, -337, 239, -337, -337, 1833, -337, -337, 324, 324, - 324, 324, 1619, 324, 1619, 255, -337, -337, -337, -337, - 264, -337, 1959, 272, -337, -337, 259, -337, -337, -337, - -337, -337, -337, 118, 118, 101, 101, 285, 118, 260, - 324, -337, -337, -337, -337, -337, -337, 324, 290, -337, - -337, 324, -337, 482, 118, 150, -337, 1619, 118, 286, - -337, -337, 293, -337, 324, 324, -337, 101, -337 + -359, 23, -359, -359, 192, -359, -359, 22, -359, -359, + 16, -359, -359, -359, -359, -359, -359, 27, 50, -39, + -359, 50, -359, -359, -359, 303, -359, 59, -359, 64, + -359, 70, 64, -359, -359, -359, 9, 9, -359, 5, + -359, 1608, -359, -359, 38, 44, 52, 54, 10, 1608, + 63, 78, 79, 635, 553, 9, 717, 798, 151, 1608, + -6, 9, 1608, 1608, 1608, 1608, 1608, 1608, 879, 960, + -359, 1608, 1608, 9, 9, 9, 9, 99, 88, -359, + 600, 114, -359, 19, -359, -359, -359, -359, 1906, -359, + 105, 7, 14, -359, -359, 179, -359, -359, 144, 189, + 144, -359, -359, -359, -359, -359, 1608, 122, 1608, 784, + 59, 64, -359, -359, -359, -359, -359, -359, 129, 1906, + 157, 1041, 553, -359, 784, 1734, 114, -359, 1674, 1608, + -359, 160, -359, 784, 34, 161, -14, 1608, 784, 1122, + 194, -359, -359, -359, -359, 114, 89, 89, 89, -48, + -48, 165, 290, -359, 86, 89, 89, -359, -359, -359, + -359, 59, -359, -359, 1608, 1608, 1608, 1608, 1608, 1608, + 1608, 1608, 1608, 1608, 1203, 1608, 1608, 1608, 1608, 1608, + 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, + 1608, -359, -359, 120, 1284, 1608, 1608, 1608, 1608, 1608, + 238, 4, 1608, 4, 55, -359, 1608, 1780, -359, 144, + 1608, 1608, 1608, 1608, 170, 387, -359, -359, -359, 308, + 268, 173, 1608, 114, 1365, 1446, -359, 176, -359, -359, + 358, 246, -359, 1608, 184, -359, -359, -34, -359, -34, + -34, -34, -34, 210, 210, -359, 1906, 127, -359, 373, + 164, 1990, 703, 539, 864, 230, 1906, 1864, 221, 221, + 375, 458, 621, 830, 89, 89, 1608, -359, 1527, 1608, + 191, -359, -359, 540, 214, 322, 302, 406, 653, -359, + -359, -359, -359, 193, -359, -359, 196, 1608, -359, 1608, + 59, -359, 198, -34, -359, 200, 201, -34, 211, 213, + -359, -359, -359, 222, 219, 228, 1608, -359, -359, -359, + 622, -359, 663, -359, 693, -359, -359, -359, 489, 1608, + 224, -359, -359, 1608, 735, -359, 704, 499, 1608, -359, + 229, -359, 236, -359, 251, -359, -359, 1822, -359, -359, + 325, 325, 325, 325, 1608, 325, 1608, 258, -359, -359, + -359, -359, 581, -359, 1948, 261, -359, -359, 274, -359, + -359, -359, -359, -359, 99, 99, 18, 18, 275, 99, + 276, 325, -359, -359, -359, -359, -359, -359, 325, 281, + -359, -359, 325, -359, 471, 99, 115, -359, 1608, 99, + 287, -359, -359, 288, -359, 325, 325, -359, 18, -359 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -337, -337, -11, -98, -337, -121, -337, -94, -337, 363, - -336, -337, 574, -337, -337, -337, 228, -205, 0, 42, - 193, -337, -337, -337, -337, -337, -337, 63, 372, -337, - 391, -74, -165, -337, 149, -337, -337, -337, -13, 5, - -337, -337, -337, -337, -337, -337, -337, -337, 59, -337, - -337, -93, -195, -337, -337, -25, 383, 399, -337, -337, - 3 + -359, -359, -23, -56, -359, -110, -359, -359, -100, -359, + 339, -358, -359, -202, -359, -359, -359, 204, -190, -19, + 29, 163, -359, -359, -359, -359, -359, -359, 40, 346, + -359, 369, -26, -92, -359, 199, -359, -359, -359, -25, + -51, -359, -359, -359, -359, -359, -359, -359, -359, 39, + -359, -359, -87, -201, -359, -359, -9, 336, 341, -359, + -359, 46 }; /* 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 -176 +#define YYTABLE_NINF -177 static const short yytable[] = { - 72, 199, 69, 99, 99, 296, 279, 200, 205, 206, - 207, 208, 209, 210, 167, 112, 26, 261, 3, 262, - 198, 122, 99, 128, 110, 189, 189, 135, 99, 191, - 380, 204, 101, 277, 117, 22, 130, 126, 223, 283, - 99, 99, 99, 99, 163, 164, 165, 146, 148, 123, - 124, 120, 26, 96, 88, 111, 138, 133, 97, 139, - 90, 398, 65, 92, 65, 66, 67, 102, 151, 152, - 153, 154, 23, 24, 230, 5, 6, 7, 194, 8, - 9, 163, 164, 165, 106, 168, 169, 166, 263, 264, - 329, 122, 103, 203, 345, 65, 220, 190, 190, 107, - 113, 192, 214, 215, 118, 120, 10, 127, -176, -176, - 132, 315, 187, 299, 140, 141, 142, 143, 144, 217, - 225, 108, 149, 150, 377, 378, 356, 109, 218, 114, - 65, 163, 164, 165, 115, 116, 120, 367, 278, 163, - 164, 165, 131, 155, 231, 232, 234, 235, 236, 237, - 238, 239, 240, 157, 242, 244, 245, 163, 164, 165, - 222, 202, 266, 5, 6, 7, 188, 8, 9, 324, - 163, 164, 165, 193, 26, 268, 269, 270, 271, 272, - 273, 195, 392, 332, 293, 197, 201, 326, 215, 336, - 211, 219, 286, 234, 10, 234, 212, 298, 226, 228, - 349, 221, 274, 183, 303, 276, 305, 307, 184, 185, - 186, 65, 302, 187, 310, 311, 308, 312, 364, 365, - 366, 321, 368, 165, 334, 241, 391, 328, 338, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, -2, 163, 164, 165, 317, 384, - 319, 320, 339, 173, 174, 340, 386, 5, 6, 7, - 388, 8, 9, 341, 330, 173, 330, 163, 164, 165, - 229, 343, 337, 396, 397, 158, 159, 160, 161, 183, - 385, 120, 162, 342, 184, 185, 186, 120, 10, 187, - 344, 183, 300, 163, 164, 165, 184, 185, 186, 350, - 351, 187, 357, 358, 163, 164, 165, 359, 215, 163, - 164, 165, 163, 164, 165, 25, 360, 26, 27, 28, - 29, 30, 31, 355, 32, 33, 34, 362, 370, -41, - 35, 286, 373, 36, 37, 38, 39, 383, 313, 335, - 40, 41, 371, 42, 43, 44, 45, 46, 372, 163, - 164, 165, 47, 48, 49, 50, 51, 52, 381, 394, - 53, 163, 164, 165, 387, 54, 395, 163, 164, 165, - 72, 163, 164, 165, 309, 352, 70, 55, 56, 57, - 163, 164, 165, 389, 58, 59, 369, 233, 60, 61, - 323, 62, 314, 63, 64, 65, 66, 67, 68, 25, - 325, 291, 27, 28, 29, 30, 31, 105, 32, 33, - 34, 184, 185, 186, 35, 94, 187, 163, 164, 165, - 171, 172, 173, 174, 0, 41, 333, 42, 43, 44, - 45, 46, 163, 164, 165, 136, 47, 48, 49, 50, - 51, 52, 322, 0, 53, 180, 181, 182, 183, 54, - 0, 137, 0, 184, 185, 186, 0, 346, 187, 0, - 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, - 0, 0, 60, 61, 0, -36, 0, 63, 64, 65, - 66, 67, 68, 25, 0, 0, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 163, 164, 165, 35, 301, - 0, 0, 0, 171, 172, 173, 174, 0, 0, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 0, 53, 181, - 182, 183, 0, 54, 0, 0, 184, 185, 186, 0, - 0, 187, 0, 0, 0, 55, 56, 57, 163, 164, - 165, 0, 58, 59, 0, -36, 60, 61, 163, 164, - 165, 63, 64, 65, 66, 67, 68, 26, 119, 28, - 29, 30, 31, 97, 32, 33, 34, 327, 0, 0, - 35, 0, 0, 347, 171, -176, 173, 174, 163, 164, - 165, 41, 0, 42, 43, 44, 45, 46, 0, 163, - 164, 165, 47, 48, 49, 50, 51, 52, 0, 0, - 53, 182, 183, 348, 0, 54, 0, 184, 185, 186, - 0, 0, 187, 0, 354, 0, 0, 55, 56, 57, - 158, 159, 160, 161, 58, 59, 0, 162, 60, 61, - 0, 0, 0, 63, 64, 65, 66, 67, 68, 26, - 27, 28, 29, 30, 31, 0, 32, 33, 34, 163, - 164, 165, 35, 0, 0, 0, 171, 172, 173, 174, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 53, 182, 183, 0, 0, 54, 0, 184, - 185, 186, 0, 0, 187, 0, 0, 0, 0, 55, - 56, 57, 163, 164, 165, 0, 58, 59, 0, 0, - 60, 61, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 26, 125, 28, 29, 30, 31, 0, 32, 33, - 34, 353, 0, 0, 35, 0, 0, 0, -176, 0, - 173, 174, 0, 0, 0, 41, 0, 42, 43, 44, - 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, - 51, 52, 0, 0, 53, 182, 183, 0, 0, 54, - 0, 184, 185, 186, 0, 0, 187, 0, 0, 0, - 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, - 0, 0, 60, 61, 0, 0, 0, 63, 64, 65, - 66, 67, 68, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 173, 174, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 0, 0, 53, 182, 183, 0, 0, - 54, 0, 184, 185, 186, 0, 0, 187, 0, 0, - 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, - 59, 0, 0, 60, 61, 0, 129, 0, 63, 64, - 65, 66, 67, 68, 27, 28, 29, 30, 31, 0, - 32, 33, 34, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, - 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, - 49, 50, 51, 52, 0, 0, 53, 375, 376, 0, - 0, 54, 382, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 55, 56, 57, 0, 0, 390, 0, - 58, 59, 393, 145, 60, 61, 0, 0, 0, 63, - 64, 65, 66, 67, 68, 27, 28, 29, 30, 31, - 0, 32, 33, 34, 0, 0, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, - 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, - 48, 49, 50, 51, 52, 0, 0, 53, 0, 0, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, - 0, 58, 59, 0, 0, 60, 61, 0, 0, 147, - 63, 64, 65, 66, 67, 68, 27, 28, 29, 30, - 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, - 47, 48, 49, 50, 51, 52, 0, 0, 53, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, - 0, 0, 58, 59, 0, 213, 60, 61, 0, 0, - 0, 63, 64, 65, 66, 67, 68, 27, 28, 29, - 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, + 80, 204, 77, 126, 96, 286, 100, 34, 203, 381, + 195, 145, 34, 102, 169, 170, 171, 197, 103, 205, + -177, -177, 173, 3, 193, 303, 19, 105, 105, 22, + 123, 26, 136, 132, 169, 170, 171, 195, 30, 118, + 399, 378, 379, 152, 154, 128, 105, 134, 20, 21, + 228, 141, 105, 116, 28, 126, 210, 211, 212, 213, + 214, 215, 34, 227, 105, 105, 105, 105, 139, 5, + 6, 97, 7, 8, 99, 73, 74, 75, 223, 108, + 109, 280, 196, 107, 117, 209, 126, 208, 119, 198, + 73, 73, 124, 174, 175, 133, 219, 220, 138, 9, + 129, 130, 146, 147, 148, 149, 150, 144, 225, 196, + 155, 156, 112, 128, 230, 283, 347, 290, 113, 157, + 158, 159, 160, 266, 161, 267, 114, 358, 115, 5, + 6, 285, 7, 8, 169, 170, 171, 120, 236, 237, + 239, 240, 241, 242, 243, 244, 245, 207, 247, 249, + 250, 126, 121, 122, 368, 137, 190, 191, 192, 9, + 306, 193, 376, 377, 235, 163, 172, 383, 222, 273, + 274, 275, 276, 277, 278, 169, 170, 171, 281, 194, + 281, 220, 199, 391, 271, 293, 239, 394, 239, 200, + 305, 392, -2, 202, 268, 269, 206, 310, 393, 312, + 314, 73, 338, 216, 320, 300, 5, 6, 318, 7, + 8, 246, 169, 170, 171, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 217, 365, 366, 367, 224, 369, 9, 226, 126, 231, + 233, 324, 322, 326, 327, 279, 309, 164, 165, 166, + 167, 73, 315, 317, 168, 177, 178, 179, 180, 319, + 171, 385, 169, 170, 171, 328, 179, 339, 387, 336, + 335, 340, 389, 341, 342, 386, 169, 170, 171, 185, + 186, 187, 188, 189, 343, 397, 398, 344, 190, 191, + 192, 330, 189, 193, 352, 345, 346, 190, 191, 192, + 353, -42, 193, 220, 33, 359, 34, 35, 36, 37, + 38, 39, 360, 40, 41, 42, 169, 170, 171, 43, + 308, 293, 44, 45, 46, 47, 337, 361, 363, 48, + 49, 371, 50, 51, 52, 53, 54, 373, 169, 170, + 171, 55, 56, 57, 58, 59, 60, 374, 382, 61, + 169, 170, 171, 384, 62, 388, 169, 170, 171, 80, + 395, 396, 354, 234, 78, 390, 63, 64, 65, 238, + 169, 170, 171, 66, 67, 370, 298, 68, 69, 332, + 70, 307, 71, 72, 73, 74, 75, 76, 33, 111, + 32, 35, 36, 37, 38, 39, 142, 40, 41, 42, + 331, 143, 284, 43, 0, 0, 169, 170, 171, 177, + 178, 179, 180, 0, 49, 0, 50, 51, 52, 53, + 54, 169, 170, 171, 0, 55, 56, 57, 58, 59, + 60, 316, 0, 61, 186, 187, 188, 189, 62, 0, + 0, 0, 190, 191, 192, 0, 321, 193, 0, 0, + 63, 64, 65, 0, 169, 170, 171, 66, 67, 0, + 0, 68, 69, 0, -37, 0, 71, 72, 73, 74, + 75, 76, 33, 0, 0, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 333, 0, 0, 43, 0, 0, + 0, 0, 177, 178, 179, 180, 0, 0, 49, 0, + 50, 51, 52, 53, 54, 0, 0, 0, 0, 55, + 56, 57, 58, 59, 60, 0, 0, 61, 187, 188, + 189, 0, 62, 0, 0, 190, 191, 192, 0, 0, + 193, 0, 0, 0, 63, 64, 65, 169, 170, 171, + 0, 66, 67, 0, -37, 68, 69, 169, 170, 171, + 71, 72, 73, 74, 75, 76, 34, 125, 36, 37, + 38, 39, 103, 40, 41, 42, 0, 351, 0, 43, + 0, 0, 0, 177, -177, 179, 180, 357, 0, 0, + 49, 0, 50, 51, 52, 53, 54, 0, 169, 170, + 171, 55, 56, 57, 58, 59, 60, 0, 0, 61, + 188, 189, 0, 0, 62, 0, 190, 191, 192, 0, + 0, 193, 0, 329, 0, 0, 63, 64, 65, 164, + 165, 166, 167, 66, 67, 0, 168, 68, 69, 169, + 170, 171, 71, 72, 73, 74, 75, 76, 34, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 169, 170, + 171, 43, 0, 0, 0, 177, 178, 179, 180, 372, + 0, 0, 49, 0, 50, 51, 52, 53, 54, 0, + 169, 170, 171, 55, 56, 57, 58, 59, 60, 0, + 0, 61, 188, 189, 0, 0, 62, 0, 190, 191, + 192, 0, 0, 193, 0, 348, 0, 0, 63, 64, + 65, 169, 170, 171, 0, 66, 67, 0, 0, 68, + 69, 169, 170, 171, 71, 72, 73, 74, 75, 76, + 34, 131, 36, 37, 38, 39, 0, 40, 41, 42, + 334, 0, 0, 43, 0, 0, 349, -177, 0, 179, + 180, 169, 170, 171, 49, 0, 50, 51, 52, 53, + 54, 0, 169, 170, 171, 55, 56, 57, 58, 59, + 60, 0, 0, 61, 188, 189, 350, 0, 62, 0, + 190, 191, 192, 0, 0, 193, 0, 356, 0, 0, + 63, 64, 65, 169, 170, 171, 0, 66, 67, 0, + 0, 68, 69, 0, 0, 0, 71, 72, 73, 74, + 75, 76, 35, 36, 37, 38, 39, 0, 40, 41, + 42, 0, 355, 0, 43, 0, 0, 0, 0, 0, + 179, 180, 0, 0, 0, 49, 0, 50, 51, 52, + 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, + 59, 60, 0, 0, 61, 188, 189, 0, 0, 62, + 0, 190, 191, 192, 0, 0, 193, 0, 0, 0, + 0, 63, 64, 65, 0, 0, 179, 180, 66, 67, + 0, 0, 68, 69, 0, 135, 0, 71, 72, 73, + 74, 75, 76, 35, 36, 37, 38, 39, 0, 40, + 41, 42, 189, 0, 0, 43, 0, 190, 191, 192, + 0, 0, 193, 0, 0, 0, 49, 0, 50, 51, + 52, 53, 54, 0, 0, 0, 0, 55, 56, 57, + 58, 59, 60, 0, 0, 61, 189, 0, 0, 0, + 62, 190, 191, 192, 0, 0, 193, 0, 0, 0, + 0, 0, 63, 64, 65, 0, 0, 0, 0, 66, + 67, 0, 151, 68, 69, 0, 0, 0, 71, 72, + 73, 74, 75, 76, 35, 36, 37, 38, 39, 0, + 40, 41, 42, 0, 0, 0, 43, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 0, 50, + 51, 52, 53, 54, 0, 0, 0, 0, 55, 56, + 57, 58, 59, 60, 0, 0, 61, 0, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 64, 65, 0, 0, 0, 0, + 66, 67, 0, 0, 68, 69, 0, 0, 153, 71, + 72, 73, 74, 75, 76, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 50, 51, 52, 53, 54, 0, 0, 0, 0, 55, + 56, 57, 58, 59, 60, 0, 0, 61, 0, 0, + 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 63, 64, 65, 0, 0, 0, + 0, 66, 67, 0, 218, 68, 69, 0, 0, 0, + 71, 72, 73, 74, 75, 76, 35, 36, 37, 38, + 39, 0, 40, 41, 42, 0, 0, 0, 43, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 50, 51, 52, 53, 54, 0, 0, 0, 0, + 55, 56, 57, 58, 59, 60, 0, 0, 61, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 64, 65, 0, 0, + 0, 0, 66, 67, 0, 229, 68, 69, 0, 0, + 0, 71, 72, 73, 74, 75, 76, 35, 36, 37, + 38, 39, 0, 40, 41, 42, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, - 0, 47, 48, 49, 50, 51, 52, 0, 0, 53, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, - 0, 0, 0, 58, 59, 0, 224, 60, 61, 0, - 0, 0, 63, 64, 65, 66, 67, 68, 27, 28, - 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, - 0, 0, 47, 48, 49, 50, 51, 52, 0, 0, - 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, - 0, 0, 0, 0, 58, 59, 0, 243, 60, 61, - 0, 0, 0, 63, 64, 65, 66, 67, 68, 27, - 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, - 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, - 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, - 57, 0, 0, 0, 0, 58, 59, 0, 267, 60, - 61, 0, 0, 0, 63, 64, 65, 66, 67, 68, - 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, - 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, - 0, 0, 53, 0, 0, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 56, 57, 0, 0, 0, 0, 58, 59, 0, 304, - 60, 61, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 27, 28, 29, 30, 31, 0, 32, 33, 34, - 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, - 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, - 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, + 49, 0, 50, 51, 52, 53, 54, 0, 0, 0, + 0, 55, 56, 57, 58, 59, 60, 0, 0, 61, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, + 0, 0, 0, 66, 67, 0, 248, 68, 69, 0, + 0, 0, 71, 72, 73, 74, 75, 76, 35, 36, + 37, 38, 39, 0, 40, 41, 42, 0, 0, 0, + 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 50, 51, 52, 53, 54, 0, 0, + 0, 0, 55, 56, 57, 58, 59, 60, 0, 0, + 61, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, + 0, 0, 0, 0, 66, 67, 0, 272, 68, 69, + 0, 0, 0, 71, 72, 73, 74, 75, 76, 35, + 36, 37, 38, 39, 0, 40, 41, 42, 0, 0, + 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 0, 50, 51, 52, 53, 54, 0, + 0, 0, 0, 55, 56, 57, 58, 59, 60, 0, + 0, 61, 0, 0, 0, 0, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, + 65, 0, 0, 0, 0, 66, 67, 0, 311, 68, + 69, 0, 0, 0, 71, 72, 73, 74, 75, 76, + 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, + 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 49, 0, 50, 51, 52, 53, 54, + 0, 0, 0, 0, 55, 56, 57, 58, 59, 60, + 0, 0, 61, 0, 0, 0, 0, 62, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 64, 65, 0, 0, 0, 0, 66, 67, 0, 313, + 68, 69, 0, 0, 0, 71, 72, 73, 74, 75, + 76, 35, 36, 37, 38, 39, 0, 40, 41, 42, + 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 0, 50, 51, 52, 53, + 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, + 60, 0, 0, 61, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 55, 56, 57, 0, 0, 0, 0, 58, 59, 0, - 306, 60, 61, 0, 0, 0, 63, 64, 65, 66, - 67, 68, 27, 28, 29, 30, 31, 0, 32, 33, - 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, - 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, - 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, + 63, 64, 65, 0, 0, 0, 0, 66, 67, 0, + 325, 68, 69, 0, 0, 0, 71, 72, 73, 74, + 75, 76, 35, 36, 37, 38, 39, 0, 40, 41, + 42, 0, 0, 0, 43, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 49, 0, 50, 51, 52, + 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, + 59, 60, 0, 0, 61, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, - 0, 318, 60, 61, 0, 0, 0, 63, 64, 65, - 66, 67, 68, 27, 28, 29, 30, 31, 0, 32, - 33, 34, 0, 0, 0, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, - 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, - 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 55, 56, 57, 0, 0, 0, 189, 58, - 59, 0, 0, 60, 61, 0, 0, 0, 63, 64, - 65, 66, 67, 68, -146, -146, -146, -146, 0, 0, - 0, -146, 0, -146, 0, 0, 0, 0, 0, -146, - -146, -146, -146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -146, -146, -146, 0, -146, -146, -146, - -146, -146, -146, -146, -146, -146, -146, -146, 0, 0, - 0, 0, -146, -146, -146, 0, 0, -146, -146, 0, - 190, 0, -146, -146, -175, -175, -175, -175, 0, 0, - 0, -175, 0, -175, 0, 0, 0, 0, 0, -175, - -175, -175, -175, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -175, -175, -175, 0, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, 0, 0, - 0, 0, -175, -175, -175, 0, 0, -175, -175, 170, - 0, 0, -175, -175, 0, 171, 172, 173, 174, 0, + 0, 63, 64, 65, 0, 0, 0, 195, 66, 67, + 0, 0, 68, 69, 0, 0, 0, 71, 72, 73, + 74, 75, 76, -147, -147, -147, -147, 0, 0, 0, + -147, 0, -147, 0, 0, 0, 0, 0, -147, -147, + -147, -147, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -147, -147, -147, 0, -147, -147, -147, -147, + -147, -147, -147, -147, -147, -147, -147, 0, 0, 0, + 0, -147, -147, -147, 0, 0, -147, -147, 0, 196, + 0, -147, -147, -176, -176, -176, -176, 0, 0, 0, + -176, 0, -176, 0, 0, 0, 0, 0, -176, -176, + -176, -176, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -176, -176, -176, 0, -176, -176, -176, -176, + -176, -176, -176, -176, -176, -176, -176, 0, 0, 0, + 0, -176, -176, -176, 0, 0, -176, -176, 176, 0, + 0, -176, -176, 0, 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 175, 176, 0, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 0, 0, 184, 185, - 186, 170, 0, 187, 281, 0, 0, 171, 172, 173, - 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 175, 176, 0, 177, - 178, 179, 180, 181, 182, 183, 0, 0, 0, 0, - 184, 185, 186, 170, 0, 187, 361, 0, 0, 171, - 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, - 316, 177, 178, 179, 180, 181, 182, 183, 0, 0, - 0, 0, 184, 185, 186, 170, 0, 187, 0, 0, - 0, 171, 172, 173, 174, 0, 0, 0, 0, 0, + 0, 0, 287, 181, 182, 0, 183, 184, 185, 186, + 187, 188, 189, 0, 0, 0, 0, 190, 191, 192, + 176, 0, 193, 288, 0, 0, 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 175, 176, 0, 177, 178, 179, 180, 181, 182, 183, - 0, 0, 0, 0, 184, 185, 186, 170, 0, 187, - 0, 0, 0, 171, 172, 173, 174, 0, 0, 0, + 0, 0, 0, 0, 0, 181, 182, 0, 183, 184, + 185, 186, 187, 188, 189, 0, 0, 0, 0, 190, + 191, 192, 176, 0, 193, 362, 0, 0, 177, 178, + 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 181, 182, 323, + 183, 184, 185, 186, 187, 188, 189, 0, 0, 0, + 0, 190, 191, 192, 176, 0, 193, 0, 0, 0, + 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 182, 0, 183, 184, 185, 186, 187, 188, 189, 0, + 0, 0, 0, 190, 191, 192, 176, 0, 193, 0, + 0, 0, 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 176, 0, 177, 178, 179, 180, 181, - 182, 183, 0, 0, 0, 0, 184, 185, 186, -176, - 0, 187, 0, 0, 0, 171, 172, 173, 174, 0, + 0, 0, 182, 0, 183, 184, 185, 186, 187, 188, + 189, 0, 0, 0, 0, 190, 191, 192, -177, 0, + 193, 0, 0, 0, 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 171, 172, 173, 174, 0, 0, 0, 177, 178, 179, - 180, 181, 182, 183, 0, 0, 0, 0, 184, 185, - 186, 0, 0, 187, 179, 180, 181, 182, 183, 0, - 0, 0, 0, 184, 185, 186, 0, 0, 187 + 0, 0, 0, 0, 0, 0, 183, 184, 185, 186, + 187, 188, 189, 0, 0, 0, 0, 190, 191, 192, + 0, 0, 193 }; static const short yycheck[] = { - 13, 95, 13, 28, 29, 210, 201, 100, 106, 107, - 108, 109, 110, 111, 3, 40, 3, 3, 0, 5, - 94, 46, 47, 48, 43, 3, 3, 52, 53, 3, - 366, 105, 29, 198, 45, 4, 49, 48, 131, 204, - 65, 66, 67, 68, 48, 49, 50, 60, 61, 46, - 47, 46, 3, 4, 4, 74, 53, 74, 9, 54, - 4, 397, 81, 77, 81, 82, 83, 74, 65, 66, - 67, 68, 9, 10, 78, 13, 14, 15, 89, 17, - 18, 48, 49, 50, 74, 74, 75, 52, 74, 75, - 77, 116, 33, 104, 299, 81, 74, 75, 75, 74, - 41, 75, 115, 116, 45, 100, 44, 48, 68, 69, - 51, 78, 72, 211, 55, 56, 57, 58, 59, 116, - 133, 74, 63, 64, 23, 24, 321, 74, 123, 74, - 81, 48, 49, 50, 74, 74, 131, 342, 76, 48, - 49, 50, 4, 25, 155, 158, 159, 160, 161, 162, - 163, 164, 165, 77, 167, 168, 169, 48, 49, 50, - 77, 102, 187, 13, 14, 15, 74, 17, 18, 78, - 48, 49, 50, 3, 3, 188, 189, 190, 191, 192, - 193, 7, 387, 276, 209, 4, 74, 78, 201, 282, - 74, 74, 205, 206, 44, 208, 73, 210, 45, 75, - 78, 76, 45, 62, 217, 4, 219, 220, 67, 68, - 69, 81, 73, 72, 7, 228, 76, 75, 339, 340, - 341, 74, 343, 50, 73, 166, 76, 7, 73, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 0, 48, 49, 50, 261, 370, - 263, 264, 73, 36, 37, 73, 377, 13, 14, 15, - 381, 17, 18, 73, 275, 36, 277, 48, 49, 50, - 73, 73, 283, 394, 395, 19, 20, 21, 22, 62, - 374, 276, 26, 74, 67, 68, 69, 282, 44, 72, - 77, 62, 73, 48, 49, 50, 67, 68, 69, 312, - 76, 72, 76, 76, 48, 49, 50, 76, 321, 48, - 49, 50, 48, 49, 50, 1, 77, 3, 4, 5, - 6, 7, 8, 78, 10, 11, 12, 3, 73, 73, - 16, 344, 73, 19, 20, 21, 22, 77, 77, 280, - 26, 27, 78, 29, 30, 31, 32, 33, 76, 48, - 49, 50, 38, 39, 40, 41, 42, 43, 73, 73, - 46, 48, 49, 50, 74, 51, 73, 48, 49, 50, - 383, 48, 49, 50, 73, 316, 13, 63, 64, 65, - 48, 49, 50, 383, 70, 71, 344, 159, 74, 75, - 77, 77, 73, 79, 80, 81, 82, 83, 84, 1, - 77, 208, 4, 5, 6, 7, 8, 35, 10, 11, - 12, 67, 68, 69, 16, 24, 72, 48, 49, 50, - 34, 35, 36, 37, -1, 27, 277, 29, 30, 31, - 32, 33, 48, 49, 50, 52, 38, 39, 40, 41, - 42, 43, 73, -1, 46, 59, 60, 61, 62, 51, - -1, 52, -1, 67, 68, 69, -1, 73, 72, -1, - -1, 63, 64, 65, -1, -1, -1, -1, 70, 71, - -1, -1, 74, 75, -1, 77, -1, 79, 80, 81, - 82, 83, 84, 1, -1, -1, 4, 5, 6, 7, - 8, -1, 10, 11, 12, 48, 49, 50, 16, 52, - -1, -1, -1, 34, 35, 36, 37, -1, -1, 27, - -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, - 38, 39, 40, 41, 42, 43, -1, -1, 46, 60, - 61, 62, -1, 51, -1, -1, 67, 68, 69, -1, - -1, 72, -1, -1, -1, 63, 64, 65, 48, 49, - 50, -1, 70, 71, -1, 73, 74, 75, 48, 49, - 50, 79, 80, 81, 82, 83, 84, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 77, -1, -1, - 16, -1, -1, 73, 34, 35, 36, 37, 48, 49, - 50, 27, -1, 29, 30, 31, 32, 33, -1, 48, - 49, 50, 38, 39, 40, 41, 42, 43, -1, -1, - 46, 61, 62, 73, -1, 51, -1, 67, 68, 69, - -1, -1, 72, -1, 73, -1, -1, 63, 64, 65, - 19, 20, 21, 22, 70, 71, -1, 26, 74, 75, - -1, -1, -1, 79, 80, 81, 82, 83, 84, 3, - 4, 5, 6, 7, 8, -1, 10, 11, 12, 48, - 49, 50, 16, -1, -1, -1, 34, 35, 36, 37, - -1, -1, -1, 27, -1, 29, 30, 31, 32, 33, - -1, -1, -1, -1, 38, 39, 40, 41, 42, 43, - -1, -1, 46, 61, 62, -1, -1, 51, -1, 67, - 68, 69, -1, -1, 72, -1, -1, -1, -1, 63, - 64, 65, 48, 49, 50, -1, 70, 71, -1, -1, - 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, - 84, 3, 4, 5, 6, 7, 8, -1, 10, 11, - 12, 77, -1, -1, 16, -1, -1, -1, 34, -1, + 25, 101, 25, 54, 27, 206, 32, 3, 100, 367, + 3, 62, 3, 4, 48, 49, 50, 3, 9, 106, + 68, 69, 3, 0, 72, 215, 4, 36, 37, 13, + 53, 4, 57, 56, 48, 49, 50, 3, 77, 48, + 398, 23, 24, 68, 69, 54, 55, 56, 8, 9, + 137, 60, 61, 43, 4, 106, 112, 113, 114, 115, + 116, 117, 3, 77, 73, 74, 75, 76, 74, 14, + 15, 7, 17, 18, 4, 81, 82, 83, 129, 74, + 41, 77, 75, 37, 74, 111, 137, 110, 49, 75, + 81, 81, 53, 74, 75, 56, 121, 122, 59, 44, + 54, 55, 63, 64, 65, 66, 67, 61, 74, 75, + 71, 72, 74, 122, 139, 202, 306, 209, 74, 73, + 74, 75, 76, 3, 25, 5, 74, 328, 74, 14, + 15, 76, 17, 18, 48, 49, 50, 74, 161, 164, + 165, 166, 167, 168, 169, 170, 171, 108, 173, 174, + 175, 202, 74, 74, 344, 4, 67, 68, 69, 44, + 216, 72, 364, 365, 78, 77, 52, 369, 122, 194, + 195, 196, 197, 198, 199, 48, 49, 50, 201, 74, + 203, 206, 3, 385, 193, 210, 211, 389, 213, 45, + 215, 76, 0, 4, 74, 75, 74, 222, 388, 224, + 225, 81, 289, 74, 77, 214, 14, 15, 233, 17, + 18, 172, 48, 49, 50, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 73, 341, 342, 343, 74, 345, 44, 76, 289, 45, + 75, 266, 78, 268, 269, 7, 73, 19, 20, 21, + 22, 81, 76, 7, 26, 34, 35, 36, 37, 75, + 50, 371, 48, 49, 50, 74, 36, 290, 378, 73, + 77, 73, 382, 73, 73, 375, 48, 49, 50, 58, + 59, 60, 61, 62, 73, 395, 396, 74, 67, 68, + 69, 77, 62, 72, 319, 73, 77, 67, 68, 69, + 76, 73, 72, 328, 1, 76, 3, 4, 5, 6, + 7, 8, 76, 10, 11, 12, 48, 49, 50, 16, + 52, 346, 19, 20, 21, 22, 287, 76, 3, 26, + 27, 73, 29, 30, 31, 32, 33, 76, 48, 49, + 50, 38, 39, 40, 41, 42, 43, 73, 73, 46, + 48, 49, 50, 77, 51, 74, 48, 49, 50, 384, + 73, 73, 323, 73, 25, 384, 63, 64, 65, 165, + 48, 49, 50, 70, 71, 346, 213, 74, 75, 77, + 77, 73, 79, 80, 81, 82, 83, 84, 1, 43, + 21, 4, 5, 6, 7, 8, 60, 10, 11, 12, + 78, 60, 203, 16, -1, -1, 48, 49, 50, 34, + 35, 36, 37, -1, 27, -1, 29, 30, 31, 32, + 33, 48, 49, 50, -1, 38, 39, 40, 41, 42, + 43, 73, -1, 46, 59, 60, 61, 62, 51, -1, + -1, -1, 67, 68, 69, -1, 73, 72, -1, -1, + 63, 64, 65, -1, 48, 49, 50, 70, 71, -1, + -1, 74, 75, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 1, -1, -1, 4, 5, 6, 7, 8, + -1, 10, 11, 12, 78, -1, -1, 16, -1, -1, + -1, -1, 34, 35, 36, 37, -1, -1, 27, -1, + 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, + 39, 40, 41, 42, 43, -1, -1, 46, 60, 61, + 62, -1, 51, -1, -1, 67, 68, 69, -1, -1, + 72, -1, -1, -1, 63, 64, 65, 48, 49, 50, + -1, 70, 71, -1, 73, 74, 75, 48, 49, 50, + 79, 80, 81, 82, 83, 84, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, -1, 78, -1, 16, + -1, -1, -1, 34, 35, 36, 37, 78, -1, -1, + 27, -1, 29, 30, 31, 32, 33, -1, 48, 49, + 50, 38, 39, 40, 41, 42, 43, -1, -1, 46, + 61, 62, -1, -1, 51, -1, 67, 68, 69, -1, + -1, 72, -1, 73, -1, -1, 63, 64, 65, 19, + 20, 21, 22, 70, 71, -1, 26, 74, 75, 48, + 49, 50, 79, 80, 81, 82, 83, 84, 3, 4, + 5, 6, 7, 8, -1, 10, 11, 12, 48, 49, + 50, 16, -1, -1, -1, 34, 35, 36, 37, 78, + -1, -1, 27, -1, 29, 30, 31, 32, 33, -1, + 48, 49, 50, 38, 39, 40, 41, 42, 43, -1, + -1, 46, 61, 62, -1, -1, 51, -1, 67, 68, + 69, -1, -1, 72, -1, 73, -1, -1, 63, 64, + 65, 48, 49, 50, -1, 70, 71, -1, -1, 74, + 75, 48, 49, 50, 79, 80, 81, 82, 83, 84, + 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, + 77, -1, -1, 16, -1, -1, 73, 34, -1, 36, + 37, 48, 49, 50, 27, -1, 29, 30, 31, 32, + 33, -1, 48, 49, 50, 38, 39, 40, 41, 42, + 43, -1, -1, 46, 61, 62, 73, -1, 51, -1, + 67, 68, 69, -1, -1, 72, -1, 73, -1, -1, + 63, 64, 65, 48, 49, 50, -1, 70, 71, -1, + -1, 74, 75, -1, -1, -1, 79, 80, 81, 82, + 83, 84, 4, 5, 6, 7, 8, -1, 10, 11, + 12, -1, 77, -1, 16, -1, -1, -1, -1, -1, 36, 37, -1, -1, -1, 27, -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, 39, 40, 41, 42, 43, -1, -1, 46, 61, 62, -1, -1, 51, -1, 67, 68, 69, -1, -1, 72, -1, -1, -1, - -1, 63, 64, 65, -1, -1, -1, -1, 70, 71, - -1, -1, 74, 75, -1, -1, -1, 79, 80, 81, + -1, 63, 64, 65, -1, -1, 36, 37, 70, 71, + -1, -1, 74, 75, -1, 77, -1, 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, - 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, - -1, 36, 37, -1, -1, -1, 27, -1, 29, 30, + 11, 12, 62, -1, -1, 16, -1, 67, 68, 69, + -1, -1, 72, -1, -1, -1, 27, -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, 39, 40, - 41, 42, 43, -1, -1, 46, 61, 62, -1, -1, - 51, -1, 67, 68, 69, -1, -1, 72, -1, -1, + 41, 42, 43, -1, -1, 46, 62, -1, -1, -1, + 51, 67, 68, 69, -1, -1, 72, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, -1, -1, 70, - 71, -1, -1, 74, 75, -1, 77, -1, 79, 80, + 71, -1, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, 38, 39, - 40, 41, 42, 43, -1, -1, 46, 363, 364, -1, - -1, 51, 368, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 63, 64, 65, -1, -1, 384, -1, - 70, 71, 388, 73, 74, 75, -1, -1, -1, 79, + 40, 41, 42, 43, -1, -1, 46, -1, -1, -1, + -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 63, 64, 65, -1, -1, -1, -1, + 70, 71, -1, -1, 74, 75, -1, -1, 78, 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, @@ -722,7 +732,7 @@ static const short yycheck[] = 39, 40, 41, 42, 43, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, -1, - -1, 70, 71, -1, -1, 74, 75, -1, -1, 78, + -1, 70, 71, -1, 73, 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, @@ -778,99 +788,90 @@ static const short yycheck[] = 32, 33, -1, -1, -1, -1, 38, 39, 40, 41, 42, 43, -1, -1, 46, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 63, 64, 65, -1, -1, -1, -1, 70, 71, - -1, 73, 74, 75, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, - 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 27, -1, 29, 30, - 31, 32, 33, -1, -1, -1, -1, 38, 39, 40, - 41, 42, 43, -1, -1, 46, -1, -1, -1, -1, - 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 63, 64, 65, -1, -1, -1, 3, 70, - 71, -1, -1, 74, 75, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 19, 20, 21, 22, -1, -1, - -1, 26, -1, 28, -1, -1, -1, -1, -1, 34, - 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, -1, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, 67, 68, 69, -1, -1, 72, 73, -1, - 75, -1, 77, 78, 19, 20, 21, 22, -1, -1, - -1, 26, -1, 28, -1, -1, -1, -1, -1, 34, - 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 48, 49, 50, -1, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, 67, 68, 69, -1, -1, 72, 73, 28, - -1, -1, 77, 78, -1, 34, 35, 36, 37, -1, + -1, 63, 64, 65, -1, -1, -1, 3, 70, 71, + -1, -1, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, 84, 19, 20, 21, 22, -1, -1, -1, + 26, -1, 28, -1, -1, -1, -1, -1, 34, 35, + 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 48, 49, 50, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, 67, 68, 69, -1, -1, 72, 73, -1, 75, + -1, 77, 78, 19, 20, 21, 22, -1, -1, -1, + 26, -1, 28, -1, -1, -1, -1, -1, 34, 35, + 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 48, 49, 50, -1, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, 67, 68, 69, -1, -1, 72, 73, 28, -1, + -1, 77, 78, -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 52, 53, 54, -1, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, 67, 68, - 69, 28, -1, 72, 73, -1, -1, 34, 35, 36, - 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 53, 54, -1, 56, - 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, - 67, 68, 69, 28, -1, 72, 73, -1, -1, 34, - 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, - -1, -1, 67, 68, 69, 28, -1, 72, -1, -1, - -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, 52, 53, 54, -1, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, -1, 67, 68, 69, + 28, -1, 72, 73, -1, -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, - -1, -1, -1, -1, 67, 68, 69, 28, -1, 72, - -1, -1, -1, 34, 35, 36, 37, -1, -1, -1, + -1, -1, -1, -1, -1, 53, 54, -1, 56, 57, + 58, 59, 60, 61, 62, -1, -1, -1, -1, 67, + 68, 69, 28, -1, 72, 73, -1, -1, 34, 35, + 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, -1, -1, -1, + -1, 67, 68, 69, 28, -1, 72, -1, -1, -1, + 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + 54, -1, 56, 57, 58, 59, 60, 61, 62, -1, + -1, -1, -1, 67, 68, 69, 28, -1, 72, -1, + -1, -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, 56, 57, 58, 59, 60, - 61, 62, -1, -1, -1, -1, 67, 68, 69, 28, - -1, 72, -1, -1, -1, 34, 35, 36, 37, -1, + -1, -1, 54, -1, 56, 57, 58, 59, 60, 61, + 62, -1, -1, -1, -1, 67, 68, 69, 28, -1, + 72, -1, -1, -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 34, 35, 36, 37, -1, -1, -1, 56, 57, 58, - 59, 60, 61, 62, -1, -1, -1, -1, 67, 68, - 69, -1, -1, 72, 58, 59, 60, 61, 62, -1, - -1, -1, -1, 67, 68, 69, -1, -1, 72 + -1, -1, -1, -1, -1, -1, 56, 57, 58, 59, + 60, 61, 62, -1, -1, -1, -1, 67, 68, 69, + -1, -1, 72 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 86, 89, 0, 92, 13, 14, 15, 17, 18, - 44, 93, 98, 106, 107, 108, 110, 111, 120, 121, - 114, 112, 4, 112, 112, 1, 3, 4, 5, 6, - 7, 8, 10, 11, 12, 16, 19, 20, 21, 22, - 26, 27, 29, 30, 31, 32, 33, 38, 39, 40, - 41, 42, 43, 46, 51, 63, 64, 65, 70, 71, - 74, 75, 77, 79, 80, 81, 82, 83, 84, 87, - 94, 96, 123, 124, 125, 128, 129, 130, 131, 132, - 133, 134, 139, 140, 141, 142, 143, 144, 4, 109, - 4, 115, 77, 122, 115, 88, 4, 9, 87, 140, - 145, 145, 74, 133, 113, 113, 74, 74, 74, 74, - 43, 74, 140, 133, 74, 74, 74, 87, 133, 4, - 124, 136, 140, 145, 145, 4, 87, 133, 140, 77, - 123, 4, 133, 74, 135, 140, 141, 142, 145, 124, - 133, 133, 133, 133, 133, 73, 123, 78, 123, 133, - 133, 145, 145, 145, 145, 25, 97, 77, 19, 20, - 21, 22, 26, 48, 49, 50, 52, 3, 74, 75, - 28, 34, 35, 36, 37, 53, 54, 56, 57, 58, - 59, 60, 61, 62, 67, 68, 69, 72, 74, 3, - 75, 3, 75, 3, 87, 7, 116, 4, 116, 92, - 136, 74, 133, 87, 116, 88, 88, 88, 88, 88, - 88, 74, 73, 73, 123, 123, 137, 145, 124, 74, - 74, 76, 77, 136, 73, 123, 45, 118, 75, 73, - 78, 87, 123, 101, 123, 123, 123, 123, 123, 123, - 123, 133, 123, 73, 123, 123, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 3, 5, 74, 75, 127, 140, 73, 123, 123, - 123, 123, 123, 123, 45, 117, 4, 117, 76, 137, - 52, 73, 126, 117, 100, 104, 123, 101, 105, 102, - 123, 105, 138, 140, 94, 99, 102, 103, 123, 88, - 73, 52, 73, 123, 73, 123, 73, 123, 76, 73, - 7, 123, 75, 77, 73, 78, 55, 123, 73, 123, - 123, 74, 73, 77, 78, 77, 78, 77, 7, 77, - 87, 119, 136, 119, 73, 133, 136, 87, 73, 73, - 73, 73, 74, 73, 77, 102, 73, 73, 73, 78, - 123, 76, 133, 77, 73, 78, 137, 76, 76, 76, - 77, 73, 3, 90, 90, 90, 90, 102, 90, 104, - 73, 78, 76, 73, 91, 97, 97, 23, 24, 95, - 95, 73, 97, 77, 90, 92, 90, 74, 90, 103, - 97, 76, 102, 97, 73, 73, 90, 90, 95 + 0, 86, 89, 0, 93, 14, 15, 17, 18, 44, + 92, 108, 109, 111, 112, 121, 122, 115, 113, 4, + 113, 113, 13, 94, 99, 107, 4, 110, 4, 116, + 77, 123, 116, 1, 3, 4, 5, 6, 7, 8, + 10, 11, 12, 16, 19, 20, 21, 22, 26, 27, + 29, 30, 31, 32, 33, 38, 39, 40, 41, 42, + 43, 46, 51, 63, 64, 65, 70, 71, 74, 75, + 77, 79, 80, 81, 82, 83, 84, 87, 95, 97, + 124, 125, 126, 129, 130, 131, 132, 133, 134, 135, + 140, 141, 142, 143, 144, 145, 87, 7, 117, 4, + 117, 88, 4, 9, 87, 141, 146, 146, 74, 134, + 114, 114, 74, 74, 74, 74, 43, 74, 141, 134, + 74, 74, 74, 87, 134, 4, 125, 137, 141, 146, + 146, 4, 87, 134, 141, 77, 124, 4, 134, 74, + 136, 141, 142, 143, 146, 125, 134, 134, 134, 134, + 134, 73, 124, 78, 124, 134, 134, 146, 146, 146, + 146, 25, 98, 77, 19, 20, 21, 22, 26, 48, + 49, 50, 52, 3, 74, 75, 28, 34, 35, 36, + 37, 53, 54, 56, 57, 58, 59, 60, 61, 62, + 67, 68, 69, 72, 74, 3, 75, 3, 75, 3, + 45, 118, 4, 118, 93, 137, 74, 134, 87, 117, + 88, 88, 88, 88, 88, 88, 74, 73, 73, 124, + 124, 138, 146, 125, 74, 74, 76, 77, 137, 73, + 124, 45, 119, 75, 73, 78, 87, 124, 102, 124, + 124, 124, 124, 124, 124, 124, 134, 124, 73, 124, + 124, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 3, 5, 74, 75, + 128, 141, 73, 124, 124, 124, 124, 124, 124, 7, + 77, 87, 120, 137, 120, 76, 138, 52, 73, 127, + 118, 101, 105, 124, 102, 106, 103, 124, 106, 139, + 141, 95, 100, 103, 104, 124, 88, 73, 52, 73, + 124, 73, 124, 73, 124, 76, 73, 7, 124, 75, + 77, 73, 78, 55, 124, 73, 124, 124, 74, 73, + 77, 78, 77, 78, 77, 77, 73, 134, 137, 87, + 73, 73, 73, 73, 74, 73, 77, 103, 73, 73, + 73, 78, 124, 76, 134, 77, 73, 78, 138, 76, + 76, 76, 73, 3, 90, 90, 90, 90, 103, 90, + 105, 73, 78, 76, 73, 91, 98, 98, 23, 24, + 96, 96, 73, 98, 77, 90, 93, 90, 74, 90, + 104, 98, 76, 103, 98, 73, 73, 90, 90, 96 }; diff --git a/perly.y b/perly.y index d87c873..f4a8344 100644 --- a/perly.y +++ b/perly.y @@ -40,7 +40,7 @@ %token COLONATTR %type prog decl format startsub startanonsub startformsub -%type progstart remember mremember '&' +%type progstart remember mremember '&' savescope %type block mblock lineseq line loop cond else %type expr term subscripted scalar ary hsh arylen star amper sideff %type argexpr nexpr texpr iexpr mexpr mnexpr mtexpr miexpr @@ -116,16 +116,20 @@ mremember: /* NULL */ /* start a partial lexical scope */ { $$ = block_start(FALSE); } ; +savescope: /* NULL */ /* remember stack pos in case of error */ + { $$ = PL_savestack_ix; } + /* A collection of "lines" in the program */ lineseq : /* NULL */ { $$ = Nullop; } | lineseq decl { $$ = $1; } - | lineseq line - { $$ = append_list(OP_LINESEQ, - (LISTOP*)$1, (LISTOP*)$2); + | lineseq savescope line + { LEAVE_SCOPE($2); + $$ = append_list(OP_LINESEQ, + (LISTOP*)$1, (LISTOP*)$3); PL_pad_reset_pending = TRUE; - if ($1 && $2) PL_hints |= HINT_BLOCK_SCOPE; } + if ($1 && $3) PL_hints |= HINT_BLOCK_SCOPE; } ; /* A "line" in the program */ diff --git a/t/comp/parser.t b/t/comp/parser.t index 730f187..e59fec6 100644 --- a/t/comp/parser.t +++ b/t/comp/parser.t @@ -9,7 +9,7 @@ BEGIN { } require "./test.pl"; -plan( tests => 42 ); +plan( tests => 43 ); eval '%@x=0;'; like( $@, qr/^Can't modify hash dereference in repeat \(x\)/, '%@x=0' ); @@ -141,3 +141,9 @@ EOF eval q{ *foo{CODE} ? 1 : 0 }; is( $@, '', "glob subscript in conditional" ); } + +# Bug #25824 +{ + eval q{ sub f { @a=@b=@c; {use} } }; + like( $@, qr/syntax error/, "use without body" ); +}