From: Rafael Garcia-Suarez Date: Mon, 26 Sep 2005 14:04:21 +0000 (+0000) Subject: CORE::require was always parsed as require(). X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a72a1c8b669f627c80c2fa5d710eb7980a143476;p=p5sagit%2Fp5-mst-13.2.git CORE::require was always parsed as require(). That's because require() isn't overridable at tokenizer-level like other overridable built-ins, but is handled by the optree builder. So, find a way to pass the information that require() was written as CORE::require() to Perl_ck_require. This is done by adding a new token type REQUIRE and by adding OPf_SPECIAL to OP_REQUIRE when it's saw as CORE::require in the program text. This fixes bug [perl #37274] The "CORE" in CORE::require is ignored. p4raw-id: //depot/perl@25599 --- diff --git a/op.c b/op.c index c6b85a3..fa6723f 100644 --- a/op.c +++ b/op.c @@ -5923,7 +5923,7 @@ Perl_ck_repeat(pTHX_ OP *o) OP * Perl_ck_require(pTHX_ OP *o) { - GV* gv; + GV* gv = Nullgv; if (o->op_flags & OPf_KIDS) { /* Shall we supply missing .pm? */ SVOP *kid = (SVOP*)cUNOPo->op_first; @@ -5955,10 +5955,12 @@ Perl_ck_require(pTHX_ OP *o) } } - /* handle override, if any */ - gv = gv_fetchpv("require", FALSE, SVt_PVCV); - if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) - gv = gv_fetchpv("CORE::GLOBAL::require", FALSE, SVt_PVCV); + if (!(o->op_flags & OPf_SPECIAL)) { /* Wasn't written as CORE::require */ + /* handle override, if any */ + gv = gv_fetchpv("require", FALSE, SVt_PVCV); + if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) + gv = gv_fetchpv("CORE::GLOBAL::require", FALSE, SVt_PVCV); + } if (gv && GvCVu(gv) && GvIMPORTED_CV(gv)) { OP *kid = cUNOPo->op_first; diff --git a/perly.act b/perly.act index 1a1a1fa..05269e2 100644 --- a/perly.act +++ b/perly.act @@ -892,70 +892,70 @@ case 2: case 168: #line 668 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;} + { (yyval.opval) = newOP(OP_REQUIRE, (yyvsp[0].ival) ? OPf_SPECIAL : 0); ;} break; case 169: -#line 671 "perly.y" - { (yyval.opval) = newOP((yyvsp[0].ival), 0); ;} +#line 670 "perly.y" + { (yyval.opval) = newUNOP(OP_REQUIRE, (yyvsp[-1].ival) ? OPf_SPECIAL : 0, (yyvsp[0].opval)); ;} break; case 170: -#line 673 "perly.y" - { (yyval.opval) = newOP((yyvsp[-2].ival), 0); ;} +#line 672 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, (yyvsp[0].opval), scalar((yyvsp[-1].opval)))); ;} break; case 171: #line 675 "perly.y" - { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, - scalar((yyvsp[0].opval))); ;} + { (yyval.opval) = newOP((yyvsp[0].ival), 0); ;} break; case 172: -#line 678 "perly.y" - { (yyval.opval) = (yyvsp[-2].ival) == OP_NOT ? newUNOP((yyvsp[-2].ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) - : newOP((yyvsp[-2].ival), OPf_SPECIAL); ;} +#line 677 "perly.y" + { (yyval.opval) = newOP((yyvsp[-2].ival), 0); ;} break; case 173: -#line 681 "perly.y" - { (yyval.opval) = newUNOP((yyvsp[-3].ival), 0, (yyvsp[-1].opval)); ;} +#line 679 "perly.y" + { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, + scalar((yyvsp[0].opval))); ;} break; case 174: -#line 683 "perly.y" - { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1); ;} +#line 682 "perly.y" + { (yyval.opval) = (yyvsp[-2].ival) == OP_NOT ? newUNOP((yyvsp[-2].ival), 0, newSVOP(OP_CONST, 0, newSViv(0))) + : newOP((yyvsp[-2].ival), OPf_SPECIAL); ;} break; - case 177: -#line 690 "perly.y" - { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval)); ;} + case 175: +#line 685 "perly.y" + { (yyval.opval) = newUNOP((yyvsp[-3].ival), 0, (yyvsp[-1].opval)); ;} break; - case 178: -#line 692 "perly.y" - { (yyval.opval) = localize((yyvsp[0].opval),(yyvsp[-1].ival)); ;} + case 176: +#line 687 "perly.y" + { (yyval.opval) = pmruntime((yyvsp[-3].opval), (yyvsp[-1].opval), 1); ;} break; case 179: -#line 697 "perly.y" - { (yyval.opval) = sawparens((yyvsp[-1].opval)); ;} +#line 694 "perly.y" + { (yyval.opval) = my_attrs((yyvsp[-1].opval),(yyvsp[0].opval)); ;} break; case 180: -#line 699 "perly.y" - { (yyval.opval) = sawparens(newNULLLIST()); ;} +#line 696 "perly.y" + { (yyval.opval) = localize((yyvsp[0].opval),(yyvsp[-1].ival)); ;} break; case 181: #line 701 "perly.y" - { (yyval.opval) = (yyvsp[0].opval); ;} + { (yyval.opval) = sawparens((yyvsp[-1].opval)); ;} break; case 182: #line 703 "perly.y" - { (yyval.opval) = (yyvsp[0].opval); ;} + { (yyval.opval) = sawparens(newNULLLIST()); ;} break; case 183: @@ -964,82 +964,92 @@ case 2: break; case 184: -#line 710 "perly.y" - { (yyval.opval) = Nullop; ;} +#line 707 "perly.y" + { (yyval.opval) = (yyvsp[0].opval); ;} break; case 185: -#line 712 "perly.y" +#line 709 "perly.y" { (yyval.opval) = (yyvsp[0].opval); ;} break; case 186: -#line 716 "perly.y" +#line 714 "perly.y" { (yyval.opval) = Nullop; ;} break; case 187: -#line 718 "perly.y" +#line 716 "perly.y" { (yyval.opval) = (yyvsp[0].opval); ;} break; case 188: #line 720 "perly.y" - { (yyval.opval) = (yyvsp[-1].opval); ;} + { (yyval.opval) = Nullop; ;} break; case 189: -#line 726 "perly.y" - { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;} +#line 722 "perly.y" + { (yyval.opval) = (yyvsp[0].opval); ;} break; case 190: -#line 730 "perly.y" - { (yyval.opval) = newCVREF((yyvsp[-1].ival),(yyvsp[0].opval)); ;} +#line 724 "perly.y" + { (yyval.opval) = (yyvsp[-1].opval); ;} break; case 191: -#line 734 "perly.y" - { (yyval.opval) = newSVREF((yyvsp[0].opval)); ;} +#line 730 "perly.y" + { PL_in_my = 0; (yyval.opval) = my((yyvsp[0].opval)); ;} break; case 192: -#line 738 "perly.y" - { (yyval.opval) = newAVREF((yyvsp[0].opval)); ;} +#line 734 "perly.y" + { (yyval.opval) = newCVREF((yyvsp[-1].ival),(yyvsp[0].opval)); ;} break; case 193: -#line 742 "perly.y" - { (yyval.opval) = newHVREF((yyvsp[0].opval)); ;} +#line 738 "perly.y" + { (yyval.opval) = newSVREF((yyvsp[0].opval)); ;} break; case 194: -#line 746 "perly.y" +#line 742 "perly.y" { (yyval.opval) = newAVREF((yyvsp[0].opval)); ;} break; case 195: -#line 750 "perly.y" - { (yyval.opval) = newGVREF(0,(yyvsp[0].opval)); ;} +#line 746 "perly.y" + { (yyval.opval) = newHVREF((yyvsp[0].opval)); ;} break; case 196: -#line 755 "perly.y" - { (yyval.opval) = scalar((yyvsp[0].opval)); ;} +#line 750 "perly.y" + { (yyval.opval) = newAVREF((yyvsp[0].opval)); ;} break; case 197: -#line 757 "perly.y" - { (yyval.opval) = scalar((yyvsp[0].opval)); ;} +#line 754 "perly.y" + { (yyval.opval) = newGVREF(0,(yyvsp[0].opval)); ;} break; case 198: #line 759 "perly.y" - { (yyval.opval) = scope((yyvsp[0].opval)); ;} + { (yyval.opval) = scalar((yyvsp[0].opval)); ;} break; case 199: -#line 762 "perly.y" +#line 761 "perly.y" + { (yyval.opval) = scalar((yyvsp[0].opval)); ;} + break; + + case 200: +#line 763 "perly.y" + { (yyval.opval) = scope((yyvsp[0].opval)); ;} + break; + + case 201: +#line 766 "perly.y" { (yyval.opval) = (yyvsp[0].opval); ;} break; diff --git a/perly.h b/perly.h index 32c0f32..13044e6 100644 --- a/perly.h +++ b/perly.h @@ -71,28 +71,29 @@ LOCAL = 296, MY = 297, MYSUB = 298, - COLONATTR = 299, - PREC_LOW = 300, - DOROP = 301, - OROP = 302, - ANDOP = 303, - NOTOP = 304, - ASSIGNOP = 305, - DORDOR = 306, - OROR = 307, - ANDAND = 308, - BITOROP = 309, - BITANDOP = 310, - SHIFTOP = 311, - MATCHOP = 312, - REFGEN = 313, - UMINUS = 314, - POWOP = 315, - POSTDEC = 316, - POSTINC = 317, - PREDEC = 318, - PREINC = 319, - ARROW = 320 + REQUIRE = 299, + COLONATTR = 300, + PREC_LOW = 301, + DOROP = 302, + OROP = 303, + ANDOP = 304, + NOTOP = 305, + ASSIGNOP = 306, + DORDOR = 307, + OROR = 308, + ANDAND = 309, + BITOROP = 310, + BITANDOP = 311, + SHIFTOP = 312, + MATCHOP = 313, + REFGEN = 314, + UMINUS = 315, + POWOP = 316, + POSTDEC = 317, + POSTINC = 318, + PREDEC = 319, + PREINC = 320, + ARROW = 321 }; #endif #define WORD 258 @@ -136,28 +137,29 @@ #define LOCAL 296 #define MY 297 #define MYSUB 298 -#define COLONATTR 299 -#define PREC_LOW 300 -#define DOROP 301 -#define OROP 302 -#define ANDOP 303 -#define NOTOP 304 -#define ASSIGNOP 305 -#define DORDOR 306 -#define OROR 307 -#define ANDAND 308 -#define BITOROP 309 -#define BITANDOP 310 -#define SHIFTOP 311 -#define MATCHOP 312 -#define REFGEN 313 -#define UMINUS 314 -#define POWOP 315 -#define POSTDEC 316 -#define POSTINC 317 -#define PREDEC 318 -#define PREINC 319 -#define ARROW 320 +#define REQUIRE 299 +#define COLONATTR 300 +#define PREC_LOW 301 +#define DOROP 302 +#define OROP 303 +#define ANDOP 304 +#define NOTOP 305 +#define ASSIGNOP 306 +#define DORDOR 307 +#define OROR 308 +#define ANDAND 309 +#define BITOROP 310 +#define BITANDOP 311 +#define SHIFTOP 312 +#define MATCHOP 313 +#define REFGEN 314 +#define UMINUS 315 +#define POWOP 316 +#define POSTDEC 317 +#define POSTINC 318 +#define PREDEC 319 +#define PREINC 320 +#define ARROW 321 @@ -172,7 +174,7 @@ typedef union YYSTYPE { GV *gvval; } YYSTYPE; /* Line 1318 of yacc.c. */ -#line 174 "perly.h" +#line 176 "perly.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 diff --git a/perly.tab b/perly.tab index 77eb10b..09c2306 100644 --- a/perly.tab +++ b/perly.tab @@ -1,19 +1,19 @@ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1966 +#define YYLAST 1993 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 85 +#define YYNTOKENS 86 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 62 /* YYNRULES -- Number of rules. */ -#define YYNRULES 199 +#define YYNRULES 201 /* YYNRULES -- Number of states. */ -#define YYNSTATES 399 +#define YYNSTATES 401 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 320 +#define YYMAXUTOK 321 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -24,16 +24,16 @@ static const unsigned char yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 63, 2, 2, 81, 83, 46, 2, - 74, 73, 84, 80, 52, 79, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 55, 77, - 2, 2, 2, 54, 82, 2, 2, 2, 2, 2, + 2, 2, 2, 64, 2, 2, 82, 84, 47, 2, + 75, 74, 85, 81, 53, 80, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 56, 78, + 2, 2, 2, 55, 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 75, 2, 78, 2, 2, 2, 2, 2, 2, + 2, 76, 2, 79, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 76, 64, 2, 2, 2, + 2, 2, 2, 3, 2, 77, 65, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -51,9 +51,9 @@ static const unsigned char yytranslate[] = 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 47, 48, 49, 50, 51, 53, 56, 57, 58, 59, - 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, - 72 + 46, 48, 49, 50, 51, 52, 54, 57, 58, 59, + 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, + 72, 73 }; #if YYDEBUG @@ -77,85 +77,87 @@ static const unsigned short int yyprhs[] = 482, 487, 491, 497, 500, 503, 508, 514, 519, 525, 527, 529, 531, 533, 539, 542, 544, 547, 551, 554, 556, 558, 560, 562, 564, 566, 571, 577, 579, 581, - 585, 590, 594, 596, 599, 602, 604, 607, 610, 613, - 615, 619, 621, 625, 630, 635, 637, 639, 643, 646, - 650, 653, 655, 657, 659, 660, 662, 663, 665, 668, - 670, 673, 676, 679, 682, 685, 688, 690, 692, 694 + 585, 590, 594, 596, 599, 602, 604, 607, 610, 612, + 615, 618, 620, 624, 626, 630, 635, 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 int yyrhs[] = { - 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, 103, -1, - 124, 26, 124, -1, -1, 23, 90, -1, 24, 74, - 104, 73, 90, 96, -1, 21, 74, 88, 104, 73, - 90, 96, -1, 22, 74, 88, 106, 73, 90, 96, - -1, -1, 25, 87, -1, 107, 19, 74, 88, 102, - 73, 100, 90, 98, -1, 107, 20, 74, 88, 103, - 73, 100, 90, 98, -1, 107, 26, 43, 88, 139, - 74, 104, 73, 90, 98, -1, 107, 26, 141, 74, - 88, 104, 73, 90, 98, -1, 107, 26, 74, 88, - 104, 73, 90, 98, -1, 107, 26, 74, 88, 105, - 77, 102, 77, 100, 105, 73, 90, -1, 107, 87, - 98, -1, -1, -1, 95, -1, -1, 124, -1, 124, - -1, 124, -1, 101, -1, 103, -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, 74, 124, 73, 75, 124, 78, -1, 74, - 73, 75, 124, 78, -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, 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, 125, 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 + 87, 0, -1, 90, 94, -1, 3, 89, 94, 77, + -1, -1, -1, 3, 92, 94, 77, -1, -1, -1, + -1, 94, 109, -1, 94, 93, 95, -1, 108, 98, + -1, 100, -1, 108, 78, -1, 108, 96, 78, -1, + 1, -1, 125, -1, 125, 21, 125, -1, 125, 22, + 125, -1, 125, 19, 125, -1, 125, 20, 104, -1, + 125, 26, 125, -1, -1, 23, 91, -1, 24, 75, + 105, 74, 91, 97, -1, 21, 75, 89, 105, 74, + 91, 97, -1, 22, 75, 89, 107, 74, 91, 97, + -1, -1, 25, 88, -1, 108, 19, 75, 89, 103, + 74, 101, 91, 99, -1, 108, 20, 75, 89, 104, + 74, 101, 91, 99, -1, 108, 26, 43, 89, 140, + 75, 105, 74, 91, 99, -1, 108, 26, 142, 75, + 89, 105, 74, 91, 99, -1, 108, 26, 75, 89, + 105, 74, 91, 99, -1, 108, 26, 75, 89, 106, + 78, 103, 78, 101, 106, 74, 91, -1, 108, 88, + 99, -1, -1, -1, 96, -1, -1, 125, -1, 125, + -1, 125, -1, 102, -1, 104, -1, -1, 13, -1, + 110, -1, 113, -1, 112, -1, 122, -1, 123, -1, + 14, 116, 111, 88, -1, 4, -1, -1, 44, 114, + 117, 118, 119, 121, -1, 15, 114, 117, 118, 119, + 121, -1, -1, -1, -1, 4, -1, -1, 7, -1, + -1, 46, 7, -1, 46, -1, 46, 7, -1, 46, + -1, 88, -1, 78, -1, 17, 4, 78, -1, -1, + 18, 114, 124, 4, 4, 138, 78, -1, 125, 51, + 125, -1, 125, 50, 125, -1, 125, 49, 125, -1, + 126, -1, 126, 53, -1, 126, 53, 135, -1, 135, + -1, 33, 147, 126, -1, 31, 75, 147, 125, 74, + -1, 135, 73, 129, 75, 139, 74, -1, 135, 73, + 129, -1, 5, 147, 138, -1, 6, 147, 75, 139, + 74, -1, 33, 138, -1, 31, 75, 139, 74, -1, + -1, 12, 115, 88, 128, 138, -1, 5, -1, 142, + -1, 146, 3, 125, 78, 77, -1, 142, 76, 125, + 79, -1, 135, 73, 76, 125, 79, -1, 130, 76, + 125, 79, -1, 142, 3, 125, 78, 77, -1, 135, + 73, 3, 125, 78, 77, -1, 130, 3, 125, 78, + 77, -1, 135, 73, 75, 74, -1, 135, 73, 75, + 125, 74, -1, 130, 75, 125, 74, -1, 130, 75, + 74, -1, 75, 125, 74, 76, 125, 79, -1, 75, + 74, 76, 125, 79, -1, 135, 54, 135, -1, 135, + 68, 135, -1, 135, 36, 135, -1, 135, 37, 135, + -1, 135, 62, 135, -1, 135, 34, 135, -1, 135, + 35, 135, -1, 135, 61, 135, -1, 135, 60, 135, + -1, 135, 28, 135, -1, 135, 59, 135, -1, 135, + 58, 135, -1, 135, 57, 135, -1, 135, 63, 135, + -1, 80, 135, -1, 81, 135, -1, 64, 135, -1, + 65, 135, -1, 135, 70, -1, 135, 69, -1, 72, + 135, -1, 71, 135, -1, 76, 125, 79, -1, 76, + 79, -1, 40, 125, 78, 77, -1, 40, 78, 77, + -1, 16, 115, 118, 119, 88, -1, 39, 135, -1, + 39, 88, -1, 39, 4, 75, 74, -1, 39, 4, + 75, 125, 74, -1, 39, 142, 75, 74, -1, 39, + 142, 75, 125, 74, -1, 131, -1, 132, -1, 133, + -1, 134, -1, 135, 55, 135, 56, 135, -1, 66, + 135, -1, 136, -1, 42, 135, -1, 75, 125, 74, + -1, 75, 74, -1, 142, -1, 146, -1, 144, -1, + 143, -1, 145, -1, 130, -1, 143, 76, 125, 79, + -1, 143, 3, 125, 78, 77, -1, 7, -1, 141, + -1, 141, 75, 74, -1, 141, 75, 125, 74, -1, + 41, 4, 138, -1, 27, -1, 27, 135, -1, 52, + 126, -1, 32, -1, 32, 88, -1, 32, 135, -1, + 45, -1, 45, 135, -1, 11, 135, -1, 29, -1, + 29, 75, 74, -1, 10, -1, 30, 75, 74, -1, + 30, 75, 125, 74, -1, 8, 75, 126, 74, -1, + 4, -1, 127, -1, 43, 137, 120, -1, 43, 137, + -1, 75, 125, 74, -1, 75, 74, -1, 142, -1, + 144, -1, 143, -1, -1, 126, -1, -1, 125, -1, + 125, 53, -1, 142, -1, 47, 147, -1, 82, 147, + -1, 83, 147, -1, 84, 147, -1, 38, 147, -1, + 85, 147, -1, 4, -1, 142, -1, 88, -1, 9, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -177,10 +179,11 @@ static const unsigned short int yyrline[] = 558, 560, 562, 568, 570, 572, 580, 589, 593, 601, 602, 603, 604, 605, 607, 609, 611, 613, 615, 617, 619, 621, 623, 625, 627, 629, 635, 642, 644, 646, - 648, 651, 654, 657, 659, 661, 663, 665, 667, 670, - 672, 674, 677, 680, 682, 684, 685, 689, 691, 696, - 698, 700, 702, 704, 709, 711, 716, 717, 719, 725, - 729, 733, 737, 741, 745, 749, 754, 756, 758, 761 + 648, 651, 654, 657, 659, 661, 663, 665, 667, 669, + 671, 674, 676, 678, 681, 684, 686, 688, 689, 693, + 695, 700, 702, 704, 706, 708, 713, 715, 720, 721, + 723, 729, 733, 737, 741, 745, 749, 753, 758, 760, + 762, 765 }; #endif @@ -195,18 +198,18 @@ static const char *const yytname[] = "IF", "UNLESS", "ELSE", "ELSIF", "CONTINUE", "FOR", "LOOPEX", "DOTDOT", "FUNC0", "FUNC1", "FUNC", "UNIOP", "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP", "DOLSHARP", "DO", "HASHBRACK", "NOAMP", "LOCAL", "MY", "MYSUB", - "COLONATTR", "'&'", "PREC_LOW", "DOROP", "OROP", "ANDOP", "NOTOP", "','", - "ASSIGNOP", "'?'", "':'", "DORDOR", "OROR", "ANDAND", "BITOROP", - "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", "REFGEN", "UMINUS", - "POWOP", "POSTDEC", "POSTINC", "PREDEC", "PREINC", "ARROW", "')'", "'('", - "'['", "'}'", "';'", "']'", "'-'", "'+'", "'$'", "'@'", "'%'", "'*'", - "$accept", "prog", "block", "remember", "progstart", "mblock", - "mremember", "savescope", "lineseq", "line", "sideff", "else", "cond", - "cont", "loop", "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", - "miexpr", "label", "decl", "format", "formname", "mysubrout", "subrout", - "startsub", "startanonsub", "startformsub", "subname", "proto", - "subattrlist", "myattrlist", "subbody", "package", "use", "@1", "expr", - "argexpr", "listop", "@2", "method", "subscripted", "termbinop", + "REQUIRE", "COLONATTR", "'&'", "PREC_LOW", "DOROP", "OROP", "ANDOP", + "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "DORDOR", "OROR", "ANDAND", + "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", "REFGEN", + "UMINUS", "POWOP", "POSTDEC", "POSTINC", "PREDEC", "PREINC", "ARROW", + "')'", "'('", "'['", "'}'", "';'", "']'", "'-'", "'+'", "'$'", "'@'", + "'%'", "'*'", "$accept", "prog", "block", "remember", "progstart", + "mblock", "mremember", "savescope", "lineseq", "line", "sideff", "else", + "cond", "cont", "loop", "mintro", "nexpr", "texpr", "iexpr", "mexpr", + "mnexpr", "miexpr", "label", "decl", "format", "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 @@ -222,37 +225,38 @@ static const unsigned short int yytoknum[] = 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 38, 300, 301, 302, - 303, 304, 44, 305, 63, 58, 306, 307, 308, 309, - 310, 311, 312, 33, 126, 313, 314, 315, 316, 317, - 318, 319, 320, 41, 40, 91, 125, 59, 93, 45, - 43, 36, 64, 37, 42 + 294, 295, 296, 297, 298, 299, 300, 38, 301, 302, + 303, 304, 305, 44, 306, 63, 58, 307, 308, 309, + 310, 311, 312, 313, 33, 126, 314, 315, 316, 317, + 318, 319, 320, 321, 41, 40, 91, 125, 59, 93, + 45, 43, 36, 64, 37, 42 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 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, 101, 101, - 102, 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, 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, 135, 135, 136, - 136, 136, 136, 136, 137, 137, 138, 138, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 146, 146, 146 + 0, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 94, 94, 95, 95, 95, 95, 96, 96, 96, 96, + 96, 96, 96, 97, 97, 97, 98, 98, 99, 99, + 100, 100, 100, 100, 100, 100, 100, 101, 102, 102, + 103, 103, 104, 105, 106, 107, 108, 108, 109, 109, + 109, 109, 109, 110, 111, 111, 112, 113, 114, 115, + 116, 117, 118, 118, 119, 119, 119, 120, 120, 121, + 121, 122, 124, 123, 125, 125, 125, 125, 126, 126, + 126, 127, 127, 127, 127, 127, 127, 127, 127, 128, + 127, 129, 129, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 131, 131, 131, 131, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, + 132, 132, 132, 132, 132, 132, 132, 132, 133, 133, + 133, 133, 133, 134, 134, 134, 134, 134, 134, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 136, + 136, 137, 137, 137, 137, 137, 138, 138, 139, 139, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 147, + 147, 147 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -274,10 +278,11 @@ static const unsigned char yyr2[] = 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, 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 + 4, 3, 1, 2, 2, 1, 2, 2, 1, 2, + 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 @@ -288,565 +293,574 @@ static const unsigned char yydefact[] = 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, 175, 0, 0, 157, 0, - 171, 0, 59, 59, 0, 0, 0, 0, 0, 162, - 169, 0, 0, 165, 184, 0, 0, 0, 0, 0, + 71, 0, 62, 16, 4, 177, 0, 0, 157, 0, + 173, 0, 59, 59, 0, 0, 0, 0, 0, 162, + 171, 0, 0, 165, 186, 0, 0, 0, 0, 0, + 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 28, 0, + 12, 17, 77, 178, 154, 139, 140, 141, 142, 80, + 145, 158, 149, 152, 151, 153, 150, 53, 63, 64, + 0, 64, 9, 198, 201, 200, 199, 186, 0, 0, + 170, 0, 62, 4, 4, 4, 4, 4, 4, 0, + 163, 0, 0, 188, 166, 167, 198, 187, 87, 199, + 0, 196, 177, 134, 133, 149, 0, 0, 186, 146, + 0, 180, 183, 185, 184, 169, 192, 164, 122, 123, + 144, 127, 126, 148, 0, 129, 0, 120, 121, 193, + 194, 195, 197, 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, - 14, 0, 0, 0, 0, 0, 0, 28, 0, 12, - 17, 77, 176, 154, 139, 140, 141, 142, 80, 145, - 158, 149, 152, 151, 153, 150, 53, 63, 64, 0, - 64, 9, 196, 199, 198, 197, 184, 0, 0, 168, - 0, 62, 4, 4, 4, 4, 4, 4, 0, 163, - 0, 0, 186, 166, 167, 196, 185, 87, 197, 0, - 194, 175, 134, 133, 149, 0, 0, 184, 146, 0, - 178, 181, 183, 182, 190, 164, 122, 123, 144, 127, - 126, 148, 0, 129, 0, 120, 121, 191, 192, 193, - 195, 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, 125, 124, 0, 0, 0, 0, 0, 0, 0, - 66, 0, 184, 0, 8, 85, 186, 0, 89, 64, - 40, 0, 0, 0, 0, 0, 4, 170, 172, 0, - 187, 0, 0, 81, 0, 0, 131, 0, 161, 180, - 0, 68, 177, 0, 147, 128, 29, 20, 21, 42, - 18, 19, 22, 76, 75, 74, 79, 0, 103, 0, - 0, 115, 111, 112, 108, 109, 106, 0, 118, 117, - 116, 114, 113, 110, 119, 107, 0, 91, 0, 0, - 84, 92, 159, 0, 0, 0, 0, 0, 0, 65, - 70, 69, 57, 0, 56, 3, 0, 174, 184, 0, - 0, 41, 0, 0, 43, 45, 0, 0, 189, 39, - 44, 0, 0, 17, 0, 173, 188, 88, 0, 135, - 0, 137, 0, 130, 179, 67, 0, 0, 0, 102, - 96, 0, 0, 100, 0, 0, 186, 160, 0, 94, - 0, 155, 0, 73, 86, 90, 132, 37, 37, 0, - 0, 0, 0, 40, 0, 82, 136, 138, 105, 0, - 99, 143, 0, 101, 95, 0, 97, 156, 93, 0, - 0, 7, 23, 23, 0, 28, 0, 0, 104, 98, - 83, 28, 28, 9, 0, 0, 26, 27, 0, 34, - 37, 28, 30, 31, 8, 24, 0, 28, 0, 33, - 6, 0, 32, 0, 0, 0, 23, 35, 25 + 0, 0, 0, 125, 124, 0, 0, 0, 0, 0, + 0, 0, 66, 0, 186, 0, 8, 85, 188, 0, + 89, 64, 40, 0, 0, 0, 0, 0, 4, 172, + 174, 0, 189, 0, 0, 81, 0, 0, 131, 0, + 161, 182, 0, 68, 179, 0, 147, 128, 29, 20, + 21, 42, 18, 19, 22, 76, 75, 74, 79, 0, + 103, 0, 0, 115, 111, 112, 108, 109, 106, 0, + 118, 117, 116, 114, 113, 110, 119, 107, 0, 91, + 0, 0, 84, 92, 159, 0, 0, 0, 0, 0, + 0, 65, 70, 69, 57, 0, 56, 3, 0, 176, + 186, 0, 0, 41, 0, 0, 43, 45, 0, 0, + 191, 39, 44, 0, 0, 17, 0, 175, 190, 88, + 0, 135, 0, 137, 0, 130, 181, 67, 0, 0, + 0, 102, 96, 0, 0, 100, 0, 0, 188, 160, + 0, 94, 0, 155, 0, 73, 86, 90, 132, 37, + 37, 0, 0, 0, 0, 40, 0, 82, 136, 138, + 105, 0, 99, 143, 0, 101, 95, 0, 97, 156, + 93, 0, 0, 7, 23, 23, 0, 28, 0, 0, + 104, 98, 83, 28, 28, 9, 0, 0, 26, 27, + 0, 34, 37, 28, 30, 31, 8, 24, 0, 28, + 0, 33, 6, 0, 32, 0, 0, 0, 23, 35, + 25 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { - -1, 1, 104, 101, 2, 362, 373, 10, 4, 23, - 299, 376, 79, 162, 24, 359, 300, 290, 238, 293, - 302, 296, 25, 11, 12, 27, 13, 14, 18, 110, - 17, 29, 98, 201, 232, 282, 15, 16, 31, 294, - 81, 82, 288, 270, 83, 84, 85, 86, 87, 88, - 89, 140, 127, 221, 297, 90, 91, 92, 93, 94, - 95, 106 + -1, 1, 105, 102, 2, 364, 375, 10, 4, 23, + 301, 378, 80, 164, 24, 361, 302, 292, 240, 295, + 304, 298, 25, 11, 12, 27, 13, 14, 18, 111, + 17, 29, 99, 203, 234, 284, 15, 16, 31, 296, + 82, 83, 290, 272, 84, 85, 86, 87, 88, 89, + 90, 141, 128, 223, 299, 91, 92, 93, 94, 95, + 96, 107 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -344 +#define YYPACT_NINF -352 static const short int yypact[] = { - -344, 25, -344, -344, 238, -344, -344, 55, -344, -344, - 66, -344, -344, -344, -344, -344, -344, 86, 107, 38, - -344, 107, -344, -344, -344, 264, -344, 113, -344, 112, - -344, 122, 112, -344, -344, -344, 31, 31, -344, 59, - -344, 1575, -344, -344, 73, 79, 80, 101, -6, 1575, - 105, 117, 119, 602, 520, 31, 684, 765, 125, 1575, - 177, 31, 1575, 1575, 1575, 1575, 1575, 1575, 846, 927, - -344, 1575, 1575, 31, 31, 31, 31, 170, 124, -344, - 567, 144, -344, 18, -344, -344, -344, -344, 1795, -344, - 132, 10, 33, -344, -344, 206, -344, -344, 165, 225, - 165, -344, -344, -344, -344, -344, 1575, 168, 1575, 94, - 113, 112, -344, -344, -344, -344, -344, -344, 171, 1795, - 166, 1008, 520, -344, 94, 1701, 144, -344, 1641, 1575, - -344, 172, -344, 94, 46, 174, 263, 1575, 94, 1089, - 209, -344, -344, -344, -344, 144, 5, 5, 5, -46, - -46, 186, 87, -344, 32, 5, 5, -344, -344, -344, - -344, 113, -344, -344, 1575, 1575, 1575, 1575, 1575, 1575, - 1575, 1575, 1575, 1575, 1170, 1575, 1575, 1575, 1575, 1575, - 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, - 1575, -344, -344, 53, 1251, 1575, 1575, 1575, 1575, 1575, - 271, 6, 1575, 6, 150, -344, 1575, -2, -344, 165, - 1575, 1575, 1575, 1575, 198, 354, -344, -344, -344, 250, - 319, 208, 1575, 144, 1332, 1413, -344, 232, -344, -344, - 325, 309, -344, 1575, 234, -344, -344, 282, -344, 282, - 282, 282, 282, 267, 267, -344, 1795, 456, -344, 340, - 74, 1879, 670, 506, 753, 252, 1795, 1753, 1894, 1894, - 342, 425, 588, 716, 5, 5, 1575, -344, 1494, 1575, - 248, -344, -344, 466, 620, 109, 712, 154, 764, -344, - -344, -344, -344, 249, -344, -344, 260, -344, 1575, 113, - 269, 282, 276, 280, 282, -344, 281, 251, -344, -344, - -344, 284, 259, 214, 1575, -344, -344, -344, 496, -344, - 507, -344, 548, -344, -344, -344, 199, 1575, 261, -344, - -344, 1575, 783, -344, 578, 302, 1575, -344, 296, -344, - 306, -344, 315, -344, -344, -344, -344, -344, -344, 396, - 396, 1575, 396, 1575, 333, -344, -344, -344, -344, 373, - -344, 1837, 331, -344, -344, 335, -344, -344, -344, 396, - 396, -344, 81, 81, 339, 170, 338, 396, -344, -344, - -344, 170, 170, -344, 396, 346, -344, -344, 396, -344, - -344, 170, -344, -344, 213, -344, 1575, 170, 438, -344, - -344, 343, -344, 353, 396, 396, 81, -344, -344 + -352, 27, -352, -352, 121, -352, -352, 15, -352, -352, + 18, -352, -352, -352, -352, -352, -352, 31, 39, -28, + -352, 39, -352, -352, -352, 321, -352, 64, -352, 68, + -352, 102, 68, -352, -352, -352, 7, 7, -352, 8, + -352, 1642, -352, -352, 36, 49, 62, 65, -34, 1642, + 74, 80, 89, 657, 574, 7, 740, 822, 119, 1642, + 79, 1642, 7, 1642, 1642, 1642, 1642, 1642, 1642, 904, + 986, -352, 1642, 1642, 7, 7, 7, 7, 104, 88, + -352, 821, 117, -352, 34, -352, -352, -352, -352, 1860, + -352, 106, 10, 14, -352, -352, 179, -352, -352, 138, + 181, 138, -352, -352, -352, -352, -352, 1642, 114, 1642, + 308, 64, 68, -352, -352, -352, -352, -352, -352, 120, + 1860, 126, 1068, 574, -352, 308, 1770, 117, -352, 1709, + 1642, -352, 128, -352, 308, 52, 135, 108, 1642, 308, + 1150, 148, -352, -352, -352, 1860, -352, 117, 266, 266, + 266, -9, -9, 161, -21, -352, 118, 266, 266, -352, + -352, -352, -352, 64, -352, -352, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1232, 1642, 1642, 1642, + 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, + 1642, 1642, 1642, -352, -352, 37, 1314, 1642, 1642, 1642, + 1642, 1642, 221, 4, 1642, 4, 48, -352, 1642, -20, + -352, 138, 1642, 1642, 1642, 1642, 160, 406, -352, -352, + -352, 19, 621, 170, 1642, 117, 1396, 1478, -352, 177, + -352, -352, 201, 249, -352, 1642, 190, -352, -352, 67, + -352, 67, 67, 67, 67, 220, 220, -352, 1860, 182, + -352, 592, 129, 1920, 643, 477, 859, 721, 1860, 1817, + 227, 227, 244, 393, 560, 690, 266, 266, 1642, -352, + 1560, 1642, 198, -352, -352, 602, 306, 259, 374, 340, + 391, -352, -352, -352, -352, 199, -352, -352, 208, -352, + 1642, 64, 209, 67, 211, 217, 67, -352, 224, 226, + -352, -352, -352, 225, 233, 185, 1642, -352, -352, -352, + 725, -352, 807, -352, 827, -352, -352, -352, 425, 1642, + 238, -352, -352, 1642, 459, -352, 874, 509, 1642, -352, + 241, -352, 242, -352, 246, -352, -352, -352, -352, -352, + -352, 299, 299, 1642, 299, 1642, 247, -352, -352, -352, + -352, 519, -352, 1903, 253, -352, -352, 272, -352, -352, + -352, 299, 299, -352, 54, 54, 275, 104, 289, 299, + -352, -352, -352, 104, 104, -352, 299, 294, -352, -352, + 299, -352, -352, 104, -352, -352, 116, -352, 1642, 104, + 491, -352, -352, 298, -352, 300, 299, 299, 54, -352, + -352 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -344, -344, -23, -98, -344, 1424, -344, -344, -100, -344, - 402, -343, -344, -189, -344, -326, -344, 89, -182, -209, - 42, -344, -344, -344, -344, -344, -344, -344, 61, 397, - -344, 420, -22, -92, -344, 244, -344, -344, -344, -25, - -51, -344, -344, -344, -344, -344, -344, -344, -344, 35, - -344, -344, -99, -201, -344, -344, -9, 392, 393, -344, - -344, -13 + -352, -352, -7, -92, -352, -104, -352, -352, -101, -352, + 350, -351, -352, 152, -352, -325, -352, 38, -177, -211, + -11, -352, -352, -352, -352, -352, -352, -352, 72, 337, + -352, 361, -27, -97, -352, 189, -352, -352, -352, -25, + -51, -352, -352, -352, -352, -352, -352, -352, -352, 35, + -352, -352, -99, -206, -352, -352, 193, 335, 338, -352, + -352, -3 }; /* 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 -178 static const short int yytable[] = { - 80, 204, 77, 126, 96, 286, 301, 205, 203, 34, - 100, 145, 360, 195, 210, 211, 212, 213, 214, 215, - 377, 173, -176, -176, 107, 3, 193, 105, 105, 292, - 123, 295, 136, 132, 34, 102, 197, 116, 228, 118, - 103, 129, 130, 152, 154, 128, 105, 134, 144, 195, - 172, 141, 105, 398, 388, 126, 266, 207, 267, 19, - 157, 158, 159, 160, 105, 105, 105, 105, 117, 20, - 21, 287, 190, 191, 192, 73, 109, 193, 223, 22, - 169, 170, 171, 280, 119, 196, 126, 208, 124, 209, - 26, 133, 174, 175, 138, 344, 219, 220, 146, 147, - 148, 149, 150, 283, 374, 375, 155, 156, 198, 222, - 235, 28, 73, 128, 230, 30, 34, 289, 304, 97, - 225, 196, 169, 170, 171, 355, 99, 268, 269, 137, - 179, 180, 364, 108, 73, 169, 170, 171, 236, 237, - 239, 240, 241, 242, 243, 244, 245, 112, 247, 249, - 250, 126, 320, 113, 114, 188, 189, 169, 170, 171, - 234, 190, 191, 192, 5, 6, 193, 7, 8, 273, - 274, 275, 276, 277, 278, 115, 379, 391, 281, 120, - 281, 220, 382, 383, 271, 291, 239, 329, 239, 335, - 303, 121, 389, 122, 9, 161, 172, 308, 392, 310, - 312, 163, 169, 170, 171, 298, 194, 246, 316, 199, - 200, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 285, 5, 6, 202, - 7, 8, 331, 164, 165, 166, 167, 126, -2, 217, - 168, 322, 206, 324, 325, 216, 224, 169, 170, 171, - 226, 139, 5, 6, 231, 7, 8, 9, 73, 74, - 75, 233, 169, 170, 171, 33, 336, 34, 35, 36, - 37, 38, 39, 384, 40, 41, 42, 348, 279, 73, - 43, 307, 9, 44, 45, 46, 47, -43, 179, 390, - 48, 49, 349, 50, 51, 52, 53, 54, 169, 170, - 171, 220, 55, 56, 57, 58, 59, 60, 313, 317, - 61, 169, 170, 171, 189, 62, 315, 171, 291, 190, - 191, 192, 326, 305, 193, 341, 333, 63, 64, 65, - 169, 170, 171, 334, 66, 67, 343, 350, 68, 69, - 227, 70, 337, 71, 72, 73, 74, 75, 76, 338, - 169, 170, 171, 339, 340, 33, 351, 342, 35, 36, - 37, 38, 39, 80, 40, 41, 42, 169, 170, 171, - 43, 306, 356, 169, 170, 171, 177, 178, 179, 180, - 354, 49, 357, 50, 51, 52, 53, 54, 169, 170, - 171, 358, 55, 56, 57, 58, 59, 60, 314, 361, - 61, 186, 187, 188, 189, 62, 367, 369, 370, 190, - 191, 192, 378, 319, 193, 380, 394, 63, 64, 65, - 386, 169, 170, 171, 66, 67, 395, 78, 68, 69, - 393, -38, 366, 71, 72, 73, 74, 75, 76, 33, - 111, 32, 35, 36, 37, 38, 39, 284, 40, 41, - 42, 368, 142, 143, 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, -38, 68, 69, 169, 170, 171, 71, 72, 73, - 74, 75, 76, 34, 125, 36, 37, 38, 39, 103, - 40, 41, 42, 318, 0, 0, 43, 0, 0, 327, - 177, -176, 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, 345, - 0, 62, 0, 190, 191, 192, 0, 0, 193, 0, - 346, 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, 347, 177, 178, 179, 180, 169, 170, 171, 49, - 0, 50, 51, 52, 53, 54, 0, 0, 0, 0, - 55, 56, 57, 58, 59, 60, 0, 0, 61, 188, - 189, 353, 0, 62, 0, 190, 191, 192, 0, 0, - 193, 0, 0, 0, 0, 63, 64, 65, 169, 170, - 171, 0, 66, 67, 0, 0, 68, 69, 0, 0, - 0, 71, 72, 73, 74, 75, 76, 34, 131, 36, - 37, 38, 39, 0, 40, 41, 42, 328, 0, 0, - 43, 0, 0, 0, -176, 0, 179, 180, 0, 0, + 81, 206, 288, 127, 205, 101, 303, 34, 207, 117, + 34, 103, 147, 197, 379, 362, 104, 199, 78, 19, + 97, 212, 213, 214, 215, 216, 217, 3, 171, 172, + 173, 22, 137, 174, 108, 26, 294, 175, 297, 230, + 268, 118, 269, 28, 154, 156, 124, 400, 74, 133, + 30, 130, 131, 236, 289, 197, 127, 390, 209, 146, + -178, -178, 5, 6, 195, 7, 8, 34, 171, 172, + 173, 159, 160, 161, 162, 98, 110, 376, 377, 225, + 20, 21, 282, 109, 120, 211, 198, 127, 125, 74, + 200, 134, 9, 307, 139, 346, 145, 221, 222, 148, + 149, 150, 151, 152, 210, 285, 100, 157, 158, 176, + 177, 113, 270, 271, 291, 232, 171, 172, 173, 74, + 224, -2, 357, 138, 114, 287, 306, 227, 198, 163, + 5, 6, 366, 7, 8, 5, 6, 115, 7, 8, + 116, 239, 241, 242, 243, 244, 245, 246, 247, 121, + 249, 251, 252, 127, 140, 122, 238, 171, 172, 173, + 9, 74, 75, 76, 123, 9, 165, 171, 172, 173, + 174, 275, 276, 277, 278, 279, 280, 393, 171, 172, + 173, 196, 201, 222, 202, 204, 229, 293, 241, 208, + 241, 337, 305, 392, 233, 218, 283, 237, 283, 310, + 219, 312, 314, 226, 166, 167, 168, 169, 322, 248, + 318, 170, 228, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 281, 106, + 106, 171, 172, 173, 171, 172, 173, 235, 365, 127, + 367, 119, 74, 324, 309, 326, 327, 129, 106, 135, + 171, 172, 173, 142, 315, 106, 317, 373, 374, -43, + 320, 179, 180, 181, 182, 383, 319, 106, 106, 106, + 106, 173, 387, 328, 386, 316, 389, 335, 179, 180, + 181, 182, 336, 339, 338, 340, 187, 188, 189, 190, + 191, 341, 398, 399, 351, 192, 193, 194, 342, 344, + 195, 343, 363, 222, 188, 189, 190, 191, 171, 172, + 173, 345, 192, 193, 194, 352, 129, 195, 358, 359, + 293, 369, 33, 360, 34, 35, 36, 37, 38, 39, + 371, 40, 41, 42, 192, 193, 194, 43, 331, 195, + 44, 45, 46, 47, 181, 182, 372, 48, 49, 380, + 50, 51, 52, 53, 54, 171, 172, 173, 353, 55, + 56, 57, 58, 59, 60, 81, 61, 382, 62, 388, + 190, 191, 396, 63, 397, 79, 192, 193, 194, 395, + 112, 195, 32, 368, 330, 64, 65, 66, 273, 171, + 172, 173, 67, 68, 286, 143, 69, 70, 144, 71, + 0, 72, 73, 74, 75, 76, 77, 33, 0, 300, + 35, 36, 37, 38, 39, 0, 40, 41, 42, 333, + 0, 0, 43, 171, 172, 173, 0, 179, 180, 181, + 182, 0, 0, 49, 0, 50, 51, 52, 53, 54, + 171, 172, 173, 0, 55, 56, 57, 58, 59, 60, + 0, 61, 332, 62, 189, 190, 191, 0, 63, 0, + 0, 192, 193, 194, 0, 0, 195, 0, 0, 334, + 64, 65, 66, 0, 171, 172, 173, 67, 68, 0, + 0, 69, 70, 0, -38, 0, 72, 73, 74, 75, + 76, 77, 33, 0, 0, 35, 36, 37, 38, 39, + 0, 40, 41, 42, 350, 0, 0, 43, 171, 172, + 173, 179, -178, 181, 182, 0, 0, 0, 49, 381, + 50, 51, 52, 53, 54, 384, 385, 0, 0, 55, + 56, 57, 58, 59, 60, 391, 61, 354, 62, 190, + 191, 394, 0, 63, 0, 192, 193, 194, 0, 0, + 195, 0, 0, 0, 0, 64, 65, 66, 171, 172, + 173, 0, 67, 68, 0, -38, 69, 70, 171, 172, + 173, 72, 73, 74, 75, 76, 77, 34, 126, 36, + 37, 38, 39, 104, 40, 41, 42, 0, 356, 0, + 43, 0, 0, 0, 179, 180, 181, 182, 370, 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, - 169, 170, 171, 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, 330, - 0, 0, 49, 0, 50, 51, 52, 53, 54, 0, - 0, 0, 0, 55, 56, 57, 58, 59, 60, 0, - 0, 61, 169, 170, 171, 189, 62, 0, 0, 0, - 190, 191, 192, 0, 0, 193, 0, 0, 63, 64, - 65, 169, 170, 171, 0, 66, 67, 0, 0, 68, - 69, 332, 135, 0, 71, 72, 73, 74, 75, 76, + 0, 0, 55, 56, 57, 58, 59, 60, 0, 61, + 0, 62, 190, 191, 0, 0, 63, 0, 192, 193, + 194, 0, 0, 195, 0, 0, 0, 0, 64, 65, + 66, 171, 172, 173, 0, 67, 68, 0, 0, 69, + 70, 171, 172, 173, 72, 73, 74, 75, 76, 77, + 34, 35, 36, 37, 38, 39, 321, 40, 41, 42, + 171, 172, 173, 43, 308, 0, 329, -178, 0, 181, + 182, 0, 0, 0, 49, 0, 50, 51, 52, 53, + 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, + 60, 0, 61, 0, 62, 190, 191, 0, 0, 63, + 0, 192, 193, 194, 0, 0, 195, 0, 0, 0, + 0, 64, 65, 66, 0, 0, 181, 182, 67, 68, + 0, 0, 69, 70, 0, 0, 0, 72, 73, 74, + 75, 76, 77, 34, 132, 36, 37, 38, 39, 0, + 40, 41, 42, 191, 0, 0, 43, 181, 192, 193, + 194, 0, 0, 195, 0, 0, 0, 49, 0, 50, + 51, 52, 53, 54, 171, 172, 173, 0, 55, 56, + 57, 58, 59, 60, 191, 61, 0, 62, 0, 192, + 193, 194, 63, 0, 195, 0, 0, 0, 0, 347, + 0, 0, 0, 0, 64, 65, 66, 0, 0, 0, + 0, 67, 68, 0, 0, 69, 70, 0, 0, 0, + 72, 73, 74, 75, 76, 77, 35, 36, 37, 38, + 39, 0, 40, 41, 42, 0, 0, 0, 43, 0, + 166, 167, 168, 169, 0, 0, 0, 170, 0, 49, + 0, 50, 51, 52, 53, 54, 171, 172, 173, 0, + 55, 56, 57, 58, 59, 60, 0, 61, 0, 62, + 171, 172, 173, 0, 63, 0, 171, 172, 173, 0, + 0, 348, 0, 0, 0, 0, 64, 65, 66, 0, + 0, 0, 0, 67, 68, 0, 0, 69, 70, 0, + 136, 349, 72, 73, 74, 75, 76, 77, 35, 36, + 37, 38, 39, 0, 40, 41, 42, 0, 0, 0, + 43, 0, 191, 171, 172, 173, 0, 192, 193, 194, + 0, 49, 195, 50, 51, 52, 53, 54, 0, 0, + 0, 0, 55, 56, 57, 58, 59, 60, 355, 61, + 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, + 66, 0, 0, 0, 0, 67, 68, 0, 153, 69, + 70, 0, 0, 0, 72, 73, 74, 75, 76, 77, 35, 36, 37, 38, 39, 0, 40, 41, 42, 0, - 352, 0, 43, 0, 0, 0, 0, 0, 0, 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, 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, 61, 0, 62, 0, 0, 0, 0, 63, 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, + 64, 65, 66, 0, 0, 0, 0, 67, 68, 0, + 0, 69, 70, 0, 0, 155, 72, 73, 74, 75, + 76, 77, 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, + 59, 60, 0, 61, 0, 62, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 65, 66, 0, 0, 0, 0, 67, + 68, 0, 220, 69, 70, 0, 0, 0, 72, 73, + 74, 75, 76, 77, 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, 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, + 57, 58, 59, 60, 0, 61, 0, 62, 0, 0, + 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 65, 66, 0, 0, 0, + 0, 67, 68, 0, 231, 69, 70, 0, 0, 0, + 72, 73, 74, 75, 76, 77, 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, 309, 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, + 55, 56, 57, 58, 59, 60, 0, 61, 0, 62, + 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 0, + 0, 0, 0, 67, 68, 0, 250, 69, 70, 0, + 0, 0, 72, 73, 74, 75, 76, 77, 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, 323, 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, 195, 66, 67, 0, 0, 68, - 69, 0, 0, 0, 71, 72, 73, 74, 75, 76, - -149, -149, -149, -149, 0, 0, 0, -149, 0, -149, - 0, 0, 0, 0, 0, -149, -149, -149, -149, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, - -149, -149, 0, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, -149, 0, 0, 0, 0, -149, -149, - -149, 0, 0, -149, -149, 0, 196, 0, -149, -149, - -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, 363, 0, 365, 0, -175, -175, - -175, 0, 0, -175, -175, 0, 0, 0, -175, -175, - 0, 176, 0, 371, 372, 0, 0, 177, 178, 179, - 180, 381, 0, 0, 0, 0, 0, 0, 385, 0, - 0, 0, 387, 0, 0, 0, 181, 182, 321, 183, - 184, 185, 186, 187, 188, 189, 0, 0, 396, 397, - 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, 55, 56, 57, 58, 59, 60, 0, 61, + 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, + 66, 0, 0, 0, 0, 67, 68, 0, 274, 69, + 70, 0, 0, 0, 72, 73, 74, 75, 76, 77, + 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, 61, 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 177, 178, - 179, 180, 0, 0, 0, 183, 184, 185, 186, 187, - 188, 189, 0, 0, 0, 0, 190, 191, 192, 0, - 0, 193, 185, 186, 187, 188, 189, 0, 0, 0, - 0, 190, 191, 192, 0, 0, 193 + 64, 65, 66, 0, 0, 0, 0, 67, 68, 0, + 311, 69, 70, 0, 0, 0, 72, 73, 74, 75, + 76, 77, 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, 61, 0, 62, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 64, 65, 66, 0, 0, 0, 0, 67, + 68, 0, 313, 69, 70, 0, 0, 0, 72, 73, + 74, 75, 76, 77, 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, 61, 0, 62, 0, 0, + 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 65, 66, 0, 0, 0, + 0, 67, 68, 0, 325, 69, 70, 0, 0, 0, + 72, 73, 74, 75, 76, 77, 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, 61, 0, 62, + 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 0, + 0, 0, 197, 67, 68, 0, 0, 69, 70, 0, + 0, 0, 72, 73, 74, 75, 76, 77, -149, -149, + -149, -149, 0, 0, 0, -149, 0, -149, 0, 0, + 0, 0, 0, -149, -149, -149, -149, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -149, -149, + -149, 0, -149, -149, -149, -149, -149, -149, -149, -149, + -149, -149, -149, 0, 0, 0, 0, -149, -149, -149, + 0, 0, -149, -149, 0, 198, 0, -149, -149, -177, + -177, -177, -177, 0, 0, 0, -177, 0, -177, 0, + 0, 0, 0, 0, -177, -177, -177, -177, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, + -177, -177, 0, -177, -177, -177, -177, -177, -177, -177, + -177, -177, -177, -177, 0, 0, 0, 0, -177, -177, + -177, 0, 0, -177, -177, 178, 0, 0, -177, -177, + 0, 179, 180, 181, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 183, 184, 323, 185, 186, 187, 188, 189, 190, + 191, 0, 0, 0, 0, 192, 193, 194, 178, 0, + 195, 0, 0, 0, 179, 180, 181, 182, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 183, 184, 0, 185, 186, 187, + 188, 189, 190, 191, 0, 0, 0, 0, 192, 193, + 194, 178, 0, 195, 0, 0, 0, 179, 180, 181, + 182, 0, 0, 0, 0, 0, 0, 0, -178, 0, + 0, 0, 0, 0, 179, 180, 181, 182, 184, 0, + 185, 186, 187, 188, 189, 190, 191, 0, 0, 0, + 0, 192, 193, 194, 0, 0, 195, 185, 186, 187, + 188, 189, 190, 191, 0, 0, 0, 0, 192, 193, + 194, 0, 0, 195 }; static const short int yycheck[] = { - 25, 101, 25, 54, 27, 206, 215, 106, 100, 3, - 32, 62, 338, 3, 112, 113, 114, 115, 116, 117, - 363, 3, 68, 69, 37, 0, 72, 36, 37, 211, - 53, 213, 57, 56, 3, 4, 3, 43, 137, 48, - 9, 54, 55, 68, 69, 54, 55, 56, 61, 3, - 52, 60, 61, 396, 380, 106, 3, 108, 5, 4, - 73, 74, 75, 76, 73, 74, 75, 76, 74, 8, - 9, 73, 67, 68, 69, 81, 41, 72, 129, 13, - 48, 49, 50, 77, 49, 75, 137, 110, 53, 111, - 4, 56, 74, 75, 59, 304, 121, 122, 63, 64, - 65, 66, 67, 202, 23, 24, 71, 72, 75, 122, - 78, 4, 81, 122, 139, 77, 3, 209, 216, 7, - 74, 75, 48, 49, 50, 326, 4, 74, 75, 4, - 36, 37, 341, 74, 81, 48, 49, 50, 161, 164, - 165, 166, 167, 168, 169, 170, 171, 74, 173, 174, - 175, 202, 78, 74, 74, 61, 62, 48, 49, 50, - 73, 67, 68, 69, 14, 15, 72, 17, 18, 194, - 195, 196, 197, 198, 199, 74, 365, 386, 201, 74, - 203, 206, 371, 372, 193, 210, 211, 78, 213, 288, - 215, 74, 381, 74, 44, 25, 52, 222, 387, 224, - 225, 77, 48, 49, 50, 214, 74, 172, 233, 3, - 45, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 76, 14, 15, 4, - 17, 18, 78, 19, 20, 21, 22, 288, 0, 73, - 26, 266, 74, 268, 269, 74, 74, 48, 49, 50, - 76, 74, 14, 15, 45, 17, 18, 44, 81, 82, - 83, 75, 48, 49, 50, 1, 289, 3, 4, 5, - 6, 7, 8, 373, 10, 11, 12, 78, 7, 81, - 16, 73, 44, 19, 20, 21, 22, 73, 36, 76, - 26, 27, 317, 29, 30, 31, 32, 33, 48, 49, - 50, 326, 38, 39, 40, 41, 42, 43, 76, 75, - 46, 48, 49, 50, 62, 51, 7, 50, 343, 67, - 68, 69, 74, 73, 72, 74, 77, 63, 64, 65, - 48, 49, 50, 73, 70, 71, 77, 76, 74, 75, - 77, 77, 73, 79, 80, 81, 82, 83, 84, 73, - 48, 49, 50, 73, 73, 1, 321, 73, 4, 5, - 6, 7, 8, 388, 10, 11, 12, 48, 49, 50, - 16, 52, 76, 48, 49, 50, 34, 35, 36, 37, - 78, 27, 76, 29, 30, 31, 32, 33, 48, 49, - 50, 76, 38, 39, 40, 41, 42, 43, 73, 3, - 46, 59, 60, 61, 62, 51, 73, 76, 73, 67, - 68, 69, 73, 73, 72, 77, 73, 63, 64, 65, - 74, 48, 49, 50, 70, 71, 73, 25, 74, 75, - 388, 77, 343, 79, 80, 81, 82, 83, 84, 1, - 43, 21, 4, 5, 6, 7, 8, 203, 10, 11, - 12, 78, 60, 60, 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, 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, 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, 73, 34, 35, 36, 37, 48, 49, 50, 27, - -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, - 38, 39, 40, 41, 42, 43, -1, -1, 46, 61, - 62, 73, -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, 36, 37, -1, -1, + 25, 102, 208, 54, 101, 32, 217, 3, 107, 43, + 3, 4, 63, 3, 365, 340, 9, 3, 25, 4, + 27, 113, 114, 115, 116, 117, 118, 0, 49, 50, + 51, 13, 57, 53, 37, 4, 213, 3, 215, 138, + 3, 75, 5, 4, 69, 70, 53, 398, 82, 56, + 78, 54, 55, 74, 74, 3, 107, 382, 109, 62, + 69, 70, 14, 15, 73, 17, 18, 3, 49, 50, + 51, 74, 75, 76, 77, 7, 41, 23, 24, 130, + 8, 9, 78, 75, 49, 112, 76, 138, 53, 82, + 76, 56, 44, 74, 59, 306, 61, 122, 123, 64, + 65, 66, 67, 68, 111, 204, 4, 72, 73, 75, + 76, 75, 75, 76, 211, 140, 49, 50, 51, 82, + 123, 0, 328, 4, 75, 77, 218, 75, 76, 25, + 14, 15, 343, 17, 18, 14, 15, 75, 17, 18, + 75, 166, 167, 168, 169, 170, 171, 172, 173, 75, + 175, 176, 177, 204, 75, 75, 163, 49, 50, 51, + 44, 82, 83, 84, 75, 44, 78, 49, 50, 51, + 53, 196, 197, 198, 199, 200, 201, 388, 49, 50, + 51, 75, 3, 208, 46, 4, 78, 212, 213, 75, + 215, 290, 217, 77, 46, 75, 203, 79, 205, 224, + 74, 226, 227, 75, 19, 20, 21, 22, 79, 174, + 235, 26, 77, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 7, 36, + 37, 49, 50, 51, 49, 50, 51, 76, 342, 290, + 344, 48, 82, 268, 74, 270, 271, 54, 55, 56, + 49, 50, 51, 60, 77, 62, 7, 361, 362, 74, + 78, 34, 35, 36, 37, 369, 76, 74, 75, 76, + 77, 51, 376, 75, 375, 74, 380, 78, 34, 35, + 36, 37, 74, 74, 291, 74, 59, 60, 61, 62, + 63, 74, 396, 397, 319, 68, 69, 70, 74, 74, + 73, 75, 3, 328, 60, 61, 62, 63, 49, 50, + 51, 78, 68, 69, 70, 77, 123, 73, 77, 77, + 345, 74, 1, 77, 3, 4, 5, 6, 7, 8, + 77, 10, 11, 12, 68, 69, 70, 16, 79, 73, + 19, 20, 21, 22, 36, 37, 74, 26, 27, 74, + 29, 30, 31, 32, 33, 49, 50, 51, 323, 38, + 39, 40, 41, 42, 43, 390, 45, 78, 47, 75, + 62, 63, 74, 52, 74, 25, 68, 69, 70, 390, + 43, 73, 21, 345, 78, 64, 65, 66, 195, 49, + 50, 51, 71, 72, 205, 60, 75, 76, 60, 78, + -1, 80, 81, 82, 83, 84, 85, 1, -1, 216, + 4, 5, 6, 7, 8, -1, 10, 11, 12, 79, + -1, -1, 16, 49, 50, 51, -1, 34, 35, 36, + 37, -1, -1, 27, -1, 29, 30, 31, 32, 33, + 49, 50, 51, -1, 38, 39, 40, 41, 42, 43, + -1, 45, 78, 47, 61, 62, 63, -1, 52, -1, + -1, 68, 69, 70, -1, -1, 73, -1, -1, 78, + 64, 65, 66, -1, 49, 50, 51, 71, 72, -1, + -1, 75, 76, -1, 78, -1, 80, 81, 82, 83, + 84, 85, 1, -1, -1, 4, 5, 6, 7, 8, + -1, 10, 11, 12, 79, -1, -1, 16, 49, 50, + 51, 34, 35, 36, 37, -1, -1, -1, 27, 367, + 29, 30, 31, 32, 33, 373, 374, -1, -1, 38, + 39, 40, 41, 42, 43, 383, 45, 78, 47, 62, + 63, 389, -1, 52, -1, 68, 69, 70, -1, -1, + 73, -1, -1, -1, -1, 64, 65, 66, 49, 50, + 51, -1, 71, 72, -1, 74, 75, 76, 49, 50, + 51, 80, 81, 82, 83, 84, 85, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, -1, 79, -1, + 16, -1, -1, -1, 34, 35, 36, 37, 79, -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, 36, 37, 70, 71, -1, -1, 74, 75, - 48, 49, 50, 79, 80, 81, 82, 83, 84, 4, - 5, 6, 7, 8, -1, 10, 11, 12, 62, -1, - -1, 16, -1, 67, 68, 69, -1, -1, 72, 77, - -1, -1, 27, -1, 29, 30, 31, 32, 33, -1, - -1, -1, -1, 38, 39, 40, 41, 42, 43, -1, - -1, 46, 48, 49, 50, 62, 51, -1, -1, -1, - 67, 68, 69, -1, -1, 72, -1, -1, 63, 64, - 65, 48, 49, 50, -1, 70, 71, -1, -1, 74, - 75, 77, 77, -1, 79, 80, 81, 82, 83, 84, + -1, -1, 38, 39, 40, 41, 42, 43, -1, 45, + -1, 47, 62, 63, -1, -1, 52, -1, 68, 69, + 70, -1, -1, 73, -1, -1, -1, -1, 64, 65, + 66, 49, 50, 51, -1, 71, 72, -1, -1, 75, + 76, 49, 50, 51, 80, 81, 82, 83, 84, 85, + 3, 4, 5, 6, 7, 8, 74, 10, 11, 12, + 49, 50, 51, 16, 53, -1, 74, 34, -1, 36, + 37, -1, -1, -1, 27, -1, 29, 30, 31, 32, + 33, -1, -1, -1, -1, 38, 39, 40, 41, 42, + 43, -1, 45, -1, 47, 62, 63, -1, -1, 52, + -1, 68, 69, 70, -1, -1, 73, -1, -1, -1, + -1, 64, 65, 66, -1, -1, 36, 37, 71, 72, + -1, -1, 75, 76, -1, -1, -1, 80, 81, 82, + 83, 84, 85, 3, 4, 5, 6, 7, 8, -1, + 10, 11, 12, 63, -1, -1, 16, 36, 68, 69, + 70, -1, -1, 73, -1, -1, -1, 27, -1, 29, + 30, 31, 32, 33, 49, 50, 51, -1, 38, 39, + 40, 41, 42, 43, 63, 45, -1, 47, -1, 68, + 69, 70, 52, -1, 73, -1, -1, -1, -1, 74, + -1, -1, -1, -1, 64, 65, 66, -1, -1, -1, + -1, 71, 72, -1, -1, 75, 76, -1, -1, -1, + 80, 81, 82, 83, 84, 85, 4, 5, 6, 7, + 8, -1, 10, 11, 12, -1, -1, -1, 16, -1, + 19, 20, 21, 22, -1, -1, -1, 26, -1, 27, + -1, 29, 30, 31, 32, 33, 49, 50, 51, -1, + 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, + 49, 50, 51, -1, 52, -1, 49, 50, 51, -1, + -1, 74, -1, -1, -1, -1, 64, 65, 66, -1, + -1, -1, -1, 71, 72, -1, -1, 75, 76, -1, + 78, 74, 80, 81, 82, 83, 84, 85, 4, 5, + 6, 7, 8, -1, 10, 11, 12, -1, -1, -1, + 16, -1, 63, 49, 50, 51, -1, 68, 69, 70, + -1, 27, 73, 29, 30, 31, 32, 33, -1, -1, + -1, -1, 38, 39, 40, 41, 42, 43, 74, 45, + -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, + 66, -1, -1, -1, -1, 71, 72, -1, 74, 75, + 76, -1, -1, -1, 80, 81, 82, 83, 84, 85, 4, 5, 6, 7, 8, -1, 10, 11, 12, -1, - 77, -1, 16, -1, -1, -1, -1, -1, -1, -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, -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, 45, -1, 47, -1, -1, -1, -1, 52, -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, + 64, 65, 66, -1, -1, -1, -1, 71, 72, -1, + -1, 75, 76, -1, -1, 79, 80, 81, 82, 83, + 84, 85, 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, -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, -1, 70, - 71, -1, 73, 74, 75, -1, -1, -1, 79, 80, - 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 66, -1, -1, -1, -1, 71, + 72, -1, 74, 75, 76, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 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, -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, - -1, 70, 71, -1, 73, 74, 75, -1, -1, -1, - 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, + 40, 41, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 64, 65, 66, -1, -1, -1, + -1, 71, 72, -1, 74, 75, 76, -1, -1, -1, + 80, 81, 82, 83, 84, 85, 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, -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, -1, 70, 71, -1, 73, 74, 75, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 4, 5, + 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 66, -1, + -1, -1, -1, 71, 72, -1, 74, 75, 76, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 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, -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, 340, -1, 342, -1, 67, 68, - 69, -1, -1, 72, 73, -1, -1, -1, 77, 78, - -1, 28, -1, 359, 360, -1, -1, 34, 35, 36, - 37, 367, -1, -1, -1, -1, -1, -1, 374, -1, - -1, -1, 378, -1, -1, -1, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, -1, -1, 394, 395, - 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, 38, 39, 40, 41, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, 52, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, + 66, -1, -1, -1, -1, 71, 72, -1, 74, 75, + 76, -1, -1, -1, 80, 81, 82, 83, 84, 85, + 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, 45, -1, 47, -1, -1, -1, -1, 52, -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, + 64, 65, 66, -1, -1, -1, -1, 71, 72, -1, + 74, 75, 76, -1, -1, -1, 80, 81, 82, 83, + 84, 85, 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, 45, -1, 47, -1, -1, -1, -1, + 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 64, 65, 66, -1, -1, -1, -1, 71, + 72, -1, 74, 75, 76, -1, -1, -1, 80, 81, + 82, 83, 84, 85, 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, 45, -1, 47, -1, -1, + -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 64, 65, 66, -1, -1, -1, + -1, 71, 72, -1, 74, 75, 76, -1, -1, -1, + 80, 81, 82, 83, 84, 85, 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, 45, -1, 47, + -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 64, 65, 66, -1, + -1, -1, 3, 71, 72, -1, -1, 75, 76, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 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, -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, -1, -1, 49, 50, + 51, -1, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, 68, 69, 70, + -1, -1, 73, 74, -1, 76, -1, 78, 79, 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, -1, 49, + 50, 51, -1, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, -1, -1, -1, -1, 68, 69, + 70, -1, -1, 73, 74, 28, -1, -1, 78, 79, + -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, 68, 69, 70, 28, -1, + 73, -1, -1, -1, 34, 35, 36, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 54, 55, -1, 57, 58, 59, + 60, 61, 62, 63, -1, -1, -1, -1, 68, 69, + 70, 28, -1, 73, -1, -1, -1, 34, 35, 36, + 37, -1, -1, -1, -1, -1, -1, -1, 28, -1, + -1, -1, -1, -1, 34, 35, 36, 37, 55, -1, + 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, 68, 69, 70, -1, -1, 73, 57, 58, 59, + 60, 61, 62, 63, -1, -1, -1, -1, 68, 69, + 70, -1, -1, 73 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 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, + 0, 87, 90, 0, 94, 14, 15, 17, 18, 44, + 93, 109, 110, 112, 113, 122, 123, 116, 114, 4, + 114, 114, 13, 95, 100, 108, 4, 111, 4, 117, + 78, 124, 117, 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, 125, 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, 103, 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, 73, 127, 118, - 102, 124, 103, 104, 124, 103, 106, 139, 141, 95, - 101, 104, 105, 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, 137, 87, 73, 73, 73, - 73, 74, 73, 77, 104, 73, 73, 73, 78, 124, - 76, 134, 77, 73, 78, 138, 76, 76, 76, 100, - 100, 3, 90, 90, 104, 90, 102, 73, 78, 76, - 73, 90, 90, 91, 23, 24, 96, 96, 73, 98, - 77, 90, 98, 98, 93, 90, 74, 90, 100, 98, - 76, 104, 98, 105, 73, 73, 90, 90, 96 + 43, 45, 47, 52, 64, 65, 66, 71, 72, 75, + 76, 78, 80, 81, 82, 83, 84, 85, 88, 96, + 98, 125, 126, 127, 130, 131, 132, 133, 134, 135, + 136, 141, 142, 143, 144, 145, 146, 88, 7, 118, + 4, 118, 89, 4, 9, 88, 142, 147, 147, 75, + 135, 115, 115, 75, 75, 75, 75, 43, 75, 142, + 135, 75, 75, 75, 88, 135, 4, 126, 138, 142, + 147, 147, 4, 88, 135, 142, 78, 125, 4, 135, + 75, 137, 142, 143, 144, 135, 147, 126, 135, 135, + 135, 135, 135, 74, 125, 79, 125, 135, 135, 147, + 147, 147, 147, 25, 99, 78, 19, 20, 21, 22, + 26, 49, 50, 51, 53, 3, 75, 76, 28, 34, + 35, 36, 37, 54, 55, 57, 58, 59, 60, 61, + 62, 63, 68, 69, 70, 73, 75, 3, 76, 3, + 76, 3, 46, 119, 4, 119, 94, 138, 75, 126, + 88, 118, 89, 89, 89, 89, 89, 89, 75, 74, + 74, 125, 125, 139, 147, 126, 75, 75, 77, 78, + 138, 74, 125, 46, 120, 76, 74, 79, 88, 125, + 104, 125, 125, 125, 125, 125, 125, 125, 135, 125, + 74, 125, 125, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 3, 5, + 75, 76, 129, 142, 74, 125, 125, 125, 125, 125, + 125, 7, 78, 88, 121, 138, 121, 77, 139, 74, + 128, 119, 103, 125, 104, 105, 125, 104, 107, 140, + 142, 96, 102, 105, 106, 125, 89, 74, 53, 74, + 125, 74, 125, 74, 125, 77, 74, 7, 125, 76, + 78, 74, 79, 56, 125, 74, 125, 125, 75, 74, + 78, 79, 78, 79, 78, 78, 74, 138, 88, 74, + 74, 74, 74, 75, 74, 78, 105, 74, 74, 74, + 79, 125, 77, 135, 78, 74, 79, 139, 77, 77, + 77, 101, 101, 3, 91, 91, 105, 91, 103, 74, + 79, 77, 74, 91, 91, 92, 23, 24, 97, 97, + 74, 99, 78, 91, 99, 99, 94, 91, 75, 91, + 101, 99, 77, 105, 99, 106, 74, 74, 91, 91, + 97 }; diff --git a/perly.y b/perly.y index 37503ba..e88add1 100644 --- a/perly.y +++ b/perly.y @@ -45,7 +45,7 @@ %token FUNC0 FUNC1 FUNC UNIOP LSTOP %token RELOP EQOP MULOP ADDOP %token DOLSHARP DO HASHBRACK NOAMP -%token LOCAL MY MYSUB +%token LOCAL MY MYSUB REQUIRE %token COLONATTR %type prog decl format startsub startanonsub startformsub mintro @@ -664,6 +664,10 @@ term : termbinop { $$ = newUNOP($1, 0, $2); } | UNIOP term /* Unary op */ { $$ = newUNOP($1, 0, $2); } + | REQUIRE /* require, $_ implied */ + { $$ = newOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0); } + | REQUIRE term /* require Foo */ + { $$ = newUNOP(OP_REQUIRE, $1 ? OPf_SPECIAL : 0, $2); } | UNIOPSUB term /* Sub treated as unop */ { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, $2, scalar($1))); } diff --git a/toke.c b/toke.c index b761777..93623f6 100644 --- a/toke.c +++ b/toke.c @@ -4520,6 +4520,9 @@ Perl_yylex(pTHX) Perl_croak(aTHX_ "CORE::%s is not a keyword", PL_tokenbuf); if (tmp < 0) tmp = -tmp; + else if (tmp == KEY_require) + /* that's a way to remember we saw "CORE::" */ + orig_keyword = KEY_require; goto reserved_word; } goto just_a_word; @@ -5101,7 +5104,18 @@ Perl_yylex(pTHX) else if (*s == '<') yyerror("<> should be quotes"); } - UNI(OP_REQUIRE); + if (orig_keyword == KEY_require) { + orig_keyword = 0; + yylval.ival = 1; + } + else + yylval.ival = 0; + PL_expect = XTERM; + PL_bufptr = s; + PL_last_uni = PL_oldbufptr; + PL_last_lop_op = OP_REQUIRE; + s = skipspace(s); + return REPORT( (int)REQUIRE ); case KEY_reset: UNI(OP_RESET);