From: David Golden Date: Tue, 6 Oct 2009 10:48:48 +0000 (-0400) Subject: Add 'package NAME VERSION' syntax X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6fa4d285bff5644bebb95aff09143322042282cc;p=p5sagit%2Fp5-mst-13.2.git Add 'package NAME VERSION' syntax This patch adds support for setting the $VERSION of a namespace when the namespace is declared with 'package'. It eliminates the need for 'our $VERSION = ...' and similar constructs. E.g. package Foo::Bar 1.23; # $Foo::Bar::VERSION == 1.23 There are several advantages to this: * VERSION is parsed in *exactly* the same way as 'use NAME VERSION' * $VERSION is set at compile time * Eliminates '$VERSION = ...' and 'eval $VERSION' clutter * As it requires VERSION to be a numeric literal or v-string literal, it can be statically parsed by toolchain modules without 'eval' the way MM->parse_version does for '$VERSION = ...' * Alpha versions with underscores do not need to be quoted; static parsing will preserve the underscore, but during compilation, Perl will remove underscores as it does for all numeric literals During development of this, there was discussion on #corehackers and elsewhere that this should also allow other metadata to be set such as "status" (stable/alpha) or "author/authority". On reflection, those metadata are not very well defined yet and likely should never be encoded into Perl core parsing so they can be freely changed in the future. (They could perhaps be achieved via a comment on the same line as 'package NAME VERSION'.) Version numbers, however, already have a very specific definition and use defined in the core through 'use NAME VERSION'. This patch merely provides appropriate symmetry for setting $VERSION with the exact same parsing and semantics as 'use'. It does not break old code with only 'package NAME', but code that uses 'package NAME VERSION' will need to be restricted to perl 5.11.X. This is analogous to the change to open() from two-args to three-args. Users requiring the latest Perl will benefit, and perhaps N years from now it will become standard practice when Perl 5.12 is targeted the way that 5.6 is today. The patch does not prevent 'package NAME VERSION' from being used multiple times for the same package with different version numbers, but nothing prevents $VERSION from being modified arbitrarily at runtime, either, so I see no urgen reason to add limitations or warnings so long as Perl uses a global $VERSION variable for package version numbers. I am posting this patch to the p5p list for discussion and review. If there seems to be general assent (or lack of dissent), I will go ahead and commit the patch to blead. --- diff --git a/embed.fnc b/embed.fnc index 952921b..866363d 100644 --- a/embed.fnc +++ b/embed.fnc @@ -736,6 +736,8 @@ p |OP* |package |NN OP* o #else p |void |package |NN OP* o #endif +: Used in perly.y +p |void |package_version|NN OP* v : Used in op.c pd |PADOFFSET|pad_alloc |I32 optype|U32 tmptype : Used in toke.c and perly.y diff --git a/embed.h b/embed.h index 5ac4f99..c0e6953 100644 --- a/embed.h +++ b/embed.h @@ -629,6 +629,7 @@ #endif #endif #ifdef PERL_CORE +#define package_version Perl_package_version #define pad_alloc Perl_pad_alloc #define allocmy Perl_allocmy #define pad_findmy Perl_pad_findmy @@ -2974,6 +2975,7 @@ #endif #endif #ifdef PERL_CORE +#define package_version(a) Perl_package_version(aTHX_ a) #define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) #define allocmy(a) Perl_allocmy(aTHX_ a) #define pad_findmy(a) Perl_pad_findmy(aTHX_ a) diff --git a/op.c b/op.c index c3736fa..740e464 100644 --- a/op.c +++ b/op.c @@ -3816,6 +3816,18 @@ Perl_package(pTHX_ OP *o) #endif } +void +Perl_package_version( pTHX_ OP *v ) +{ + dVAR; + PERL_ARGS_ASSERT_PACKAGE_VERSION; + SV *const version = cSVOPx(v)->op_sv; + SV *const pkgname = sv_mortalcopy(PL_curstname); + sv_catpv(pkgname, "::VERSION"); + sv_setsv( get_sv(SvPV_nolen(pkgname),TRUE), version ); + op_free(v); +} + #ifdef PERL_MAD OP* #else diff --git a/perly.act b/perly.act index f504fac..6b71b60 100644 --- a/perly.act +++ b/perly.act @@ -605,24 +605,21 @@ case 2: case 79: #line 637 "perly.y" { -#ifdef MAD - (yyval.opval) = package((ps[(2) - (3)].val.opval)); - token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); - token_getmad((ps[(3) - (3)].val.i_tkval),(yyval.opval),';'); -#else - package((ps[(2) - (3)].val.opval)); + package((ps[(3) - (4)].val.opval)); + if ((ps[(2) - (4)].val.opval)) { + package_version((ps[(2) - (4)].val.opval)); + } (yyval.opval) = (OP*)NULL; -#endif ;} break; case 80: -#line 650 "perly.y" +#line 647 "perly.y" { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;} break; case 81: -#line 652 "perly.y" +#line 649 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); #ifdef MAD (yyval.opval) = utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval)); @@ -639,28 +636,28 @@ case 2: break; case 82: -#line 669 "perly.y" +#line 666 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 83: -#line 673 "perly.y" +#line 670 "perly.y" { (yyval.opval) = newLOGOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 84: -#line 677 "perly.y" +#line 674 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 86: -#line 685 "perly.y" +#line 682 "perly.y" { #ifdef MAD OP* op = newNULLLIST(); @@ -673,7 +670,7 @@ case 2: break; case 87: -#line 695 "perly.y" +#line 692 "perly.y" { OP* term = (ps[(3) - (3)].val.opval); DO_MAD( @@ -685,7 +682,7 @@ case 2: break; case 89: -#line 708 "perly.y" +#line 705 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_STACKED, prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (3)].val.i_tkval)),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) ); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); @@ -693,7 +690,7 @@ case 2: break; case 90: -#line 713 "perly.y" +#line 710 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (5)].val.i_tkval)), OPf_STACKED, prepend_elem(OP_LIST, newGVREF(IVAL((ps[(1) - (5)].val.i_tkval)),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) ); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o'); @@ -703,7 +700,7 @@ case 2: break; case 91: -#line 720 "perly.y" +#line 717 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)), @@ -715,7 +712,7 @@ case 2: break; case 92: -#line 729 "perly.y" +#line 726 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)), newUNOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval)))); @@ -724,7 +721,7 @@ case 2: break; case 93: -#line 735 "perly.y" +#line 732 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)), @@ -733,7 +730,7 @@ case 2: break; case 94: -#line 741 "perly.y" +#line 738 "perly.y" { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)), @@ -744,14 +741,14 @@ case 2: break; case 95: -#line 749 "perly.y" +#line 746 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 96: -#line 753 "perly.y" +#line 750 "perly.y" { (yyval.opval) = convert(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); @@ -760,13 +757,13 @@ case 2: break; case 97: -#line 759 "perly.y" +#line 756 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;} break; case 98: -#line 762 "perly.y" +#line 759 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval))); @@ -774,7 +771,7 @@ case 2: break; case 101: -#line 777 "perly.y" +#line 774 "perly.y" { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); PL_parser->expect = XOPERATOR; TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{'); @@ -784,7 +781,7 @@ case 2: break; case 102: -#line 784 "perly.y" +#line 781 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval))); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),']'); @@ -792,7 +789,7 @@ case 2: break; case 103: -#line 789 "perly.y" +#line 786 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV), scalar((ps[(4) - (5)].val.opval))); @@ -803,7 +800,7 @@ case 2: break; case 104: -#line 797 "perly.y" +#line 794 "perly.y" { (yyval.opval) = newBINOP(OP_AELEM, 0, ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV), scalar((ps[(3) - (4)].val.opval))); @@ -813,7 +810,7 @@ case 2: break; case 105: -#line 804 "perly.y" +#line 801 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval))); PL_parser->expect = XOPERATOR; TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'{'); @@ -823,7 +820,7 @@ case 2: break; case 106: -#line 811 "perly.y" +#line 808 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV), jmaybe((ps[(4) - (6)].val.opval))); @@ -836,7 +833,7 @@ case 2: break; case 107: -#line 821 "perly.y" +#line 818 "perly.y" { (yyval.opval) = newBINOP(OP_HELEM, 0, ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV), jmaybe((ps[(3) - (5)].val.opval))); @@ -848,7 +845,7 @@ case 2: break; case 108: -#line 830 "perly.y" +#line 827 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'a'); @@ -858,7 +855,7 @@ case 2: break; case 109: -#line 837 "perly.y" +#line 834 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, (ps[(4) - (5)].val.opval), newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); @@ -869,7 +866,7 @@ case 2: break; case 110: -#line 846 "perly.y" +#line 843 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, (ps[(3) - (4)].val.opval), newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); @@ -879,7 +876,7 @@ case 2: break; case 111: -#line 853 "perly.y" +#line 850 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); @@ -888,7 +885,7 @@ case 2: break; case 112: -#line 859 "perly.y" +#line 856 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); TOKEN_GETMAD((ps[(1) - (6)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (6)].val.i_tkval),(yyval.opval),')'); @@ -898,7 +895,7 @@ case 2: break; case 113: -#line 866 "perly.y" +#line 863 "perly.y" { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),')'); @@ -908,21 +905,21 @@ case 2: break; case 114: -#line 876 "perly.y" +#line 873 "perly.y" { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 115: -#line 880 "perly.y" +#line 877 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 116: -#line 884 "perly.y" +#line 881 "perly.y" { if (IVAL((ps[(2) - (3)].val.i_tkval)) != OP_REPEAT) scalar((ps[(1) - (3)].val.opval)); (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval))); @@ -931,49 +928,49 @@ case 2: break; case 117: -#line 890 "perly.y" +#line 887 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 118: -#line 894 "perly.y" +#line 891 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 119: -#line 898 "perly.y" +#line 895 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 120: -#line 902 "perly.y" +#line 899 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 121: -#line 906 "perly.y" +#line 903 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 122: -#line 910 "perly.y" +#line 907 "perly.y" { (yyval.opval) = newBINOP(IVAL((ps[(2) - (3)].val.i_tkval)), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 123: -#line 914 "perly.y" +#line 911 "perly.y" { (yyval.opval) = newRANGE(IVAL((ps[(2) - (3)].val.i_tkval)), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); DO_MAD({ @@ -988,28 +985,28 @@ case 2: break; case 124: -#line 926 "perly.y" +#line 923 "perly.y" { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 125: -#line 930 "perly.y" +#line 927 "perly.y" { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 126: -#line 934 "perly.y" +#line 931 "perly.y" { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'o'); ;} break; case 127: -#line 938 "perly.y" +#line 935 "perly.y" { (yyval.opval) = bind_match(IVAL((ps[(2) - (3)].val.i_tkval)), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval), ((yyval.opval)->op_type == OP_NOT @@ -1019,14 +1016,14 @@ case 2: break; case 128: -#line 948 "perly.y" +#line 945 "perly.y" { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 129: -#line 952 "perly.y" +#line 949 "perly.y" { (yyval.opval) = IF_MAD( newUNOP(OP_NULL, 0, (ps[(2) - (2)].val.opval)), (ps[(2) - (2)].val.opval) @@ -1036,21 +1033,21 @@ case 2: break; case 130: -#line 959 "perly.y" +#line 956 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 131: -#line 963 "perly.y" +#line 960 "perly.y" { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 132: -#line 967 "perly.y" +#line 964 "perly.y" { (yyval.opval) = newUNOP(OP_POSTINC, 0, mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1058,7 +1055,7 @@ case 2: break; case 133: -#line 972 "perly.y" +#line 969 "perly.y" { (yyval.opval) = newUNOP(OP_POSTDEC, 0, mod(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC)); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1066,7 +1063,7 @@ case 2: break; case 134: -#line 977 "perly.y" +#line 974 "perly.y" { (yyval.opval) = newUNOP(OP_PREINC, 0, mod(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1074,7 +1071,7 @@ case 2: break; case 135: -#line 982 "perly.y" +#line 979 "perly.y" { (yyval.opval) = newUNOP(OP_PREDEC, 0, mod(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); @@ -1082,7 +1079,7 @@ case 2: break; case 136: -#line 991 "perly.y" +#line 988 "perly.y" { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),']'); @@ -1090,7 +1087,7 @@ case 2: break; case 137: -#line 996 "perly.y" +#line 993 "perly.y" { (yyval.opval) = newANONLIST((OP*)NULL); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'['); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),']'); @@ -1098,7 +1095,7 @@ case 2: break; case 138: -#line 1001 "perly.y" +#line 998 "perly.y" { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'{'); TOKEN_GETMAD((ps[(3) - (4)].val.i_tkval),(yyval.opval),';'); @@ -1107,7 +1104,7 @@ case 2: break; case 139: -#line 1007 "perly.y" +#line 1004 "perly.y" { (yyval.opval) = newANONHASH((OP*)NULL); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'{'); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),';'); @@ -1116,7 +1113,7 @@ case 2: break; case 140: -#line 1013 "perly.y" +#line 1010 "perly.y" { SvREFCNT_inc_simple_void(PL_compcv); (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); TOKEN_GETMAD((ps[(1) - (5)].val.i_tkval),(yyval.opval),'o'); @@ -1126,21 +1123,21 @@ case 2: break; case 141: -#line 1024 "perly.y" +#line 1021 "perly.y" { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 142: -#line 1028 "perly.y" +#line 1025 "perly.y" { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, scope((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'D'); ;} break; case 143: -#line 1032 "perly.y" +#line 1029 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, @@ -1155,7 +1152,7 @@ case 2: break; case 144: -#line 1044 "perly.y" +#line 1041 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, append_elem(OP_LIST, @@ -1171,7 +1168,7 @@ case 2: break; case 145: -#line 1057 "perly.y" +#line 1054 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, scalar(newCVREF(0,scalar((ps[(2) - (4)].val.opval)))), (OP*)NULL)); dep(); @@ -1182,7 +1179,7 @@ case 2: break; case 146: -#line 1065 "perly.y" +#line 1062 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), @@ -1194,7 +1191,7 @@ case 2: break; case 151: -#line 1081 "perly.y" +#line 1078 "perly.y" { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); TOKEN_GETMAD((ps[(2) - (5)].val.i_tkval),(yyval.opval),'?'); TOKEN_GETMAD((ps[(4) - (5)].val.i_tkval),(yyval.opval),':'); @@ -1202,26 +1199,26 @@ case 2: break; case 152: -#line 1086 "perly.y" +#line 1083 "perly.y" { (yyval.opval) = newUNOP(OP_REFGEN, 0, mod((ps[(2) - (2)].val.opval),OP_REFGEN)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 153: -#line 1090 "perly.y" +#line 1087 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 154: -#line 1092 "perly.y" +#line 1089 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'k'); ;} break; case 155: -#line 1096 "perly.y" +#line 1093 "perly.y" { (yyval.opval) = sawparens(IF_MAD(newUNOP(OP_NULL,0,(ps[(2) - (3)].val.opval)), (ps[(2) - (3)].val.opval))); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); @@ -1229,7 +1226,7 @@ case 2: break; case 156: -#line 1101 "perly.y" +#line 1098 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); @@ -1237,37 +1234,37 @@ case 2: break; case 157: -#line 1106 "perly.y" +#line 1103 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 158: -#line 1108 "perly.y" +#line 1105 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 159: -#line 1110 "perly.y" +#line 1107 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 160: -#line 1112 "perly.y" +#line 1109 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 161: -#line 1114 "perly.y" +#line 1111 "perly.y" { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;} break; case 162: -#line 1116 "perly.y" +#line 1113 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 163: -#line 1118 "perly.y" +#line 1115 "perly.y" { (yyval.opval) = prepend_elem(OP_ASLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_ASLICE, 0, @@ -1279,7 +1276,7 @@ case 2: break; case 164: -#line 1127 "perly.y" +#line 1124 "perly.y" { (yyval.opval) = prepend_elem(OP_HSLICE, newOP(OP_PUSHMARK, 0), newLISTOP(OP_HSLICE, 0, @@ -1293,17 +1290,17 @@ case 2: break; case 165: -#line 1138 "perly.y" +#line 1135 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 166: -#line 1140 "perly.y" +#line 1137 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;} break; case 167: -#line 1142 "perly.y" +#line 1139 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval))); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); @@ -1311,7 +1308,7 @@ case 2: break; case 168: -#line 1147 "perly.y" +#line 1144 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval)))); @@ -1327,7 +1324,7 @@ case 2: break; case 169: -#line 1160 "perly.y" +#line 1157 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval)))); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); @@ -1335,7 +1332,7 @@ case 2: break; case 170: -#line 1165 "perly.y" +#line 1162 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), OPf_SPECIAL); PL_hints |= HINT_BLOCK_SCOPE; TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); @@ -1343,74 +1340,74 @@ case 2: break; case 171: -#line 1170 "perly.y" +#line 1167 "perly.y" { (yyval.opval) = newLOOPEX(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 172: -#line 1174 "perly.y" +#line 1171 "perly.y" { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 173: -#line 1178 "perly.y" +#line 1175 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; case 174: -#line 1182 "perly.y" +#line 1179 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 175: -#line 1186 "perly.y" +#line 1183 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (2)].val.i_tkval)), 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 176: -#line 1190 "perly.y" +#line 1187 "perly.y" { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.i_tkval) ? OPf_SPECIAL : 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; case 177: -#line 1194 "perly.y" +#line 1191 "perly.y" { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.i_tkval) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'o'); ;} break; case 178: -#line 1198 "perly.y" +#line 1195 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; case 179: -#line 1200 "perly.y" +#line 1197 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;} break; case 180: -#line 1203 "perly.y" +#line 1200 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (1)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (1)].val.i_tkval),(yyval.opval),'o'); ;} break; case 181: -#line 1207 "perly.y" +#line 1204 "perly.y" { (yyval.opval) = newOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (3)].val.i_tkval),(yyval.opval),'('); @@ -1419,13 +1416,13 @@ case 2: break; case 182: -#line 1213 "perly.y" +#line 1210 "perly.y" { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;} break; case 183: -#line 1216 "perly.y" +#line 1213 "perly.y" { (yyval.opval) = (IVAL((ps[(1) - (3)].val.i_tkval)) == OP_NOT) ? newUNOP(IVAL((ps[(1) - (3)].val.i_tkval)), 0, newSVOP(OP_CONST, 0, newSViv(0))) : newOP(IVAL((ps[(1) - (3)].val.i_tkval)), OPf_SPECIAL); @@ -1437,7 +1434,7 @@ case 2: break; case 184: -#line 1225 "perly.y" +#line 1222 "perly.y" { (yyval.opval) = newUNOP(IVAL((ps[(1) - (4)].val.i_tkval)), 0, (ps[(3) - (4)].val.opval)); TOKEN_GETMAD((ps[(1) - (4)].val.i_tkval),(yyval.opval),'o'); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); @@ -1446,7 +1443,7 @@ case 2: break; case 185: -#line 1231 "perly.y" +#line 1228 "perly.y" { (yyval.opval) = pmruntime((ps[(1) - (4)].val.opval), (ps[(3) - (4)].val.opval), 1); TOKEN_GETMAD((ps[(2) - (4)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(4) - (4)].val.i_tkval),(yyval.opval),')'); @@ -1454,7 +1451,7 @@ case 2: break; case 188: -#line 1238 "perly.y" +#line 1235 "perly.y" { (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0), newSVOP(OP_CONST, 0, newSVpvs("Unimplemented"))); @@ -1463,7 +1460,7 @@ case 2: break; case 189: -#line 1247 "perly.y" +#line 1244 "perly.y" { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); DO_MAD( token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'d'); @@ -1474,14 +1471,14 @@ case 2: break; case 190: -#line 1255 "perly.y" +#line 1252 "perly.y" { (yyval.opval) = localize((ps[(2) - (2)].val.opval),IVAL((ps[(1) - (2)].val.i_tkval))); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'d'); ;} break; case 191: -#line 1262 "perly.y" +#line 1259 "perly.y" { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); TOKEN_GETMAD((ps[(1) - (3)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(3) - (3)].val.i_tkval),(yyval.opval),')'); @@ -1489,7 +1486,7 @@ case 2: break; case 192: -#line 1267 "perly.y" +#line 1264 "perly.y" { (yyval.opval) = sawparens(newNULLLIST()); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'('); TOKEN_GETMAD((ps[(2) - (2)].val.i_tkval),(yyval.opval),')'); @@ -1497,42 +1494,42 @@ case 2: break; case 193: -#line 1272 "perly.y" +#line 1269 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 194: -#line 1274 "perly.y" +#line 1271 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 195: -#line 1276 "perly.y" +#line 1273 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 196: -#line 1281 "perly.y" +#line 1278 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 197: -#line 1283 "perly.y" +#line 1280 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 198: -#line 1287 "perly.y" +#line 1284 "perly.y" { (yyval.opval) = (OP*)NULL; ;} break; case 199: -#line 1289 "perly.y" +#line 1286 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; case 200: -#line 1291 "perly.y" +#line 1288 "perly.y" { #ifdef MAD OP* op = newNULLLIST(); @@ -1546,71 +1543,74 @@ case 2: break; case 201: -#line 1306 "perly.y" +#line 1303 "perly.y" { PL_parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;} break; case 202: -#line 1310 "perly.y" +#line 1307 "perly.y" { (yyval.opval) = newCVREF(IVAL((ps[(1) - (2)].val.i_tkval)),(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'&'); ;} break; case 203: -#line 1316 "perly.y" +#line 1313 "perly.y" { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'$'); ;} break; case 204: -#line 1322 "perly.y" +#line 1319 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'@'); ;} break; case 205: -#line 1328 "perly.y" +#line 1325 "perly.y" { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'%'); ;} break; case 206: -#line 1334 "perly.y" +#line 1331 "perly.y" { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'l'); ;} break; case 207: -#line 1340 "perly.y" +#line 1337 "perly.y" { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); TOKEN_GETMAD((ps[(1) - (2)].val.i_tkval),(yyval.opval),'*'); ;} break; case 208: -#line 1347 "perly.y" +#line 1344 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; case 209: -#line 1349 "perly.y" +#line 1346 "perly.y" { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;} break; case 210: -#line 1351 "perly.y" +#line 1348 "perly.y" { (yyval.opval) = scope((ps[(1) - (1)].val.opval)); ;} break; case 211: -#line 1354 "perly.y" +#line 1351 "perly.y" { (yyval.opval) = (ps[(1) - (1)].val.opval); ;} break; + +/* Line 1267 of yacc.c. */ + default: break; diff --git a/perly.h b/perly.h index a8c7f04..802da29 100644 --- a/perly.h +++ b/perly.h @@ -1,24 +1,25 @@ #ifdef PERL_CORE - -/* A Bison parser, made by GNU Bison 2.4.1. */ +/* A Bison parser, made by GNU Bison 2.3. */ /* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify + + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - + the Free Software Foundation; either version 2, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,11 +30,10 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ - /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -111,7 +111,6 @@ PEG = 326 }; #endif - /* Tokens. */ #define WORD 258 #define METHOD 259 @@ -185,13 +184,11 @@ + #endif /* PERL_CORE */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { - -/* Line 1676 of yacc.c */ - I32 ival; /* __DEFAULT__ (marker for regen_perly.pl; must always be 1st union member) */ char *pval; @@ -207,16 +204,13 @@ typedef union YYSTYPE #ifdef PERL_MAD TOKEN* tkval; #endif - - - -/* Line 1676 of yacc.c */ -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1489 of yacc.c. */ + YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif - diff --git a/perly.tab b/perly.tab index 4507706..f4cc475 100644 --- a/perly.tab +++ b/perly.tab @@ -1,6 +1,6 @@ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2061 +#define YYLAST 2062 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 91 @@ -9,7 +9,7 @@ /* YYNRULES -- Number of rules. */ #define YYNRULES 211 /* YYNRULES -- Number of states. */ -#define YYNSTATES 422 +#define YYNSTATES 423 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -69,20 +69,20 @@ static const yytype_uint16 yyprhs[] = 200, 202, 204, 205, 207, 209, 211, 213, 215, 217, 219, 221, 226, 228, 229, 236, 243, 244, 245, 246, 248, 249, 251, 252, 255, 257, 260, 262, 264, 266, - 270, 271, 279, 283, 287, 291, 293, 296, 300, 302, - 306, 312, 319, 323, 327, 333, 336, 341, 342, 348, - 350, 352, 358, 363, 369, 374, 380, 387, 393, 398, - 404, 409, 413, 420, 426, 430, 434, 438, 442, 446, - 450, 454, 458, 462, 466, 470, 474, 478, 482, 485, - 488, 491, 494, 497, 500, 503, 506, 510, 513, 518, - 522, 528, 531, 534, 539, 545, 550, 556, 558, 560, - 562, 564, 570, 573, 575, 578, 582, 585, 587, 589, - 591, 593, 595, 597, 602, 608, 610, 612, 616, 621, - 625, 627, 630, 633, 635, 638, 641, 643, 646, 648, - 651, 653, 657, 659, 663, 668, 673, 675, 677, 679, - 683, 686, 690, 693, 695, 697, 699, 700, 702, 703, - 705, 708, 710, 713, 716, 719, 722, 725, 728, 730, - 732, 734 + 271, 272, 280, 284, 288, 292, 294, 297, 301, 303, + 307, 313, 320, 324, 328, 334, 337, 342, 343, 349, + 351, 353, 359, 364, 370, 375, 381, 388, 394, 399, + 405, 410, 414, 421, 427, 431, 435, 439, 443, 447, + 451, 455, 459, 463, 467, 471, 475, 479, 483, 486, + 489, 492, 495, 498, 501, 504, 507, 511, 514, 519, + 523, 529, 532, 535, 540, 546, 551, 557, 559, 561, + 563, 565, 571, 574, 576, 579, 583, 586, 588, 590, + 592, 594, 596, 598, 603, 609, 611, 613, 617, 622, + 626, 628, 631, 634, 636, 639, 642, 644, 647, 649, + 652, 654, 658, 660, 664, 669, 674, 676, 678, 680, + 684, 687, 691, 694, 696, 698, 700, 701, 703, 704, + 706, 709, 711, 714, 717, 720, 723, 726, 729, 731, + 733, 735 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -114,54 +114,54 @@ static const yytype_int16 yyrhs[] = 122, 125, 126, 127, 129, -1, 26, 122, 125, 126, 127, 129, -1, -1, -1, -1, 15, -1, -1, 18, -1, -1, 61, 18, -1, 61, -1, 61, 18, -1, - 61, -1, 93, -1, 14, -1, 28, 15, 14, -1, - -1, 29, 122, 132, 15, 15, 146, 14, -1, 133, - 65, 133, -1, 133, 64, 133, -1, 133, 63, 133, - -1, 134, -1, 134, 67, -1, 134, 67, 143, -1, - 143, -1, 48, 155, 134, -1, 46, 89, 155, 133, - 88, -1, 143, 87, 137, 89, 147, 88, -1, 143, - 87, 137, -1, 16, 155, 146, -1, 17, 155, 89, - 147, 88, -1, 48, 146, -1, 46, 89, 147, 88, - -1, -1, 23, 123, 93, 136, 146, -1, 16, -1, - 150, -1, 154, 3, 133, 14, 4, -1, 150, 5, - 133, 6, -1, 143, 87, 5, 133, 6, -1, 138, - 5, 133, 6, -1, 150, 3, 133, 14, 4, -1, - 143, 87, 3, 133, 14, 4, -1, 138, 3, 133, - 14, 4, -1, 143, 87, 89, 88, -1, 143, 87, - 89, 133, 88, -1, 138, 89, 133, 88, -1, 138, - 89, 88, -1, 89, 133, 88, 5, 133, 6, -1, - 89, 88, 5, 133, 6, -1, 143, 68, 143, -1, - 143, 82, 143, -1, 143, 51, 143, -1, 143, 52, - 143, -1, 143, 76, 143, -1, 143, 49, 143, -1, - 143, 50, 143, -1, 143, 75, 143, -1, 143, 74, - 143, -1, 143, 42, 143, -1, 143, 73, 143, -1, - 143, 72, 143, -1, 143, 71, 143, -1, 143, 77, - 143, -1, 7, 143, -1, 8, 143, -1, 78, 143, - -1, 79, 143, -1, 143, 84, -1, 143, 83, -1, - 86, 143, -1, 85, 143, -1, 5, 133, 6, -1, - 5, 6, -1, 55, 133, 14, 4, -1, 55, 14, - 4, -1, 27, 123, 126, 127, 93, -1, 54, 143, - -1, 54, 93, -1, 54, 15, 89, 88, -1, 54, - 15, 89, 133, 88, -1, 54, 150, 89, 88, -1, - 54, 150, 89, 133, 88, -1, 139, -1, 140, -1, - 141, -1, 142, -1, 143, 69, 143, 70, 143, -1, - 80, 143, -1, 144, -1, 57, 143, -1, 89, 133, - 88, -1, 89, 88, -1, 150, -1, 154, -1, 152, - -1, 151, -1, 153, -1, 138, -1, 151, 5, 133, - 6, -1, 151, 3, 133, 14, 4, -1, 18, -1, - 149, -1, 149, 89, 88, -1, 149, 89, 133, 88, - -1, 56, 15, 146, -1, 41, -1, 41, 143, -1, - 66, 134, -1, 47, -1, 47, 93, -1, 47, 143, - -1, 60, -1, 60, 143, -1, 22, -1, 22, 143, - -1, 44, -1, 44, 89, 88, -1, 21, -1, 45, - 89, 88, -1, 45, 89, 133, 88, -1, 19, 89, - 134, 88, -1, 15, -1, 135, -1, 43, -1, 58, - 145, 128, -1, 58, 145, -1, 89, 133, 88, -1, - 89, 88, -1, 150, -1, 152, -1, 151, -1, -1, - 134, -1, -1, 133, -1, 133, 67, -1, 150, -1, - 13, 155, -1, 9, 155, -1, 10, 155, -1, 11, - 155, -1, 53, 155, -1, 12, 155, -1, 15, -1, - 150, -1, 93, -1, 20, -1 + 61, -1, 93, -1, 14, -1, 28, 15, 15, 14, + -1, -1, 29, 122, 132, 15, 15, 146, 14, -1, + 133, 65, 133, -1, 133, 64, 133, -1, 133, 63, + 133, -1, 134, -1, 134, 67, -1, 134, 67, 143, + -1, 143, -1, 48, 155, 134, -1, 46, 89, 155, + 133, 88, -1, 143, 87, 137, 89, 147, 88, -1, + 143, 87, 137, -1, 16, 155, 146, -1, 17, 155, + 89, 147, 88, -1, 48, 146, -1, 46, 89, 147, + 88, -1, -1, 23, 123, 93, 136, 146, -1, 16, + -1, 150, -1, 154, 3, 133, 14, 4, -1, 150, + 5, 133, 6, -1, 143, 87, 5, 133, 6, -1, + 138, 5, 133, 6, -1, 150, 3, 133, 14, 4, + -1, 143, 87, 3, 133, 14, 4, -1, 138, 3, + 133, 14, 4, -1, 143, 87, 89, 88, -1, 143, + 87, 89, 133, 88, -1, 138, 89, 133, 88, -1, + 138, 89, 88, -1, 89, 133, 88, 5, 133, 6, + -1, 89, 88, 5, 133, 6, -1, 143, 68, 143, + -1, 143, 82, 143, -1, 143, 51, 143, -1, 143, + 52, 143, -1, 143, 76, 143, -1, 143, 49, 143, + -1, 143, 50, 143, -1, 143, 75, 143, -1, 143, + 74, 143, -1, 143, 42, 143, -1, 143, 73, 143, + -1, 143, 72, 143, -1, 143, 71, 143, -1, 143, + 77, 143, -1, 7, 143, -1, 8, 143, -1, 78, + 143, -1, 79, 143, -1, 143, 84, -1, 143, 83, + -1, 86, 143, -1, 85, 143, -1, 5, 133, 6, + -1, 5, 6, -1, 55, 133, 14, 4, -1, 55, + 14, 4, -1, 27, 123, 126, 127, 93, -1, 54, + 143, -1, 54, 93, -1, 54, 15, 89, 88, -1, + 54, 15, 89, 133, 88, -1, 54, 150, 89, 88, + -1, 54, 150, 89, 133, 88, -1, 139, -1, 140, + -1, 141, -1, 142, -1, 143, 69, 143, 70, 143, + -1, 80, 143, -1, 144, -1, 57, 143, -1, 89, + 133, 88, -1, 89, 88, -1, 150, -1, 154, -1, + 152, -1, 151, -1, 153, -1, 138, -1, 151, 5, + 133, 6, -1, 151, 3, 133, 14, 4, -1, 18, + -1, 149, -1, 149, 89, 88, -1, 149, 89, 133, + 88, -1, 56, 15, 146, -1, 41, -1, 41, 143, + -1, 66, 134, -1, 47, -1, 47, 93, -1, 47, + 143, -1, 60, -1, 60, 143, -1, 22, -1, 22, + 143, -1, 44, -1, 44, 89, 88, -1, 21, -1, + 45, 89, 88, -1, 45, 89, 133, 88, -1, 19, + 89, 134, 88, -1, 15, -1, 135, -1, 43, -1, + 58, 145, 128, -1, 58, 145, -1, 89, 133, 88, + -1, 89, 88, -1, 150, -1, 152, -1, 151, -1, + -1, 134, -1, -1, 133, -1, 133, 67, -1, 150, + -1, 13, 155, -1, 9, 155, -1, 10, 155, -1, + 11, 155, -1, 53, 155, -1, 12, 155, -1, 15, + -1, 150, -1, 93, -1, 20, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -175,20 +175,20 @@ static const yytype_uint16 yyrline[] = 464, 468, 474, 483, 487, 489, 491, 493, 495, 500, 504, 510, 524, 525, 529, 542, 565, 571, 576, 581, 591, 592, 597, 598, 602, 612, 616, 626, 627, 636, - 650, 649, 668, 672, 676, 680, 684, 694, 703, 707, - 712, 719, 728, 734, 740, 748, 752, 759, 758, 769, - 770, 774, 783, 788, 796, 803, 810, 820, 829, 836, - 845, 852, 858, 865, 875, 879, 883, 889, 893, 897, - 901, 905, 909, 913, 925, 929, 933, 937, 947, 951, - 958, 962, 966, 971, 976, 981, 990, 995, 1000, 1006, - 1012, 1023, 1027, 1031, 1043, 1056, 1064, 1076, 1077, 1078, - 1079, 1080, 1085, 1089, 1091, 1095, 1100, 1105, 1107, 1109, - 1111, 1113, 1115, 1117, 1126, 1137, 1139, 1141, 1146, 1159, - 1164, 1169, 1173, 1177, 1181, 1185, 1189, 1193, 1197, 1199, - 1202, 1206, 1212, 1215, 1224, 1230, 1235, 1236, 1237, 1246, - 1254, 1261, 1266, 1271, 1273, 1275, 1280, 1282, 1287, 1288, - 1290, 1305, 1309, 1315, 1321, 1327, 1333, 1339, 1346, 1348, - 1350, 1353 + 647, 646, 665, 669, 673, 677, 681, 691, 700, 704, + 709, 716, 725, 731, 737, 745, 749, 756, 755, 766, + 767, 771, 780, 785, 793, 800, 807, 817, 826, 833, + 842, 849, 855, 862, 872, 876, 880, 886, 890, 894, + 898, 902, 906, 910, 922, 926, 930, 934, 944, 948, + 955, 959, 963, 968, 973, 978, 987, 992, 997, 1003, + 1009, 1020, 1024, 1028, 1040, 1053, 1061, 1073, 1074, 1075, + 1076, 1077, 1082, 1086, 1088, 1092, 1097, 1102, 1104, 1106, + 1108, 1110, 1112, 1114, 1123, 1134, 1136, 1138, 1143, 1156, + 1161, 1166, 1170, 1174, 1178, 1182, 1186, 1190, 1194, 1196, + 1199, 1203, 1209, 1212, 1221, 1227, 1232, 1233, 1234, 1243, + 1251, 1258, 1263, 1268, 1270, 1272, 1277, 1279, 1284, 1285, + 1287, 1302, 1306, 1312, 1318, 1324, 1330, 1336, 1343, 1345, + 1347, 1350 }; #endif @@ -214,7 +214,7 @@ static const char *const yytname[] = "loop", "switch", "mintro", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "miexpr", "label", "decl", "peg", "format", "formname", "mysubrout", "subrout", "startsub", "startanonsub", "startformsub", "subname", - "proto", "subattrlist", "myattrlist", "subbody", "package", "use", "$@1", + "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", @@ -277,7 +277,7 @@ static const yytype_uint8 yyr2[] = 12, 3, 8, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 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, 1, 0, 2, 1, 2, 1, 1, 1, 4, 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, @@ -309,7 +309,7 @@ static const yytype_uint8 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 33, 0, 12, 15, 19, 85, 187, 162, 147, 148, 149, 150, 88, 153, 166, 157, 160, 159, 161, 158, 62, 0, 69, - 70, 79, 0, 70, 9, 137, 0, 128, 129, 208, + 70, 0, 0, 70, 9, 137, 0, 128, 129, 208, 211, 210, 209, 203, 204, 205, 207, 202, 196, 0, 0, 179, 0, 70, 4, 4, 4, 4, 4, 4, 0, 4, 4, 32, 171, 0, 0, 198, 174, 175, @@ -320,102 +320,102 @@ static const yytype_uint8 yydefact[] = 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 132, 0, 0, 0, 0, 0, 0, 0, 61, 71, - 72, 0, 72, 52, 136, 93, 198, 0, 97, 72, - 46, 0, 0, 0, 0, 0, 4, 5, 0, 181, - 183, 0, 199, 0, 0, 89, 0, 0, 139, 0, - 169, 192, 0, 76, 189, 0, 155, 34, 22, 23, - 48, 20, 21, 24, 25, 84, 83, 82, 87, 0, - 0, 111, 0, 123, 119, 120, 116, 117, 114, 0, - 126, 125, 124, 122, 121, 118, 127, 115, 0, 0, - 99, 0, 92, 100, 167, 0, 0, 0, 0, 0, - 0, 74, 0, 196, 0, 3, 0, 185, 196, 0, - 0, 47, 0, 0, 49, 51, 0, 0, 201, 45, - 50, 0, 0, 19, 0, 0, 0, 184, 200, 96, - 0, 143, 0, 145, 0, 138, 191, 75, 0, 0, - 0, 104, 110, 0, 0, 0, 108, 0, 198, 168, - 0, 102, 0, 163, 0, 73, 78, 77, 65, 0, - 64, 94, 98, 140, 43, 43, 0, 0, 0, 0, - 46, 0, 0, 0, 90, 144, 146, 113, 0, 107, - 151, 0, 103, 109, 0, 105, 164, 101, 81, 0, - 0, 8, 26, 26, 0, 33, 0, 0, 0, 31, - 112, 106, 91, 33, 33, 9, 0, 0, 29, 30, - 0, 39, 43, 33, 42, 35, 36, 52, 27, 0, - 33, 0, 38, 7, 0, 37, 0, 0, 0, 26, - 40, 28 + 72, 79, 0, 72, 52, 136, 93, 198, 0, 97, + 72, 46, 0, 0, 0, 0, 0, 4, 5, 0, + 181, 183, 0, 199, 0, 0, 89, 0, 0, 139, + 0, 169, 192, 0, 76, 189, 0, 155, 34, 22, + 23, 48, 20, 21, 24, 25, 84, 83, 82, 87, + 0, 0, 111, 0, 123, 119, 120, 116, 117, 114, + 0, 126, 125, 124, 122, 121, 118, 127, 115, 0, + 0, 99, 0, 92, 100, 167, 0, 0, 0, 0, + 0, 0, 74, 0, 196, 0, 3, 0, 185, 196, + 0, 0, 47, 0, 0, 49, 51, 0, 0, 201, + 45, 50, 0, 0, 19, 0, 0, 0, 184, 200, + 96, 0, 143, 0, 145, 0, 138, 191, 75, 0, + 0, 0, 104, 110, 0, 0, 0, 108, 0, 198, + 168, 0, 102, 0, 163, 0, 73, 78, 77, 65, + 0, 64, 94, 98, 140, 43, 43, 0, 0, 0, + 0, 46, 0, 0, 0, 90, 144, 146, 113, 0, + 107, 151, 0, 103, 109, 0, 105, 164, 101, 81, + 0, 0, 8, 26, 26, 0, 33, 0, 0, 0, + 31, 112, 106, 91, 33, 33, 9, 0, 0, 29, + 30, 0, 39, 43, 33, 42, 35, 36, 52, 27, + 0, 33, 0, 38, 7, 0, 37, 0, 0, 0, + 26, 40, 28 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 111, 104, 315, 2, 382, 395, 4, 12, - 309, 398, 79, 80, 169, 13, 14, 379, 310, 300, - 249, 303, 312, 306, 15, 16, 17, 18, 98, 19, - 20, 24, 122, 23, 100, 210, 292, 244, 348, 21, - 22, 102, 304, 82, 83, 298, 282, 84, 85, 86, - 87, 88, 89, 90, 155, 142, 233, 307, 91, 92, + -1, 1, 111, 104, 316, 2, 383, 396, 4, 12, + 310, 399, 79, 80, 169, 13, 14, 380, 311, 301, + 250, 304, 313, 307, 15, 16, 17, 18, 98, 19, + 20, 24, 122, 23, 100, 210, 293, 245, 349, 21, + 22, 102, 305, 82, 83, 299, 283, 84, 85, 86, + 87, 88, 89, 90, 155, 142, 234, 308, 91, 92, 93, 94, 95, 96, 113 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -354 +#define YYPACT_NINF -344 static const yytype_int16 yypact[] = { - -354, 26, -354, -354, 145, -354, -354, -354, 25, -354, - -354, -354, -354, -354, -354, 294, -354, -354, -354, -354, - -354, -354, -354, 64, 71, 96, -354, 71, -354, -354, - 876, 1722, 1722, 373, 373, 373, 373, 373, -354, -354, - 373, 373, -354, 24, -354, 1722, -354, -354, 55, 63, - 90, 104, 0, 107, 108, 116, 1722, -354, 113, 118, - 120, 645, 560, 373, 730, 959, 138, 1722, 35, 1722, - 1722, 1722, 1722, 1722, 1722, 1722, 1042, 177, 204, -354, - -354, 1003, 162, -354, 14, -354, -354, -354, -354, 1896, - -354, 167, 38, 73, -354, -354, 231, -354, 116, -354, - 239, -354, 244, 239, -354, -354, 30, 133, 133, -354, - -354, -354, -354, -354, -354, -354, -354, -354, 1722, 172, - 1722, 421, 116, 239, -354, -354, -354, -354, -354, -354, - 173, -354, -354, -354, 1896, 179, 1127, 560, -354, 421, - 1783, 162, -354, 792, 1722, -354, 176, -354, 421, 22, - 270, 7, 1722, 421, 1212, 219, -354, -354, -354, 421, - 162, 133, 133, 133, -10, -10, 277, 255, 116, -354, - -354, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, - 1722, 1722, 1722, 1297, 1722, 1722, 1722, 1722, 1722, 1722, - 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, -354, - -354, 13, 1382, 1722, 1722, 1722, 1722, 1722, -354, -354, - 226, 275, 226, 122, -354, -354, 1722, -39, -354, 226, - 1722, 1722, 1722, 1722, 282, 390, -354, -354, 1722, -354, - -354, 306, 360, 206, 1722, 162, 1467, 1552, -354, 289, - -354, -354, 322, 278, -354, 1722, 293, -354, 377, -354, - 377, 377, 377, 377, 377, 235, 235, -354, 1896, 33, - 69, -354, 351, 1974, 908, 717, 201, 279, 1896, 1857, - 461, 461, 547, 631, 861, 378, 133, 133, 1722, 1722, - -354, 1637, 233, -354, -354, 459, 121, 77, 135, 112, - 168, 310, 78, 1722, 78, -354, 241, -354, 1722, 116, - 248, 377, 256, 258, 377, -354, 265, 266, -354, -354, - -354, 269, 344, 389, 1722, 1722, 276, -354, -354, -354, - 521, -354, 606, -354, 632, -354, -354, -354, 174, 1722, - 361, -354, -354, 1722, 212, 205, -354, 691, 1722, -354, - 371, -354, 374, -354, 386, -354, -354, -354, -354, 367, - -354, -354, -354, -354, -354, -354, 415, 415, 1722, 415, - 1722, 304, 363, 415, -354, -354, -354, -354, 208, -354, - 1935, 428, -354, -354, 369, -354, -354, -354, -354, 415, - 415, -354, 81, 81, 370, 177, 435, 415, 415, -354, - -354, -354, -354, 177, 177, -354, 415, 375, -354, -354, - 415, -354, -354, 177, -354, -354, -354, 199, -354, 1722, - 177, 473, -354, -354, 379, -354, 383, 415, 415, 81, - -354, -354 + -344, 39, -344, -344, 47, -344, -344, -344, 28, -344, + -344, -344, -344, -344, -344, 295, -344, -344, -344, -344, + -344, -344, -344, 34, 59, 65, -344, 59, -344, -344, + 877, 1723, 1723, 351, 351, 351, 351, 351, -344, -344, + 351, 351, -344, -5, -344, 1723, -344, -344, 3, 7, + 22, 52, 35, 81, 88, 226, 1723, -344, 96, 121, + 148, 646, 561, 351, 731, 960, 223, 1723, 19, 1723, + 1723, 1723, 1723, 1723, 1723, 1723, 1043, 100, 242, -344, + -344, 1004, 199, -344, 14, -344, -344, -344, -344, 1897, + -344, 179, 135, 200, -344, -344, 266, -344, 226, -344, + 255, 260, 264, 255, -344, -344, 80, 507, 507, -344, + -344, -344, -344, -344, -344, -344, -344, -344, 1723, 192, + 1723, 422, 226, 255, -344, -344, -344, -344, -344, -344, + 197, -344, -344, -344, 1897, 203, 1128, 561, -344, 422, + 1784, 199, -344, 793, 1723, -344, 205, -344, 422, 21, + 288, -6, 1723, 422, 1213, 234, -344, -344, -344, 422, + 199, 507, 507, 507, 131, 131, 292, -28, 226, -344, + -344, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, + 1723, 1723, 1723, 1298, 1723, 1723, 1723, 1723, 1723, 1723, + 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, -344, + -344, 11, 1383, 1723, 1723, 1723, 1723, 1723, -344, -344, + 238, -344, 286, 238, 90, -344, -344, 1723, -42, -344, + 238, 1723, 1723, 1723, 1723, 311, 391, -344, -344, 1723, + -344, -344, -10, 119, 233, 1723, 199, 1468, 1553, -344, + 319, -344, -344, 133, 312, -344, 1723, 324, -344, 220, + -344, 220, 220, 220, 220, 220, 272, 272, -344, 1897, + 26, 89, -344, 323, 1975, 909, 718, 678, 280, 1897, + 1858, 462, 462, 548, 632, 862, 379, 507, 507, 1723, + 1723, -344, 1638, 256, -344, -344, 352, 69, 163, 194, + 170, 225, 326, 42, 1723, 42, -344, 259, -344, 1723, + 226, 268, 220, 270, 271, 220, -344, 277, 283, -344, + -344, -344, 289, 362, 390, 1723, 1723, 290, -344, -344, + -344, 460, -344, 522, -344, 607, -344, -344, -344, 198, + 1723, 375, -344, -344, 1723, 305, 207, -344, 633, 1723, + -344, 378, -344, 381, -344, 385, -344, -344, -344, -344, + 369, -344, -344, -344, -344, -344, -344, 388, 388, 1723, + 388, 1723, 306, 307, 388, -344, -344, -344, -344, 213, + -344, 1936, 389, -344, -344, 331, -344, -344, -344, -344, + 388, 388, -344, 182, 182, 336, 100, 411, 388, 388, + -344, -344, -344, -344, 100, 100, -344, 388, 337, -344, + -344, 388, -344, -344, 100, -344, -344, -344, 122, -344, + 1723, 100, 474, -344, -344, 340, -344, 345, 388, 388, + 182, -344, -344 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -354, -354, -13, -72, -354, -354, 1505, -354, -103, -354, - 444, -353, -354, -354, -26, -354, -354, -335, -354, 103, - -116, -215, 76, -354, -354, -354, -354, -354, -354, -354, - -354, 128, 419, -354, 466, -19, -181, -354, 207, -354, - -354, -354, -15, -38, -354, -354, -354, -354, -354, -354, - -354, -354, 56, -354, -354, -115, -202, -354, -354, -29, - 431, 434, -354, -354, 28 + -344, -344, -13, -62, -344, -344, 1505, -344, -103, -344, + 426, -343, -344, -344, 147, -344, -344, -335, -344, 82, + 8, -217, 30, -344, -344, -344, -344, -344, -344, -344, + -344, 215, 403, -344, 425, -21, -116, -344, 164, -344, + -344, -344, -15, -39, -344, -344, -344, -344, -344, -344, + -344, -344, 56, -344, -344, -100, -204, -344, -344, -30, + 392, 396, -344, -344, 138 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -425,424 +425,424 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -187 static const yytype_int16 yytable[] = { - 81, 213, 77, 215, 112, 112, 112, 112, 112, 33, - 311, 112, 112, 316, 296, 106, 278, 181, 279, 182, - 380, 239, 33, 130, 141, 203, 3, 204, 180, 280, - 399, 294, 160, 143, 112, 149, 214, 240, 299, 156, - 25, 203, 133, 204, 33, 34, 35, 330, 138, 297, - 151, 147, 220, 221, 222, 223, 224, 225, 128, 227, - 228, 167, 114, 115, 116, 117, 421, 411, 118, 119, - 177, 178, 179, -187, -187, 331, 205, 201, 206, 97, - 141, 29, 217, 341, 212, 208, 99, 107, 108, 129, - 144, 145, 346, 177, 178, 179, 177, 178, 179, 361, - 362, 121, 281, 183, 219, 302, 235, 305, 143, 218, - 101, 237, 134, 120, 141, 396, 397, 139, 343, 29, - 148, 231, 232, 153, 154, 159, 295, 161, 162, 163, - 164, 165, 177, 178, 179, 340, 374, 26, 27, 242, - 177, 178, 179, 384, 124, -2, 5, 6, 7, 342, - 8, 9, 125, 152, 314, 247, 248, 250, 251, 252, - 253, 254, 255, 256, 257, 234, 259, 260, 262, 5, - 6, 7, 283, 8, 9, 177, 178, 179, 349, 126, - 367, 10, 344, 352, 177, 178, 179, 285, 286, 287, - 288, 289, 290, 127, 414, 308, 131, 132, 177, 178, - 179, 232, 135, 413, 10, 301, 250, 136, 250, 137, - 313, 372, 11, 168, 390, 198, 199, 200, 170, 320, - 201, 322, 324, 5, 6, 7, 371, 8, 9, 180, - 328, 177, 178, 179, 207, 11, 258, 177, 178, 179, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 141, 202, 209, 10, 211, - 141, 216, 226, 334, 335, 236, 337, 229, 177, 178, - 179, 177, 178, 179, 238, 177, 178, 179, 197, 347, - 243, 347, 245, 198, 199, 200, 353, 291, 201, 11, - 293, 33, 407, 325, 319, 28, 327, 29, 329, 30, - 179, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 368, 44, 45, 46, 177, 178, - 179, 47, 338, 232, 48, 49, 50, 51, 345, 351, - 187, 52, 53, 54, 55, 56, 354, 57, 58, 59, - 60, 61, 62, 246, 355, 301, 356, 63, 64, 65, - 66, 67, 68, 357, 69, 358, 197, 359, 360, 401, - 70, 198, 199, 200, 363, 369, 201, 405, 406, 177, - 178, 179, 71, 72, 73, 375, 29, 412, 376, 74, - 75, 378, 33, 76, 415, 177, 178, 179, 109, 370, - 377, 28, 387, 110, 317, 30, 81, 31, 32, 33, - 34, 35, 36, 37, -44, 39, 40, 41, 42, 43, - 326, 44, 45, 46, 177, 178, 179, 47, 381, 171, - 172, 173, 174, 177, 178, 179, 175, 318, 176, 187, - 188, 56, 391, 57, 58, 59, 60, 61, 62, 332, - 177, 178, 179, 63, 64, 65, 66, 67, 68, 402, - 69, 388, 177, 178, 179, 197, 70, 392, 400, 78, - 198, 199, 200, 386, 409, 201, 123, 417, 71, 72, - 73, 418, 187, 188, 28, 74, 75, -49, 30, 76, - 31, 32, 33, 34, 35, 36, 37, 416, 39, 40, - 41, 42, 43, 103, 44, 45, 46, 196, 197, 157, - 47, 350, 158, 198, 199, 200, 0, 0, 201, 0, - 185, 186, 187, 188, 56, 0, 57, 58, 59, 60, - 61, 62, 177, 178, 179, 0, 63, 64, 65, 66, - 67, 68, 0, 69, 193, 194, 195, 196, 197, 70, - 0, 0, 0, 198, 199, 200, 0, 339, 201, 0, - 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, - 0, -44, 76, 29, 0, 30, 0, 31, 32, 33, - 34, 35, 36, 37, 0, 140, 40, 41, 42, 43, - 110, 44, 45, 46, 177, 178, 179, 47, 0, 0, - 0, 0, 0, 0, 0, 0, 185, 186, 187, 188, - 0, 56, 0, 57, 58, 59, 60, 61, 62, 364, - 0, 0, 0, 63, 64, 65, 66, 67, 68, 0, - 69, 194, 195, 196, 197, 0, 70, 0, 0, 198, - 199, 200, 0, 0, 201, 0, 0, 0, 71, 72, - 73, 0, 0, 0, 0, 74, 75, 0, 29, 76, - 30, 0, 31, 32, 33, 34, 35, 36, 37, 0, - 39, 40, 41, 42, 43, 0, 44, 45, 46, 177, - 178, 179, 47, 0, 0, 0, 0, 0, 0, 0, - 185, 186, 187, 188, 0, 0, 56, 0, 57, 58, - 59, 60, 61, 62, 365, 177, 178, 179, 63, 64, - 65, 66, 67, 68, 0, 69, 195, 196, 197, 0, - 0, 70, 0, 198, 199, 200, 0, 0, 201, 0, - 366, 0, 0, 71, 72, 73, 0, 0, 0, 0, - 74, 75, 0, 29, 76, 30, 0, 31, 32, 33, - 34, 35, 36, 37, 0, 146, 40, 41, 42, 43, - 0, 44, 45, 46, 177, 178, 179, 47, 0, 0, - 0, 0, 0, 0, 0, 0, 185, -187, 187, 188, - 0, 56, 0, 57, 58, 59, 60, 61, 62, 373, - 0, 0, 0, 63, 64, 65, 66, 67, 68, 0, - 69, 0, 0, 196, 197, 203, 70, 204, -157, 198, - 199, 200, 0, 0, 201, 0, -157, 0, 71, 72, - 73, 0, 0, 0, 0, 74, 75, 0, 0, 76, - 0, 0, -157, -157, -157, -157, 0, 0, 0, -157, - 0, -157, 0, 0, -157, 0, 0, 0, 0, 0, - 0, -157, -157, -157, -157, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -157, -157, -157, 0, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, - -157, 30, 105, 31, 32, 33, 34, 35, 36, 37, + 81, 214, 77, 112, 112, 112, 112, 112, 240, 312, + 112, 112, 317, 297, 279, 106, 280, 181, 216, 182, + 33, 381, 130, 141, 203, 180, 204, 281, 33, 34, + 35, 160, 143, 112, 149, 177, 178, 179, 156, 3, + 331, 400, 133, 25, 33, 29, 298, -2, 138, 97, + 151, 147, 241, 177, 178, 179, 347, 177, 178, 179, + 247, 167, 221, 222, 223, 224, 225, 226, 412, 228, + 229, 5, 6, 7, 99, 8, 9, 422, 318, 141, + 101, 218, 213, 341, 120, 208, 215, 107, 108, 177, + 178, 179, 124, 128, 296, 332, 125, 295, 362, 363, + 282, 121, 220, 183, 300, 236, 10, 143, 154, 219, + 238, 126, 134, 141, 5, 6, 7, 139, 8, 9, + 148, 232, 233, 153, 129, 159, 414, 161, 162, 163, + 164, 165, 177, 178, 179, 375, 168, 11, 203, 243, + 204, 127, 385, 177, 178, 179, 5, 6, 7, 10, + 8, 9, 177, 178, 179, 248, 249, 251, 252, 253, + 254, 255, 256, 257, 258, 315, 260, 261, 263, 342, + 131, 284, 114, 115, 116, 117, 344, 132, 118, 119, + 11, 10, 177, 178, 179, 135, 319, 286, 287, 288, + 289, 290, 291, 415, 350, 309, 177, 178, 179, 353, + 144, 145, 233, 205, 368, 206, 302, 251, 343, 251, + 136, 314, 11, 373, -187, -187, 397, 398, 201, 391, + 321, 327, 323, 325, 26, 27, 177, 178, 179, 29, + 303, 329, 306, 177, 178, 179, 259, 137, 152, 345, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 141, 170, 177, 178, 179, + 141, 177, 178, 179, 335, 336, 180, 338, 202, 207, + 177, 178, 179, 209, 211, 235, 177, 178, 179, 212, + 348, 217, 348, 177, 178, 179, 227, 354, 177, 178, + 179, 230, 239, 408, 237, 244, 28, 246, 29, 292, + 30, 294, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 369, 44, 45, 46, 372, + 33, 320, 47, 326, 233, 48, 49, 50, 51, 330, + 328, 187, 52, 53, 54, 55, 56, 179, 57, 58, + 59, 60, 61, 62, 346, 339, 302, 352, 63, 64, + 65, 66, 67, 68, 29, 69, 355, 197, 356, 357, + 33, 70, 198, 199, 200, 358, 109, 201, 177, 178, + 179, 110, 359, 71, 72, 73, 361, 360, 364, 370, + 74, 75, 376, 379, 76, 377, 177, 178, 179, 378, + 371, 382, 28, 392, 388, 389, 30, 81, 31, 32, + 33, 34, 35, 36, 37, -44, 39, 40, 41, 42, + 43, 333, 44, 45, 46, 177, 178, 179, 47, 393, + 171, 172, 173, 174, 401, 403, 410, 175, 418, 176, + 187, 188, 56, 419, 57, 58, 59, 60, 61, 62, + 340, 78, 417, 387, 63, 64, 65, 66, 67, 68, + 123, 69, 103, 177, 178, 179, 197, 70, 0, 351, + 157, 198, 199, 200, 158, 0, 201, 0, 0, 71, + 72, 73, 0, 187, 188, 28, 74, 75, -49, 30, + 76, 31, 32, 33, 34, 35, 36, 37, 0, 39, + 40, 41, 42, 43, 0, 44, 45, 46, 196, 197, + 0, 47, 0, 0, 198, 199, 200, 0, 0, 201, + 0, 185, 186, 187, 188, 56, 0, 57, 58, 59, + 60, 61, 62, 177, 178, 179, 0, 63, 64, 65, + 66, 67, 68, 402, 69, 193, 194, 195, 196, 197, + 70, 406, 407, 0, 198, 199, 200, 0, 365, 201, + 0, 413, 71, 72, 73, 0, 0, 0, 416, 74, + 75, 0, -44, 76, 29, 0, 30, 0, 31, 32, + 33, 34, 35, 36, 37, 0, 140, 40, 41, 42, + 43, 110, 44, 45, 46, 177, 178, 179, 47, 198, + 199, 200, 0, 0, 201, 0, 0, 185, 186, 187, + 188, 0, 56, 0, 57, 58, 59, 60, 61, 62, + 366, 0, 0, 0, 63, 64, 65, 66, 67, 68, + 0, 69, 194, 195, 196, 197, 0, 70, 0, 0, + 198, 199, 200, 0, 0, 201, 0, 0, 0, 71, + 72, 73, 0, 0, 0, 0, 74, 75, 0, 29, + 76, 30, 0, 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, 45, 46, - 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 185, 186, 187, 188, 0, 0, 0, 56, 0, 57, - 58, 59, 60, 61, 62, 0, 0, 0, 0, 63, - 64, 65, 66, 67, 68, 0, 69, 196, 197, 0, - 0, 0, 70, 198, 199, 200, 0, 0, 201, 0, - 0, 0, 0, 0, 71, 72, 73, -187, 0, 187, - 188, 74, 75, 0, 30, 76, 31, 32, 33, 34, - 35, 36, 37, 150, 39, 40, 41, 42, 43, 0, - 44, 45, 46, 0, 196, 197, 47, 0, 0, 0, - 198, 199, 200, 0, 0, 201, 0, 0, 0, 0, - 56, 0, 57, 58, 59, 60, 61, 62, 0, 0, - 0, 0, 63, 64, 65, 66, 67, 68, 0, 69, - 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 171, 172, 173, 174, 71, 72, 73, - 175, 0, 176, 0, 74, 75, 0, 30, 76, 31, - 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, - 42, 43, 0, 44, 45, 46, 177, 178, 179, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, - 62, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 0, 0, 0, 0, 74, 75, 0, - 166, 76, 30, 0, 31, 32, 33, 34, 35, 36, - 37, 0, 39, 40, 41, 42, 43, 0, 44, 45, - 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, - 63, 64, 65, 66, 67, 68, 0, 69, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 0, 0, - 0, 0, 74, 75, 0, 230, 76, 30, 0, 31, - 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, - 42, 43, 0, 44, 45, 46, 0, 0, 0, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, - 62, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 0, 0, 0, 0, 74, 75, 0, - 241, 76, 30, 0, 31, 32, 33, 34, 35, 36, + 177, 178, 179, 47, 0, 0, 0, 0, 0, 0, + 0, 185, 186, 187, 188, 0, 0, 56, 0, 57, + 58, 59, 60, 61, 62, 367, 177, 178, 179, 63, + 64, 65, 66, 67, 68, 0, 69, 195, 196, 197, + 0, 0, 70, 0, 198, 199, 200, 0, 0, 201, + 0, 374, 0, 0, 71, 72, 73, 0, 0, 0, + 0, 74, 75, 0, 29, 76, 30, 0, 31, 32, + 33, 34, 35, 36, 37, 0, 146, 40, 41, 42, + 43, 0, 44, 45, 46, 197, 0, 0, 47, 0, + 198, 199, 200, 0, 0, 201, 0, 185, -187, 187, + 188, 0, 56, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, + 0, 69, 0, 0, 196, 197, 203, 70, 204, -157, + 198, 199, 200, 0, 0, 201, 0, -157, 0, 71, + 72, 73, 0, 0, 0, 0, 74, 75, 0, 0, + 76, 0, 0, -157, -157, -157, -157, 0, 0, 0, + -157, 0, -157, 0, 0, -157, 0, 0, 0, 0, + 0, 0, -157, -157, -157, -157, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, 0, 0, 0, 0, -157, -157, -157, 0, 0, + -157, -157, 30, 105, 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 185, 186, 187, 188, 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, - 63, 64, 65, 66, 67, 68, 0, 69, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 0, 0, - 0, 0, 74, 75, 0, 261, 76, 30, 0, 31, - 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, - 42, 43, 0, 44, 45, 46, 0, 0, 0, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, - 62, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, + 63, 64, 65, 66, 67, 68, 0, 69, 196, 197, + 0, 0, 0, 70, 198, 199, 200, 0, 0, 201, + 0, 0, 0, 0, 0, 71, 72, 73, -187, 0, + 187, 188, 74, 75, 0, 30, 76, 31, 32, 33, + 34, 35, 36, 37, 150, 39, 40, 41, 42, 43, + 0, 44, 45, 46, 0, 196, 197, 47, 0, 0, + 0, 198, 199, 200, 0, 0, 201, 0, 0, 0, + 0, 56, 0, 57, 58, 59, 60, 61, 62, 0, + 0, 0, 0, 63, 64, 65, 66, 67, 68, 0, + 69, 0, 0, 0, 0, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 171, 172, 173, 174, 71, 72, + 73, 175, 0, 176, 0, 74, 75, 0, 30, 76, + 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, + 41, 42, 43, 0, 44, 45, 46, 177, 178, 179, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 57, 58, 59, 60, + 61, 62, 0, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 0, 0, 0, 0, 74, 75, 0, - 284, 76, 30, 0, 31, 32, 33, 34, 35, 36, - 37, 0, 39, 40, 41, 42, 43, 0, 44, 45, - 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, - 63, 64, 65, 66, 67, 68, 0, 69, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 0, 0, - 0, 0, 74, 75, 0, 321, 76, 30, 0, 31, - 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, - 42, 43, 0, 44, 45, 46, 0, 0, 0, 47, + 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, + 0, 166, 76, 30, 0, 31, 32, 33, 34, 35, + 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, + 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 57, 58, 59, 60, 61, 62, 0, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 0, 69, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 0, + 0, 0, 0, 74, 75, 0, 231, 76, 30, 0, + 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, + 41, 42, 43, 0, 44, 45, 46, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 57, 58, 59, 60, + 61, 62, 0, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, - 62, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, + 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, + 0, 242, 76, 30, 0, 31, 32, 33, 34, 35, + 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, + 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 57, 58, 59, 60, 61, 62, 0, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 0, 69, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 0, + 0, 0, 0, 74, 75, 0, 262, 76, 30, 0, + 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, + 41, 42, 43, 0, 44, 45, 46, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 57, 58, 59, 60, + 61, 62, 0, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 0, 0, 0, 0, 74, 75, 0, - 323, 76, 30, 0, 31, 32, 33, 34, 35, 36, - 37, 0, 39, 40, 41, 42, 43, 0, 44, 45, - 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 57, 58, 59, 60, 61, 62, 0, 0, 0, 0, - 63, 64, 65, 66, 67, 68, 0, 69, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 0, 0, - 0, 0, 74, 75, 0, 336, 76, 30, 0, 31, - 32, 33, 34, 35, 36, 37, 0, 39, 40, 41, - 42, 43, 0, 44, 45, 46, 0, 0, 0, 47, + 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, + 0, 285, 76, 30, 0, 31, 32, 33, 34, 35, + 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, + 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 57, 58, 59, 60, 61, 62, 0, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 0, 69, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 0, + 0, 0, 0, 74, 75, 0, 322, 76, 30, 0, + 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, + 41, 42, 43, 0, 44, 45, 46, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 57, 58, 59, 60, + 61, 62, 0, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 0, 69, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 57, 58, 59, 60, 61, - 62, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 0, 69, 0, 0, 0, 0, 0, 70, -186, - 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, - 71, 72, 73, 0, 0, 0, 0, 74, 75, 0, - 0, 76, 0, -186, -186, -186, -186, 0, 0, 0, - -186, 0, -186, 0, 0, -186, 0, 0, 0, 0, - 0, 0, -186, -186, -186, -186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -186, -186, -186, 0, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, 0, 383, 0, 385, -186, -186, -186, 389, 0, - -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 393, 394, 0, 0, 0, 0, - 0, 0, 403, 404, 0, 0, 0, 0, 0, 184, - 0, 408, 0, 0, 0, 410, 185, 186, 187, 188, + 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, + 0, 324, 76, 30, 0, 31, 32, 33, 34, 35, + 36, 37, 0, 39, 40, 41, 42, 43, 0, 44, + 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 57, 58, 59, 60, 61, 62, 0, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 0, 69, 0, + 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 0, + 0, 0, 0, 74, 75, 0, 337, 76, 30, 0, + 31, 32, 33, 34, 35, 36, 37, 0, 39, 40, + 41, 42, 43, 0, 44, 45, 46, 0, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 57, 58, 59, 60, + 61, 62, 0, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 0, 69, 0, 0, 0, 0, 0, 70, + -186, 0, 0, 0, 0, 0, 0, 0, -186, 0, + 0, 71, 72, 73, 0, 0, 0, 0, 74, 75, + 0, 0, 76, 0, -186, -186, -186, -186, 0, 0, + 0, -186, 0, -186, 0, 0, -186, 0, 0, 0, + 0, 0, 0, -186, -186, -186, -186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -186, -186, -186, + 0, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, 0, 384, 0, 386, -186, -186, -186, 390, + 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 394, 395, 0, 0, 0, + 0, 0, 0, 404, 405, 0, 0, 0, 0, 0, + 184, 0, 409, 0, 0, 0, 411, 185, 186, 187, + 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 421, 0, 189, 190, 334, 191, + 192, 193, 194, 195, 196, 197, 0, 0, 0, 184, + 198, 199, 200, 0, 0, 201, 185, 186, 187, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 419, 420, 0, 189, 190, 333, 191, 192, + 0, 0, 0, 0, 0, 189, 190, 0, 191, 192, 193, 194, 195, 196, 197, 0, 0, 0, 184, 198, 199, 200, 0, 0, 201, 185, 186, 187, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 189, 190, 0, 191, 192, 193, - 194, 195, 196, 197, 0, 0, 0, 184, 198, 199, + 0, 0, 0, 0, 0, 190, 0, 191, 192, 193, + 194, 195, 196, 197, 0, 0, 0, -187, 198, 199, 200, 0, 0, 201, 185, 186, 187, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 190, 0, 191, 192, 193, 194, - 195, 196, 197, 0, 0, 0, -187, 198, 199, 200, - 0, 0, 201, 185, 186, 187, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 192, 193, 194, 195, - 196, 197, 0, 0, 0, 0, 198, 199, 200, 0, - 0, 201 + 0, 0, 0, 0, 0, 0, 191, 192, 193, 194, + 195, 196, 197, 0, 0, 0, 0, 198, 199, 200, + 0, 0, 201 }; static const yytype_int16 yycheck[] = { - 15, 104, 15, 118, 33, 34, 35, 36, 37, 9, - 225, 40, 41, 228, 216, 30, 3, 3, 5, 5, - 355, 14, 9, 52, 62, 3, 0, 5, 67, 16, - 383, 212, 70, 62, 63, 64, 6, 152, 219, 68, - 15, 3, 55, 5, 9, 10, 11, 14, 61, 88, - 65, 64, 124, 125, 126, 127, 128, 129, 58, 131, - 132, 76, 34, 35, 36, 37, 419, 402, 40, 41, - 63, 64, 65, 83, 84, 6, 3, 87, 5, 15, - 118, 3, 120, 6, 103, 98, 15, 31, 32, 89, - 62, 63, 14, 63, 64, 65, 63, 64, 65, 314, - 315, 45, 89, 89, 123, 221, 144, 223, 137, 122, - 14, 89, 56, 89, 152, 34, 35, 61, 6, 3, + 15, 104, 15, 33, 34, 35, 36, 37, 14, 226, + 40, 41, 229, 217, 3, 30, 5, 3, 118, 5, + 9, 356, 52, 62, 3, 67, 5, 16, 9, 10, + 11, 70, 62, 63, 64, 63, 64, 65, 68, 0, + 14, 384, 55, 15, 9, 3, 88, 0, 61, 15, + 65, 64, 152, 63, 64, 65, 14, 63, 64, 65, + 88, 76, 124, 125, 126, 127, 128, 129, 403, 131, + 132, 24, 25, 26, 15, 28, 29, 420, 88, 118, + 15, 120, 103, 14, 89, 98, 6, 31, 32, 63, + 64, 65, 89, 58, 4, 6, 89, 213, 315, 316, + 89, 45, 123, 89, 220, 144, 59, 137, 89, 122, + 89, 89, 56, 152, 24, 25, 26, 61, 28, 29, 64, 136, 137, 67, 89, 69, 4, 71, 72, 73, - 74, 75, 63, 64, 65, 14, 338, 9, 10, 154, - 63, 64, 65, 358, 89, 0, 24, 25, 26, 14, - 28, 29, 89, 15, 226, 168, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 137, 181, 182, 183, 24, - 25, 26, 201, 28, 29, 63, 64, 65, 293, 89, - 6, 59, 14, 298, 63, 64, 65, 202, 203, 204, - 205, 206, 207, 89, 409, 224, 89, 89, 63, 64, - 65, 216, 89, 4, 59, 220, 221, 89, 223, 89, - 225, 6, 90, 36, 6, 82, 83, 84, 14, 234, - 87, 236, 237, 24, 25, 26, 14, 28, 29, 67, - 245, 63, 64, 65, 3, 90, 180, 63, 64, 65, + 74, 75, 63, 64, 65, 339, 36, 90, 3, 154, + 5, 89, 359, 63, 64, 65, 24, 25, 26, 59, + 28, 29, 63, 64, 65, 168, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 227, 181, 182, 183, 6, + 89, 201, 34, 35, 36, 37, 6, 89, 40, 41, + 90, 59, 63, 64, 65, 89, 67, 202, 203, 204, + 205, 206, 207, 410, 294, 225, 63, 64, 65, 299, + 62, 63, 217, 3, 6, 5, 221, 222, 14, 224, + 89, 226, 90, 6, 83, 84, 34, 35, 87, 6, + 235, 88, 237, 238, 9, 10, 63, 64, 65, 3, + 222, 246, 224, 63, 64, 65, 180, 89, 15, 14, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 293, 89, 18, 59, 15, - 298, 89, 89, 278, 279, 89, 281, 88, 63, 64, - 65, 63, 64, 65, 4, 63, 64, 65, 77, 292, - 61, 294, 5, 82, 83, 84, 299, 61, 87, 90, - 15, 9, 395, 4, 88, 1, 18, 3, 5, 5, - 65, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 329, 21, 22, 23, 63, 64, - 65, 27, 89, 338, 30, 31, 32, 33, 18, 88, - 51, 37, 38, 39, 40, 41, 88, 43, 44, 45, - 46, 47, 48, 88, 88, 360, 88, 53, 54, 55, - 56, 57, 58, 88, 60, 89, 77, 88, 14, 385, - 66, 82, 83, 84, 88, 4, 87, 393, 394, 63, - 64, 65, 78, 79, 80, 4, 3, 403, 4, 85, - 86, 14, 9, 89, 410, 63, 64, 65, 15, 333, - 4, 1, 88, 20, 88, 5, 411, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 88, 21, 22, 23, 63, 64, 65, 27, 3, 30, - 31, 32, 33, 63, 64, 65, 37, 67, 39, 51, - 52, 41, 4, 43, 44, 45, 46, 47, 48, 88, - 63, 64, 65, 53, 54, 55, 56, 57, 58, 14, - 60, 88, 63, 64, 65, 77, 66, 88, 88, 15, - 82, 83, 84, 360, 89, 87, 47, 88, 78, 79, - 80, 88, 51, 52, 1, 85, 86, 88, 5, 89, - 7, 8, 9, 10, 11, 12, 13, 411, 15, 16, - 17, 18, 19, 27, 21, 22, 23, 76, 77, 68, - 27, 294, 68, 82, 83, 84, -1, -1, 87, -1, - 49, 50, 51, 52, 41, -1, 43, 44, 45, 46, - 47, 48, 63, 64, 65, -1, 53, 54, 55, 56, - 57, 58, -1, 60, 73, 74, 75, 76, 77, 66, - -1, -1, -1, 82, 83, 84, -1, 88, 87, -1, - -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, - -1, 88, 89, 3, -1, 5, -1, 7, 8, 9, - 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 63, 64, 65, 27, -1, -1, - -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, - -1, 41, -1, 43, 44, 45, 46, 47, 48, 88, - -1, -1, -1, 53, 54, 55, 56, 57, 58, -1, - 60, 74, 75, 76, 77, -1, 66, -1, -1, 82, - 83, 84, -1, -1, 87, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, 85, 86, -1, 3, 89, - 5, -1, 7, 8, 9, 10, 11, 12, 13, -1, - 15, 16, 17, 18, 19, -1, 21, 22, 23, 63, - 64, 65, 27, -1, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, -1, -1, 41, -1, 43, 44, - 45, 46, 47, 48, 88, 63, 64, 65, 53, 54, - 55, 56, 57, 58, -1, 60, 75, 76, 77, -1, - -1, 66, -1, 82, 83, 84, -1, -1, 87, -1, - 88, -1, -1, 78, 79, 80, -1, -1, -1, -1, - 85, 86, -1, 3, 89, 5, -1, 7, 8, 9, - 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, - -1, 21, 22, 23, 63, 64, 65, 27, -1, -1, - -1, -1, -1, -1, -1, -1, 49, 50, 51, 52, - -1, 41, -1, 43, 44, 45, 46, 47, 48, 88, - -1, -1, -1, 53, 54, 55, 56, 57, 58, -1, - 60, -1, -1, 76, 77, 3, 66, 5, 6, 82, - 83, 84, -1, -1, 87, -1, 14, -1, 78, 79, - 80, -1, -1, -1, -1, 85, 86, -1, -1, 89, - -1, -1, 30, 31, 32, 33, -1, -1, -1, 37, - -1, 39, -1, -1, 42, -1, -1, -1, -1, -1, - -1, 49, 50, 51, 52, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 63, 64, 65, -1, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - -1, -1, -1, -1, 82, 83, 84, -1, -1, 87, - 88, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 194, 195, 196, 197, 198, 294, 14, 63, 64, 65, + 299, 63, 64, 65, 279, 280, 67, 282, 89, 3, + 63, 64, 65, 18, 14, 137, 63, 64, 65, 15, + 293, 89, 295, 63, 64, 65, 89, 300, 63, 64, + 65, 88, 4, 396, 89, 61, 1, 5, 3, 61, + 5, 15, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 330, 21, 22, 23, 14, + 9, 88, 27, 4, 339, 30, 31, 32, 33, 5, + 18, 51, 37, 38, 39, 40, 41, 65, 43, 44, + 45, 46, 47, 48, 18, 89, 361, 88, 53, 54, + 55, 56, 57, 58, 3, 60, 88, 77, 88, 88, + 9, 66, 82, 83, 84, 88, 15, 87, 63, 64, + 65, 20, 89, 78, 79, 80, 14, 88, 88, 4, + 85, 86, 4, 14, 89, 4, 63, 64, 65, 4, + 334, 3, 1, 4, 88, 88, 5, 412, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 88, 21, 22, 23, 63, 64, 65, 27, 88, + 30, 31, 32, 33, 88, 14, 89, 37, 88, 39, + 51, 52, 41, 88, 43, 44, 45, 46, 47, 48, + 88, 15, 412, 361, 53, 54, 55, 56, 57, 58, + 47, 60, 27, 63, 64, 65, 77, 66, -1, 295, + 68, 82, 83, 84, 68, -1, 87, -1, -1, 78, + 79, 80, -1, 51, 52, 1, 85, 86, 88, 5, + 89, 7, 8, 9, 10, 11, 12, 13, -1, 15, + 16, 17, 18, 19, -1, 21, 22, 23, 76, 77, + -1, 27, -1, -1, 82, 83, 84, -1, -1, 87, + -1, 49, 50, 51, 52, 41, -1, 43, 44, 45, + 46, 47, 48, 63, 64, 65, -1, 53, 54, 55, + 56, 57, 58, 386, 60, 73, 74, 75, 76, 77, + 66, 394, 395, -1, 82, 83, 84, -1, 88, 87, + -1, 404, 78, 79, 80, -1, -1, -1, 411, 85, + 86, -1, 88, 89, 3, -1, 5, -1, 7, 8, + 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 63, 64, 65, 27, 82, + 83, 84, -1, -1, 87, -1, -1, 49, 50, 51, + 52, -1, 41, -1, 43, 44, 45, 46, 47, 48, + 88, -1, -1, -1, 53, 54, 55, 56, 57, 58, + -1, 60, 74, 75, 76, 77, -1, 66, -1, -1, + 82, 83, 84, -1, -1, 87, -1, -1, -1, 78, + 79, 80, -1, -1, -1, -1, 85, 86, -1, 3, + 89, 5, -1, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, 22, 23, - -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, - 49, 50, 51, 52, -1, -1, -1, 41, -1, 43, - 44, 45, 46, 47, 48, -1, -1, -1, -1, 53, - 54, 55, 56, 57, 58, -1, 60, 76, 77, -1, - -1, -1, 66, 82, 83, 84, -1, -1, 87, -1, - -1, -1, -1, -1, 78, 79, 80, 49, -1, 51, - 52, 85, 86, -1, 5, 89, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, - 21, 22, 23, -1, 76, 77, 27, -1, -1, -1, - 82, 83, 84, -1, -1, 87, -1, -1, -1, -1, - 41, -1, 43, 44, 45, 46, 47, 48, -1, -1, - -1, -1, 53, 54, 55, 56, 57, 58, -1, 60, - -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 78, 79, 80, - 37, -1, 39, -1, 85, 86, -1, 5, 89, 7, - 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, - 18, 19, -1, 21, 22, 23, 63, 64, 65, 27, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, - 48, -1, -1, -1, -1, 53, 54, 55, 56, 57, - 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, 85, 86, -1, - 88, 89, 5, -1, 7, 8, 9, 10, 11, 12, - 13, -1, 15, 16, 17, 18, 19, -1, 21, 22, - 23, -1, -1, -1, 27, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, - 43, 44, 45, 46, 47, 48, -1, -1, -1, -1, - 53, 54, 55, 56, 57, 58, -1, 60, -1, -1, - -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, 85, 86, -1, 88, 89, 5, -1, 7, - 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, - 18, 19, -1, 21, 22, 23, -1, -1, -1, 27, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, - 48, -1, -1, -1, -1, 53, 54, 55, 56, 57, - 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, 85, 86, -1, - 88, 89, 5, -1, 7, 8, 9, 10, 11, 12, + 63, 64, 65, 27, -1, -1, -1, -1, -1, -1, + -1, 49, 50, 51, 52, -1, -1, 41, -1, 43, + 44, 45, 46, 47, 48, 88, 63, 64, 65, 53, + 54, 55, 56, 57, 58, -1, 60, 75, 76, 77, + -1, -1, 66, -1, 82, 83, 84, -1, -1, 87, + -1, 88, -1, -1, 78, 79, 80, -1, -1, -1, + -1, 85, 86, -1, 3, 89, 5, -1, 7, 8, + 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, + 19, -1, 21, 22, 23, 77, -1, -1, 27, -1, + 82, 83, 84, -1, -1, 87, -1, 49, 50, 51, + 52, -1, 41, -1, 43, 44, 45, 46, 47, 48, + -1, -1, -1, -1, 53, 54, 55, 56, 57, 58, + -1, 60, -1, -1, 76, 77, 3, 66, 5, 6, + 82, 83, 84, -1, -1, 87, -1, 14, -1, 78, + 79, 80, -1, -1, -1, -1, 85, 86, -1, -1, + 89, -1, -1, 30, 31, 32, 33, -1, -1, -1, + 37, -1, 39, -1, -1, 42, -1, -1, -1, -1, + -1, -1, 49, 50, 51, 52, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, -1, -1, -1, -1, 82, 83, 84, -1, -1, + 87, 88, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, 49, 50, 51, 52, -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, 48, -1, -1, -1, -1, - 53, 54, 55, 56, 57, 58, -1, 60, -1, -1, - -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, 85, 86, -1, 88, 89, 5, -1, 7, - 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, - 18, 19, -1, 21, 22, 23, -1, -1, -1, 27, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, - 48, -1, -1, -1, -1, 53, 54, 55, 56, 57, - 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, + 53, 54, 55, 56, 57, 58, -1, 60, 76, 77, + -1, -1, -1, 66, 82, 83, 84, -1, -1, 87, + -1, -1, -1, -1, -1, 78, 79, 80, 49, -1, + 51, 52, 85, 86, -1, 5, 89, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + -1, 21, 22, 23, -1, 76, 77, 27, -1, -1, + -1, 82, 83, 84, -1, -1, 87, -1, -1, -1, + -1, 41, -1, 43, 44, 45, 46, 47, 48, -1, + -1, -1, -1, 53, 54, 55, 56, 57, 58, -1, + 60, -1, -1, -1, -1, -1, 66, -1, -1, -1, + -1, -1, -1, -1, 30, 31, 32, 33, 78, 79, + 80, 37, -1, 39, -1, 85, 86, -1, 5, 89, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, -1, 21, 22, 23, 63, 64, 65, + 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, 85, 86, -1, - 88, 89, 5, -1, 7, 8, 9, 10, 11, 12, - 13, -1, 15, 16, 17, 18, 19, -1, 21, 22, - 23, -1, -1, -1, 27, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, - 43, 44, 45, 46, 47, 48, -1, -1, -1, -1, - 53, 54, 55, 56, 57, 58, -1, 60, -1, -1, - -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, 85, 86, -1, 88, 89, 5, -1, 7, - 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, - 18, 19, -1, 21, 22, 23, -1, -1, -1, 27, + -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, + -1, 88, 89, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 43, 44, 45, 46, 47, 48, -1, -1, -1, + -1, 53, 54, 55, 56, 57, 58, -1, 60, -1, + -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, 85, 86, -1, 88, 89, 5, -1, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, -1, 21, 22, 23, -1, -1, -1, + 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, - 48, -1, -1, -1, -1, 53, 54, 55, 56, 57, - 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, + -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, + -1, 88, 89, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 43, 44, 45, 46, 47, 48, -1, -1, -1, + -1, 53, 54, 55, 56, 57, 58, -1, 60, -1, + -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, 85, 86, -1, 88, 89, 5, -1, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, -1, 21, 22, 23, -1, -1, -1, + 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, 85, 86, -1, - 88, 89, 5, -1, 7, 8, 9, 10, 11, 12, - 13, -1, 15, 16, 17, 18, 19, -1, 21, 22, - 23, -1, -1, -1, 27, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, - 43, 44, 45, 46, 47, 48, -1, -1, -1, -1, - 53, 54, 55, 56, 57, 58, -1, 60, -1, -1, - -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, 85, 86, -1, 88, 89, 5, -1, 7, - 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, - 18, 19, -1, 21, 22, 23, -1, -1, -1, 27, + -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, + -1, 88, 89, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 43, 44, 45, 46, 47, 48, -1, -1, -1, + -1, 53, 54, 55, 56, 57, 58, -1, 60, -1, + -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, 85, 86, -1, 88, 89, 5, -1, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, -1, 21, 22, 23, -1, -1, -1, + 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, -1, 60, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, 44, 45, 46, 47, - 48, -1, -1, -1, -1, 53, 54, 55, 56, 57, - 58, -1, 60, -1, -1, -1, -1, -1, 66, 6, - -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, - 78, 79, 80, -1, -1, -1, -1, 85, 86, -1, - -1, 89, -1, 30, 31, 32, 33, -1, -1, -1, - 37, -1, 39, -1, -1, 42, -1, -1, -1, -1, - -1, -1, 49, 50, 51, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, -1, 357, -1, 359, 82, 83, 84, 363, -1, - 87, 88, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 379, 380, -1, -1, -1, -1, - -1, -1, 387, 388, -1, -1, -1, -1, -1, 42, - -1, 396, -1, -1, -1, 400, 49, 50, 51, 52, + -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, + -1, 88, 89, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, -1, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 43, 44, 45, 46, 47, 48, -1, -1, -1, + -1, 53, 54, 55, 56, 57, 58, -1, 60, -1, + -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, 85, 86, -1, 88, 89, 5, -1, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, -1, 21, 22, 23, -1, -1, -1, + 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, 43, 44, 45, 46, + 47, 48, -1, -1, -1, -1, 53, 54, 55, 56, + 57, 58, -1, 60, -1, -1, -1, -1, -1, 66, + 6, -1, -1, -1, -1, -1, -1, -1, 14, -1, + -1, 78, 79, 80, -1, -1, -1, -1, 85, 86, + -1, -1, 89, -1, 30, 31, 32, 33, -1, -1, + -1, 37, -1, 39, -1, -1, 42, -1, -1, -1, + -1, -1, -1, 49, 50, 51, 52, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, + -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, -1, 358, -1, 360, 82, 83, 84, 364, + -1, 87, 88, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 380, 381, -1, -1, -1, + -1, -1, -1, 388, 389, -1, -1, -1, -1, -1, + 42, -1, 397, -1, -1, -1, 401, 49, 50, 51, + 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 418, 419, -1, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, -1, -1, -1, 42, + 82, 83, 84, -1, -1, 87, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 417, 418, -1, 68, 69, 70, 71, 72, + -1, -1, -1, -1, -1, 68, 69, -1, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, 42, 82, 83, 84, -1, -1, 87, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 68, 69, -1, 71, 72, 73, + -1, -1, -1, -1, -1, 69, -1, 71, 72, 73, 74, 75, 76, 77, -1, -1, -1, 42, 82, 83, 84, -1, -1, 87, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 69, -1, 71, 72, 73, 74, - 75, 76, 77, -1, -1, -1, 42, 82, 83, 84, - -1, -1, 87, 49, 50, 51, 52, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 71, 72, 73, 74, 75, - 76, 77, -1, -1, -1, -1, 82, 83, 84, -1, - -1, 87 + -1, -1, -1, -1, -1, -1, 71, 72, 73, 74, + 75, 76, 77, -1, -1, -1, -1, 82, 83, 84, + -1, -1, 87 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -859,7 +859,7 @@ static const yytype_uint8 yystos[] = 66, 78, 79, 80, 85, 86, 89, 93, 101, 103, 104, 133, 134, 135, 138, 139, 140, 141, 142, 143, 144, 149, 150, 151, 152, 153, 154, 15, 119, 15, - 125, 14, 132, 125, 94, 6, 133, 143, 143, 15, + 125, 15, 132, 125, 94, 6, 133, 143, 143, 15, 20, 93, 150, 155, 155, 155, 155, 155, 155, 155, 89, 143, 123, 123, 89, 89, 89, 89, 58, 89, 150, 89, 89, 93, 143, 89, 89, 89, 93, 143, @@ -870,28 +870,28 @@ static const yytype_uint8 yystos[] = 67, 3, 5, 89, 42, 49, 50, 51, 52, 68, 69, 71, 72, 73, 74, 75, 76, 77, 82, 83, 84, 87, 89, 3, 5, 3, 5, 3, 93, 18, - 126, 15, 126, 99, 6, 146, 89, 134, 93, 126, - 94, 94, 94, 94, 94, 94, 89, 94, 94, 88, - 88, 133, 133, 147, 155, 134, 89, 89, 4, 14, - 146, 88, 133, 61, 128, 5, 88, 93, 133, 111, - 133, 133, 133, 133, 133, 133, 133, 133, 143, 133, - 133, 88, 133, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 3, 5, - 16, 89, 137, 150, 88, 133, 133, 133, 133, 133, - 133, 61, 127, 15, 127, 4, 147, 88, 136, 127, - 110, 133, 111, 112, 133, 111, 114, 148, 150, 101, - 109, 112, 113, 133, 94, 95, 112, 88, 67, 88, - 133, 88, 133, 88, 133, 4, 88, 18, 133, 5, - 14, 6, 88, 70, 133, 133, 88, 133, 89, 88, - 14, 6, 14, 6, 14, 18, 14, 93, 129, 146, - 129, 88, 146, 93, 88, 88, 88, 88, 89, 88, - 14, 112, 112, 88, 88, 88, 88, 6, 133, 4, - 143, 14, 6, 88, 147, 4, 4, 4, 14, 108, - 108, 3, 97, 97, 112, 97, 110, 88, 88, 97, - 6, 4, 88, 97, 97, 98, 34, 35, 102, 102, - 88, 105, 14, 97, 97, 105, 105, 99, 97, 89, - 97, 108, 105, 4, 112, 105, 113, 88, 88, 97, - 97, 102 + 126, 14, 15, 126, 99, 6, 146, 89, 134, 93, + 126, 94, 94, 94, 94, 94, 94, 89, 94, 94, + 88, 88, 133, 133, 147, 155, 134, 89, 89, 4, + 14, 146, 88, 133, 61, 128, 5, 88, 93, 133, + 111, 133, 133, 133, 133, 133, 133, 133, 133, 143, + 133, 133, 88, 133, 143, 143, 143, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 3, + 5, 16, 89, 137, 150, 88, 133, 133, 133, 133, + 133, 133, 61, 127, 15, 127, 4, 147, 88, 136, + 127, 110, 133, 111, 112, 133, 111, 114, 148, 150, + 101, 109, 112, 113, 133, 94, 95, 112, 88, 67, + 88, 133, 88, 133, 88, 133, 4, 88, 18, 133, + 5, 14, 6, 88, 70, 133, 133, 88, 133, 89, + 88, 14, 6, 14, 6, 14, 18, 14, 93, 129, + 146, 129, 88, 146, 93, 88, 88, 88, 88, 89, + 88, 14, 112, 112, 88, 88, 88, 88, 6, 133, + 4, 143, 14, 6, 88, 147, 4, 4, 4, 14, + 108, 108, 3, 97, 97, 112, 97, 110, 88, 88, + 97, 6, 4, 88, 97, 97, 98, 34, 35, 102, + 102, 88, 105, 14, 97, 97, 105, 105, 99, 97, + 89, 97, 108, 105, 4, 112, 105, 113, 88, 88, + 97, 97, 102 }; typedef enum { diff --git a/perly.y b/perly.y index df5cf46..0616692 100644 --- a/perly.y +++ b/perly.y @@ -633,16 +633,22 @@ subbody : block { $$ = $1; } } ; -package : PACKAGE WORD ';' +package : PACKAGE WORD WORD ';' { +/* Since no one seem to understand or use the MAD stuff, but Larry implies + * it shouldn't be removed, it's just commented out, and someone who + * understands it can come along later and fix it up. #ifdef MAD - $$ = package($2); - token_getmad($1,$$,'o'); - token_getmad($3,$$,';'); + (yyval.opval) = package((ps[(2) - (3)].val.opval)); + token_getmad((ps[(1) - (3)].val.i_tkval),(yyval.opval),'o'); + token_getmad((ps[(3) - (3)].val.i_tkval),(yyval.opval),';'); #else - package($2); +*/ + package($3); + if ($2) { + package_version($2); + } $$ = (OP*)NULL; -#endif } ; diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index bcf2b78..fd8aa88 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -4080,8 +4080,10 @@ Examples: The same template may generally also be used in unpack(). +=item package NAMESPACE VERSION +X X X X + =item package NAMESPACE -X X X Declares the compilation unit as being in the given namespace. The scope of the package declaration is from the declaration itself through the end @@ -4099,6 +4101,11 @@ If the package name is null, the C
package as assumed. That is, C<$::sail> is equivalent to C<$main::sail> (as well as to C<$main'sail>, still seen in older code). +If VERSION is provided, C also sets the C<$VERSION> variable in the +given namespace. VERSION must be be a numeric literal or v-string; it is +parsed exactly the same way as a VERSION argument to C. +C<$VERSION> should only be set once per package. + See L for more information about packages, modules, and classes. See L for other scoping issues. diff --git a/proto.h b/proto.h index 3f21420..983f953 100644 --- a/proto.h +++ b/proto.h @@ -2329,6 +2329,11 @@ PERL_CALLCONV void Perl_package(pTHX_ OP* o) assert(o) #endif +PERL_CALLCONV void Perl_package_version(pTHX_ OP* v) + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_PACKAGE_VERSION \ + assert(v) + PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name) __attribute__nonnull__(pTHX_1); diff --git a/t/comp/package.t b/t/comp/package.t index 35cd40c..fb07f13 100644 --- a/t/comp/package.t +++ b/t/comp/package.t @@ -1,6 +1,6 @@ #!./perl -print "1..14\n"; +print "1..18\n"; $blurfl = 123; $foo = 3; @@ -71,3 +71,22 @@ package bug32562; print __PACKAGE__ eq 'bug32562' ? "ok 13\n" : "not ok 13\n"; print eval '__PACKAGE__' eq 'bug32562' ? "ok 14\n" : "not ok 14\n"; + +# test: package NAME VERSION + +my @variations = ( + '1.00', + '1.00_01', + 'v1.2.3', + 'v1.2_3', +); + +my $test_count = 15; + +for my $v ( @variations ) { + my $ok = eval "package withversion $v; $v eq \$withversion::VERSION"; + print $ok ? "ok $test_count\n" : "not ok $test_count\n"; + $test_count++; +} + + diff --git a/toke.c b/toke.c index de163fb..72bbc2f 100644 --- a/toke.c +++ b/toke.c @@ -6410,6 +6410,7 @@ Perl_yylex(pTHX) case KEY_package: s = force_word(s,WORD,FALSE,TRUE,FALSE); + s = force_version(s, FALSE); OPERATOR(PACKAGE); case KEY_pipe: