From: Dave Mitchell Date: Sat, 14 Feb 2004 02:06:53 +0000 (+0000) Subject: Switch from byacc to bison and simplify the perly.* regeneration X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0de566d74fdaf0a49123989fe8d4ad06603c6608;p=p5sagit%2Fp5-mst-13.2.git Switch from byacc to bison and simplify the perly.* regeneration process p4raw-id: //depot/perl@22302 --- diff --git a/MANIFEST b/MANIFEST index ebfbd1d..4fe2c94 100644 --- a/MANIFEST +++ b/MANIFEST @@ -2333,11 +2333,10 @@ perlsdio.h Fake stdio using perlio perlsfio.h Prototype sfio mapping for PerlIO perlsh A poor man's perl shell perlvars.h Global variables -perly.c A byacc'ed perly.y -perly_c.diff Fixup perly.c to allow recursion -perly.fixer A program to remove yacc stack limitations -perly.h The header file for perly.c -perlyline.pl Perl code to fix #line directives and gcc warnings in perly.c +perly.act parser actions; derived from perly.y +perly.c parser code (NOT derived from perly.y) +perly.h header file for perly.c; derived from perly.y +perly.tab parser state tables; derived from perly.y perly.y Yacc grammar for perl plan9/aperl Shell to make Perl error messages Acme-friendly plan9/arpa/inet.h Plan9 port: replacement C header file @@ -2559,6 +2558,7 @@ regcomp.h Private declarations for above regcomp.pl Builder of regnodes.h regcomp.sym Data for regnodes.h regen_lib.pl Common file routines for generator scripts +regen_perly.pl generate perly.{act,h,tab} from perly.y regen.pl Run all scripts that (re)generate files regexec.c Regular expression evaluator regexp.h Public declarations for the above @@ -3007,15 +3007,12 @@ vms/mms2make.pl convert descrip.mms to make syntax vms/munchconfig.c performs shell $var substitution for VMS vms/myconfig.com record local configuration info for bug report vms/perlvms.pod VMS-specific additions to Perl documentation -vms/perly_c.vms perly.c with fixed declarations for global syms -vms/perly_h.vms perly.h with fixed declarations for global syms vms/sockadapt.c glue for SockshShr socket support vms/sockadapt.h glue for SockshShr socket support vms/test.com DCL driver for regression tests vms/vms.c VMS-specific C code for Perl core vms/vmsish.h VMS-specific C header for Perl core vms/vmspipe.com VMS-specific piped command helper script -vms/vms_yfix.pl convert Unix perly.[ch] to VMS perly_[ch].vms vms/writemain.pl Generate perlmain.c from miniperlmain.c+extensions vos/Changes Changes made to port Perl to the VOS operating system vos/compile_full_perl.cm VOS command macro to build "full" Perl diff --git a/Makefile.SH b/Makefile.SH index c39effa..b759821 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -154,15 +154,6 @@ for f in $nonxs_ext; do nonxs_list="$nonxs_list ext/$f/pm_to_blib" done -# Handle the usage of different yaccs in posix-bc (During Configure we -# us yacc for perly.y and byacc for a2p.y. The makefiles must use the -# same configuration for run_byacc!): -case "$osname" in - posix-bc) - byacc=$yacc - ;; -esac - echo "Extracting Makefile (with variable substitutions)" $spitshell >Makefile <Makefile <&1 | grep 'version 1\.8\.2' - -run_byacc: FORCE check_byacc - $(BYACC) -d perly.y - -chmod 664 perly.c perly.h - sh $(shellflags) ./perly.fixer y.tab.c perly.c - sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ - -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c - sed -e '/^extern YYSTYPE yy/D' y.tab.h >yh.tmp && mv yh.tmp y.tab.h - cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h - perl -i.old perlyline.pl perly.c - chmod 664 vms/perly_c.vms vms/perly_h.vms - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms +# used only if you force bison to run by saying +# make regen_perly +# You normally shouldn't remake perly.[ch]. + +.PHONY: regen_perly + +run_byacc: + @echo "run_byacc is obsolete; try 'make regen_perly' instead" + +# this outputs perly.act and perly.tab +regen_perly: + perl regen_perly.pl # We don't want to regenerate perly.c and perly.h, but they might # appear out-of-date after a patch is applied or a new distribution is @@ -858,11 +836,6 @@ perly.c: perly.y perly.h: perly.y -@sh -c true -PERLYVMS = vms/perly_c.vms vms/perly_h.vms - -$(PERLYVMS): perly.c perly.h vms/vms_yfix.pl - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms - # No compat3.sym here since and including the 5.004_50. # No interp.sym since 5.005_03. SYM = global.sym globvar.sym perlio.sym pp.sym @@ -904,7 +877,7 @@ regen regen_headers: FORCE regen_pods: FORCE -cd pod; $(LDLIBPTH) $(MAKE) regen_pods -regen_all: $(PERLYVMS) regen regen_pods +regen_all: regen regen_pods .PHONY: manisort manicheck @@ -1279,44 +1252,6 @@ define) echo "This is an EBCDIC system, checking if any parser files need regenerating." >&2 case "$osname" in os390|posix-bc) - rm -f y.tab.c y.tab.h - # yacc must be a reentrant ("pure") Bison in BS2000 Posix! - yacc -d perly.y >/dev/null 2>&1 - if cmp -s y.tab.c perly.c; then - rm -f y.tab.c - else - echo "perly.y -> perly.c" >&2 - mv -f y.tab.c perly.c - chmod u+w perly.c - sed -e '/^#include "perl\.h"/a\ -\ -#define yydebug PL_yydebug\ -#define yynerrs PL_yynerrs\ -#define yyerrflag PL_yyerrflag\ -#define yychar PL_yychar\ -#define yyval PL_yyval\ -#define yylval PL_yylval' \ - -e '/YYSTYPE *yyval;/D' \ - -e '/YYSTYPE *yylval;/D' \ - -e '/int yychar,/,/yynerrs;/D' \ - -e 's/int yydebug = 0;/yydebug = 0;/' \ - -e 's/[^_]realloc(/PerlMem_realloc(/g' \ - -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \ - -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c - xxx="$xxx perly.c" - fi - case "$osname:$usethreads" in - os390:define) - sed -e 's@^extern int yychar, yyerrflag;@/* extern int yychar, yyerrflag; */@' perly.c > perly.tmp && mv perly.tmp perly.c - ;; - esac - if cmp -s y.tab.h perly.h; then - rm -f y.tab.h - else - echo "perly.y -> perly.h" >&2 - mv -f y.tab.h perly.h - xxx="$xxx perly.h" - fi if cd x2p then rm -f y.tab.c y.tab.h diff --git a/Porting/pumpkin.pod b/Porting/pumpkin.pod index 9de8434..aa52845 100644 --- a/Porting/pumpkin.pod +++ b/Porting/pumpkin.pod @@ -414,7 +414,6 @@ In all, the following files should probably be executable: keywords.pl myconfig opcode.pl - perly.fixer t/TEST t/*/*.t *.SH @@ -478,51 +477,27 @@ you are not familiar with those systems. You might want to issue your patch with a promise to quickly issue a follow-up that handles those directories. -=head2 make run_byacc +=head2 make regen_perly -If you have byacc-1.8.2 (available from CPAN as -http://www.cpan.org/src/misc/perl-byacc1.8.2.tar.gz), and if there have -been changes to F, you can regenerate the F file. The -run_byacc makefile target does this by running byacc and then applying -some patches so that byacc dynamically allocates space, rather than -having fixed limits. This patch is handled by the F -script. Depending on the nature of the changes to F, you may -or may not have to hand-edit the patch to apply correctly. If you do, -you should include the edited patch in the new distribution. (If you -have byacc-1.9, the patch won't apply cleanly, notably changes to the printf -output statements. F could be fixed to detect this.) +If perly.y has been edited, it is nessary to run this target to rebuild +perly.h, perl.act and perl.tab. In fact this target just runs the Perl +script regen_perly.pl. Note that perl.c is I rebuilt; this is just a +plain static file now. -If C or C changes, make sure you run C -to update the corresponding VMS files. The run_byacc target in the Unix -Makefile takes care of this. See also L. +This target relies on you having Bison installed on your system. Running +the target will tell you if you haven't got the right version, and if so, +where to get the right one. Or if you prefer, you could hack +regen_perly.pl to work with your version of Bison. The important things +are that the regexes can still extract out the right chunks of the Bison +output into perly.act and perl.tab, and that the contents of those two +files, plus perly.h, are functionally equivalent to those produced by the +supported version of Bison. -Some additional notes from Larry on this: - -Don't forget to regenerate perly_c.diff. - - byacc -d perly.y - mv y.tab.c perly.c - patch perly.c perly_c.diff - -One chunk of lines that often fails begins with - - #line 29 "perly.y" - -and ends one line before - - #define YYERRCODE 256 - -This only happens when you add or remove a token type. I suppose this -could be automated, but it doesn't happen very often nowadays. - -Larry +Note that in the old days, you had to do C instead. =head2 make regen_all -This target takes care of the PERLYVMS, regen_headers, and regen_pods -targets. +This target takes care of the regen_headers, and regen_pods targets. =head2 make regen_headers @@ -630,10 +605,6 @@ things that need to be fixed in Configure. =head2 VMS-specific updates -If you have changed F or F, then you most probably want -to update F by running C, or -by running `make regen_all` which will run that script for you. - The Perl revision number appears as "perl5" in configure.com. It is courteous to update that if necessary. diff --git a/embedvar.h b/embedvar.h index 08631b4..104d853 100644 --- a/embedvar.h +++ b/embedvar.h @@ -458,12 +458,12 @@ #define PL_xpvnv_root (vTHX->Ixpvnv_root) #define PL_xrv_arenaroot (vTHX->Ixrv_arenaroot) #define PL_xrv_root (vTHX->Ixrv_root) -#define PL_yychar (vTHX->Iyychar) -#define PL_yydebug (vTHX->Iyydebug) -#define PL_yyerrflag (vTHX->Iyyerrflag) -#define PL_yylval (vTHX->Iyylval) -#define PL_yynerrs (vTHX->Iyynerrs) -#define PL_yyval (vTHX->Iyyval) +#define PL_yycharBINCOMPAT (vTHX->IyycharBINCOMPAT) +#define PL_yydebugBINCOMPAT (vTHX->IyydebugBINCOMPAT) +#define PL_yyerrflagBINCOMPAT (vTHX->IyyerrflagBINCOMPAT) +#define PL_yylvalBINCOMPAT (vTHX->IyylvalBINCOMPAT) +#define PL_yynerrsBINCOMPAT (vTHX->IyynerrsBINCOMPAT) +#define PL_yyvalBINCOMPAT (vTHX->IyyvalBINCOMPAT) #else /* !MULTIPLICITY */ @@ -764,12 +764,12 @@ #define PL_Ixpvnv_root PL_xpvnv_root #define PL_Ixrv_arenaroot PL_xrv_arenaroot #define PL_Ixrv_root PL_xrv_root -#define PL_Iyychar PL_yychar -#define PL_Iyydebug PL_yydebug -#define PL_Iyyerrflag PL_yyerrflag -#define PL_Iyylval PL_yylval -#define PL_Iyynerrs PL_yynerrs -#define PL_Iyyval PL_yyval +#define PL_IyycharBINCOMPAT PL_yycharBINCOMPAT +#define PL_IyydebugBINCOMPAT PL_yydebugBINCOMPAT +#define PL_IyyerrflagBINCOMPAT PL_yyerrflagBINCOMPAT +#define PL_IyylvalBINCOMPAT PL_yylvalBINCOMPAT +#define PL_IyynerrsBINCOMPAT PL_yynerrsBINCOMPAT +#define PL_IyyvalBINCOMPAT PL_yyvalBINCOMPAT #define PL_TSv PL_Sv #define PL_TXpv PL_Xpv diff --git a/intrpvar.h b/intrpvar.h index f8b20a5..2e9d1af 100644 --- a/intrpvar.h +++ b/intrpvar.h @@ -397,13 +397,14 @@ PERLVARA(Ilast_swash_key,10, U8) PERLVAR(Ilast_swash_tmps, U8 *) PERLVAR(Ilast_swash_slen, STRLEN) -/* perly.c globals */ -PERLVAR(Iyydebug, int) -PERLVAR(Iyynerrs, int) -PERLVAR(Iyyerrflag, int) -PERLVAR(Iyychar, int) -PERLVAR(Iyyval, YYSTYPE) -PERLVAR(Iyylval, YYSTYPE) +/* ex perly.c globals. Now just placeholders for BINCOMPAT in 5.8.x + * XXX delete for 5.9.x */ +PERLVAR(IyydebugBINCOMPAT, int) +PERLVAR(IyynerrsBINCOMPAT, int) +PERLVAR(IyyerrflagBINCOMPAT, int) +PERLVAR(IyycharBINCOMPAT, int) +PERLVAR(IyyvalBINCOMPAT, YYSTYPE) +PERLVAR(IyylvalBINCOMPAT, YYSTYPE) PERLVARI(Iglob_index, int, 0) PERLVAR(Isrand_called, bool) diff --git a/op.c b/op.c index e45b664..8a116d7 100644 --- a/op.c +++ b/op.c @@ -1770,7 +1770,10 @@ Perl_block_start(pTHX_ int full) { int retval = PL_savestack_ix; /* If there were syntax errors, don't try to start a block */ - if (PL_yynerrs) return retval; + /* XXX DAPM 13-Feb-04. This symbol no longer gloabl. Think of a better + * way + * if (PL_yynerrs) return retval; + */ pad_block_start(full); SAVEHINTS(); @@ -1794,7 +1797,10 @@ Perl_block_end(pTHX_ I32 floor, OP *seq) int needblockscope = PL_hints & HINT_BLOCK_SCOPE; OP* retval = scalarseq(seq); /* If there were syntax errors, don't try to close a block */ - if (PL_yynerrs) return retval; + /* XXX DAPM 13-Feb-04. This symbol no longer gloabl. Think of a better + * way + * if (PL_yynerrs) return retval; + */ LEAVE_SCOPE(floor); PL_compiling.op_private = (U8)(PL_hints & HINT_PRIVATE_MASK); if (needblockscope) diff --git a/perl.h b/perl.h index f87bb5c..83d8533 100644 --- a/perl.h +++ b/perl.h @@ -11,6 +11,12 @@ #ifndef H_PERL #define H_PERL 1 +/* XXX DAPM tmp - always do this now - probably nedd to remove all trace + * of the define at some pooint. Feb 04 */ + +#define USE_PURE_BISON 1 + + #ifdef PERL_FOR_X2P /* * This file is being used for x2p stuff. @@ -2546,9 +2552,6 @@ Gid_t getegid (void); #ifdef DEBUGGING -# undef YYDEBUG -# define YYDEBUG 1 - # define DEBUG_p_TEST DEBUG_p_TEST_ # define DEBUG_s_TEST DEBUG_s_TEST_ # define DEBUG_l_TEST DEBUG_l_TEST_ @@ -2727,8 +2730,6 @@ Gid_t getegid (void); #define PERL_MAGIC_ext '~' /* Available for use by extensions */ -#define YYMAXDEPTH 300 - #ifndef assert /* might have been included somehow */ #ifdef DEBUGGING #define assert(what) PERL_DEB( { \ diff --git a/perlapi.h b/perlapi.h index c761540..f6895de 100644 --- a/perlapi.h +++ b/perlapi.h @@ -674,18 +674,18 @@ END_EXTERN_C #define PL_xrv_arenaroot (*Perl_Ixrv_arenaroot_ptr(aTHX)) #undef PL_xrv_root #define PL_xrv_root (*Perl_Ixrv_root_ptr(aTHX)) -#undef PL_yychar -#define PL_yychar (*Perl_Iyychar_ptr(aTHX)) -#undef PL_yydebug -#define PL_yydebug (*Perl_Iyydebug_ptr(aTHX)) -#undef PL_yyerrflag -#define PL_yyerrflag (*Perl_Iyyerrflag_ptr(aTHX)) -#undef PL_yylval -#define PL_yylval (*Perl_Iyylval_ptr(aTHX)) -#undef PL_yynerrs -#define PL_yynerrs (*Perl_Iyynerrs_ptr(aTHX)) -#undef PL_yyval -#define PL_yyval (*Perl_Iyyval_ptr(aTHX)) +#undef PL_yycharBINCOMPAT +#define PL_yycharBINCOMPAT (*Perl_IyycharBINCOMPAT_ptr(aTHX)) +#undef PL_yydebugBINCOMPAT +#define PL_yydebugBINCOMPAT (*Perl_IyydebugBINCOMPAT_ptr(aTHX)) +#undef PL_yyerrflagBINCOMPAT +#define PL_yyerrflagBINCOMPAT (*Perl_IyyerrflagBINCOMPAT_ptr(aTHX)) +#undef PL_yylvalBINCOMPAT +#define PL_yylvalBINCOMPAT (*Perl_IyylvalBINCOMPAT_ptr(aTHX)) +#undef PL_yynerrsBINCOMPAT +#define PL_yynerrsBINCOMPAT (*Perl_IyynerrsBINCOMPAT_ptr(aTHX)) +#undef PL_yyvalBINCOMPAT +#define PL_yyvalBINCOMPAT (*Perl_IyyvalBINCOMPAT_ptr(aTHX)) #undef PL_Sv #define PL_Sv (*Perl_TSv_ptr(aTHX)) #undef PL_Xpv diff --git a/perly.act b/perly.act new file mode 100644 index 0000000..eafa340 --- /dev/null +++ b/perly.act @@ -0,0 +1,1043 @@ +case 2: +#line 88 "perly.y" + { yyval.ival = yyvsp[-1].ival; newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); ;} + break; + + case 3: +#line 93 "perly.y" + { if (PL_copline > (line_t)yyvsp[-3].ival) + PL_copline = (line_t)yyvsp[-3].ival; + yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); ;} + break; + + case 4: +#line 99 "perly.y" + { yyval.ival = block_start(TRUE); ;} + break; + + case 5: +#line 103 "perly.y" + { + PL_expect = XSTATE; yyval.ival = block_start(TRUE); + ;} + break; + + case 6: +#line 110 "perly.y" + { if (PL_copline > (line_t)yyvsp[-3].ival) + PL_copline = (line_t)yyvsp[-3].ival; + yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); ;} + break; + + case 7: +#line 116 "perly.y" + { yyval.ival = block_start(FALSE); ;} + break; + + case 8: +#line 121 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 9: +#line 123 "perly.y" + { yyval.opval = yyvsp[-1].opval; ;} + break; + + case 10: +#line 125 "perly.y" + { yyval.opval = append_list(OP_LINESEQ, + (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); + PL_pad_reset_pending = TRUE; + if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; ;} + break; + + case 11: +#line 133 "perly.y" + { yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); ;} + break; + + case 13: +#line 136 "perly.y" + { if (yyvsp[-1].pval != Nullch) { + yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); + } + else { + yyval.opval = Nullop; + PL_copline = NOLINE; + } + PL_expect = XSTATE; ;} + break; + + case 14: +#line 145 "perly.y" + { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); + PL_expect = XSTATE; ;} + break; + + case 15: +#line 151 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 16: +#line 153 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 17: +#line 155 "perly.y" + { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); ;} + break; + + case 18: +#line 157 "perly.y" + { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); ;} + break; + + case 19: +#line 159 "perly.y" + { yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); ;} + break; + + case 20: +#line 161 "perly.y" + { yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);;} + break; + + case 21: +#line 163 "perly.y" + { yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival, + Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); ;} + break; + + case 22: +#line 169 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 23: +#line 171 "perly.y" + { (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); ;} + break; + + case 24: +#line 173 "perly.y" + { PL_copline = (line_t)yyvsp[-5].ival; + yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); + PL_hints |= HINT_BLOCK_SCOPE; ;} + break; + + case 25: +#line 180 "perly.y" + { PL_copline = (line_t)yyvsp[-6].ival; + yyval.opval = block_end(yyvsp[-4].ival, + newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;} + break; + + case 26: +#line 184 "perly.y" + { PL_copline = (line_t)yyvsp[-6].ival; + yyval.opval = block_end(yyvsp[-4].ival, + newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); ;} + break; + + case 27: +#line 191 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 28: +#line 193 "perly.y" + { yyval.opval = scope(yyvsp[0].opval); ;} + break; + + case 29: +#line 198 "perly.y" + { PL_copline = (line_t)yyvsp[-6].ival; + yyval.opval = block_end(yyvsp[-4].ival, + newSTATEOP(0, yyvsp[-7].pval, + newWHILEOP(0, 1, (LOOP*)Nullop, + yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;} + break; + + case 30: +#line 204 "perly.y" + { PL_copline = (line_t)yyvsp[-6].ival; + yyval.opval = block_end(yyvsp[-4].ival, + newSTATEOP(0, yyvsp[-7].pval, + newWHILEOP(0, 1, (LOOP*)Nullop, + yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); ;} + break; + + case 31: +#line 210 "perly.y" + { yyval.opval = block_end(yyvsp[-6].ival, + newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} + break; + + case 32: +#line 213 "perly.y" + { yyval.opval = block_end(yyvsp[-4].ival, + newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), + yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} + break; + + case 33: +#line 217 "perly.y" + { yyval.opval = block_end(yyvsp[-4].ival, + newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); ;} + break; + + case 34: +#line 221 "perly.y" + { OP *forop; + PL_copline = (line_t)yyvsp[-9].ival; + forop = newSTATEOP(0, yyvsp[-10].pval, + newWHILEOP(0, 1, (LOOP*)Nullop, + yyvsp[-9].ival, scalar(yyvsp[-4].opval), + yyvsp[0].opval, yyvsp[-2].opval)); + if (yyvsp[-6].opval) { + forop = append_elem(OP_LINESEQ, + newSTATEOP(0, (yyvsp[-10].pval?savepv(yyvsp[-10].pval):Nullch), + yyvsp[-6].opval), + forop); + } + + yyval.opval = block_end(yyvsp[-7].ival, forop); ;} + break; + + case 35: +#line 236 "perly.y" + { yyval.opval = newSTATEOP(0, yyvsp[-2].pval, + newWHILEOP(0, 1, (LOOP*)Nullop, + NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); ;} + break; + + case 36: +#line 243 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 38: +#line 249 "perly.y" + { (void)scan_num("1", &yylval); yyval.opval = yylval.opval; ;} + break; + + case 40: +#line 255 "perly.y" + { yyval.opval = invert(scalar(yyvsp[0].opval)); ;} + break; + + case 41: +#line 260 "perly.y" + { yyval.opval = yyvsp[0].opval; intro_my(); ;} + break; + + case 42: +#line 264 "perly.y" + { yyval.opval = yyvsp[0].opval; intro_my(); ;} + break; + + case 43: +#line 268 "perly.y" + { yyval.opval = yyvsp[0].opval; intro_my(); ;} + break; + + case 44: +#line 272 "perly.y" + { yyval.opval = yyvsp[0].opval; intro_my(); ;} + break; + + case 45: +#line 277 "perly.y" + { yyval.pval = Nullch; ;} + break; + + case 47: +#line 283 "perly.y" + { yyval.ival = 0; ;} + break; + + case 48: +#line 285 "perly.y" + { yyval.ival = 0; ;} + break; + + case 49: +#line 287 "perly.y" + { yyval.ival = 0; ;} + break; + + case 50: +#line 289 "perly.y" + { yyval.ival = 0; ;} + break; + + case 51: +#line 291 "perly.y" + { yyval.ival = 0; ;} + break; + + case 52: +#line 295 "perly.y" + { newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); ;} + break; + + case 53: +#line 298 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 54: +#line 299 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 55: +#line 304 "perly.y" + { newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} + break; + + case 56: +#line 309 "perly.y" + { newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} + break; + + case 57: +#line 313 "perly.y" + { yyval.ival = start_subparse(FALSE, 0); ;} + break; + + case 58: +#line 317 "perly.y" + { yyval.ival = start_subparse(FALSE, CVf_ANON); ;} + break; + + case 59: +#line 321 "perly.y" + { yyval.ival = start_subparse(TRUE, 0); ;} + break; + + case 60: +#line 325 "perly.y" + { STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); + if (strEQ(name, "BEGIN") || strEQ(name, "END") + || strEQ(name, "INIT") || strEQ(name, "CHECK")) + CvSPECIAL_on(PL_compcv); + yyval.opval = yyvsp[0].opval; ;} + break; + + case 61: +#line 334 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 63: +#line 340 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 64: +#line 342 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 65: +#line 344 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 66: +#line 349 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 67: +#line 351 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 68: +#line 355 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 69: +#line 356 "perly.y" + { yyval.opval = Nullop; PL_expect = XSTATE; ;} + break; + + case 70: +#line 360 "perly.y" + { package(yyvsp[-1].opval); ;} + break; + + case 71: +#line 364 "perly.y" + { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;} + break; + + case 72: +#line 366 "perly.y" + { utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); ;} + break; + + case 73: +#line 371 "perly.y" + { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 74: +#line 373 "perly.y" + { yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 75: +#line 375 "perly.y" + { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 77: +#line 381 "perly.y" + { yyval.opval = yyvsp[-1].opval; ;} + break; + + case 78: +#line 383 "perly.y" + { yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 80: +#line 389 "perly.y" + { yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, + prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); ;} + break; + + case 81: +#line 392 "perly.y" + { yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, + prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); ;} + break; + + case 82: +#line 395 "perly.y" + { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, + prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), + newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); ;} + break; + + case 83: +#line 400 "perly.y" + { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, scalar(yyvsp[-2].opval), + newUNOP(OP_METHOD, 0, yyvsp[0].opval))); ;} + break; + + case 84: +#line 404 "perly.y" + { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, + prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), + newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); ;} + break; + + case 85: +#line 409 "perly.y" + { yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, + prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), + newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); ;} + break; + + case 86: +#line 414 "perly.y" + { yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} + break; + + case 87: +#line 416 "perly.y" + { yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;} + break; + + case 88: +#line 418 "perly.y" + { yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); ;} + break; + + case 89: +#line 420 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, + prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); ;} + break; + + case 92: +#line 434 "perly.y" + { yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); + PL_expect = XOPERATOR; ;} + break; + + case 93: +#line 437 "perly.y" + { yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); ;} + break; + + case 94: +#line 439 "perly.y" + { yyval.opval = newBINOP(OP_AELEM, 0, + ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), + scalar(yyvsp[-1].opval));;} + break; + + case 95: +#line 443 "perly.y" + { yyval.opval = newBINOP(OP_AELEM, 0, + ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), + scalar(yyvsp[-1].opval));;} + break; + + case 96: +#line 447 "perly.y" + { yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); + PL_expect = XOPERATOR; ;} + break; + + case 97: +#line 450 "perly.y" + { yyval.opval = newBINOP(OP_HELEM, 0, + ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), + jmaybe(yyvsp[-2].opval)); + PL_expect = XOPERATOR; ;} + break; + + case 98: +#line 455 "perly.y" + { yyval.opval = newBINOP(OP_HELEM, 0, + ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), + jmaybe(yyvsp[-2].opval)); + PL_expect = XOPERATOR; ;} + break; + + case 99: +#line 460 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + newCVREF(0, scalar(yyvsp[-3].opval))); ;} + break; + + case 100: +#line 463 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, yyvsp[-1].opval, + newCVREF(0, scalar(yyvsp[-4].opval)))); ;} + break; + + case 101: +#line 468 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, yyvsp[-1].opval, + newCVREF(0, scalar(yyvsp[-3].opval)))); ;} + break; + + case 102: +#line 472 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + newCVREF(0, scalar(yyvsp[-2].opval))); ;} + break; + + case 103: +#line 478 "perly.y" + { yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); ;} + break; + + case 104: +#line 480 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 105: +#line 482 "perly.y" + { if (yyvsp[-1].ival != OP_REPEAT) + scalar(yyvsp[-2].opval); + yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); ;} + break; + + case 106: +#line 486 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 107: +#line 488 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 108: +#line 490 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 109: +#line 492 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 110: +#line 494 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 111: +#line 496 "perly.y" + { yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); ;} + break; + + case 112: +#line 498 "perly.y" + { yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));;} + break; + + case 113: +#line 500 "perly.y" + { yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 114: +#line 502 "perly.y" + { yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 115: +#line 504 "perly.y" + { yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 116: +#line 506 "perly.y" + { yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 117: +#line 511 "perly.y" + { yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); ;} + break; + + case 118: +#line 513 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 119: +#line 515 "perly.y" + { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;} + break; + + case 120: +#line 517 "perly.y" + { yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));;} + break; + + case 121: +#line 519 "perly.y" + { yyval.opval = newUNOP(OP_POSTINC, 0, + mod(scalar(yyvsp[-1].opval), OP_POSTINC)); ;} + break; + + case 122: +#line 522 "perly.y" + { yyval.opval = newUNOP(OP_POSTDEC, 0, + mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); ;} + break; + + case 123: +#line 525 "perly.y" + { yyval.opval = newUNOP(OP_PREINC, 0, + mod(scalar(yyvsp[0].opval), OP_PREINC)); ;} + break; + + case 124: +#line 528 "perly.y" + { yyval.opval = newUNOP(OP_PREDEC, 0, + mod(scalar(yyvsp[0].opval), OP_PREDEC)); ;} + break; + + case 125: +#line 535 "perly.y" + { yyval.opval = newANONLIST(yyvsp[-1].opval); ;} + break; + + case 126: +#line 537 "perly.y" + { yyval.opval = newANONLIST(Nullop); ;} + break; + + case 127: +#line 539 "perly.y" + { yyval.opval = newANONHASH(yyvsp[-2].opval); ;} + break; + + case 128: +#line 541 "perly.y" + { yyval.opval = newANONHASH(Nullop); ;} + break; + + case 129: +#line 543 "perly.y" + { yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); ;} + break; + + case 130: +#line 549 "perly.y" + { yyval.opval = dofile(yyvsp[0].opval); ;} + break; + + case 131: +#line 551 "perly.y" + { yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); ;} + break; + + case 132: +#line 553 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-2].opval) + )),Nullop)); dep();;} + break; + + case 133: +#line 561 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, + OPf_SPECIAL|OPf_STACKED, + append_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF( + (OPpENTERSUB_AMPER<<8), + scalar(yyvsp[-3].opval) + )))); dep();;} + break; + + case 134: +#line 570 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();;} + break; + + case 135: +#line 574 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, + prepend_elem(OP_LIST, + yyvsp[-1].opval, + scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();;} + break; + + case 140: +#line 586 "perly.y" + { yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); ;} + break; + + case 141: +#line 588 "perly.y" + { yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); ;} + break; + + case 142: +#line 590 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 143: +#line 592 "perly.y" + { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} + break; + + case 144: +#line 594 "perly.y" + { yyval.opval = sawparens(yyvsp[-1].opval); ;} + break; + + case 145: +#line 596 "perly.y" + { yyval.opval = sawparens(newNULLLIST()); ;} + break; + + case 146: +#line 598 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 147: +#line 600 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 148: +#line 602 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 149: +#line 604 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 150: +#line 606 "perly.y" + { yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));;} + break; + + case 151: +#line 608 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 152: +#line 610 "perly.y" + { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); ;} + break; + + case 153: +#line 612 "perly.y" + { yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); ;} + break; + + case 154: +#line 614 "perly.y" + { yyval.opval = prepend_elem(OP_ASLICE, + newOP(OP_PUSHMARK, 0), + newLISTOP(OP_ASLICE, 0, + list(yyvsp[-1].opval), + ref(yyvsp[-3].opval, OP_ASLICE))); ;} + break; + + case 155: +#line 620 "perly.y" + { yyval.opval = prepend_elem(OP_HSLICE, + newOP(OP_PUSHMARK, 0), + newLISTOP(OP_HSLICE, 0, + list(yyvsp[-2].opval), + ref(oopsHV(yyvsp[-4].opval), OP_HSLICE))); + PL_expect = XOPERATOR; ;} + break; + + case 156: +#line 627 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 157: +#line 629 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); ;} + break; + + case 158: +#line 631 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); ;} + break; + + case 159: +#line 633 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); ;} + break; + + case 160: +#line 636 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;} + break; + + case 161: +#line 639 "perly.y" + { yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); + PL_hints |= HINT_BLOCK_SCOPE; ;} + break; + + case 162: +#line 642 "perly.y" + { yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); ;} + break; + + case 163: +#line 644 "perly.y" + { yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); ;} + break; + + case 164: +#line 646 "perly.y" + { yyval.opval = newOP(yyvsp[0].ival, 0); ;} + break; + + case 165: +#line 648 "perly.y" + { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} + break; + + case 166: +#line 650 "perly.y" + { yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); ;} + break; + + case 167: +#line 652 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); ;} + break; + + case 168: +#line 655 "perly.y" + { yyval.opval = newOP(yyvsp[0].ival, 0); ;} + break; + + case 169: +#line 657 "perly.y" + { yyval.opval = newOP(yyvsp[-2].ival, 0); ;} + break; + + case 170: +#line 659 "perly.y" + { yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, + scalar(yyvsp[0].opval)); ;} + break; + + case 171: +#line 662 "perly.y" + { yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); ;} + break; + + case 172: +#line 664 "perly.y" + { yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); ;} + break; + + case 173: +#line 666 "perly.y" + { yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); ;} + break; + + case 174: +#line 668 "perly.y" + { yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); ;} + break; + + case 177: +#line 675 "perly.y" + { yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); ;} + break; + + case 178: +#line 677 "perly.y" + { yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); ;} + break; + + case 179: +#line 682 "perly.y" + { yyval.opval = sawparens(yyvsp[-1].opval); ;} + break; + + case 180: +#line 684 "perly.y" + { yyval.opval = sawparens(newNULLLIST()); ;} + break; + + case 181: +#line 686 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 182: +#line 688 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 183: +#line 690 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 184: +#line 695 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 185: +#line 697 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 186: +#line 701 "perly.y" + { yyval.opval = Nullop; ;} + break; + + case 187: +#line 703 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + case 188: +#line 705 "perly.y" + { yyval.opval = yyvsp[-1].opval; ;} + break; + + case 189: +#line 711 "perly.y" + { PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); ;} + break; + + case 190: +#line 715 "perly.y" + { yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); ;} + break; + + case 191: +#line 719 "perly.y" + { yyval.opval = newSVREF(yyvsp[0].opval); ;} + break; + + case 192: +#line 723 "perly.y" + { yyval.opval = newAVREF(yyvsp[0].opval); ;} + break; + + case 193: +#line 727 "perly.y" + { yyval.opval = newHVREF(yyvsp[0].opval); ;} + break; + + case 194: +#line 731 "perly.y" + { yyval.opval = newAVREF(yyvsp[0].opval); ;} + break; + + case 195: +#line 735 "perly.y" + { yyval.opval = newGVREF(0,yyvsp[0].opval); ;} + break; + + case 196: +#line 740 "perly.y" + { yyval.opval = scalar(yyvsp[0].opval); ;} + break; + + case 197: +#line 742 "perly.y" + { yyval.opval = scalar(yyvsp[0].opval); ;} + break; + + case 198: +#line 744 "perly.y" + { yyval.opval = scope(yyvsp[0].opval); ;} + break; + + case 199: +#line 747 "perly.y" + { yyval.opval = yyvsp[0].opval; ;} + break; + + + diff --git a/perly.c b/perly.c index 3df92a3..3a7e9bc 100644 --- a/perly.c +++ b/perly.c @@ -1,2648 +1,665 @@ -#ifndef lint -/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ -#endif -#define YYBYACC 1 -#line 16 "perly.y" +/* perly.c + * + * Copyright (c) 2004 Larry Wall + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + * Note that this file was originally generated as an output from + * GNU bison version 1.875, but now the code is statically maintained + * and edited; the bits that are dependent on perly.y are now #included + * from the files perly.tab and perly.act. + * + * Here is an important copyright statement from the original, generated + * file: + * + * As a special exception, when this file is copied by Bison into a + * Bison output file, you may use that output file without + * restriction. This special exception was added by the Free + * Software Foundation in version 1.24 of Bison. + */ + + +/* allow stack size to grow effectively without limit */ +#define YYMAXDEPTH 10000000 + #include "EXTERN.h" #define PERL_IN_PERLY_C #include "perl.h" -#ifdef EBCDIC -#undef YYDEBUG -#endif -#define dep() deprecate_old("\"do\" to call subroutines") - -/* stuff included here to make perly_c.diff apply better */ - -#define yydebug PL_yydebug -#define yynerrs PL_yynerrs -#define yyerrflag PL_yyerrflag -#define yychar PL_yychar -#define yyval PL_yyval -#define yylval PL_yylval - -struct ysv { - short* yyss; - YYSTYPE* yyvs; - int oldyydebug; - int oldyynerrs; - int oldyyerrflag; - int oldyychar; - YYSTYPE oldyyval; - YYSTYPE oldyylval; -}; - -static void yydestruct(pTHX_ void *ptr); - -#line 51 "perly.y" -#if 0 /* get this from perly.h instead */ -#line 54 "perly.y" -typedef union { - I32 ival; - char *pval; - OP *opval; - GV *gvval; -} YYSTYPE; -#line 62 "perly.y" -#endif /* 0 */ - -#ifdef USE_PURE_BISON -#define YYLEX_PARAM (&yychar) -#define yylex yylex_r -#endif -#line 54 "perly.c" -#define YYERRCODE 256 -static short yylhs[] = { -1, - 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, - 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, - 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, - 13, 13, 13, 13, 27, 27, 28, 28, 29, 30, - 31, 32, 33, 54, 54, 1, 1, 1, 1, 1, - 2, 39, 39, 47, 55, 3, 4, 5, 40, 41, - 41, 45, 45, 45, 46, 46, 42, 42, 56, 58, - 57, 16, 16, 16, 16, 26, 26, 26, 37, 37, - 37, 37, 37, 37, 37, 37, 59, 37, 38, 38, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, - 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, - 53, 53, 53, 53, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 48, 48, 49, 49, 49, - 49, 49, 34, 34, 35, 35, 35, 44, 24, 19, - 20, 21, 22, 23, 36, 36, 36, 36, -}; -static short yylen[] = { 2, - 2, 4, 0, 0, 4, 0, 0, 2, 2, 2, - 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, - 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, - 9, 8, 11, 3, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, - 4, 1, 0, 6, 6, 0, 0, 0, 1, 0, - 1, 0, 2, 1, 2, 1, 1, 1, 3, 0, - 7, 3, 3, 3, 1, 2, 3, 1, 3, 5, - 6, 3, 3, 5, 2, 4, 0, 5, 1, 1, - 5, 4, 5, 4, 5, 6, 5, 4, 5, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 4, 3, 5, 2, 2, - 4, 5, 4, 5, 1, 1, 1, 1, 5, 2, - 1, 2, 3, 2, 1, 1, 1, 1, 1, 1, - 6, 5, 4, 5, 1, 1, 3, 4, 3, 1, - 2, 2, 1, 2, 2, 2, 1, 3, 1, 3, - 4, 4, 6, 1, 1, 3, 2, 3, 2, 1, - 1, 1, 0, 1, 0, 1, 2, 1, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 1, -}; -static short yydefred[] = { 4, - 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, - 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, - 0, 70, 0, 14, 3, 174, 0, 0, 155, 0, - 169, 0, 57, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 147, 149, 0, 0, 0, 0, - 175, 141, 135, 136, 137, 138, 52, 0, 59, 0, - 69, 0, 0, 7, 195, 198, 197, 196, 0, 0, - 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, - 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, - 85, 0, 193, 0, 130, 0, 0, 0, 0, 0, - 0, 0, 180, 182, 181, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 0, 190, - 191, 192, 194, 0, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 51, 61, 0, 0, 0, 0, 83, 0, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 3, - 168, 170, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 159, 179, 0, 0, 176, 0, 0, 124, 27, - 0, 0, 19, 0, 0, 0, 0, 0, 72, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 0, 0, 90, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 157, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 172, - 0, 0, 0, 42, 0, 43, 0, 0, 0, 0, - 188, 0, 0, 36, 41, 0, 0, 0, 171, 187, - 86, 0, 131, 0, 133, 0, 126, 178, 65, 0, - 0, 0, 0, 98, 0, 0, 0, 0, 100, 94, - 0, 92, 0, 153, 0, 158, 63, 68, 67, 55, - 0, 54, 84, 0, 88, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 132, 134, 152, 0, 0, - 0, 99, 93, 0, 97, 95, 154, 91, 71, 173, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 96, 81, 7, 28, 29, 0, 0, 24, 25, 0, - 32, 0, 0, 0, 22, 0, 0, 0, 31, 5, - 0, 30, 0, 0, 33, 0, 23, -}; -static short yydgoto[] = { 1, - 10, 11, 20, 103, 19, 2, 94, 373, 97, 362, - 3, 12, 13, 69, 378, 288, 71, 72, 73, 74, - 75, 76, 77, 78, 294, 80, 295, 284, 286, 289, - 297, 285, 287, 121, 215, 99, 81, 260, 88, 90, - 195, 330, 155, 292, 274, 226, 14, 82, 136, 83, - 84, 85, 86, 15, 16, 17, 18, 92, 281, -}; -static short yysindex[] = { 0, - 0, 0, -236, 0, 0, 0, -231, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 0, 0, -211, -209, - 3, 0, -209, 0, 0, 0, -32, -32, 0, 23, - 0, 2213, 0, 0, 28, 30, 32, 33, -18, 2213, - 42, 52, 64, 1004, 940, -32, 1149, 1268, -168, 2213, - 174, -32, 2213, 2213, 2213, 2213, 2213, 2213, 1328, 1413, - 0, 2213, 2213, -32, -32, -32, -32, -173, 0, 607, - 404, -27, -71, -67, 0, 0, -12, 68, 66, 94, - 0, 0, 0, 0, 0, 0, 0, 27, 0, -108, - 0, -100, -108, 0, 0, 0, 0, 0, 2213, 122, - 2213, 743, 27, -108, 0, 0, 0, 0, 0, 0, - 125, 404, 135, 1454, 940, 0, 743, 0, -71, 94, - 0, 2213, 0, 140, 0, 743, -25, 38, -8, 2213, - 743, 1562, 0, 0, 0, -114, 0, 94, 245, 245, - 245, -123, -123, 106, -34, 0, -53, 245, 245, 0, - 0, 0, 0, 27, 0, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 0, 0, - -26, 2213, 1723, 2213, 2213, 2213, 2213, 2213, 2213, 1796, - 0, 2213, 0, 0, -90, -48, -90, 285, 0, 2213, - -35, 0, -90, 2213, 2213, 2213, 2213, 182, 1859, 0, - 0, 0, -2, -42, 180, 2213, 94, 1932, 2004, 0, - 102, 0, 0, 13, -21, 0, 2213, 142, 0, 0, - 184, 184, 0, 184, 184, 184, -51, -51, 0, 296, - 743, 386, 683, -158, 404, 643, 1034, 1034, 1067, 1345, - 960, -112, 245, 245, 2213, 0, 2140, 2213, 0, 216, - 120, 0, 40, 127, 123, 214, 132, 217, 136, 0, - 77, 404, -3, -47, 2213, -47, 0, 220, 2213, 0, - 2213, 27, 184, 0, 224, 0, 240, 184, 244, 246, - 0, 261, 607, 0, 0, 267, 227, 2213, 0, 0, - 0, 88, 0, 95, 0, 98, 0, 0, 0, 236, - 2213, 2213, 139, 0, 117, 239, 2213, 194, 0, 0, - 206, 0, 213, 0, 218, 0, 0, 0, 0, 0, - 293, 0, 0, 585, 0, 0, 221, 221, 221, 221, - 2213, 221, 2213, 325, 0, 0, 0, 0, 243, 703, - 255, 0, 0, 327, 0, 0, 0, 0, 0, 0, - 0, -173, -173, -240, -240, 351, -173, 332, 221, 0, - 0, 0, 0, 0, 0, 221, 354, 0, 0, 221, - 0, 1859, -173, 350, 0, 2213, -173, 360, 0, 0, - 361, 0, 221, 221, 0, -240, 0, -}; -static short yyrindex[] = { 0, - 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 2282, 0, 0, 2401, 2566, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, -16, - 1607, 2620, 2673, 2721, 0, 0, 2769, 2856, 0, -38, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, - 0, 0, -54, 0, 0, 0, 0, 0, 2566, 0, - 0, 4274, 0, -115, 0, 0, 0, 0, 0, 0, - 0, 1886, 0, 0, 374, 0, 4339, 467, 532, 3224, - 0, 0, 0, 3005, 0, 4394, 2673, 0, 0, 2566, - 4404, 0, 0, 0, 0, 3055, 0, 3459, 3695, 3746, - 3801, 3582, 3630, 3127, 0, 0, 0, 3866, 3914, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3175, 0, 0, -43, 0, -43, 880, 0, 374, - 0, 0, 303, 390, 0, 0, 0, 0, 389, 0, - 0, 0, 0, 422, 0, 0, 3510, 0, 0, 0, - 0, 0, 0, 0, 3291, 0, 0, 3346, 0, 0, - 8, 12, 0, 61, 62, 65, 1479, 1642, 0, 2274, - 4445, 4493, 4120, 4168, 2421, 0, 4697, 4745, 4630, 4591, - 4543, 4219, 4000, 4055, 0, 0, 0, 0, 0, 3411, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2474, -30, 0, 405, 0, 0, 0, 0, 0, - 2566, 0, 78, 0, 0, 0, 0, 432, 0, 0, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 415, 0, 0, 0, 0, 0, 0, 1201, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 90, 186, 186, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 90, 880, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 186, 0, -}; -static short yygindex[] = { 0, - 0, 0, 50, 453, 0, 0, -22, 0, 63, 153, - -93, 0, 0, 0, -346, -15, 2480, 0, 1744, 437, - 439, 0, 0, 0, 481, 755, 0, 0, 341, -186, - 124, 170, 313, -88, -183, 49, 0, 0, 0, 498, - -66, 247, 225, 0, -156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -#define YYTABLESIZE 5051 -static short yytable[] = { 70, - 198, 300, 75, 64, 60, 280, 228, 60, 279, 64, - 199, 328, 183, 257, 219, 62, 278, 64, 379, 186, - 75, 110, 296, 188, 15, 21, 197, 170, 64, 4, - 5, 6, 129, 7, 8, 376, 377, 203, 299, 229, - 276, 222, 15, 145, 147, 87, 282, 89, 18, 397, - 221, 185, 39, 308, 75, 187, 160, 22, 23, 160, - 9, 91, 101, 184, 258, 186, 18, 105, 60, 106, - 39, 107, 108, 160, 160, 25, 100, 68, 160, 62, - 319, 113, 204, 205, 206, 207, 208, 209, 130, 26, - 25, 114, 64, 122, 123, 182, 255, 185, 213, 214, - 137, 16, 17, 115, 154, 20, 116, 190, 160, 125, - 189, 344, 150, 151, 152, 153, 224, 326, 38, 16, - 17, 40, 26, 20, 191, 26, 26, 26, 345, 26, - 167, 26, 26, 354, 26, 346, 38, 192, 347, 15, - 231, 232, 234, 235, 236, 237, 238, 239, 26, 25, - 193, 194, 177, 26, 366, 178, 196, 352, 179, 180, - 181, 200, 220, 216, 210, 202, 261, 263, 264, 265, - 266, 267, 268, 269, 271, 211, 167, 168, 318, 218, - 26, 321, 60, 225, 214, 21, 331, 298, 283, 232, - 323, 232, 335, 293, 325, 181, 227, 351, 177, 391, - 302, 178, 304, 306, 179, 180, 181, 273, 275, 64, - 66, 310, 26, 132, 26, 26, 230, 64, 21, 320, - 301, 21, 21, 21, 95, 21, 307, 21, 21, 96, - 21, 256, 311, 75, 75, 75, 75, 65, 309, 313, - 75, 315, 316, 60, 21, 164, 161, 162, 163, 21, - 163, 165, 166, 167, 168, 317, 327, 161, 162, 163, - 333, 75, 75, 75, 337, 161, 162, 163, 169, 171, - 172, 173, 174, 175, 176, 177, 21, 109, 178, 384, - 338, 179, 180, 181, 339, 343, 340, 160, 160, 160, - 160, 161, 162, 163, 160, 349, 160, 161, 162, 163, - 341, 214, 160, 160, 160, 160, 322, 342, 21, 324, - 21, 21, 161, 162, 163, 160, 160, 160, 355, 160, - 160, 160, 160, 160, 160, 160, 160, 283, 348, 160, - 356, 353, 160, 160, 160, 370, 329, 357, 329, 161, - 162, 163, 358, 361, 336, 26, 26, 26, 26, 26, - 26, 359, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 369, 70, 372, 26, 26, - 1, 26, 26, 26, 26, 26, 161, 162, 163, 371, - 26, 26, 26, 26, 26, 26, 26, 161, 162, 163, - 382, 380, 26, 386, 161, 162, 163, 161, 162, 163, - 393, 394, 26, 44, 26, 26, 44, 44, 44, 277, - 44, 53, 44, 44, 185, 44, 161, 162, 163, 161, - 162, 163, 161, 162, 163, 62, 161, 162, 163, 44, - 37, 161, 162, 163, 44, 161, 162, 163, 161, 162, - 163, 21, 21, 21, 21, 21, 21, 35, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 44, 186, 183, 21, 21, 170, 21, 21, 21, - 21, 21, 40, 37, 390, 35, 21, 21, 21, 21, - 21, 21, 21, 161, 162, 163, 104, 134, 21, 135, - 363, 364, 365, 44, 367, 79, 44, 233, 21, 195, - 21, 21, 195, 195, 195, 388, 195, 174, 195, 195, - 174, 195, 368, 161, 162, 163, 161, 162, 163, 290, - 93, 383, 332, 0, 174, 174, 0, 0, 385, 174, - 195, 0, 387, 0, 0, 161, 162, 163, 161, 162, - 163, 0, 161, 162, 163, 395, 396, 0, 0, 0, - 4, 5, 6, 0, 7, 8, 0, 195, 178, 174, - 0, 179, 180, 181, 196, 0, 0, 196, 196, 196, - 0, 196, 145, 196, 196, 145, 196, 0, 0, 0, - 0, 9, 165, 166, 167, 168, 374, 375, 0, 145, - 145, 381, 195, 0, 145, 196, 0, 0, 0, 0, - 171, 172, 173, 174, 175, 176, 177, 389, 0, 178, - 0, 392, 179, 180, 181, 4, 5, 6, 0, 7, - 8, 0, 0, 0, 145, 360, 44, 44, 44, 44, - 44, 44, 0, 44, 44, 44, 0, 0, 0, 44, - 0, 0, 44, 44, 44, 44, 9, 170, 0, 44, - 44, 0, 44, 44, 44, 44, 44, 196, 0, 0, - 0, 44, 44, 44, 44, 44, 44, 0, 0, 0, - 0, 0, 165, 44, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 44, 164, 44, 44, 0, 0, 0, - 165, 166, 167, 168, 0, 176, 177, 0, 0, 178, - 312, 0, 179, 180, 181, 170, 0, 169, 171, 172, - 173, 174, 175, 176, 177, 0, 0, 178, 0, 0, - 179, 180, 181, 195, 195, 195, 195, 195, 0, 195, - 195, 195, 0, 0, 0, 195, 0, 0, 174, 174, - 174, 174, 0, 0, 0, 174, 195, 174, 195, 195, - 195, 195, 195, 174, 174, 174, 174, 195, 195, 195, - 195, 195, 195, 0, 0, 170, 174, 174, 174, 195, - 174, 174, 174, 174, 174, 174, 174, 174, 0, 195, - 174, 195, 195, 174, 174, 174, 0, 0, 196, 196, - 196, 196, 196, 0, 196, 196, 196, 0, 0, 120, - 196, 0, 0, 145, 145, 145, 145, 138, 0, 0, - 145, 196, 145, 196, 196, 196, 196, 196, 145, 145, - 145, 145, 196, 196, 196, 196, 196, 196, 0, 0, - 0, 145, 145, 145, 196, 145, 145, 145, 145, 145, - 145, 145, 145, 0, 196, 145, 196, 196, 145, 145, - 145, 54, 0, 120, 64, 66, 52, 0, 59, 0, - 67, 63, 0, 62, 0, 164, 0, 0, 0, 0, - 0, 165, 166, 167, 168, 0, 217, 61, 156, 157, - 158, 159, 65, 0, 120, 160, 0, 0, 169, 171, - 172, 173, 174, 175, 176, 177, 0, 0, 178, 0, - 0, 179, 180, 181, 0, 0, 161, 162, 163, 60, - 0, 0, 44, 0, 0, 44, 44, 44, 0, 44, - 0, 44, 44, 164, 44, 0, 0, 0, 0, 165, - 166, 167, 168, 0, 0, 0, 0, 0, 44, 0, - 0, 25, 0, 44, 55, 0, 169, 171, 172, 173, - 174, 175, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 54, 0, 0, 64, 66, 52, 0, 59, - 0, 67, 63, 164, 62, 0, 0, 0, 0, 165, - 166, 167, 168, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 44, 65, 0, 44, 0, 171, 172, 173, - 174, 175, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 0, 0, 0, 0, 0, 0, 0, 120, - 60, 167, 168, 0, 0, 120, 54, 0, 0, 64, - 66, 52, 0, 59, 0, 67, 63, 0, 62, 0, - 0, 0, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 25, 0, 0, 55, 0, 65, 0, 0, - 0, 0, 0, 0, 24, 26, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 0, 0, - 35, 36, 37, 38, 60, 0, 0, 39, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 25, 0, 0, 55, - 0, 56, 0, 57, 58, 44, 44, 44, 44, 44, - 44, 0, 44, 44, 44, 0, 0, 0, 44, 0, - 0, 44, 44, 44, 44, 0, 0, 0, 44, 44, - 0, 44, 44, 44, 44, 44, 0, 0, 0, 0, - 44, 44, 44, 44, 44, 44, 0, 0, 0, 0, - 0, 54, 44, 0, 64, 66, 52, 0, 59, 0, - 67, 63, 44, 62, 44, 44, 118, 27, 28, 29, - 30, 96, 31, 32, 33, 0, 0, 0, 34, 0, - 0, 0, 65, 0, 0, 0, 0, 0, 0, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, - 46, 47, 48, 49, 50, 51, 0, 0, 0, 60, - 0, 139, 53, 0, 139, 0, 165, 166, 167, 168, - 0, 0, 56, 0, 57, 58, 0, 0, 139, 139, - 26, 27, 28, 29, 30, 0, 31, 32, 33, 176, - 177, 25, 34, 178, 55, 0, 179, 180, 181, 0, - 0, 0, 0, 40, 0, 41, 42, 43, 44, 45, - 0, 0, 0, 139, 46, 47, 48, 49, 50, 51, - 54, 0, 0, 64, 66, 52, 53, 59, 0, 67, - 63, 0, 62, 0, 0, 0, 56, 0, 57, 58, - 165, 166, 167, 168, 0, 0, 128, 0, 0, 0, - 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 174, 175, 176, 177, 0, 0, 178, 0, 0, - 179, 180, 181, 165, 166, 167, 168, 0, 60, 0, - 54, 0, 0, 64, 66, 52, 0, 59, 144, 67, - 63, 0, 62, 0, 174, 175, 176, 177, 0, 0, - 178, 0, 0, 179, 180, 181, 0, 0, 0, 0, - 0, 65, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 60, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 54, 0, 0, 64, 66, - 52, 53, 59, 55, 67, 63, 0, 62, 0, 0, - 0, 56, 0, 57, 58, 0, 0, 0, 0, 0, - 0, 0, 139, 139, 139, 139, 65, 0, 0, 139, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 64, - 66, 52, 0, 59, 212, 67, 63, 0, 62, 0, - 139, 139, 139, 60, 139, 146, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 73, - 0, 0, 73, 0, 26, 27, 28, 29, 30, 0, - 31, 32, 33, 0, 0, 0, 34, 73, 55, 0, - 0, 0, 0, 0, 60, 0, 0, 40, 0, 41, - 42, 43, 44, 45, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, - 53, 73, 0, 0, 0, 0, 0, 0, 0, 55, - 56, 0, 57, 58, 26, 27, 28, 29, 30, 0, - 31, 32, 33, 0, 54, 0, 34, 64, 66, 52, - 0, 59, 223, 67, 63, 0, 62, 40, 0, 41, - 42, 43, 44, 45, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 0, 65, 0, 0, 0, 0, - 53, 165, 166, 167, 168, 0, 0, 0, 0, 0, - 56, 0, 57, 58, 0, 0, 0, 78, 0, 0, - 78, 0, 60, 175, 176, 177, 0, 0, 178, 0, - 0, 179, 180, 181, 78, 78, 0, 0, 0, 26, - 27, 28, 29, 30, 0, 31, 32, 33, 0, 0, - 0, 34, 74, 0, 0, 74, 0, 55, 0, 0, - 0, 0, 40, 0, 41, 42, 43, 44, 45, 78, - 74, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 26, 27, 28, 29, 30, 53, 31, 32, 33, 0, - 0, 0, 34, 0, 0, 56, 0, 57, 58, 0, - 0, 0, 0, 40, 74, 41, 42, 43, 44, 45, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 73, 73, 73, 73, 0, 54, 53, 73, 64, 66, - 52, 0, 59, 262, 67, 63, 56, 62, 57, 58, - 98, 98, 0, 0, 0, 0, 0, 0, 73, 73, - 0, 0, 111, 0, 0, 0, 65, 0, 119, 98, - 127, 0, 0, 0, 133, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, - 98, 0, 0, 60, 0, 0, 0, 0, 26, 27, - 28, 29, 30, 0, 31, 32, 33, 0, 54, 0, - 34, 64, 66, 52, 0, 59, 270, 67, 63, 0, - 62, 40, 0, 41, 42, 43, 44, 45, 55, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 119, 65, - 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 57, 58, 78, 78, - 78, 78, 0, 0, 0, 78, 60, 0, 0, 0, - 0, 54, 0, 0, 64, 66, 52, 0, 59, 0, - 67, 63, 0, 62, 0, 0, 78, 78, 78, 0, - 0, 0, 0, 74, 74, 74, 74, 0, 0, 0, - 74, 55, 65, 0, 259, 0, 161, 0, 0, 161, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 74, 161, 161, 0, 0, 0, 0, 60, - 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 64, 66, 52, - 0, 59, 303, 67, 63, 0, 62, 0, 161, 26, - 27, 28, 29, 30, 55, 31, 32, 33, 0, 0, - 0, 34, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0, 40, 0, 41, 42, 43, 44, 45, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 0, 0, 60, 0, 0, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 54, 57, 58, 64, - 66, 52, 0, 59, 305, 67, 63, 0, 62, 0, - 0, 0, 26, 27, 28, 29, 30, 55, 31, 32, - 33, 0, 0, 0, 34, 0, 0, 65, 0, 0, - 0, 0, 0, 0, 0, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 0, 46, 47, 48, 49, - 50, 51, 0, 0, 60, 0, 0, 0, 53, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 57, 58, 0, 0, 24, 26, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 0, 55, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 0, 0, 161, 161, 161, - 161, 53, 0, 0, 161, 0, 0, 0, 0, 0, - 0, 56, 54, 57, 58, 64, 66, 52, 0, 59, - 314, 67, 63, 0, 62, 161, 161, 161, 26, 27, - 28, 29, 30, 0, 31, 32, 33, 0, 0, 0, - 34, 0, 0, 65, 0, 0, 0, 0, 0, 0, - 0, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 0, 0, - 60, 0, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 54, 57, 58, 64, 66, - 52, 0, 59, 0, 67, 63, 0, 62, 0, 0, - 26, 27, 28, 29, 30, 55, 31, 32, 33, 0, - 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, - 0, 0, 0, 40, 0, 41, 42, 43, 44, 45, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 0, 0, 0, 60, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 56, 111, 57, 58, - 0, 0, 167, 0, 0, 167, 0, 0, 0, 0, - 0, 111, 111, 0, 0, 0, 111, 0, 55, 167, - 167, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, - 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, - 30, 0, 31, 32, 33, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, - 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, - 0, 163, 53, 0, 163, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 57, 58, 0, 0, 163, 163, - 0, 102, 0, 163, 102, 0, 0, 0, 0, 26, - 27, 28, 29, 30, 0, 31, 32, 33, 102, 102, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 163, 41, 42, 43, 44, 45, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 0, 102, 0, 102, 77, 53, 0, 77, 0, 112, - 0, 0, 0, 117, 0, 56, 126, 57, 58, 131, - 0, 77, 77, 139, 140, 141, 142, 143, 0, 0, - 0, 148, 149, 0, 0, 111, 111, 111, 111, 0, - 0, 0, 111, 167, 167, 167, 167, 0, 0, 0, - 167, 0, 167, 0, 0, 0, 77, 0, 167, 167, - 167, 167, 0, 111, 111, 111, 0, 111, 0, 0, - 201, 167, 167, 167, 0, 167, 167, 167, 167, 167, - 167, 167, 167, 0, 0, 167, 0, 0, 167, 167, - 167, 0, 0, 0, 0, 0, 183, 0, 0, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 183, 0, 0, 0, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 183, 0, - 150, 0, 0, 150, 0, 0, 0, 0, 0, 0, - 0, 272, 163, 163, 163, 163, 0, 150, 150, 163, - 0, 163, 150, 0, 0, 0, 0, 163, 163, 163, - 163, 0, 102, 102, 102, 102, 0, 0, 0, 102, - 163, 163, 163, 0, 163, 163, 163, 163, 163, 163, - 163, 163, 150, 145, 163, 0, 145, 163, 163, 163, - 102, 102, 102, 0, 0, 0, 0, 0, 0, 0, - 145, 145, 0, 0, 0, 145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 77, 77, 77, 0, - 0, 0, 77, 0, 0, 0, 0, 0, 334, 0, - 0, 148, 0, 0, 148, 145, 0, 0, 0, 0, - 0, 0, 0, 77, 77, 77, 0, 0, 148, 148, - 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, - 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, - 0, 0, 146, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 146, 146, 0, 0, - 0, 146, 0, 0, 0, 0, 0, 183, 183, 183, - 183, 0, 0, 0, 183, 0, 183, 0, 0, 0, - 0, 0, 183, 183, 183, 183, 0, 0, 0, 0, - 0, 146, 0, 0, 0, 183, 183, 183, 0, 183, - 183, 183, 183, 183, 183, 183, 183, 0, 0, 183, - 0, 0, 183, 183, 183, 0, 0, 0, 0, 0, - 0, 150, 150, 150, 150, 0, 156, 0, 150, 156, - 150, 0, 0, 0, 0, 0, 150, 150, 150, 150, - 0, 0, 0, 156, 156, 0, 0, 0, 156, 150, - 150, 150, 0, 150, 150, 150, 150, 150, 150, 150, - 150, 0, 0, 150, 0, 0, 150, 150, 150, 0, - 0, 0, 0, 0, 145, 145, 145, 145, 156, 0, - 0, 145, 0, 145, 0, 0, 0, 0, 0, 145, - 145, 145, 145, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 145, 145, 145, 0, 145, 145, 145, 145, - 145, 145, 145, 145, 0, 0, 145, 0, 0, 145, - 145, 145, 148, 148, 148, 148, 0, 0, 0, 148, - 0, 148, 0, 0, 0, 0, 0, 148, 148, 148, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 148, 148, 148, 0, 148, 148, 148, 148, 148, 148, - 148, 148, 0, 0, 148, 0, 0, 148, 148, 148, - 146, 146, 146, 146, 0, 174, 0, 146, 174, 146, - 0, 0, 0, 0, 0, 146, 146, 146, 146, 0, - 0, 0, 174, 174, 0, 0, 0, 174, 146, 146, - 146, 0, 146, 146, 146, 146, 146, 146, 146, 146, - 0, 0, 146, 0, 0, 146, 146, 146, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 174, 177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 177, 177, 0, 0, 0, 177, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 156, 156, - 156, 0, 0, 0, 156, 0, 156, 0, 0, 0, - 0, 0, 156, 156, 156, 156, 0, 177, 0, 0, - 0, 0, 0, 0, 0, 156, 156, 156, 0, 156, - 156, 156, 156, 156, 156, 156, 156, 144, 0, 156, - 144, 0, 156, 156, 156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 144, 144, 0, 0, 0, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 0, 0, 76, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 76, 0, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 174, 174, 174, - 0, 184, 184, 174, 0, 174, 184, 0, 0, 0, - 0, 174, 174, 174, 174, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 174, 174, 0, 174, 174, - 174, 174, 174, 174, 174, 174, 184, 0, 174, 0, - 0, 174, 174, 174, 0, 0, 177, 177, 177, 177, - 0, 66, 0, 177, 66, 177, 0, 0, 0, 0, - 0, 177, 177, 177, 177, 0, 0, 0, 66, 66, - 0, 0, 0, 66, 177, 177, 177, 0, 177, 177, - 177, 177, 177, 177, 177, 177, 0, 0, 177, 0, - 0, 177, 177, 177, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 0, 143, 0, 0, 143, - 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, - 144, 144, 0, 143, 143, 144, 0, 144, 143, 0, - 0, 0, 0, 144, 144, 144, 144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 144, 144, 144, 0, - 144, 144, 144, 144, 144, 144, 144, 144, 143, 0, - 144, 0, 0, 144, 144, 144, 76, 76, 76, 76, - 0, 82, 0, 76, 82, 76, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 0, 0, 0, 82, 82, - 0, 0, 0, 82, 76, 76, 76, 0, 76, 76, - 76, 76, 76, 76, 76, 76, 0, 0, 76, 0, - 0, 76, 76, 76, 0, 184, 184, 184, 184, 162, - 0, 0, 184, 82, 184, 0, 0, 0, 0, 0, - 184, 184, 184, 184, 0, 0, 162, 162, 0, 0, - 0, 162, 0, 184, 184, 184, 0, 184, 184, 184, - 184, 184, 184, 184, 184, 0, 0, 184, 0, 0, - 184, 184, 184, 0, 0, 0, 0, 0, 0, 0, - 79, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 66, 66, 66, 0, 79, 79, 66, - 0, 66, 79, 0, 0, 0, 0, 66, 66, 66, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 66, 66, 0, 66, 66, 66, 66, 66, 66, - 66, 66, 79, 0, 66, 0, 0, 66, 66, 66, - 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, - 143, 0, 122, 0, 143, 122, 143, 0, 0, 0, - 0, 0, 143, 143, 143, 143, 0, 0, 0, 122, - 122, 0, 0, 0, 122, 143, 143, 143, 0, 143, - 143, 143, 143, 143, 143, 143, 143, 0, 0, 143, - 0, 0, 143, 143, 143, 0, 0, 0, 0, 0, - 123, 0, 0, 123, 122, 0, 0, 0, 0, 0, - 0, 0, 82, 82, 82, 82, 0, 123, 123, 82, - 0, 82, 123, 0, 0, 0, 0, 82, 82, 82, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 82, 82, 0, 82, 82, 82, 82, 82, 82, - 82, 82, 123, 0, 82, 0, 0, 82, 82, 82, - 162, 162, 162, 162, 0, 118, 0, 162, 118, 162, - 0, 0, 0, 0, 0, 162, 162, 162, 162, 0, - 0, 0, 118, 118, 0, 0, 0, 118, 162, 162, - 162, 0, 162, 162, 162, 162, 162, 162, 162, 162, - 0, 0, 162, 0, 0, 162, 162, 162, 0, 0, - 0, 79, 79, 79, 79, 0, 119, 118, 79, 119, - 79, 0, 0, 0, 0, 0, 79, 79, 79, 79, - 0, 0, 0, 119, 119, 0, 0, 0, 119, 79, - 79, 79, 0, 79, 79, 79, 79, 79, 79, 79, - 79, 0, 0, 79, 0, 0, 79, 79, 79, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, - 0, 140, 0, 0, 140, 0, 0, 0, 0, 0, - 0, 0, 0, 122, 122, 122, 122, 0, 140, 140, - 122, 0, 122, 140, 0, 0, 0, 0, 122, 122, - 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 122, 122, 122, 0, 122, 122, 122, 122, 122, - 122, 122, 122, 140, 0, 122, 0, 0, 0, 0, - 0, 123, 123, 123, 123, 0, 116, 0, 123, 116, - 123, 0, 0, 0, 0, 0, 123, 123, 123, 123, - 0, 0, 0, 116, 116, 0, 0, 0, 116, 123, - 123, 123, 0, 123, 123, 123, 123, 123, 123, 123, - 123, 0, 0, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 0, 0, 117, 116, 0, - 0, 0, 0, 0, 0, 0, 118, 118, 118, 118, - 0, 117, 117, 118, 0, 118, 117, 0, 0, 0, - 0, 118, 118, 118, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 118, 118, 0, 118, 118, - 118, 118, 118, 118, 118, 118, 117, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, - 119, 0, 0, 0, 119, 0, 119, 0, 0, 0, - 0, 0, 119, 119, 119, 119, 0, 0, 0, 0, - 115, 0, 0, 115, 0, 119, 119, 119, 0, 119, - 119, 119, 119, 119, 119, 119, 119, 115, 115, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 140, 140, 140, 0, 0, 0, 140, - 0, 140, 0, 0, 0, 0, 0, 140, 140, 140, - 140, 0, 115, 0, 0, 103, 0, 0, 103, 0, - 140, 140, 140, 0, 140, 140, 140, 140, 140, 140, - 140, 140, 103, 103, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 116, 116, - 116, 0, 0, 0, 116, 0, 116, 103, 0, 0, - 0, 0, 116, 116, 116, 116, 0, 0, 0, 0, - 104, 0, 0, 104, 0, 116, 116, 116, 0, 116, - 116, 116, 116, 116, 116, 116, 116, 104, 104, 0, - 0, 0, 104, 0, 0, 117, 117, 117, 117, 0, - 0, 0, 117, 0, 117, 0, 0, 0, 0, 0, - 117, 117, 117, 117, 0, 0, 0, 0, 105, 0, - 0, 105, 104, 117, 117, 117, 0, 117, 117, 117, - 117, 117, 117, 117, 117, 105, 105, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 115, 115, 115, 0, 106, 106, 115, 0, - 115, 106, 0, 0, 0, 0, 115, 115, 115, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 115, 115, 0, 115, 115, 115, 115, 115, 115, 115, - 115, 106, 0, 0, 166, 0, 0, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, - 0, 166, 166, 103, 0, 103, 166, 0, 0, 0, - 0, 103, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 103, 103, 0, 103, 103, - 103, 103, 103, 103, 103, 103, 166, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, - 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 104, 104, 104, 0, 165, 165, 104, 0, - 104, 165, 0, 0, 0, 0, 104, 104, 104, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, - 104, 104, 0, 104, 104, 104, 104, 104, 104, 104, - 0, 165, 0, 0, 129, 0, 0, 129, 0, 105, - 105, 105, 105, 0, 142, 0, 105, 142, 105, 0, - 0, 129, 129, 0, 105, 105, 129, 105, 0, 0, - 0, 142, 142, 0, 0, 0, 142, 105, 105, 105, - 0, 105, 105, 105, 105, 105, 105, 105, 0, 0, - 0, 0, 0, 0, 0, 107, 129, 0, 107, 0, - 106, 106, 106, 106, 0, 0, 142, 106, 0, 106, - 0, 0, 107, 107, 0, 106, 106, 107, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, - 106, 0, 106, 106, 106, 106, 106, 106, 106, 0, - 0, 0, 0, 108, 0, 0, 108, 107, 0, 0, - 0, 0, 0, 0, 0, 166, 166, 166, 166, 0, - 108, 108, 166, 0, 166, 108, 0, 0, 0, 0, - 166, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 166, 166, 0, 166, 166, 166, - 166, 166, 166, 109, 0, 108, 109, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 109, 0, 0, 0, 109, 0, 0, 0, 0, - 165, 165, 165, 165, 0, 0, 0, 165, 0, 165, - 0, 0, 0, 0, 0, 165, 165, 0, 0, 0, - 0, 110, 0, 0, 110, 109, 0, 0, 165, 165, - 165, 0, 165, 165, 165, 165, 165, 165, 110, 110, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 129, 129, 129, 0, - 112, 0, 129, 112, 129, 142, 142, 142, 142, 0, - 129, 129, 142, 110, 142, 0, 0, 112, 112, 0, - 142, 142, 112, 129, 129, 129, 0, 129, 129, 129, - 129, 129, 129, 142, 142, 142, 0, 142, 142, 142, - 142, 142, 142, 0, 0, 0, 107, 107, 107, 107, - 0, 0, 112, 107, 0, 107, 0, 0, 0, 0, - 0, 0, 107, 0, 0, 0, 0, 113, 0, 0, - 113, 0, 0, 0, 107, 107, 107, 0, 107, 107, - 107, 107, 107, 107, 113, 113, 0, 0, 0, 113, - 0, 0, 0, 0, 108, 108, 108, 108, 0, 0, - 0, 108, 0, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 114, 0, 0, 114, 113, - 0, 0, 108, 108, 108, 0, 108, 108, 108, 108, - 108, 108, 114, 114, 0, 0, 0, 114, 0, 0, - 0, 0, 0, 0, 109, 109, 109, 109, 0, 0, - 0, 109, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, - 0, 0, 109, 109, 109, 0, 109, 109, 109, 109, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 110, 110, 110, 110, 0, 0, 0, 110, - 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 110, 110, 0, 110, 110, 110, 110, 110, 0, - 0, 112, 112, 112, 112, 0, 0, 0, 112, 0, - 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, - 112, 112, 0, 112, 112, 112, 112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, - 113, 113, 0, 0, 0, 113, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 113, 113, 0, - 113, 113, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 114, 114, 114, 114, - 0, 0, 0, 114, 0, 114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 114, 114, 114, 0, 114, 114, - 114, -}; -static short yycheck[] = { 15, - 94, 44, 41, 36, 59, 41, 41, 123, 44, 36, - 99, 59, 40, 40, 40, 59, 200, 36, 365, 91, - 59, 40, 209, 91, 41, 257, 93, 63, 59, 266, - 267, 268, 48, 270, 271, 276, 277, 104, 41, 93, - 197, 130, 59, 59, 60, 257, 203, 257, 41, 396, - 59, 123, 41, 41, 93, 123, 41, 8, 9, 44, - 297, 59, 40, 91, 91, 91, 59, 40, 123, 40, - 59, 40, 40, 58, 59, 123, 28, 15, 63, 123, - 41, 40, 105, 106, 107, 108, 109, 110, 257, 0, - 123, 40, 123, 45, 46, 123, 123, 123, 114, 115, - 52, 41, 41, 40, 278, 41, 44, 40, 93, 47, - 123, 298, 64, 65, 66, 67, 132, 41, 41, 59, - 59, 41, 33, 59, 59, 36, 37, 38, 41, 40, - 289, 42, 43, 317, 45, 41, 59, 44, 41, 59, - 156, 157, 158, 159, 160, 161, 162, 163, 59, 123, - 88, 260, 311, 64, 341, 314, 257, 41, 317, 318, - 319, 40, 125, 115, 40, 103, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 41, 289, 290, 59, 40, - 91, 59, 298, 298, 200, 0, 275, 210, 204, 205, - 59, 207, 281, 209, 59, 319, 91, 59, 311, 386, - 216, 314, 218, 219, 317, 318, 319, 298, 257, 36, - 37, 227, 123, 40, 125, 126, 154, 36, 33, 93, - 41, 36, 37, 38, 257, 40, 125, 42, 43, 262, - 45, 258, 91, 272, 273, 274, 275, 64, 260, 255, - 279, 257, 258, 298, 59, 281, 300, 301, 302, 64, - 302, 287, 288, 289, 290, 40, 260, 300, 301, 302, - 41, 300, 301, 302, 41, 300, 301, 302, 304, 305, - 306, 307, 308, 309, 310, 311, 91, 296, 314, 373, - 41, 317, 318, 319, 41, 59, 41, 272, 273, 274, - 275, 300, 301, 302, 279, 311, 281, 300, 301, 302, - 40, 317, 287, 288, 289, 290, 93, 41, 123, 93, - 125, 126, 300, 301, 302, 300, 301, 302, 125, 304, - 305, 306, 307, 308, 309, 310, 311, 343, 93, 314, - 125, 93, 317, 318, 319, 93, 274, 125, 276, 300, - 301, 302, 125, 123, 282, 256, 257, 258, 259, 260, - 261, 59, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 41, 382, 41, 279, 280, - 0, 282, 283, 284, 285, 286, 300, 301, 302, 125, - 291, 292, 293, 294, 295, 296, 297, 300, 301, 302, - 59, 41, 303, 40, 300, 301, 302, 300, 301, 302, - 41, 41, 313, 33, 315, 316, 36, 37, 38, 125, - 40, 123, 42, 43, 41, 45, 300, 301, 302, 300, - 301, 302, 300, 301, 302, 123, 300, 301, 302, 59, - 41, 300, 301, 302, 64, 300, 301, 302, 300, 301, - 302, 256, 257, 258, 259, 260, 261, 59, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 91, 41, 59, 279, 280, 63, 282, 283, 284, - 285, 286, 41, 59, 125, 41, 291, 292, 293, 294, - 295, 296, 297, 300, 301, 302, 34, 51, 303, 51, - 338, 339, 340, 123, 342, 15, 126, 157, 313, 33, - 315, 316, 36, 37, 38, 382, 40, 41, 42, 43, - 44, 45, 343, 300, 301, 302, 300, 301, 302, 207, - 23, 369, 276, -1, 58, 59, -1, -1, 376, 63, - 64, -1, 380, -1, -1, 300, 301, 302, 300, 301, - 302, -1, 300, 301, 302, 393, 394, -1, -1, -1, - 266, 267, 268, -1, 270, 271, -1, 91, 314, 93, - -1, 317, 318, 319, 33, -1, -1, 36, 37, 38, - -1, 40, 41, 42, 43, 44, 45, -1, -1, -1, - -1, 297, 287, 288, 289, 290, 362, 363, -1, 58, - 59, 367, 126, -1, 63, 64, -1, -1, -1, -1, - 305, 306, 307, 308, 309, 310, 311, 383, -1, 314, - -1, 387, 317, 318, 319, 266, 267, 268, -1, 270, - 271, -1, -1, -1, 93, 41, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, - -1, -1, 272, 273, 274, 275, 297, 63, -1, 279, - 280, -1, 282, 283, 284, 285, 286, 126, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, - -1, -1, 287, 303, 289, 290, -1, -1, -1, -1, - -1, -1, -1, 313, 281, 315, 316, -1, -1, -1, - 287, 288, 289, 290, -1, 310, 311, -1, -1, 314, - 58, -1, 317, 318, 319, 63, -1, 304, 305, 306, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, 257, 258, 259, 260, 261, -1, 263, - 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, -1, -1, 63, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, 45, - 269, -1, -1, 272, 273, 274, 275, 53, -1, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 33, -1, 99, 36, 37, 38, -1, 40, -1, - 42, 43, -1, 45, -1, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, 122, 59, 272, 273, - 274, 275, 64, -1, 130, 279, -1, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, -1, 300, 301, 302, 91, - -1, -1, 33, -1, -1, 36, 37, 38, -1, 40, - -1, 42, 43, 281, 45, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, 59, -1, - -1, 123, -1, 64, 126, -1, 304, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, -1, -1, -1, -1, -1, -1, -1, -1, - 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, - -1, 42, 43, 281, 45, -1, -1, -1, -1, 287, - 288, 289, 290, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 123, 64, -1, 126, -1, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, -1, -1, -1, -1, -1, -1, -1, 275, - 91, 289, 290, -1, -1, 281, 33, -1, -1, 36, - 37, 38, -1, 40, -1, 42, 43, -1, 45, -1, - -1, -1, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 123, -1, -1, 126, -1, 64, -1, -1, - -1, -1, -1, -1, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, -1, -1, - 272, 273, 274, 275, 91, -1, -1, 279, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, -1, -1, -1, -1, - -1, 303, -1, -1, -1, -1, 123, -1, -1, 126, - -1, 313, -1, 315, 316, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, -1, - -1, 33, 303, -1, 36, 37, 38, -1, 40, -1, - 42, 43, 313, 45, 315, 316, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, -1, 269, -1, - -1, -1, 64, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, 91, - -1, 41, 303, -1, 44, -1, 287, 288, 289, 290, - -1, -1, 313, -1, 315, 316, -1, -1, 58, 59, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 310, - 311, 123, 269, 314, 126, -1, 317, 318, 319, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, 93, 291, 292, 293, 294, 295, 296, - 33, -1, -1, 36, 37, 38, 303, 40, -1, 42, - 43, -1, 45, -1, -1, -1, 313, -1, 315, 316, - 287, 288, 289, 290, -1, -1, 59, -1, -1, -1, - -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, 287, 288, 289, 290, -1, 91, -1, - 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, - 43, -1, 45, -1, 308, 309, 310, 311, -1, -1, - 314, -1, -1, 317, 318, 319, -1, -1, -1, -1, - -1, 64, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, 91, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, 33, -1, -1, 36, 37, - 38, 303, 40, 126, 42, 43, -1, 45, -1, -1, - -1, 313, -1, 315, 316, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, 64, -1, -1, 279, - -1, -1, -1, -1, -1, -1, 33, -1, -1, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, - 300, 301, 302, 91, 304, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 64, -1, 41, - -1, -1, 44, -1, 257, 258, 259, 260, 261, -1, - 263, 264, 265, -1, -1, -1, 269, 59, 126, -1, - -1, -1, -1, -1, 91, -1, -1, 280, -1, 282, - 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, -1, -1, -1, -1, -1, - 303, 93, -1, -1, -1, -1, -1, -1, -1, 126, - 313, -1, 315, 316, 257, 258, 259, 260, 261, -1, - 263, 264, 265, -1, 33, -1, 269, 36, 37, 38, - -1, 40, 41, 42, 43, -1, 45, 280, -1, 282, - 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, 64, -1, -1, -1, -1, - 303, 287, 288, 289, 290, -1, -1, -1, -1, -1, - 313, -1, 315, 316, -1, -1, -1, 41, -1, -1, - 44, -1, 91, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, 58, 59, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, 41, -1, -1, 44, -1, 126, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, 93, - 59, -1, -1, 291, 292, 293, 294, 295, 296, -1, - 257, 258, 259, 260, 261, 303, 263, 264, 265, -1, - -1, -1, 269, -1, -1, 313, -1, 315, 316, -1, - -1, -1, -1, 280, 93, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 272, 273, 274, 275, -1, 33, 303, 279, 36, 37, - 38, -1, 40, 41, 42, 43, 313, 45, 315, 316, - 27, 28, -1, -1, -1, -1, -1, -1, 300, 301, - -1, -1, 39, -1, -1, -1, 64, -1, 45, 46, - 47, -1, -1, -1, 51, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 64, 65, 66, - 67, -1, -1, 91, -1, -1, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, 33, -1, - 269, 36, 37, 38, -1, 40, 41, 42, 43, -1, - 45, 280, -1, 282, 283, 284, 285, 286, 126, -1, - -1, -1, 291, 292, 293, 294, 295, 296, 115, 64, - -1, -1, -1, -1, 303, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 313, -1, 315, 316, 272, 273, - 274, 275, -1, -1, -1, 279, 91, -1, -1, -1, - -1, 33, -1, -1, 36, 37, 38, -1, 40, -1, - 42, 43, -1, 45, -1, -1, 300, 301, 302, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 126, 64, -1, 181, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, 58, 59, -1, -1, -1, -1, 91, - -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, 36, 37, 38, - -1, 40, 41, 42, 43, -1, 45, -1, 93, 257, - 258, 259, 260, 261, 126, 263, 264, 265, -1, -1, - -1, 269, -1, -1, -1, 64, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 91, -1, -1, 303, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 313, 33, 315, 316, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 257, 258, 259, 260, 261, 126, 263, 264, - 265, -1, -1, -1, 269, -1, -1, 64, -1, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, - 295, 296, -1, -1, 91, -1, -1, -1, 303, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, - 315, 316, -1, -1, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, -1, 272, 273, 274, - 275, 303, -1, -1, 279, -1, -1, -1, -1, -1, - -1, 313, 33, 315, 316, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, 300, 301, 302, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, - 269, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 295, 296, -1, -1, - 91, -1, -1, -1, 303, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 313, 33, 315, 316, 36, 37, - 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, - 257, 258, 259, 260, 261, 126, 263, 264, 265, -1, - -1, -1, 269, -1, -1, -1, 64, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, -1, -1, 91, -1, -1, 303, -1, -1, -1, - -1, -1, -1, -1, 41, -1, 313, 44, 315, 316, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, 58, 59, -1, -1, -1, 63, -1, 126, 58, - 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, -1, - -1, 41, 303, -1, 44, -1, -1, -1, -1, -1, - -1, -1, 313, -1, 315, 316, -1, -1, 58, 59, - -1, 41, -1, 63, 44, -1, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 58, 59, - -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, 93, 282, 283, 284, 285, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, 32, -1, 93, 41, 303, -1, 44, -1, 40, - -1, -1, -1, 44, -1, 313, 47, 315, 316, 50, - -1, 58, 59, 54, 55, 56, 57, 58, -1, -1, - -1, 62, 63, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, 272, 273, 274, 275, -1, -1, -1, - 279, -1, 281, -1, -1, -1, 93, -1, 287, 288, - 289, 290, -1, 300, 301, 302, -1, 304, -1, -1, - 101, 300, 301, 302, -1, 304, 305, 306, 307, 308, - 309, 310, 311, -1, -1, 314, -1, -1, 317, 318, - 319, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 93, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, 192, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, 272, 273, 274, 275, -1, -1, -1, 279, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, 41, 314, -1, 44, 317, 318, 319, - 300, 301, 302, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, -1, -1, -1, -1, -1, 279, -1, - -1, 41, -1, -1, 44, 93, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 302, -1, -1, 58, 59, - -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, - -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - -1, 93, -1, -1, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, -1, -1, 314, - -1, -1, 317, 318, 319, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, 317, 318, 319, -1, - -1, -1, -1, -1, 272, 273, 274, 275, 93, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, -1, -1, 314, -1, -1, 317, 318, 319, - 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, - -1, -1, 314, -1, -1, 317, 318, 319, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 93, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, 93, -1, -1, - -1, -1, -1, -1, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 41, -1, 314, - 44, -1, 317, 318, 319, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 44, 93, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, 314, -1, - -1, 317, 318, 319, -1, -1, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, 58, 59, 279, -1, 281, 63, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 300, 301, 302, -1, - 304, 305, 306, 307, 308, 309, 310, 311, 93, -1, - 314, -1, -1, 317, 318, 319, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, 272, 273, 274, 275, 41, - -1, -1, 279, 93, 281, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, 58, 59, -1, -1, - -1, 63, -1, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, -1, -1, -1, -1, -1, -1, -1, - 41, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, -1, 314, -1, -1, 317, 318, 319, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, -1, -1, 314, - -1, -1, 317, 318, 319, -1, -1, -1, -1, -1, - 41, -1, -1, 44, 93, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, -1, 314, -1, -1, 317, 318, 319, - 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, - -1, -1, 314, -1, -1, 317, 318, 319, -1, -1, - -1, 272, 273, 274, 275, -1, 41, 93, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, 317, 318, 319, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, 58, 59, - 279, -1, 281, 63, -1, -1, -1, -1, 287, 288, - 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, 302, -1, 304, 305, 306, 307, 308, - 309, 310, 311, 93, -1, 314, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, 44, 93, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - 41, -1, -1, 44, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 58, 59, -1, - -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, 93, -1, -1, 41, -1, -1, 44, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, 93, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - 41, -1, -1, 44, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 58, 59, -1, - -1, -1, 63, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, -1, 281, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, -1, -1, 41, -1, - -1, 44, 93, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 310, 311, 58, 59, -1, -1, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - 93, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 58, 59, 279, -1, - 281, 63, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, 93, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 58, 59, 279, -1, - 281, 63, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - -1, 93, -1, -1, 41, -1, -1, 44, -1, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, 58, 59, -1, 287, 288, 63, 290, -1, -1, - -1, 58, 59, -1, -1, -1, 63, 300, 301, 302, - -1, 304, 305, 306, 307, 308, 309, 310, -1, -1, - -1, -1, -1, -1, -1, 41, 93, -1, 44, -1, - 272, 273, 274, 275, -1, -1, 93, 279, -1, 281, - -1, -1, 58, 59, -1, 287, 288, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, -1, - -1, -1, -1, 41, -1, -1, 44, 93, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 58, 59, 279, -1, 281, 63, -1, -1, -1, -1, - 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 41, -1, 93, 44, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, - -1, -1, -1, -1, -1, 287, 288, -1, -1, -1, - -1, 41, -1, -1, 44, 93, -1, -1, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 58, 59, - -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, 272, 273, 274, 275, -1, - 287, 288, 279, 93, 281, -1, -1, 58, 59, -1, - 287, 288, 63, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, -1, -1, -1, 272, 273, 274, 275, - -1, -1, 93, 279, -1, 281, -1, -1, -1, -1, - -1, -1, 288, -1, -1, -1, -1, 41, -1, -1, - 44, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 44, 93, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, -1, - -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, - 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 300, 301, 302, -1, - 304, 305, 306, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 319 -#if YYDEBUG -static char *yyname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0, -0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"WORD","METHOD","FUNCMETH","THING", -"PMFUNC","PRIVATEREF","FUNC0SUB","UNIOPSUB","LSTOPSUB","LABEL","FORMAT","SUB", -"ANONSUB","PACKAGE","USE","WHILE","UNTIL","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","OROP","DOROP","ANDOP","NOTOP","ASSIGNOP","OROR", -"DORDOR","ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN", -"POWOP","PREINC","PREDEC","POSTINC","POSTDEC","ARROW", -}; -static char *yyrule[] = { -"$accept : prog", -"prog : progstart lineseq", -"block : '{' remember lineseq '}'", -"remember :", -"progstart :", -"mblock : '{' mremember lineseq '}'", -"mremember :", -"lineseq :", -"lineseq : lineseq decl", -"lineseq : lineseq line", -"line : label cond", -"line : loop", -"line : label ';'", -"line : label sideff ';'", -"sideff : error", -"sideff : expr", -"sideff : expr IF expr", -"sideff : expr UNLESS expr", -"sideff : expr WHILE expr", -"sideff : expr UNTIL iexpr", -"sideff : expr FOR expr", -"else :", -"else : ELSE mblock", -"else : ELSIF '(' mexpr ')' mblock else", -"cond : IF '(' remember mexpr ')' mblock else", -"cond : UNLESS '(' remember miexpr ')' mblock else", -"cont :", -"cont : CONTINUE block", -"loop : label WHILE '(' remember mtexpr ')' mblock cont", -"loop : label UNTIL '(' remember miexpr ')' mblock cont", -"loop : label FOR MY remember my_scalar '(' mexpr ')' mblock cont", -"loop : label FOR scalar '(' remember mexpr ')' mblock cont", -"loop : label FOR '(' remember mexpr ')' mblock cont", -"loop : label FOR '(' remember mnexpr ';' mtexpr ';' mnexpr ')' mblock", -"loop : label block cont", -"nexpr :", -"nexpr : sideff", -"texpr :", -"texpr : expr", -"iexpr : expr", -"mexpr : expr", -"mnexpr : nexpr", -"mtexpr : texpr", -"miexpr : iexpr", -"label :", -"label : LABEL", -"decl : format", -"decl : subrout", -"decl : mysubrout", -"decl : package", -"decl : use", -"format : FORMAT startformsub formname block", -"formname : WORD", -"formname :", -"mysubrout : MYSUB startsub subname proto subattrlist subbody", -"subrout : SUB startsub subname proto subattrlist subbody", -"startsub :", -"startanonsub :", -"startformsub :", -"subname : WORD", -"proto :", -"proto : THING", -"subattrlist :", -"subattrlist : COLONATTR THING", -"subattrlist : COLONATTR", -"myattrlist : COLONATTR THING", -"myattrlist : COLONATTR", -"subbody : block", -"subbody : ';'", -"package : PACKAGE WORD ';'", -"$$1 :", -"use : USE startsub $$1 WORD WORD listexpr ';'", -"expr : expr ANDOP expr", -"expr : expr OROP expr", -"expr : expr DOROP expr", -"expr : argexpr", -"argexpr : argexpr ','", -"argexpr : argexpr ',' term", -"argexpr : term", -"listop : LSTOP indirob argexpr", -"listop : FUNC '(' indirob expr ')'", -"listop : term ARROW method '(' listexprcom ')'", -"listop : term ARROW method", -"listop : METHOD indirob listexpr", -"listop : FUNCMETH indirob '(' listexprcom ')'", -"listop : LSTOP listexpr", -"listop : FUNC '(' listexprcom ')'", -"$$2 :", -"listop : LSTOPSUB startanonsub block $$2 listexpr", -"method : METHOD", -"method : scalar", -"subscripted : star '{' expr ';' '}'", -"subscripted : scalar '[' expr ']'", -"subscripted : term ARROW '[' expr ']'", -"subscripted : subscripted '[' expr ']'", -"subscripted : scalar '{' expr ';' '}'", -"subscripted : term ARROW '{' expr ';' '}'", -"subscripted : subscripted '{' expr ';' '}'", -"subscripted : term ARROW '(' ')'", -"subscripted : term ARROW '(' expr ')'", -"subscripted : subscripted '(' expr ')'", -"subscripted : subscripted '(' ')'", -"termbinop : term ASSIGNOP term", -"termbinop : term POWOP term", -"termbinop : term MULOP term", -"termbinop : term ADDOP term", -"termbinop : term SHIFTOP term", -"termbinop : term RELOP term", -"termbinop : term EQOP term", -"termbinop : term BITANDOP term", -"termbinop : term BITOROP term", -"termbinop : term DOTDOT term", -"termbinop : term ANDAND term", -"termbinop : term OROR term", -"termbinop : term DORDOR term", -"termbinop : term MATCHOP term", -"termunop : '-' term", -"termunop : '+' term", -"termunop : '!' term", -"termunop : '~' term", -"termunop : term POSTINC", -"termunop : term POSTDEC", -"termunop : PREINC term", -"termunop : PREDEC term", -"anonymous : '[' expr ']'", -"anonymous : '[' ']'", -"anonymous : HASHBRACK expr ';' '}'", -"anonymous : HASHBRACK ';' '}'", -"anonymous : ANONSUB startanonsub proto subattrlist block", -"termdo : DO term", -"termdo : DO block", -"termdo : DO WORD '(' ')'", -"termdo : DO WORD '(' expr ')'", -"termdo : DO scalar '(' ')'", -"termdo : DO scalar '(' expr ')'", -"term : termbinop", -"term : termunop", -"term : anonymous", -"term : termdo", -"term : term '?' term ':' term", -"term : REFGEN term", -"term : myattrterm", -"term : LOCAL term", -"term : '(' expr ')'", -"term : '(' ')'", -"term : scalar", -"term : star", -"term : hsh", -"term : ary", -"term : arylen", -"term : subscripted", -"term : '(' expr ')' '[' expr ']'", -"term : '(' ')' '[' expr ']'", -"term : ary '[' expr ']'", -"term : ary '{' expr ';' '}'", -"term : THING", -"term : amper", -"term : amper '(' ')'", -"term : amper '(' expr ')'", -"term : NOAMP WORD listexpr", -"term : LOOPEX", -"term : LOOPEX term", -"term : NOTOP argexpr", -"term : UNIOP", -"term : UNIOP block", -"term : UNIOP term", -"term : UNIOPSUB term", -"term : FUNC0", -"term : FUNC0 '(' ')'", -"term : FUNC0SUB", -"term : FUNC1 '(' ')'", -"term : FUNC1 '(' expr ')'", -"term : PMFUNC '(' term ')'", -"term : PMFUNC '(' term ',' term ')'", -"term : WORD", -"term : listop", -"myattrterm : MY myterm myattrlist", -"myattrterm : MY myterm", -"myterm : '(' expr ')'", -"myterm : '(' ')'", -"myterm : scalar", -"myterm : hsh", -"myterm : ary", -"listexpr :", -"listexpr : argexpr", -"listexprcom :", -"listexprcom : expr", -"listexprcom : expr ','", -"my_scalar : scalar", -"amper : '&' indirob", -"scalar : '$' indirob", -"ary : '@' indirob", -"hsh : '%' indirob", -"arylen : DOLSHARP indirob", -"star : '*' indirob", -"indirob : WORD", -"indirob : scalar", -"indirob : block", -"indirob : PRIVATEREF", -}; -#endif -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#ifdef YYSTACKSIZE -#ifndef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#endif -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH +typedef signed char yysigned_char; + +#ifdef DEBUGGING +# define YYDEBUG 1 #else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif +# define YYDEBUG 0 #endif -#line 796 "perly.y" - /* PROGRAM */ -/* more stuff added to make perly_c.diff easier to apply */ +/* contains all the parser state tables; auto-generated from perly.y */ +#include "perly.tab" + +# define YYSIZE_T size_t + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else { \ + yyerror ("syntax error: cannot back up"); \ + YYERROR; \ + } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +/* YYLEX -- calling `yylex' with the right arguments. */ + +# define YYLEX yylex_r (&yylval, &yychar) + +/* Enable debugging if requested. */ +#if DEBUGGING + +# define yydebug (DEBUG_p_TEST) + +# define YYFPRINTF PerlIO_printf + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YYDSYMPRINT(Args) \ +do { \ + if (yydebug) \ + yysymprint Args; \ +} while (0) + +# define YYDSYMPRINTF(Title, Token, Value, Location) \ +do { \ + if (yydebug) { \ + YYFPRINTF (Perl_debug_log, "%s ", Title); \ + yysymprint (aTHX_ Perl_debug_log, Token, Value); \ + YYFPRINTF (Perl_debug_log, "\n"); \ + } \ +} while (0) + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yysymprint (pTHX_ PerlIO *yyoutput, int yytype, YYSTYPE *yyvaluep) +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + if (yytype < YYNTOKENS) { + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); +# ifdef YYPRINT + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + } + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + switch (yytype) { + default: + break; + } + YYFPRINTF (yyoutput, ")"); +} + + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (cinluded). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (pTHX_ short *bottom, short *top) +{ + YYFPRINTF (Perl_debug_log, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (Perl_debug_log, " %d", *bottom); + YYFPRINTF (Perl_debug_log, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print (aTHX_ (Bottom), (Top)); \ +} while (0) + -#ifdef yyparse -#undef yyparse +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (pTHX_ int yyrule) +{ + int yyi; + unsigned int yylineno = yyrline[yyrule]; + YYFPRINTF (Perl_debug_log, "Reducing stack by rule %d (line %u), ", + yyrule - 1, yylineno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (Perl_debug_log, "%s ", yytname [yyrhs[yyi]]); + YYFPRINTF (Perl_debug_log, "-> %s\n", yytname [yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (aTHX_ Rule); \ +} while (0) + +#else /* !DEBUGGING */ +# define YYDPRINTF(Args) +# define YYDSYMPRINT(Args) +# define YYDSYMPRINTF(Title, Token, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !DEBUGGING */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 #endif -#define yyparse() Perl_yyparse(pTHX) -#line 1508 "perly.c" -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab + +#if YYERROR_VERBOSE +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + register const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (pTHX_ char *yydest, const char *yysrc) +{ + register char *yyd = yydest; + register const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +#endif /* !YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (int yytype, YYSTYPE *yyvaluep) +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + + switch (yytype) { + default: + break; + } +} + + + + +/*----------. +| yyparse. | +`----------*/ + int -yyparse() +Perl_yyparse (pTHX) { - register int yym, yyn, yystate; + int yychar; /* The lookahead symbol. */ + YYSTYPE yylval; /* The semantic value of the lookahead symbol. */ + int yynerrs; /* Number of syntax errors so far. */ + register int yystate; + register int yyn; + int yyresult; + + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + + /* two stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short *yyss; register short *yyssp; + + /* The semantic value stack. */ + YYSTYPE *yyvs; register YYSTYPE *yyvsp; - short* yyss; - YYSTYPE* yyvs; - unsigned yystacksize = YYSTACKSIZE; - int retval = 0; -#if YYDEBUG - register char *yys; -#endif - struct ysv *ysave; + /* for ease of re-allocation and automatic freeing, have two SVs whose + * SvPVX points to the stacks */ + SV *yyss_sv, *yyvs_sv; + +#define YYPOPSTACK (yyvsp--, yyssp--) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((Perl_debug_log, "Starting parse\n")); + + yyss_sv = NEWSV(73, YYINITDEPTH * sizeof(short)); + yyvs_sv = NEWSV(73, YYINITDEPTH * sizeof(YYSTYPE)); #ifdef USE_ITHREADS - ENTER; /* force yydestruct() before we return */ -#endif - New(73, ysave, 1, struct ysv); - SAVEDESTRUCTOR_X(yydestruct, ysave); - ysave->oldyydebug = yydebug; - ysave->oldyynerrs = yynerrs; - ysave->oldyyerrflag = yyerrflag; - ysave->oldyychar = yychar; - ysave->oldyyval = yyval; - ysave->oldyylval = yylval; - -#if YYDEBUG - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } + /* XXX is this needed anymore? DAPM 13-Feb-04; + * if not, delete the correspinding LEAVE too */ + ENTER; /* force stack free before we return */ #endif + SAVEFREESV(yyss_sv); + SAVEFREESV(yyvs_sv); + yyss = (short *) SvPVX(yyss_sv); + yyvs = (YYSTYPE *) SvPVX(yyvs_sv); + yystate = 0; + yyerrstatus = 0; yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - /* - ** Initialize private stacks (yyparse may be called from an action) - */ - New(73, yyss, yystacksize, short); - New(73, yyvs, yystacksize, YYSTYPE); - ysave->yyss = yyss; - ysave->yyvs = yyvs; - if (!yyvs || !yyss) - goto yyoverflow; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyoverflowlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + SvGROW(yyss_sv, yystacksize * sizeof(short)); + SvGROW(yyvs_sv, yystacksize * sizeof(YYSTYPE)); + yyss = (short *) SvPVX(yyss_sv); + yyvs = (YYSTYPE *) SvPVX(yyvs_sv); + if (!yyss || ! yyvs) + goto yyoverflowlab; + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((Perl_debug_log, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; + + YYDPRINTF ((Perl_debug_log, "Entering state %d\n", yystate)); + + goto yybackup; + + /*-----------. + | yybackup. | + `-----------*/ + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) { + YYDPRINTF ((Perl_debug_log, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) { + yychar = yytoken = YYEOF; + YYDPRINTF ((Perl_debug_log, "Now at end of input.\n")); } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; + else { + yytoken = YYTRANSLATE (yychar); + YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); } - if (yyerrflag) goto yyinrecovery; -#ifdef lint -#endif + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } - yyerror("syntax error"); -#ifdef lint + if (yyn == YYFINAL) + YYACCEPT; -#endif + /* Shift the lookahead token. */ + YYDPRINTF ((Perl_debug_log, "Shifting token %s, ", yytname[yytoken])); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; + + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + + /*-----------------------------------------------------------. + | yydefault -- do the default action for the current state. | + `-----------------------------------------------------------*/ + yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + + /*-----------------------------. + | yyreduce -- Do a reduction. | + `-----------------------------*/ + yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) { + +/* contains all the rule actions; auto-generated from perly.y */ + +#define dep() deprecate("\"do\" to call subroutines") +#include "perly.act" - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", - *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } } + + yyvsp -= yylen; + yyssp -= yylen; + + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 1: -#line 131 "perly.y" -{ yyval.ival = yyvsp[-1].ival; newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); } -break; -case 2: -#line 136 "perly.y" -{ if (PL_copline > (line_t)yyvsp[-3].ival) - PL_copline = (line_t)yyvsp[-3].ival; - yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } -break; -case 3: -#line 142 "perly.y" -{ yyval.ival = block_start(TRUE); } -break; -case 4: -#line 146 "perly.y" -{ -#if defined(YYDEBUG) && defined(DEBUGGING) - yydebug = (DEBUG_p_TEST); -#endif - PL_expect = XSTATE; yyval.ival = block_start(TRUE); + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + + /*------------------------------------. + | yyerrlab -- here on detecting error | + `------------------------------------*/ + yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { + ++yynerrs; +#if YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (YYPACT_NINF < yyn && yyn < YYLAST) { + YYSIZE_T yysize = 0; + int yytype = YYTRANSLATE (yychar); + char *yymsg; + int yyx, yycount; + + yycount = 0; + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("syntax error, unexpected ") + 1; + yysize += yystrlen (yytname[yytype]); + New(yymsg, yysize, char *); + if (yymsg != 0) { + char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); + yyp = yystpcpy (yyp, yytname[yytype]); + + if (yycount < 5) { + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) + { + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { + const char *yyq = ! yycount ? + ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); + yyp = yystpcpy (yyp, yytname[yyx]); + yycount++; + } + } } -break; -case 5: -#line 156 "perly.y" -{ if (PL_copline > (line_t)yyvsp[-3].ival) - PL_copline = (line_t)yyvsp[-3].ival; - yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } -break; -case 6: -#line 162 "perly.y" -{ yyval.ival = block_start(FALSE); } -break; -case 7: -#line 167 "perly.y" -{ yyval.opval = Nullop; } -break; -case 8: -#line 169 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 9: -#line 171 "perly.y" -{ yyval.opval = append_list(OP_LINESEQ, - (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); - PL_pad_reset_pending = TRUE; - if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 10: -#line 179 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); } -break; -case 12: -#line 182 "perly.y" -{ if (yyvsp[-1].pval != Nullch) { - yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); - } - else { - yyval.opval = Nullop; - PL_copline = NOLINE; - } - PL_expect = XSTATE; } -break; -case 13: -#line 191 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); - PL_expect = XSTATE; } -break; -case 14: -#line 197 "perly.y" -{ yyval.opval = Nullop; } -break; -case 15: -#line 199 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 16: -#line 201 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); } -break; -case 17: -#line 203 "perly.y" -{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); } -break; -case 18: -#line 205 "perly.y" -{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); } -break; -case 19: -#line 207 "perly.y" -{ yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);} -break; -case 20: -#line 209 "perly.y" -{ yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival, - Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); } -break; -case 21: -#line 215 "perly.y" -{ yyval.opval = Nullop; } -break; -case 22: -#line 217 "perly.y" -{ (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); } -break; -case 23: -#line 219 "perly.y" -{ PL_copline = (line_t)yyvsp[-5].ival; - yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); - PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 24: -#line 226 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } -break; -case 25: -#line 230 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } -break; -case 26: -#line 237 "perly.y" -{ yyval.opval = Nullop; } -break; -case 27: -#line 239 "perly.y" -{ yyval.opval = scope(yyvsp[0].opval); } -break; -case 28: -#line 244 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newSTATEOP(0, yyvsp[-7].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } -break; -case 29: -#line 250 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newSTATEOP(0, yyvsp[-7].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } -break; -case 30: -#line 256 "perly.y" -{ yyval.opval = block_end(yyvsp[-6].ival, - newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 31: -#line 259 "perly.y" -{ yyval.opval = block_end(yyvsp[-4].ival, - newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), - yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 32: -#line 263 "perly.y" -{ yyval.opval = block_end(yyvsp[-4].ival, - newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 33: -#line 267 "perly.y" -{ OP *forop; - PL_copline = (line_t)yyvsp[-9].ival; - forop = newSTATEOP(0, yyvsp[-10].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-9].ival, scalar(yyvsp[-4].opval), - yyvsp[0].opval, yyvsp[-2].opval)); - if (yyvsp[-6].opval) { - forop = append_elem(OP_LINESEQ, - newSTATEOP(0, (yyvsp[-10].pval?savepv(yyvsp[-10].pval):Nullch), - yyvsp[-6].opval), - forop); - } - - yyval.opval = block_end(yyvsp[-7].ival, forop); } -break; -case 34: -#line 282 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 35: -#line 289 "perly.y" -{ yyval.opval = Nullop; } -break; -case 37: -#line 295 "perly.y" -{ (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } -break; -case 39: -#line 301 "perly.y" -{ yyval.opval = invert(scalar(yyvsp[0].opval)); } -break; -case 40: -#line 306 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 41: -#line 310 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 42: -#line 314 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 43: -#line 318 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 44: -#line 323 "perly.y" -{ yyval.pval = Nullch; } -break; -case 46: -#line 329 "perly.y" -{ yyval.ival = 0; } -break; -case 47: -#line 331 "perly.y" -{ yyval.ival = 0; } -break; -case 48: -#line 333 "perly.y" -{ yyval.ival = 0; } -break; -case 49: -#line 335 "perly.y" -{ yyval.ival = 0; } -break; -case 50: -#line 337 "perly.y" -{ yyval.ival = 0; } -break; -case 51: -#line 341 "perly.y" -{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 52: -#line 344 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 53: -#line 345 "perly.y" -{ yyval.opval = Nullop; } -break; -case 54: -#line 350 "perly.y" -{ newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 55: -#line 355 "perly.y" -{ newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 56: -#line 359 "perly.y" -{ yyval.ival = start_subparse(FALSE, 0); } -break; -case 57: -#line 363 "perly.y" -{ yyval.ival = start_subparse(FALSE, CVf_ANON); } -break; -case 58: -#line 367 "perly.y" -{ yyval.ival = start_subparse(TRUE, 0); } -break; -case 59: -#line 371 "perly.y" -{ STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); - if (strEQ(name, "BEGIN") || strEQ(name, "END") - || strEQ(name, "INIT") || strEQ(name, "CHECK")) - CvSPECIAL_on(PL_compcv); - yyval.opval = yyvsp[0].opval; } -break; -case 60: -#line 380 "perly.y" -{ yyval.opval = Nullop; } -break; -case 62: -#line 386 "perly.y" -{ yyval.opval = Nullop; } -break; -case 63: -#line 388 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 64: -#line 390 "perly.y" -{ yyval.opval = Nullop; } -break; -case 65: -#line 395 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 66: -#line 397 "perly.y" -{ yyval.opval = Nullop; } -break; -case 67: -#line 401 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 68: -#line 402 "perly.y" -{ yyval.opval = Nullop; PL_expect = XSTATE; } -break; -case 69: -#line 406 "perly.y" -{ package(yyvsp[-1].opval); } -break; -case 70: -#line 410 "perly.y" -{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } -break; -case 71: -#line 412 "perly.y" -{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); } -break; -case 72: -#line 417 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 73: -#line 419 "perly.y" -{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 74: -#line 421 "perly.y" -{ yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 76: -#line 427 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 77: -#line 429 "perly.y" -{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 79: -#line 435 "perly.y" -{ yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, - prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); } -break; -case 80: -#line 438 "perly.y" -{ yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, - prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); } -break; -case 81: -#line 441 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), - newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); } -break; -case 82: -#line 446 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, scalar(yyvsp[-2].opval), - newUNOP(OP_METHOD, 0, yyvsp[0].opval))); } -break; -case 83: -#line 450 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), - newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); } -break; -case 84: -#line 455 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), - newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); } -break; -case 85: -#line 460 "perly.y" -{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 86: -#line 462 "perly.y" -{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); } -break; -case 87: -#line 464 "perly.y" -{ yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); } -break; -case 88: -#line 466 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); } -break; -case 91: -#line 480 "perly.y" -{ yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 92: -#line 483 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); } -break; -case 93: -#line 485 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, - ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), - scalar(yyvsp[-1].opval));} -break; -case 94: -#line 489 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, - ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), - scalar(yyvsp[-1].opval));} -break; -case 95: -#line 493 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 96: -#line 496 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, - ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), - jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 97: -#line 501 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, - ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), - jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 98: -#line 506 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar(yyvsp[-3].opval))); } -break; -case 99: -#line 509 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, - newCVREF(0, scalar(yyvsp[-4].opval)))); } -break; -case 100: -#line 514 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, - newCVREF(0, scalar(yyvsp[-3].opval)))); } -break; -case 101: -#line 518 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar(yyvsp[-2].opval))); } -break; -case 102: -#line 524 "perly.y" -{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); } -break; -case 103: -#line 526 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 104: -#line 528 "perly.y" -{ if (yyvsp[-1].ival != OP_REPEAT) - scalar(yyvsp[-2].opval); - yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); } -break; -case 105: -#line 532 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 106: -#line 534 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 107: -#line 536 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 108: -#line 538 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 109: -#line 540 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 110: -#line 542 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 111: -#line 544 "perly.y" -{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));} -break; -case 112: -#line 546 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 113: -#line 548 "perly.y" -{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 114: -#line 550 "perly.y" -{ yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 115: -#line 552 "perly.y" -{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 116: -#line 557 "perly.y" -{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); } -break; -case 117: -#line 559 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 118: -#line 561 "perly.y" -{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } -break; -case 119: -#line 563 "perly.y" -{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));} -break; -case 120: -#line 565 "perly.y" -{ yyval.opval = newUNOP(OP_POSTINC, 0, - mod(scalar(yyvsp[-1].opval), OP_POSTINC)); } -break; -case 121: -#line 568 "perly.y" -{ yyval.opval = newUNOP(OP_POSTDEC, 0, - mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); } -break; -case 122: -#line 571 "perly.y" -{ yyval.opval = newUNOP(OP_PREINC, 0, - mod(scalar(yyvsp[0].opval), OP_PREINC)); } -break; -case 123: -#line 574 "perly.y" -{ yyval.opval = newUNOP(OP_PREDEC, 0, - mod(scalar(yyvsp[0].opval), OP_PREDEC)); } -break; -case 124: -#line 581 "perly.y" -{ yyval.opval = newANONLIST(yyvsp[-1].opval); } -break; -case 125: -#line 583 "perly.y" -{ yyval.opval = newANONLIST(Nullop); } -break; -case 126: -#line 585 "perly.y" -{ yyval.opval = newANONHASH(yyvsp[-2].opval); } -break; -case 127: -#line 587 "perly.y" -{ yyval.opval = newANONHASH(Nullop); } -break; -case 128: -#line 589 "perly.y" -{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 129: -#line 595 "perly.y" -{ yyval.opval = dofile(yyvsp[0].opval); } -break; -case 130: -#line 597 "perly.y" -{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } -break; -case 131: -#line 599 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-2].opval) - )),Nullop)); dep();} -break; -case 132: -#line 607 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - append_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-3].opval) - )))); dep();} -break; -case 133: -#line 616 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} -break; -case 134: -#line 620 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} -break; -case 139: -#line 632 "perly.y" -{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 140: -#line 634 "perly.y" -{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } -break; -case 141: -#line 636 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 142: -#line 638 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } -break; -case 143: -#line 640 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } -break; -case 144: -#line 642 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } -break; -case 145: -#line 644 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 146: -#line 646 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 147: -#line 648 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 148: -#line 650 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 149: -#line 652 "perly.y" -{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));} -break; -case 150: -#line 654 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 151: -#line 656 "perly.y" -{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); } -break; -case 152: -#line 658 "perly.y" -{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); } -break; -case 153: -#line 660 "perly.y" -{ yyval.opval = prepend_elem(OP_ASLICE, - newOP(OP_PUSHMARK, 0), - newLISTOP(OP_ASLICE, 0, - list(yyvsp[-1].opval), - ref(yyvsp[-3].opval, OP_ASLICE))); } -break; -case 154: -#line 666 "perly.y" -{ yyval.opval = prepend_elem(OP_HSLICE, - newOP(OP_PUSHMARK, 0), - newLISTOP(OP_HSLICE, 0, - list(yyvsp[-2].opval), - ref(oopsHV(yyvsp[-4].opval), OP_HSLICE))); - PL_expect = XOPERATOR; } -break; -case 155: -#line 673 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 156: -#line 675 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } -break; -case 157: -#line 677 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); } -break; -case 158: -#line 679 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); } -break; -case 159: -#line 682 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } -break; -case 160: -#line 685 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); - PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 161: -#line 688 "perly.y" -{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); } -break; -case 162: -#line 690 "perly.y" -{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } -break; -case 163: -#line 692 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, 0); } -break; -case 164: -#line 694 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 165: -#line 696 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 166: -#line 698 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } -break; -case 167: -#line 701 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, 0); } -break; -case 168: -#line 703 "perly.y" -{ yyval.opval = newOP(yyvsp[-2].ival, 0); } -break; -case 169: -#line 705 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - scalar(yyvsp[0].opval)); } -break; -case 170: -#line 708 "perly.y" -{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); } -break; -case 171: -#line 710 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); } -break; -case 172: -#line 712 "perly.y" -{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); } -break; -case 173: -#line 714 "perly.y" -{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); } -break; -case 176: -#line 721 "perly.y" -{ yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); } -break; -case 177: -#line 723 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } -break; -case 178: -#line 728 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } -break; -case 179: -#line 730 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } -break; -case 180: -#line 732 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 181: -#line 734 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 182: -#line 736 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 183: -#line 741 "perly.y" -{ yyval.opval = Nullop; } -break; -case 184: -#line 743 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 185: -#line 747 "perly.y" -{ yyval.opval = Nullop; } -break; -case 186: -#line 749 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 187: -#line 751 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 188: -#line 757 "perly.y" -{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); } -break; -case 189: -#line 761 "perly.y" -{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); } -break; -case 190: -#line 765 "perly.y" -{ yyval.opval = newSVREF(yyvsp[0].opval); } -break; -case 191: -#line 769 "perly.y" -{ yyval.opval = newAVREF(yyvsp[0].opval); } -break; -case 192: -#line 773 "perly.y" -{ yyval.opval = newHVREF(yyvsp[0].opval); } -break; -case 193: -#line 777 "perly.y" -{ yyval.opval = newAVREF(yyvsp[0].opval); } -break; -case 194: -#line 781 "perly.y" -{ yyval.opval = newGVREF(0,yyvsp[0].opval); } -break; -case 195: -#line 786 "perly.y" -{ yyval.opval = scalar(yyvsp[0].opval); } -break; -case 196: -#line 788 "perly.y" -{ yyval.opval = scalar(yyvsp[0].opval); } -break; -case 197: -#line 790 "perly.y" -{ yyval.opval = scope(yyvsp[0].opval); } -break; -case 198: -#line 793 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -#line 2563 "perly.c" + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + yyerror ("syntax error; also virtual memory exhausted"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror ("syntax error"); } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ - state %d\n", YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", - YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; + + + if (yyerrstatus == 3) { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + /* Return failure if at end of input. */ + if (yychar == YYEOF) { + /* Pop the error token. */ + YYPOPSTACK; + /* Pop the rest of the stack. */ + while (yyss < yyssp) { + YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); + yydestruct (yystos[*yyssp], yyvsp); + YYPOPSTACK; + } + YYABORT; + } + + YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); + yydestruct (yytoken, &yylval); + yychar = YYEMPTY; + } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + + /*----------------------------------------------------. + | yyerrlab1 -- error raised explicitly by an action. | + `----------------------------------------------------*/ + yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); + yydestruct (yystos[yystate], yyvsp); + yyvsp--; + yystate = *--yyssp; + + YY_STACK_PRINT (yyss, yyssp); } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("Out of memory for yacc stack"); -yyabort: - retval = 1; -yyaccept: + + if (yyn == YYFINAL) + YYACCEPT; + + YYDPRINTF ((Perl_debug_log, "Shifting error token, ")); + + *++yyvsp = yylval; + + yystate = yyn; + goto yynewstate; + + + /*-------------------------------------. + | yyacceptlab -- YYACCEPT comes here. | + `-------------------------------------*/ + yyacceptlab: + yyresult = 0; + goto yyreturn; + + /*-----------------------------------. + | yyabortlab -- YYABORT comes here. | + `-----------------------------------*/ + yyabortlab: + yyresult = 1; + goto yyreturn; + + /*----------------------------------------------. + | yyoverflowlab -- parser overflow comes here. | + `----------------------------------------------*/ + yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ + + yyreturn: + #ifdef USE_ITHREADS - LEAVE; /* force yydestruct() before we return */ + LEAVE; /* force stack free before we return */ #endif - return retval; -} -static void -yydestruct(pTHX_ void *ptr) -{ - struct ysv* ysave = (struct ysv*)ptr; - if (ysave->yyss) Safefree(ysave->yyss); - if (ysave->yyvs) Safefree(ysave->yyvs); - yydebug = ysave->oldyydebug; - yynerrs = ysave->oldyynerrs; - yyerrflag = ysave->oldyyerrflag; - yychar = ysave->oldyychar; - yyval = ysave->oldyyval; - yylval = ysave->oldyylval; - Safefree(ysave); + return yyresult; } diff --git a/perly.fixer b/perly.fixer deleted file mode 100755 index fec981f..0000000 --- a/perly.fixer +++ /dev/null @@ -1,256 +0,0 @@ -#!/bin/sh - -# Fix up yacc output to allow dynamic allocation. Since perly.c -# is now provided with the perl source, this should not be necessary. -# -# However, if the user wishes to use byacc, or wishes to try another -# compiler compiler (e.g. bison or yacc), this script will get run. -# See makefile run_byacc target for more details. -# -# Currently, only byacc version 1.8 is fully supported. -# -# Hacks to make it work with Interactive's SysVr3 Version 2.2 -# doughera@lafayette.edu (Andy Dougherty) 3/23/91 -# -# Additional information to make the BSD section work with SunOS 4.0.2 -# tdinger@East.Sun.COM (Tom Dinger) 4/15/1991 -# -# Also edit some practices gcc -Wall finds questionable. -# - -gnupatch=patch -. ./config.sh - -input=$1 -output=$2 -tmp=perly$$ - -inputh=`echo $input|sed 's:\.c$:.h:'` -if grep '^#ifdef PERL_CORE' $inputh; then - : never mind -else - echo "#ifdef PERL_CORE" > $tmp - sed -e 's:^typedef union {:#endif /* PERL_CORE */\ -\ -typedef union {:' $inputh >> $tmp - mv -f $tmp $inputh -fi - -if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then - cp $input $output - # Don't expect the diff to do everything -- do some by hand - if test -f perly_c.diff; then - $gnupatch -F3 $output $tmp && mv -f $tmp $output || exit 1 - rm -rf $input - echo "If you need to debug perly.c, you need to fix up the #line" - echo "directives yourself." - fi - exit -elif grep 'yaccpar 1.9 (Berkeley)' $input >/dev/null 2>&1; then - if test -f perly.c.dif9; then - $gnupatch -F3 $output $tmp && mv -f $tmp $output || exit 1 - rm -rf $input - echo "If you need to debug perly.c, you need to fix up the #line" - echo "directives yourself." - exit 0 - else - echo "Diffs from byacc-1.9 are not available." - echo "If you wish to proceed anyway, do" - echo "cp $input $output" - echo "cp y.tab.h perly.h" - echo "and re-run make. Otherwise, I will use the old perly.c" - touch perly.c - # Exit with error status to stop make. - exit 1 - fi -fi - -plan="unknown" - -echo "" -echo "Warning: the yacc you have used is not directly supported by perl." -echo "The perly.fixer script will attempt to make some changes to the generated" -echo "file. The changes may be incomplete and that might lead to problems later" -echo "(especially with complex scripts). You may need to apply the changes" -echo "embedded in perl.fixer (and/or perly_c.dif*) by hand." -echo "" - -# Below, we check for various characteristic yaccpar outputs. - -# Test for BSD 4.3 version. -# Also tests for the SunOS 4.0.2 version -egrep 'YYSTYPE[ ]*yyv\[ *YYMAXDEPTH *\]; -short[ ]*yys\[ *YYMAXDEPTH *\] *; -yyps *= *&yys\[ *-1 *\]; -yypv *= *&yyv\[ *-1 *\]; -if *\( *\+\+yyps *>=* *&yys\[ *YYMAXDEPTH *\] *\)' $input >$tmp 2>/dev/null - -set `wc -l $tmp` -if test "$1" = "5"; then - plan="bsd43" -fi - -if test "$plan" = "unknown"; then - # Test for ISC 2.2 version (probably generic SysVr3). -egrep 'YYSTYPE[ ]*yyv\[ *YYMAXDEPTH *\]; -int[ ]*yys\[ *YYMAXDEPTH *\] *; -yyps *= *&yys\[ *-1 *\]; -yypv *= *&yyv\[ *-1 *\]; -if *\( *\+\+yy_ps *>= *&yys\[ *YYMAXDEPTH *\] *\)' $input >$tmp 2>/dev/null - - set `wc -l $tmp` - if test "$1" = "5"; then - plan="isc" - fi -fi - -# ------ - -case "$plan" in - ################################################################## - # The SunOS 4.0.2 version has the comparison fixed already. - # Also added are out of memory checks (makes porting the generated - # code easier) For most systems, it can't hurt. -- TD - "bsd43") - echo "Attempting to patch perly.c to allow dynamic yacc stack allocation" - echo "Assuming bsd4.3 yaccpar" - cat >$tmp <<'END' -/YYSTYPE[ ]*yyv\[ *YYMAXDEPTH *\];/c\ -int yymaxdepth = YYMAXDEPTH;\ -YYSTYPE *yyv; /* where the values are stored */\ -short *yys;\ -short *maxyyps; - -/short[ ]*yys\[ *YYMAXDEPTH *\] *;/d - -/yyps *= *&yys\[ *-1 *\];/d - -/yypv *= *&yyv\[ *-1 *\];/c\ -\ if (!yyv) {\ -\ New(73, yyv, yymaxdepth, YYSTYPE);\ -\ New(73, yys, yymaxdepth, short);\ -\ if ( !yyv || !yys ) {\ -\ yyerror( "out of memory" );\ -\ return(1);\ -\ }\ -\ maxyyps = &yys[yymaxdepth];\ -\ }\ -\ yyps = &yys[-1];\ -\ yypv = &yyv[-1]; - - -/if *( *\+\+yyps *>=* *&yys\[ *YYMAXDEPTH *\] *)/c\ -\ if( ++yyps >= maxyyps ) {\ -\ int tv = yypv - yyv;\ -\ int ts = yyps - yys;\ -\ -\ yymaxdepth *= 2;\ -\ Renew(yyv, yymaxdepth, YYSTYPE);\ -\ Renew(yys, yymaxdepth, short);\ -\ if ( !yyv || !yys ) {\ -\ yyerror( "yacc stack overflow" );\ -\ return(1);\ -\ }\ -\ yyps = yys + ts;\ -\ yypv = yyv + tv;\ -\ maxyyps = &yys[yymaxdepth];\ -\ } - -/yacc stack overflow.*}/d -/yacc stack overflow/,/}/d -END - if sed -f $tmp <$input >$output - then echo "The edit seems to have been applied okay." - else echo "The edit seems to have failed!" - fi - ;; - - ####################################################### - "isc") # Interactive Systems 2.2 version - echo "Attempting to patch perly.c to allow dynamic yacc stack allocation" - echo "Assuming Interactive SysVr3 2.2 yaccpar" - # Easier to simply put whole script here than to modify the - # bsd script with sed. - # Main changes: yaccpar sometimes uses yy_ps and yy_pv - # which are local register variables. - # if(++yyps > YYMAXDEPTH) had opening brace on next line. - # I've kept that brace in along with a call to yyerror if - # realloc fails. (Actually, I just don't know how to do - # multi-line matches in sed.) - cat > $tmp << 'END' -/YYSTYPE[ ]*yyv\[ *YYMAXDEPTH *\];/c\ -int yymaxdepth = YYMAXDEPTH;\ -YYSTYPE *yyv; /* where the values are stored */\ -int *yys;\ -int *maxyyps; - -/int[ ]*yys\[ *YYMAXDEPTH *\] *;/d - -/yyps *= *&yys\[ *-1 *\];/d - -/yypv *= *&yyv\[ *-1 *\];/c\ -\ if (!yyv) {\ -\ New(73, yyv, yymaxdepth, YYSTYPE);\ -\ New(73, yys, yymaxdepth, int);\ -\ maxyyps = &yys[yymaxdepth];\ -\ }\ -\ yyps = &yys[-1];\ -\ yypv = &yyv[-1]; - -/if *( *\+\+yy_ps *>= *&yys\[ *YYMAXDEPTH *\] *)/c\ -\ if( ++yy_ps >= maxyyps ) {\ -\ int tv = yy_pv - yyv;\ -\ int ts = yy_ps - yys;\ -\ -\ yymaxdepth *= 2;\ -\ Renew(yyv, yymaxdepth, YYSTYPE);\ -\ Renew(yys, yymaxdepth, int);\ -\ yy_ps = yyps = yys + ts;\ -\ yy_pv = yypv = yyv + tv;\ -\ maxyyps = &yys[yymaxdepth];\ -\ }\ -\ if (yyv == NULL || yys == NULL) -END - if sed -f $tmp < $input > $output - then echo "The edit seems to have been applied okay." - else echo "The edit seems to have failed!" - fi - ;; - - ###################################################### - # Plan still unknown - *) - echo "Unable to patch perly.c to allow dynamic yacc stack allocation (plan=$plan)" - # just do minimal change to write $output from $input - sed -e 's/Received token/ *** Received token/' $input >$output - ;; -esac - -echo "" -rm -rf $tmp $input diff --git a/perly.h b/perly.h index 54d1372..c780f10 100644 --- a/perly.h +++ b/perly.h @@ -1,72 +1,184 @@ #ifdef PERL_CORE -#define WORD 257 -#define METHOD 258 -#define FUNCMETH 259 -#define THING 260 -#define PMFUNC 261 -#define PRIVATEREF 262 -#define FUNC0SUB 263 -#define UNIOPSUB 264 -#define LSTOPSUB 265 -#define LABEL 266 -#define FORMAT 267 -#define SUB 268 -#define ANONSUB 269 -#define PACKAGE 270 -#define USE 271 -#define WHILE 272 -#define UNTIL 273 -#define IF 274 -#define UNLESS 275 -#define ELSE 276 -#define ELSIF 277 -#define CONTINUE 278 -#define FOR 279 -#define LOOPEX 280 -#define DOTDOT 281 -#define FUNC0 282 -#define FUNC1 283 -#define FUNC 284 -#define UNIOP 285 -#define LSTOP 286 -#define RELOP 287 -#define EQOP 288 -#define MULOP 289 -#define ADDOP 290 -#define DOLSHARP 291 -#define DO 292 -#define HASHBRACK 293 -#define NOAMP 294 -#define LOCAL 295 -#define MY 296 -#define MYSUB 297 -#define COLONATTR 298 -#define PREC_LOW 299 -#define OROP 300 +/* A Bison parser, made by GNU Bison 1.875. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. + + 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 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, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + WORD = 258, + METHOD = 259, + FUNCMETH = 260, + THING = 261, + PMFUNC = 262, + PRIVATEREF = 263, + FUNC0SUB = 264, + UNIOPSUB = 265, + LSTOPSUB = 266, + LABEL = 267, + FORMAT = 268, + SUB = 269, + ANONSUB = 270, + PACKAGE = 271, + USE = 272, + WHILE = 273, + UNTIL = 274, + IF = 275, + UNLESS = 276, + ELSE = 277, + ELSIF = 278, + CONTINUE = 279, + FOR = 280, + LOOPEX = 281, + DOTDOT = 282, + FUNC0 = 283, + FUNC1 = 284, + FUNC = 285, + UNIOP = 286, + LSTOP = 287, + RELOP = 288, + EQOP = 289, + MULOP = 290, + ADDOP = 291, + DOLSHARP = 292, + DO = 293, + HASHBRACK = 294, + NOAMP = 295, + 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 + }; +#endif +#define WORD 258 +#define METHOD 259 +#define FUNCMETH 260 +#define THING 261 +#define PMFUNC 262 +#define PRIVATEREF 263 +#define FUNC0SUB 264 +#define UNIOPSUB 265 +#define LSTOPSUB 266 +#define LABEL 267 +#define FORMAT 268 +#define SUB 269 +#define ANONSUB 270 +#define PACKAGE 271 +#define USE 272 +#define WHILE 273 +#define UNTIL 274 +#define IF 275 +#define UNLESS 276 +#define ELSE 277 +#define ELSIF 278 +#define CONTINUE 279 +#define FOR 280 +#define LOOPEX 281 +#define DOTDOT 282 +#define FUNC0 283 +#define FUNC1 284 +#define FUNC 285 +#define UNIOP 286 +#define LSTOP 287 +#define RELOP 288 +#define EQOP 289 +#define MULOP 290 +#define ADDOP 291 +#define DOLSHARP 292 +#define DO 293 +#define HASHBRACK 294 +#define NOAMP 295 +#define LOCAL 296 +#define MY 297 +#define MYSUB 298 +#define COLONATTR 299 +#define PREC_LOW 300 #define DOROP 301 -#define ANDOP 302 -#define NOTOP 303 -#define ASSIGNOP 304 -#define OROR 305 +#define OROP 302 +#define ANDOP 303 +#define NOTOP 304 +#define ASSIGNOP 305 #define DORDOR 306 -#define ANDAND 307 -#define BITOROP 308 -#define BITANDOP 309 -#define SHIFTOP 310 -#define MATCHOP 311 -#define UMINUS 312 +#define OROR 307 +#define ANDAND 308 +#define BITOROP 309 +#define BITANDOP 310 +#define SHIFTOP 311 +#define MATCHOP 312 #define REFGEN 313 -#define POWOP 314 -#define PREINC 315 -#define PREDEC 316 +#define UMINUS 314 +#define POWOP 315 +#define POSTDEC 316 #define POSTINC 317 -#define POSTDEC 318 -#define ARROW 319 -#endif /* PERL_CORE */ +#define PREDEC 318 +#define PREINC 319 +#define ARROW 320 + -typedef union { + + +#endif /* PERL_CORE */ +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 21 "perly.y" +typedef union YYSTYPE { I32 ival; char *pval; OP *opval; GV *gvval; } YYSTYPE; +/* Line 1248 of yacc.c. */ +#line 173 "perly.h" +# 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 new file mode 100644 index 0000000..4380332 --- /dev/null +++ b/perly.tab @@ -0,0 +1,876 @@ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 2088 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 85 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 61 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 199 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 399 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 320 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +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, 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, 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, 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, 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 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 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned short yyprhs[] = +{ + 0, 0, 3, 6, 11, 12, 13, 18, 19, 20, + 23, 26, 29, 31, 34, 38, 40, 42, 46, 50, + 54, 58, 62, 63, 66, 73, 81, 89, 90, 93, + 102, 111, 122, 132, 141, 153, 157, 158, 160, 161, + 163, 165, 167, 169, 171, 173, 174, 176, 178, 180, + 182, 184, 186, 191, 193, 194, 201, 208, 209, 210, + 211, 213, 214, 216, 217, 220, 222, 225, 227, 229, + 231, 235, 236, 244, 248, 252, 256, 258, 261, 265, + 267, 271, 277, 284, 288, 292, 298, 301, 306, 307, + 313, 315, 317, 323, 328, 334, 339, 345, 352, 358, + 363, 369, 374, 378, 382, 386, 390, 394, 398, 402, + 406, 410, 414, 418, 422, 426, 430, 434, 437, 440, + 443, 446, 449, 452, 455, 458, 462, 465, 470, 474, + 480, 483, 486, 491, 497, 502, 508, 510, 512, 514, + 516, 522, 525, 527, 530, 534, 537, 539, 541, 543, + 545, 547, 549, 556, 562, 567, 573, 575, 577, 581, + 586, 590, 592, 595, 598, 600, 603, 606, 609, 611, + 615, 617, 621, 626, 631, 638, 640, 642, 646, 649, + 653, 656, 658, 660, 662, 663, 665, 666, 668, 671, + 673, 676, 679, 682, 685, 688, 691, 693, 695, 697 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const short yyrhs[] = +{ + 86, 0, -1, 89, 92, -1, 3, 88, 92, 76, + -1, -1, -1, 3, 91, 92, 76, -1, -1, -1, + 92, 107, -1, 92, 93, -1, 106, 96, -1, 98, + -1, 106, 77, -1, 106, 94, 77, -1, 1, -1, + 123, -1, 123, 21, 123, -1, 123, 22, 123, -1, + 123, 19, 123, -1, 123, 20, 101, -1, 123, 26, + 123, -1, -1, 23, 90, -1, 24, 74, 102, 73, + 90, 95, -1, 21, 74, 88, 102, 73, 90, 95, + -1, 22, 74, 88, 105, 73, 90, 95, -1, -1, + 25, 87, -1, 106, 19, 74, 88, 104, 73, 90, + 97, -1, 106, 20, 74, 88, 105, 73, 90, 97, + -1, 106, 26, 43, 88, 138, 74, 102, 73, 90, + 97, -1, 106, 26, 140, 74, 88, 102, 73, 90, + 97, -1, 106, 26, 74, 88, 102, 73, 90, 97, + -1, 106, 26, 74, 88, 103, 77, 104, 77, 103, + 73, 90, -1, 106, 87, 97, -1, -1, 94, -1, + -1, 123, -1, 123, -1, 123, -1, 99, -1, 100, + -1, 101, -1, -1, 13, -1, 108, -1, 111, -1, + 110, -1, 120, -1, 121, -1, 14, 114, 109, 87, + -1, 4, -1, -1, 44, 112, 115, 116, 117, 119, + -1, 15, 112, 115, 116, 117, 119, -1, -1, -1, + -1, 4, -1, -1, 7, -1, -1, 45, 7, -1, + 45, -1, 45, 7, -1, 45, -1, 87, -1, 77, + -1, 17, 4, 77, -1, -1, 18, 112, 122, 4, + 4, 136, 77, -1, 123, 50, 123, -1, 123, 49, + 123, -1, 123, 48, 123, -1, 124, -1, 124, 52, + -1, 124, 52, 133, -1, 133, -1, 33, 145, 124, + -1, 31, 74, 145, 123, 73, -1, 133, 72, 127, + 74, 137, 73, -1, 133, 72, 127, -1, 5, 145, + 136, -1, 6, 145, 74, 137, 73, -1, 33, 136, + -1, 31, 74, 137, 73, -1, -1, 12, 113, 87, + 126, 136, -1, 5, -1, 140, -1, 144, 3, 123, + 77, 76, -1, 140, 75, 123, 78, -1, 133, 72, + 75, 123, 78, -1, 128, 75, 123, 78, -1, 140, + 3, 123, 77, 76, -1, 133, 72, 3, 123, 77, + 76, -1, 128, 3, 123, 77, 76, -1, 133, 72, + 74, 73, -1, 133, 72, 74, 123, 73, -1, 128, + 74, 123, 73, -1, 128, 74, 73, -1, 133, 53, + 133, -1, 133, 67, 133, -1, 133, 36, 133, -1, + 133, 37, 133, -1, 133, 61, 133, -1, 133, 34, + 133, -1, 133, 35, 133, -1, 133, 60, 133, -1, + 133, 59, 133, -1, 133, 28, 133, -1, 133, 58, + 133, -1, 133, 57, 133, -1, 133, 56, 133, -1, + 133, 62, 133, -1, 79, 133, -1, 80, 133, -1, + 63, 133, -1, 64, 133, -1, 133, 69, -1, 133, + 68, -1, 71, 133, -1, 70, 133, -1, 75, 123, + 78, -1, 75, 78, -1, 40, 123, 77, 76, -1, + 40, 77, 76, -1, 16, 113, 116, 117, 87, -1, + 39, 133, -1, 39, 87, -1, 39, 4, 74, 73, + -1, 39, 4, 74, 123, 73, -1, 39, 140, 74, + 73, -1, 39, 140, 74, 123, 73, -1, 129, -1, + 130, -1, 131, -1, 132, -1, 133, 54, 133, 55, + 133, -1, 65, 133, -1, 134, -1, 42, 133, -1, + 74, 123, 73, -1, 74, 73, -1, 140, -1, 144, + -1, 142, -1, 141, -1, 143, -1, 128, -1, 74, + 123, 73, 75, 123, 78, -1, 74, 73, 75, 123, + 78, -1, 141, 75, 123, 78, -1, 141, 3, 123, + 77, 76, -1, 7, -1, 139, -1, 139, 74, 73, + -1, 139, 74, 123, 73, -1, 41, 4, 136, -1, + 27, -1, 27, 133, -1, 51, 124, -1, 32, -1, + 32, 87, -1, 32, 133, -1, 11, 133, -1, 29, + -1, 29, 74, 73, -1, 10, -1, 30, 74, 73, + -1, 30, 74, 123, 73, -1, 8, 74, 133, 73, + -1, 8, 74, 133, 52, 133, 73, -1, 4, -1, + 125, -1, 43, 135, 118, -1, 43, 135, -1, 74, + 123, 73, -1, 74, 73, -1, 140, -1, 142, -1, + 141, -1, -1, 124, -1, -1, 123, -1, 123, 52, + -1, 140, -1, 46, 145, -1, 81, 145, -1, 82, + 145, -1, 83, 145, -1, 38, 145, -1, 84, 145, + -1, 4, -1, 140, -1, 87, -1, 9, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short yyrline[] = +{ + 0, 86, 86, 92, 99, 103, 109, 116, 121, 122, + 124, 132, 134, 135, 144, 150, 152, 154, 156, 158, + 160, 162, 169, 170, 172, 179, 183, 191, 192, 197, + 203, 209, 212, 216, 219, 235, 243, 244, 249, 250, + 254, 259, 263, 267, 271, 277, 278, 282, 284, 286, + 288, 290, 294, 298, 299, 303, 308, 313, 317, 321, + 325, 334, 335, 340, 341, 343, 348, 350, 355, 356, + 359, 364, 363, 370, 372, 374, 376, 380, 382, 384, + 388, 391, 394, 399, 403, 408, 413, 415, 418, 417, + 426, 427, 431, 436, 438, 442, 446, 449, 454, 459, + 462, 467, 471, 477, 479, 481, 485, 487, 489, 491, + 493, 495, 497, 499, 501, 503, 505, 510, 512, 514, + 516, 518, 521, 524, 527, 534, 536, 538, 540, 542, + 548, 550, 552, 560, 569, 573, 581, 582, 583, 584, + 585, 587, 589, 591, 593, 595, 597, 599, 601, 603, + 605, 607, 609, 611, 613, 619, 626, 628, 630, 632, + 635, 638, 641, 643, 645, 647, 649, 651, 654, 656, + 658, 661, 663, 665, 667, 669, 670, 674, 676, 681, + 683, 685, 687, 689, 694, 696, 701, 702, 704, 710, + 714, 718, 722, 726, 730, 734, 739, 741, 743, 746 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE +/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "'{'", "WORD", "METHOD", "FUNCMETH", + "THING", "PMFUNC", "PRIVATEREF", "FUNC0SUB", "UNIOPSUB", "LSTOPSUB", + "LABEL", "FORMAT", "SUB", "ANONSUB", "PACKAGE", "USE", "WHILE", "UNTIL", + "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", "lineseq", "line", "sideff", "else", "cond", "cont", + "loop", "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "mtexpr", + "miexpr", "label", "decl", "format", "formname", "mysubrout", "subrout", + "startsub", "startanonsub", "startformsub", "subname", "proto", + "subattrlist", "myattrlist", "subbody", "package", "use", "@1", "expr", + "argexpr", "listop", "@2", "method", "subscripted", "termbinop", + "termunop", "anonymous", "termdo", "term", "myattrterm", "myterm", + "listexpr", "listexprcom", "my_scalar", "amper", "scalar", "ary", "hsh", + "arylen", "star", "indirob", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const unsigned short yytoknum[] = +{ + 0, 256, 257, 123, 258, 259, 260, 261, 262, 263, + 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 +}; +# 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, 92, + 92, 93, 93, 93, 93, 94, 94, 94, 94, 94, + 94, 94, 95, 95, 95, 96, 96, 97, 97, 98, + 98, 98, 98, 98, 98, 98, 99, 99, 100, 100, + 101, 102, 103, 104, 105, 106, 106, 107, 107, 107, + 107, 107, 108, 109, 109, 110, 111, 112, 113, 114, + 115, 116, 116, 117, 117, 117, 118, 118, 119, 119, + 120, 122, 121, 123, 123, 123, 123, 124, 124, 124, + 125, 125, 125, 125, 125, 125, 125, 125, 126, 125, + 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 130, 130, 130, + 130, 130, 130, 130, 130, 131, 131, 131, 131, 131, + 132, 132, 132, 132, 132, 132, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 134, 134, 135, + 135, 135, 135, 135, 136, 136, 137, 137, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 145, 145, 145 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const unsigned char yyr2[] = +{ + 0, 2, 2, 4, 0, 0, 4, 0, 0, 2, + 2, 2, 1, 2, 3, 1, 1, 3, 3, 3, + 3, 3, 0, 2, 6, 7, 7, 0, 2, 8, + 8, 10, 9, 8, 11, 3, 0, 1, 0, 1, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 4, 1, 0, 6, 6, 0, 0, 0, + 1, 0, 1, 0, 2, 1, 2, 1, 1, 1, + 3, 0, 7, 3, 3, 3, 1, 2, 3, 1, + 3, 5, 6, 3, 3, 5, 2, 4, 0, 5, + 1, 1, 5, 4, 5, 4, 5, 6, 5, 4, + 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 2, 4, 3, 5, + 2, 2, 4, 5, 4, 5, 1, 1, 1, 1, + 5, 2, 1, 2, 3, 2, 1, 1, 1, 1, + 1, 1, 6, 5, 4, 5, 1, 1, 3, 4, + 3, 1, 2, 2, 1, 2, 2, 2, 1, 3, + 1, 3, 4, 4, 6, 1, 1, 3, 2, 3, + 2, 1, 1, 1, 0, 1, 0, 1, 2, 1, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const unsigned char yydefact[] = +{ + 5, 0, 8, 1, 45, 46, 59, 57, 0, 57, + 57, 10, 12, 0, 9, 47, 49, 48, 50, 51, + 54, 0, 0, 71, 0, 15, 4, 175, 0, 0, + 156, 0, 170, 0, 58, 58, 0, 0, 0, 0, + 0, 161, 168, 0, 0, 164, 184, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 0, 27, + 0, 11, 16, 76, 176, 151, 136, 137, 138, 139, + 79, 142, 157, 146, 149, 148, 150, 147, 53, 0, + 60, 61, 70, 0, 61, 8, 196, 199, 198, 197, + 184, 0, 0, 167, 0, 61, 4, 4, 4, 4, + 4, 4, 0, 162, 0, 0, 186, 165, 166, 196, + 185, 86, 197, 0, 194, 175, 131, 130, 146, 0, + 0, 184, 143, 0, 178, 181, 183, 182, 190, 163, + 119, 120, 141, 124, 123, 145, 0, 126, 0, 117, + 118, 191, 192, 193, 195, 0, 35, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 122, 121, 0, 0, 0, + 0, 0, 0, 0, 52, 62, 63, 0, 63, 45, + 84, 186, 0, 88, 63, 38, 0, 0, 0, 0, + 0, 4, 169, 171, 0, 187, 0, 0, 80, 0, + 0, 128, 0, 160, 180, 0, 67, 177, 0, 144, + 125, 28, 19, 20, 40, 17, 18, 21, 75, 74, + 73, 78, 0, 102, 0, 0, 112, 108, 109, 105, + 106, 103, 0, 115, 114, 113, 111, 110, 107, 116, + 104, 0, 90, 0, 0, 83, 91, 158, 0, 0, + 0, 0, 0, 0, 65, 0, 184, 0, 3, 0, + 0, 173, 184, 0, 43, 0, 39, 44, 0, 0, + 41, 0, 0, 189, 37, 42, 0, 0, 16, 0, + 172, 188, 87, 0, 132, 0, 134, 0, 127, 179, + 66, 0, 0, 0, 101, 95, 0, 0, 99, 0, + 0, 186, 159, 0, 93, 0, 154, 0, 64, 69, + 68, 56, 0, 55, 85, 0, 89, 129, 0, 0, + 0, 0, 0, 0, 38, 0, 81, 133, 135, 153, + 0, 98, 140, 0, 100, 94, 0, 96, 155, 92, + 72, 174, 7, 27, 27, 22, 22, 0, 27, 0, + 0, 152, 97, 82, 8, 29, 30, 0, 0, 25, + 26, 0, 33, 0, 27, 45, 23, 0, 27, 0, + 32, 6, 0, 31, 0, 0, 34, 22, 24 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const short yydefgoto[] = +{ + -1, 1, 98, 95, 2, 363, 374, 4, 11, 294, + 379, 71, 156, 12, 295, 284, 287, 289, 297, 285, + 288, 13, 14, 15, 89, 16, 17, 21, 104, 20, + 91, 196, 275, 227, 331, 18, 19, 93, 290, 73, + 74, 282, 265, 75, 76, 77, 78, 79, 80, 81, + 134, 121, 216, 292, 82, 83, 84, 85, 86, 87, + 100 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -337 +static const short yypact[] = +{ + -337, 18, -337, -337, 244, -337, -337, -337, 31, -337, + -337, -337, -337, 314, -337, -337, -337, -337, -337, -337, + 50, 56, -14, -337, 56, -337, -337, -337, 49, 49, + -337, -7, -337, 1619, -337, -337, 10, 25, 47, 53, + -19, 1619, 55, 60, 61, 646, 564, 49, 728, 809, + 138, 1619, -17, 49, 1619, 1619, 1619, 1619, 1619, 1619, + 890, 971, -337, 1619, 1619, 49, 49, 49, 49, 118, + 76, -337, 611, 35, -337, 11, -337, -337, -337, -337, + 1917, -337, 92, 23, 26, -337, -337, 170, -337, 171, + -337, 174, -337, 181, 174, -337, -337, -337, -337, -337, + 1619, 112, 1619, 795, 171, 174, -337, -337, -337, -337, + -337, -337, 116, 1917, 123, 1052, 564, -337, 795, 1745, + 35, -337, 1685, 1619, -337, 117, -337, 795, 22, 125, + 83, 1619, 795, 1133, 153, -337, -337, -337, -337, 35, + 344, 344, 344, 40, 40, 124, 197, -337, -4, 344, + 344, -337, -337, -337, -337, 171, -337, -337, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1214, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, -337, -337, 14, 1295, 1619, + 1619, 1619, 1619, 1619, -337, -337, 157, 201, 157, 62, + -337, 1619, 1791, -337, 157, 1619, 1619, 1619, 1619, 130, + 398, -337, -337, -337, 219, 447, 139, 1619, 35, 1376, + 1457, -337, 140, -337, -337, 301, 207, -337, 1619, 142, + -337, -337, 332, -337, 332, 332, 332, 332, 173, 173, + -337, 1917, 261, -337, 319, 33, 2001, 714, 550, 141, + 229, 1917, 1875, 2016, 2016, 386, 469, 632, 217, 344, + 344, 1619, -337, 1538, 1619, 147, -337, -337, 369, 313, + 91, 323, 109, 500, 220, 13, 1619, 13, -337, 151, + 1619, -337, 1619, 171, -337, 155, 332, -337, 179, 182, + 332, 190, 209, -337, -337, -337, 198, 213, 256, 1619, + -337, -337, -337, 384, -337, 510, -337, 540, -337, -337, + -337, 122, 1619, 224, -337, -337, 1619, 664, -337, 551, + 245, 1619, -337, 226, -337, 227, -337, 231, -337, -337, + -337, -337, 239, -337, -337, 1833, -337, -337, 324, 324, + 324, 324, 1619, 324, 1619, 255, -337, -337, -337, -337, + 264, -337, 1959, 272, -337, -337, 259, -337, -337, -337, + -337, -337, -337, 118, 118, 101, 101, 285, 118, 260, + 324, -337, -337, -337, -337, -337, -337, 324, 290, -337, + -337, 324, -337, 482, 118, 150, -337, 1619, 118, 286, + -337, -337, 293, -337, 324, 324, -337, 101, -337 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const short yypgoto[] = +{ + -337, -337, -11, -98, -337, -121, -337, -94, -337, 363, + -336, -337, 574, -337, -337, -337, 228, -205, 0, 42, + 193, -337, -337, -337, -337, -337, -337, 63, 372, -337, + 391, -74, -165, -337, 149, -337, -337, -337, -13, 5, + -337, -337, -337, -337, -337, -337, -337, -337, 59, -337, + -337, -93, -195, -337, -337, -25, 383, 399, -337, -337, + 3 +}; + +/* 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 +static const short yytable[] = +{ + 72, 199, 69, 99, 99, 296, 279, 200, 205, 206, + 207, 208, 209, 210, 167, 112, 26, 261, 3, 262, + 198, 122, 99, 128, 110, 189, 189, 135, 99, 191, + 380, 204, 101, 277, 117, 22, 130, 126, 223, 283, + 99, 99, 99, 99, 163, 164, 165, 146, 148, 123, + 124, 120, 26, 96, 88, 111, 138, 133, 97, 139, + 90, 398, 65, 92, 65, 66, 67, 102, 151, 152, + 153, 154, 23, 24, 230, 5, 6, 7, 194, 8, + 9, 163, 164, 165, 106, 168, 169, 166, 263, 264, + 329, 122, 103, 203, 345, 65, 220, 190, 190, 107, + 113, 192, 214, 215, 118, 120, 10, 127, -176, -176, + 132, 315, 187, 299, 140, 141, 142, 143, 144, 217, + 225, 108, 149, 150, 377, 378, 356, 109, 218, 114, + 65, 163, 164, 165, 115, 116, 120, 367, 278, 163, + 164, 165, 131, 155, 231, 232, 234, 235, 236, 237, + 238, 239, 240, 157, 242, 244, 245, 163, 164, 165, + 222, 202, 266, 5, 6, 7, 188, 8, 9, 324, + 163, 164, 165, 193, 26, 268, 269, 270, 271, 272, + 273, 195, 392, 332, 293, 197, 201, 326, 215, 336, + 211, 219, 286, 234, 10, 234, 212, 298, 226, 228, + 349, 221, 274, 183, 303, 276, 305, 307, 184, 185, + 186, 65, 302, 187, 310, 311, 308, 312, 364, 365, + 366, 321, 368, 165, 334, 241, 391, 328, 338, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, -2, 163, 164, 165, 317, 384, + 319, 320, 339, 173, 174, 340, 386, 5, 6, 7, + 388, 8, 9, 341, 330, 173, 330, 163, 164, 165, + 229, 343, 337, 396, 397, 158, 159, 160, 161, 183, + 385, 120, 162, 342, 184, 185, 186, 120, 10, 187, + 344, 183, 300, 163, 164, 165, 184, 185, 186, 350, + 351, 187, 357, 358, 163, 164, 165, 359, 215, 163, + 164, 165, 163, 164, 165, 25, 360, 26, 27, 28, + 29, 30, 31, 355, 32, 33, 34, 362, 370, -41, + 35, 286, 373, 36, 37, 38, 39, 383, 313, 335, + 40, 41, 371, 42, 43, 44, 45, 46, 372, 163, + 164, 165, 47, 48, 49, 50, 51, 52, 381, 394, + 53, 163, 164, 165, 387, 54, 395, 163, 164, 165, + 72, 163, 164, 165, 309, 352, 70, 55, 56, 57, + 163, 164, 165, 389, 58, 59, 369, 233, 60, 61, + 323, 62, 314, 63, 64, 65, 66, 67, 68, 25, + 325, 291, 27, 28, 29, 30, 31, 105, 32, 33, + 34, 184, 185, 186, 35, 94, 187, 163, 164, 165, + 171, 172, 173, 174, 0, 41, 333, 42, 43, 44, + 45, 46, 163, 164, 165, 136, 47, 48, 49, 50, + 51, 52, 322, 0, 53, 180, 181, 182, 183, 54, + 0, 137, 0, 184, 185, 186, 0, 346, 187, 0, + 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, + 0, 0, 60, 61, 0, -36, 0, 63, 64, 65, + 66, 67, 68, 25, 0, 0, 27, 28, 29, 30, + 31, 0, 32, 33, 34, 163, 164, 165, 35, 301, + 0, 0, 0, 171, 172, 173, 174, 0, 0, 41, + 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, + 47, 48, 49, 50, 51, 52, 0, 0, 53, 181, + 182, 183, 0, 54, 0, 0, 184, 185, 186, 0, + 0, 187, 0, 0, 0, 55, 56, 57, 163, 164, + 165, 0, 58, 59, 0, -36, 60, 61, 163, 164, + 165, 63, 64, 65, 66, 67, 68, 26, 119, 28, + 29, 30, 31, 97, 32, 33, 34, 327, 0, 0, + 35, 0, 0, 347, 171, -176, 173, 174, 163, 164, + 165, 41, 0, 42, 43, 44, 45, 46, 0, 163, + 164, 165, 47, 48, 49, 50, 51, 52, 0, 0, + 53, 182, 183, 348, 0, 54, 0, 184, 185, 186, + 0, 0, 187, 0, 354, 0, 0, 55, 56, 57, + 158, 159, 160, 161, 58, 59, 0, 162, 60, 61, + 0, 0, 0, 63, 64, 65, 66, 67, 68, 26, + 27, 28, 29, 30, 31, 0, 32, 33, 34, 163, + 164, 165, 35, 0, 0, 0, 171, 172, 173, 174, + 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, + 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, + 0, 0, 53, 182, 183, 0, 0, 54, 0, 184, + 185, 186, 0, 0, 187, 0, 0, 0, 0, 55, + 56, 57, 163, 164, 165, 0, 58, 59, 0, 0, + 60, 61, 0, 0, 0, 63, 64, 65, 66, 67, + 68, 26, 125, 28, 29, 30, 31, 0, 32, 33, + 34, 353, 0, 0, 35, 0, 0, 0, -176, 0, + 173, 174, 0, 0, 0, 41, 0, 42, 43, 44, + 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, + 51, 52, 0, 0, 53, 182, 183, 0, 0, 54, + 0, 184, 185, 186, 0, 0, 187, 0, 0, 0, + 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, + 0, 0, 60, 61, 0, 0, 0, 63, 64, 65, + 66, 67, 68, 27, 28, 29, 30, 31, 0, 32, + 33, 34, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 173, 174, 0, 0, 0, 41, 0, 42, 43, + 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, + 50, 51, 52, 0, 0, 53, 182, 183, 0, 0, + 54, 0, 184, 185, 186, 0, 0, 187, 0, 0, + 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, + 59, 0, 0, 60, 61, 0, 129, 0, 63, 64, + 65, 66, 67, 68, 27, 28, 29, 30, 31, 0, + 32, 33, 34, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, + 43, 44, 45, 46, 0, 0, 0, 0, 47, 48, + 49, 50, 51, 52, 0, 0, 53, 375, 376, 0, + 0, 54, 382, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 55, 56, 57, 0, 0, 390, 0, + 58, 59, 393, 145, 60, 61, 0, 0, 0, 63, + 64, 65, 66, 67, 68, 27, 28, 29, 30, 31, + 0, 32, 33, 34, 0, 0, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, + 42, 43, 44, 45, 46, 0, 0, 0, 0, 47, + 48, 49, 50, 51, 52, 0, 0, 53, 0, 0, + 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, + 0, 58, 59, 0, 0, 60, 61, 0, 0, 147, + 63, 64, 65, 66, 67, 68, 27, 28, 29, 30, + 31, 0, 32, 33, 34, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, + 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, + 47, 48, 49, 50, 51, 52, 0, 0, 53, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, + 0, 0, 58, 59, 0, 213, 60, 61, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 27, 28, 29, + 30, 31, 0, 32, 33, 34, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 0, 42, 43, 44, 45, 46, 0, 0, 0, + 0, 47, 48, 49, 50, 51, 52, 0, 0, 53, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, + 0, 0, 0, 58, 59, 0, 224, 60, 61, 0, + 0, 0, 63, 64, 65, 66, 67, 68, 27, 28, + 29, 30, 31, 0, 32, 33, 34, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 41, 0, 42, 43, 44, 45, 46, 0, 0, + 0, 0, 47, 48, 49, 50, 51, 52, 0, 0, + 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, + 0, 0, 0, 0, 58, 59, 0, 243, 60, 61, + 0, 0, 0, 63, 64, 65, 66, 67, 68, 27, + 28, 29, 30, 31, 0, 32, 33, 34, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 41, 0, 42, 43, 44, 45, 46, 0, + 0, 0, 0, 47, 48, 49, 50, 51, 52, 0, + 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, + 57, 0, 0, 0, 0, 58, 59, 0, 267, 60, + 61, 0, 0, 0, 63, 64, 65, 66, 67, 68, + 27, 28, 29, 30, 31, 0, 32, 33, 34, 0, + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 41, 0, 42, 43, 44, 45, 46, + 0, 0, 0, 0, 47, 48, 49, 50, 51, 52, + 0, 0, 53, 0, 0, 0, 0, 54, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + 56, 57, 0, 0, 0, 0, 58, 59, 0, 304, + 60, 61, 0, 0, 0, 63, 64, 65, 66, 67, + 68, 27, 28, 29, 30, 31, 0, 32, 33, 34, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 42, 43, 44, 45, + 46, 0, 0, 0, 0, 47, 48, 49, 50, 51, + 52, 0, 0, 53, 0, 0, 0, 0, 54, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 56, 57, 0, 0, 0, 0, 58, 59, 0, + 306, 60, 61, 0, 0, 0, 63, 64, 65, 66, + 67, 68, 27, 28, 29, 30, 31, 0, 32, 33, + 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 41, 0, 42, 43, 44, + 45, 46, 0, 0, 0, 0, 47, 48, 49, 50, + 51, 52, 0, 0, 53, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 55, 56, 57, 0, 0, 0, 0, 58, 59, + 0, 318, 60, 61, 0, 0, 0, 63, 64, 65, + 66, 67, 68, 27, 28, 29, 30, 31, 0, 32, + 33, 34, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 41, 0, 42, 43, + 44, 45, 46, 0, 0, 0, 0, 47, 48, 49, + 50, 51, 52, 0, 0, 53, 0, 0, 0, 0, + 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 55, 56, 57, 0, 0, 0, 189, 58, + 59, 0, 0, 60, 61, 0, 0, 0, 63, 64, + 65, 66, 67, 68, -146, -146, -146, -146, 0, 0, + 0, -146, 0, -146, 0, 0, 0, 0, 0, -146, + -146, -146, -146, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -146, -146, -146, 0, -146, -146, -146, + -146, -146, -146, -146, -146, -146, -146, -146, 0, 0, + 0, 0, -146, -146, -146, 0, 0, -146, -146, 0, + 190, 0, -146, -146, -175, -175, -175, -175, 0, 0, + 0, -175, 0, -175, 0, 0, 0, 0, 0, -175, + -175, -175, -175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -175, -175, -175, 0, -175, -175, -175, + -175, -175, -175, -175, -175, -175, -175, -175, 0, 0, + 0, 0, -175, -175, -175, 0, 0, -175, -175, 170, + 0, 0, -175, -175, 0, 171, 172, 173, 174, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 175, 176, 0, 177, 178, 179, + 180, 181, 182, 183, 0, 0, 0, 0, 184, 185, + 186, 170, 0, 187, 281, 0, 0, 171, 172, 173, + 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 175, 176, 0, 177, + 178, 179, 180, 181, 182, 183, 0, 0, 0, 0, + 184, 185, 186, 170, 0, 187, 361, 0, 0, 171, + 172, 173, 174, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, + 316, 177, 178, 179, 180, 181, 182, 183, 0, 0, + 0, 0, 184, 185, 186, 170, 0, 187, 0, 0, + 0, 171, 172, 173, 174, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 175, 176, 0, 177, 178, 179, 180, 181, 182, 183, + 0, 0, 0, 0, 184, 185, 186, 170, 0, 187, + 0, 0, 0, 171, 172, 173, 174, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 176, 0, 177, 178, 179, 180, 181, + 182, 183, 0, 0, 0, 0, 184, 185, 186, -176, + 0, 187, 0, 0, 0, 171, 172, 173, 174, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 171, 172, 173, 174, 0, 0, 0, 177, 178, 179, + 180, 181, 182, 183, 0, 0, 0, 0, 184, 185, + 186, 0, 0, 187, 179, 180, 181, 182, 183, 0, + 0, 0, 0, 184, 185, 186, 0, 0, 187 +}; + +static const short yycheck[] = +{ + 13, 95, 13, 28, 29, 210, 201, 100, 106, 107, + 108, 109, 110, 111, 3, 40, 3, 3, 0, 5, + 94, 46, 47, 48, 43, 3, 3, 52, 53, 3, + 366, 105, 29, 198, 45, 4, 49, 48, 131, 204, + 65, 66, 67, 68, 48, 49, 50, 60, 61, 46, + 47, 46, 3, 4, 4, 74, 53, 74, 9, 54, + 4, 397, 81, 77, 81, 82, 83, 74, 65, 66, + 67, 68, 9, 10, 78, 13, 14, 15, 89, 17, + 18, 48, 49, 50, 74, 74, 75, 52, 74, 75, + 77, 116, 33, 104, 299, 81, 74, 75, 75, 74, + 41, 75, 115, 116, 45, 100, 44, 48, 68, 69, + 51, 78, 72, 211, 55, 56, 57, 58, 59, 116, + 133, 74, 63, 64, 23, 24, 321, 74, 123, 74, + 81, 48, 49, 50, 74, 74, 131, 342, 76, 48, + 49, 50, 4, 25, 155, 158, 159, 160, 161, 162, + 163, 164, 165, 77, 167, 168, 169, 48, 49, 50, + 77, 102, 187, 13, 14, 15, 74, 17, 18, 78, + 48, 49, 50, 3, 3, 188, 189, 190, 191, 192, + 193, 7, 387, 276, 209, 4, 74, 78, 201, 282, + 74, 74, 205, 206, 44, 208, 73, 210, 45, 75, + 78, 76, 45, 62, 217, 4, 219, 220, 67, 68, + 69, 81, 73, 72, 7, 228, 76, 75, 339, 340, + 341, 74, 343, 50, 73, 166, 76, 7, 73, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 0, 48, 49, 50, 261, 370, + 263, 264, 73, 36, 37, 73, 377, 13, 14, 15, + 381, 17, 18, 73, 275, 36, 277, 48, 49, 50, + 73, 73, 283, 394, 395, 19, 20, 21, 22, 62, + 374, 276, 26, 74, 67, 68, 69, 282, 44, 72, + 77, 62, 73, 48, 49, 50, 67, 68, 69, 312, + 76, 72, 76, 76, 48, 49, 50, 76, 321, 48, + 49, 50, 48, 49, 50, 1, 77, 3, 4, 5, + 6, 7, 8, 78, 10, 11, 12, 3, 73, 73, + 16, 344, 73, 19, 20, 21, 22, 77, 77, 280, + 26, 27, 78, 29, 30, 31, 32, 33, 76, 48, + 49, 50, 38, 39, 40, 41, 42, 43, 73, 73, + 46, 48, 49, 50, 74, 51, 73, 48, 49, 50, + 383, 48, 49, 50, 73, 316, 13, 63, 64, 65, + 48, 49, 50, 383, 70, 71, 344, 159, 74, 75, + 77, 77, 73, 79, 80, 81, 82, 83, 84, 1, + 77, 208, 4, 5, 6, 7, 8, 35, 10, 11, + 12, 67, 68, 69, 16, 24, 72, 48, 49, 50, + 34, 35, 36, 37, -1, 27, 277, 29, 30, 31, + 32, 33, 48, 49, 50, 52, 38, 39, 40, 41, + 42, 43, 73, -1, 46, 59, 60, 61, 62, 51, + -1, 52, -1, 67, 68, 69, -1, 73, 72, -1, + -1, 63, 64, 65, -1, -1, -1, -1, 70, 71, + -1, -1, 74, 75, -1, 77, -1, 79, 80, 81, + 82, 83, 84, 1, -1, -1, 4, 5, 6, 7, + 8, -1, 10, 11, 12, 48, 49, 50, 16, 52, + -1, -1, -1, 34, 35, 36, 37, -1, -1, 27, + -1, 29, 30, 31, 32, 33, -1, -1, -1, -1, + 38, 39, 40, 41, 42, 43, -1, -1, 46, 60, + 61, 62, -1, 51, -1, -1, 67, 68, 69, -1, + -1, 72, -1, -1, -1, 63, 64, 65, 48, 49, + 50, -1, 70, 71, -1, 73, 74, 75, 48, 49, + 50, 79, 80, 81, 82, 83, 84, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 77, -1, -1, + 16, -1, -1, 73, 34, 35, 36, 37, 48, 49, + 50, 27, -1, 29, 30, 31, 32, 33, -1, 48, + 49, 50, 38, 39, 40, 41, 42, 43, -1, -1, + 46, 61, 62, 73, -1, 51, -1, 67, 68, 69, + -1, -1, 72, -1, 73, -1, -1, 63, 64, 65, + 19, 20, 21, 22, 70, 71, -1, 26, 74, 75, + -1, -1, -1, 79, 80, 81, 82, 83, 84, 3, + 4, 5, 6, 7, 8, -1, 10, 11, 12, 48, + 49, 50, 16, -1, -1, -1, 34, 35, 36, 37, + -1, -1, -1, 27, -1, 29, 30, 31, 32, 33, + -1, -1, -1, -1, 38, 39, 40, 41, 42, 43, + -1, -1, 46, 61, 62, -1, -1, 51, -1, 67, + 68, 69, -1, -1, 72, -1, -1, -1, -1, 63, + 64, 65, 48, 49, 50, -1, 70, 71, -1, -1, + 74, 75, -1, -1, -1, 79, 80, 81, 82, 83, + 84, 3, 4, 5, 6, 7, 8, -1, 10, 11, + 12, 77, -1, -1, 16, -1, -1, -1, 34, -1, + 36, 37, -1, -1, -1, 27, -1, 29, 30, 31, + 32, 33, -1, -1, -1, -1, 38, 39, 40, 41, + 42, 43, -1, -1, 46, 61, 62, -1, -1, 51, + -1, 67, 68, 69, -1, -1, 72, -1, -1, -1, + -1, 63, 64, 65, -1, -1, -1, -1, 70, 71, + -1, -1, 74, 75, -1, -1, -1, 79, 80, 81, + 82, 83, 84, 4, 5, 6, 7, 8, -1, 10, + 11, 12, -1, -1, -1, 16, -1, -1, -1, -1, + -1, 36, 37, -1, -1, -1, 27, -1, 29, 30, + 31, 32, 33, -1, -1, -1, -1, 38, 39, 40, + 41, 42, 43, -1, -1, 46, 61, 62, -1, -1, + 51, -1, 67, 68, 69, -1, -1, 72, -1, -1, + -1, -1, 63, 64, 65, -1, -1, -1, -1, 70, + 71, -1, -1, 74, 75, -1, 77, -1, 79, 80, + 81, 82, 83, 84, 4, 5, 6, 7, 8, -1, + 10, 11, 12, -1, -1, -1, 16, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 27, -1, 29, + 30, 31, 32, 33, -1, -1, -1, -1, 38, 39, + 40, 41, 42, 43, -1, -1, 46, 363, 364, -1, + -1, 51, 368, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 63, 64, 65, -1, -1, 384, -1, + 70, 71, 388, 73, 74, 75, -1, -1, -1, 79, + 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, -1, 74, 75, -1, -1, 78, + 79, 80, 81, 82, 83, 84, 4, 5, 6, 7, + 8, -1, 10, 11, 12, -1, -1, -1, 16, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, + -1, 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, 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, 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, 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, -1, -1, + -1, -1, 67, 68, 69, -1, -1, 72, 73, 28, + -1, -1, 77, 78, -1, 34, 35, 36, 37, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 52, 53, 54, -1, 56, 57, 58, + 59, 60, 61, 62, -1, -1, -1, -1, 67, 68, + 69, 28, -1, 72, 73, -1, -1, 34, 35, 36, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, 54, -1, 56, + 57, 58, 59, 60, 61, 62, -1, -1, -1, -1, + 67, 68, 69, 28, -1, 72, 73, -1, -1, 34, + 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, -1, -1, + -1, -1, 67, 68, 69, 28, -1, 72, -1, -1, + -1, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 53, 54, -1, 56, 57, 58, 59, 60, 61, 62, + -1, -1, -1, -1, 67, 68, 69, 28, -1, 72, + -1, -1, -1, 34, 35, 36, 37, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 58, 59, 60, + 61, 62, -1, -1, -1, -1, 67, 68, 69, 28, + -1, 72, -1, -1, -1, 34, 35, 36, 37, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 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 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = +{ + 0, 86, 89, 0, 92, 13, 14, 15, 17, 18, + 44, 93, 98, 106, 107, 108, 110, 111, 120, 121, + 114, 112, 4, 112, 112, 1, 3, 4, 5, 6, + 7, 8, 10, 11, 12, 16, 19, 20, 21, 22, + 26, 27, 29, 30, 31, 32, 33, 38, 39, 40, + 41, 42, 43, 46, 51, 63, 64, 65, 70, 71, + 74, 75, 77, 79, 80, 81, 82, 83, 84, 87, + 94, 96, 123, 124, 125, 128, 129, 130, 131, 132, + 133, 134, 139, 140, 141, 142, 143, 144, 4, 109, + 4, 115, 77, 122, 115, 88, 4, 9, 87, 140, + 145, 145, 74, 133, 113, 113, 74, 74, 74, 74, + 43, 74, 140, 133, 74, 74, 74, 87, 133, 4, + 124, 136, 140, 145, 145, 4, 87, 133, 140, 77, + 123, 4, 133, 74, 135, 140, 141, 142, 145, 124, + 133, 133, 133, 133, 133, 73, 123, 78, 123, 133, + 133, 145, 145, 145, 145, 25, 97, 77, 19, 20, + 21, 22, 26, 48, 49, 50, 52, 3, 74, 75, + 28, 34, 35, 36, 37, 53, 54, 56, 57, 58, + 59, 60, 61, 62, 67, 68, 69, 72, 74, 3, + 75, 3, 75, 3, 87, 7, 116, 4, 116, 92, + 136, 74, 133, 87, 116, 88, 88, 88, 88, 88, + 88, 74, 73, 73, 123, 123, 137, 145, 124, 74, + 74, 76, 77, 136, 73, 123, 45, 118, 75, 73, + 78, 87, 123, 101, 123, 123, 123, 123, 123, 123, + 123, 133, 123, 73, 123, 123, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 3, 5, 74, 75, 127, 140, 73, 123, 123, + 123, 123, 123, 123, 45, 117, 4, 117, 76, 137, + 52, 73, 126, 117, 100, 104, 123, 101, 105, 102, + 123, 105, 138, 140, 94, 99, 102, 103, 123, 88, + 73, 52, 73, 123, 73, 123, 73, 123, 76, 73, + 7, 123, 75, 77, 73, 78, 55, 123, 73, 123, + 123, 74, 73, 77, 78, 77, 78, 77, 7, 77, + 87, 119, 136, 119, 73, 133, 136, 87, 73, 73, + 73, 73, 74, 73, 77, 102, 73, 73, 73, 78, + 123, 76, 133, 77, 73, 78, 137, 76, 76, 76, + 77, 73, 3, 90, 90, 90, 90, 102, 90, 104, + 73, 78, 76, 73, 91, 97, 97, 23, 24, 95, + 95, 73, 97, 77, 90, 92, 90, 74, 90, 103, + 97, 76, 102, 97, 73, 73, 90, 90, 95 +}; diff --git a/perly.y b/perly.y index 63210ae..d87c873 100644 --- a/perly.y +++ b/perly.y @@ -1,6 +1,6 @@ /* perly.y * - * Copyright (c) 1991-2002, Larry Wall + * Copyright (c) 1991-2002, 2003, 2004 Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -12,44 +12,11 @@ * All that is gold does not glitter, not all those who wander are lost.' */ -%{ -#include "EXTERN.h" -#define PERL_IN_PERLY_C -#include "perl.h" -#ifdef EBCDIC -#undef YYDEBUG -#endif -#define dep() deprecate("\"do\" to call subroutines") - -/* stuff included here to make perly_c.diff apply better */ - -#define yydebug PL_yydebug -#define yynerrs PL_yynerrs -#define yyerrflag PL_yyerrflag -#define yychar PL_yychar -#define yyval PL_yyval -#define yylval PL_yylval - -struct ysv { - short* yyss; - YYSTYPE* yyvs; - int oldyydebug; - int oldyynerrs; - int oldyyerrflag; - int oldyychar; - YYSTYPE oldyyval; - YYSTYPE oldyylval; -}; - -static void yydestruct(pTHX_ void *ptr); - -%} +/* Make the parser re-entrant. */ -%start prog +%pure_parser -%{ -#if 0 /* get this from perly.h instead */ -%} +%start prog %union { I32 ival; @@ -58,16 +25,6 @@ static void yydestruct(pTHX_ void *ptr); GV *gvval; } -%{ -#endif /* 0 */ - -#ifdef USE_PURE_BISON -#define YYLEX_PARAM (&yychar) -#define yylex yylex_r -#endif - -%} - %token '{' %token WORD METHOD FUNCMETH THING PMFUNC PRIVATEREF @@ -144,9 +101,6 @@ remember: /* NULL */ /* start a full lexical scope */ progstart: { -#if defined(YYDEBUG) && defined(DEBUGGING) - yydebug = (DEBUG_p_TEST); -#endif PL_expect = XSTATE; $$ = block_start(TRUE); } ; @@ -792,13 +746,3 @@ indirob : WORD | PRIVATEREF { $$ = $1; } ; - -%% /* PROGRAM */ - -/* more stuff added to make perly_c.diff easier to apply */ - -#ifdef yyparse -#undef yyparse -#endif -#define yyparse() Perl_yyparse(pTHX) - diff --git a/perly_c.diff b/perly_c.diff deleted file mode 100644 index 1a9c2d7..0000000 --- a/perly_c.diff +++ /dev/null @@ -1,457 +0,0 @@ ---- perly.c.orig Sun Dec 28 01:04:08 2003 -+++ perly.c Sun Dec 28 01:08:37 2003 -@@ -1,5 +1,5 @@ - #ifndef lint --static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; -+/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ - #endif - #define YYBYACC 1 - #line 16 "perly.y" -@@ -9,7 +9,7 @@ - #ifdef EBCDIC - #undef YYDEBUG - #endif --#define dep() deprecate("\"do\" to call subroutines") -+#define dep() deprecate_old("\"do\" to call subroutines") - - /* stuff included here to make perly_c.diff apply better */ - -@@ -50,72 +50,9 @@ - #define yylex yylex_r - #endif - --#line 54 "y.tab.c" --#define WORD 257 --#define METHOD 258 --#define FUNCMETH 259 --#define THING 260 --#define PMFUNC 261 --#define PRIVATEREF 262 --#define FUNC0SUB 263 --#define UNIOPSUB 264 --#define LSTOPSUB 265 --#define LABEL 266 --#define FORMAT 267 --#define SUB 268 --#define ANONSUB 269 --#define PACKAGE 270 --#define USE 271 --#define WHILE 272 --#define UNTIL 273 --#define IF 274 --#define UNLESS 275 --#define ELSE 276 --#define ELSIF 277 --#define CONTINUE 278 --#define FOR 279 --#define LOOPEX 280 --#define DOTDOT 281 --#define FUNC0 282 --#define FUNC1 283 --#define FUNC 284 --#define UNIOP 285 --#define LSTOP 286 --#define RELOP 287 --#define EQOP 288 --#define MULOP 289 --#define ADDOP 290 --#define DOLSHARP 291 --#define DO 292 --#define HASHBRACK 293 --#define NOAMP 294 --#define LOCAL 295 --#define MY 296 --#define MYSUB 297 --#define COLONATTR 298 --#define PREC_LOW 299 --#define OROP 300 --#define DOROP 301 --#define ANDOP 302 --#define NOTOP 303 --#define ASSIGNOP 304 --#define OROR 305 --#define DORDOR 306 --#define ANDAND 307 --#define BITOROP 308 --#define BITANDOP 309 --#define SHIFTOP 310 --#define MATCHOP 311 --#define UMINUS 312 --#define REFGEN 313 --#define POWOP 314 --#define PREINC 315 --#define PREDEC 316 --#define POSTINC 317 --#define POSTDEC 318 --#define ARROW 319 -+#line 54 "perly.c" - #define YYERRCODE 256 --short yylhs[] = { -1, -+static short yylhs[] = { -1, - 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, - 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, - 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, -@@ -137,7 +74,7 @@ - 49, 49, 34, 34, 35, 35, 35, 44, 24, 19, - 20, 21, 22, 23, 36, 36, 36, 36, - }; --short yylen[] = { 2, -+static short yylen[] = { 2, - 2, 4, 0, 0, 4, 0, 0, 2, 2, 2, - 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, - 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, -@@ -159,7 +96,7 @@ - 1, 1, 0, 1, 0, 1, 2, 1, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 1, - }; --short yydefred[] = { 4, -+static short yydefred[] = { 4, - 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, - 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, - 0, 70, 0, 14, 3, 174, 0, 0, 155, 0, -@@ -201,7 +138,7 @@ - 32, 0, 0, 0, 22, 0, 0, 0, 31, 5, - 0, 30, 0, 0, 33, 0, 23, - }; --short yydgoto[] = { 1, -+static short yydgoto[] = { 1, - 10, 11, 20, 103, 19, 2, 94, 373, 97, 362, - 3, 12, 13, 69, 378, 288, 71, 72, 73, 74, - 75, 76, 77, 78, 294, 80, 295, 284, 286, 289, -@@ -209,7 +146,7 @@ - 195, 330, 155, 292, 274, 226, 14, 82, 136, 83, - 84, 85, 86, 15, 16, 17, 18, 92, 281, - }; --short yysindex[] = { 0, -+static short yysindex[] = { 0, - 0, 0, -236, 0, 0, 0, -231, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 0, 0, -211, -209, - 3, 0, -209, 0, 0, 0, -32, -32, 0, 23, -@@ -251,7 +188,7 @@ - 0, 1859, -173, 350, 0, 2213, -173, 360, 0, 0, - 361, 0, 221, 221, 0, -240, 0, - }; --short yyrindex[] = { 0, -+static short yyrindex[] = { 0, - 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -@@ -293,7 +230,7 @@ - 0, 435, 90, 880, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 186, 0, - }; --short yygindex[] = { 0, -+static short yygindex[] = { 0, - 0, 0, 50, 453, 0, 0, -22, 0, 63, 153, - -93, 0, 0, 0, -346, -15, 2480, 0, 1744, 437, - 439, 0, 0, 0, 481, 755, 0, 0, 341, -186, -@@ -302,7 +239,7 @@ - 0, 0, 0, 0, 0, 0, 0, 0, 0, - }; - #define YYTABLESIZE 5051 --short yytable[] = { 70, -+static short yytable[] = { 70, - 198, 300, 75, 64, 60, 280, 228, 60, 279, 64, - 199, 328, 183, 257, 219, 62, 278, 64, 379, 186, - 75, 110, 296, 188, 15, 21, 197, 170, 64, 4, -@@ -810,7 +747,7 @@ - 0, 0, 0, 0, 114, 114, 114, 0, 114, 114, - 114, - }; --short yycheck[] = { 15, -+static short yycheck[] = { 15, - 94, 44, 41, 36, 59, 41, 41, 123, 44, 36, - 99, 59, 40, 40, 40, 59, 200, 36, 365, 91, - 59, 40, 209, 91, 41, 257, 93, 63, 59, 266, -@@ -1324,7 +1261,7 @@ - #endif - #define YYMAXTOKEN 319 - #if YYDEBUG --char *yyname[] = { -+static char *yyname[] = { - "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0, - 0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -@@ -1341,7 +1278,7 @@ - "DORDOR","ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN", - "POWOP","PREINC","PREDEC","POSTINC","POSTDEC","ARROW", - }; --char *yyrule[] = { -+static char *yyrule[] = { - "$accept : prog", - "prog : progstart lineseq", - "block : '{' remember lineseq '}'", -@@ -1557,17 +1494,6 @@ - #define YYMAXDEPTH 500 - #endif - #endif --int yydebug; --int yynerrs; --int yyerrflag; --int yychar; --short *yyssp; --YYSTYPE *yyvsp; --YYSTYPE yyval; --YYSTYPE yylval; --short yyss[YYSTACKSIZE]; --YYSTYPE yyvs[YYSTACKSIZE]; --#define yystacksize YYSTACKSIZE - #line 796 "perly.y" - /* PROGRAM */ - -@@ -1578,7 +1504,7 @@ - #endif - #define yyparse() Perl_yyparse(pTHX) - --#line 1582 "y.tab.c" -+#line 1508 "perly.c" - #define YYABORT goto yyabort - #define YYACCEPT goto yyaccept - #define YYERROR goto yyerrlab -@@ -1586,11 +1512,31 @@ - yyparse() - { - register int yym, yyn, yystate; -+ register short *yyssp; -+ register YYSTYPE *yyvsp; -+ short* yyss; -+ YYSTYPE* yyvs; -+ unsigned yystacksize = YYSTACKSIZE; -+ int retval = 0; - #if YYDEBUG - register char *yys; -- extern char *getenv(); -+#endif -+ -+ struct ysv *ysave; -+#ifdef USE_ITHREADS -+ ENTER; /* force yydestruct() before we return */ -+#endif -+ New(73, ysave, 1, struct ysv); -+ SAVEDESTRUCTOR_X(yydestruct, ysave); -+ ysave->oldyydebug = yydebug; -+ ysave->oldyynerrs = yynerrs; -+ ysave->oldyyerrflag = yyerrflag; -+ ysave->oldyychar = yychar; -+ ysave->oldyyval = yyval; -+ ysave->oldyylval = yylval; - -- if (yys = getenv("YYDEBUG")) -+#if YYDEBUG -+ if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') -@@ -1602,12 +1548,22 @@ - yyerrflag = 0; - yychar = (-1); - -+ /* -+ ** Initialize private stacks (yyparse may be called from an action) -+ */ -+ New(73, yyss, yystacksize, short); -+ New(73, yyvs, yystacksize, YYSTYPE); -+ ysave->yyss = yyss; -+ ysave->yyvs = yyvs; -+ if (!yyvs || !yyss) -+ goto yyoverflow; -+ - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - - yyloop: -- if (yyn = yydefred[yystate]) goto yyreduce; -+ if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -@@ -1617,7 +1573,7 @@ - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; -- printf("yydebug: state %d, reading %d (%s)\n", yystate, -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } - #endif -@@ -1627,12 +1583,24 @@ - { - #if YYDEBUG - if (yydebug) -- printf("yydebug: state %d, shifting to state %d\n", -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); - #endif - if (yyssp >= yyss + yystacksize - 1) - { -+ /* -+ ** reallocate and recover. Note that pointers -+ ** have to be reset, or bad things will happen -+ */ -+ int yyps_index = (yyssp - yyss); -+ int yypv_index = (yyvsp - yyvs); -+ yystacksize += YYSTACKSIZE; -+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -+ ysave->yyss = Renew(yyss, yystacksize, short); -+ if (!yyvs || !yyss) - goto yyoverflow; -+ yyssp = yyss + yyps_index; -+ yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; -@@ -1648,14 +1616,14 @@ - } - if (yyerrflag) goto yyinrecovery; - #ifdef lint -- goto yynewerror; -+ - #endif --yynewerror: -+ - yyerror("syntax error"); - #ifdef lint -- goto yyerrlab; -+ - #endif --yyerrlab: -+ - ++yynerrs; - yyinrecovery: - if (yyerrflag < 3) -@@ -1668,12 +1636,24 @@ - { - #if YYDEBUG - if (yydebug) -- printf("yydebug: state %d, error recovery shifting\ -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); - #endif - if (yyssp >= yyss + yystacksize - 1) - { -+ /* -+ ** reallocate and recover. Note that pointers -+ ** have to be reset, or bad things will happen -+ */ -+ int yyps_index = (yyssp - yyss); -+ int yypv_index = (yyvsp - yyvs); -+ yystacksize += YYSTACKSIZE; -+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -+ ysave->yyss = Renew(yyss, yystacksize, short); -+ if (!yyvs || !yyss) - goto yyoverflow; -+ yyssp = yyss + yyps_index; -+ yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; -@@ -1683,7 +1663,7 @@ - { - #if YYDEBUG - if (yydebug) -- printf("yydebug: error recovery discarding state %d\n", -+ PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", - *yyssp); - #endif - if (yyssp <= yyss) goto yyabort; -@@ -1701,7 +1681,7 @@ - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; -- printf("yydebug: state %d, error recovery discards token %d (%s)\n", -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } - #endif -@@ -1711,7 +1691,7 @@ - yyreduce: - #if YYDEBUG - if (yydebug) -- printf("yydebug: state %d, reducing by rule %d (%s)\n", -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); - #endif - yym = yylen[yyn]; -@@ -2579,7 +2559,7 @@ - #line 793 "perly.y" - { yyval.opval = yyvsp[0].opval; } - break; --#line 2583 "y.tab.c" -+#line 2563 "perly.c" - } - yyssp -= yym; - yystate = *yyssp; -@@ -2589,7 +2569,7 @@ - { - #if YYDEBUG - if (yydebug) -- printf("yydebug: after reduction, shifting from state 0 to\ -+ PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ - state %d\n", YYFINAL); - #endif - yystate = YYFINAL; -@@ -2604,7 +2584,7 @@ - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; -- printf("yydebug: state %d, reading %d (%s)\n", -+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", - YYFINAL, yychar, yys); - } - #endif -@@ -2619,20 +2599,50 @@ - yystate = yydgoto[yym]; - #if YYDEBUG - if (yydebug) -- printf("yydebug: after reduction, shifting from state %d \ -+ PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \ - to state %d\n", *yyssp, yystate); - #endif - if (yyssp >= yyss + yystacksize - 1) - { -+ /* -+ ** reallocate and recover. Note that pointers -+ ** have to be reset, or bad things will happen -+ */ -+ int yyps_index = (yyssp - yyss); -+ int yypv_index = (yyvsp - yyvs); -+ yystacksize += YYSTACKSIZE; -+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); -+ ysave->yyss = Renew(yyss, yystacksize, short); -+ if (!yyvs || !yyss) - goto yyoverflow; -+ yyssp = yyss + yyps_index; -+ yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; - yyoverflow: -- yyerror("yacc stack overflow"); -+ yyerror("Out of memory for yacc stack"); - yyabort: -- return (1); -+ retval = 1; - yyaccept: -- return (0); -+#ifdef USE_ITHREADS -+ LEAVE; /* force yydestruct() before we return */ -+#endif -+ return retval; -+} -+ -+static void -+yydestruct(pTHX_ void *ptr) -+{ -+ struct ysv* ysave = (struct ysv*)ptr; -+ if (ysave->yyss) Safefree(ysave->yyss); -+ if (ysave->yyvs) Safefree(ysave->yyvs); -+ yydebug = ysave->oldyydebug; -+ yynerrs = ysave->oldyynerrs; -+ yyerrflag = ysave->oldyyerrflag; -+ yychar = ysave->oldyychar; -+ yyval = ysave->oldyyval; -+ yylval = ysave->oldyylval; -+ Safefree(ysave); - } diff --git a/perlyline.pl b/perlyline.pl deleted file mode 100644 index f360fb4..0000000 --- a/perlyline.pl +++ /dev/null @@ -1,11 +0,0 @@ -$line = 1; -while (<>) - { - $line++; - # 1st correct #line directives for perly.c itself - s/^(#line\s+)\d+(\s*"perly\.c"\s*)$/$1$line$2/; - # now add () round things gcc dislikes - s/if \(yyn = yydefred\[yystate\]\)/if ((yyn = yydefred[yystate]))/; - s/if \(yys = getenv\("YYDEBUG"\)\)/if ((yys = getenv("YYDEBUG")))/; - print; - } diff --git a/regen_perly.pl b/regen_perly.pl new file mode 100644 index 0000000..da917e0 --- /dev/null +++ b/regen_perly.pl @@ -0,0 +1,188 @@ +#!/usr/bin/perl +# +# regen_perly.pl, DAPM 12-Feb-04 +# +# Copyright (c) 2004 Larry Wall +# +# Given an input file perly.y, run bison on it and produce +# the following output files: +# +# perly.h standard bison header file with minor doctoring of +# #line directives plus adding a #ifdef PERL_CORE +# +# perly.tab the parser table C definitions extracted from the bison output +# +# perly.act the action case statements extracted from the bison output +# +# Note that perly.c is *not* regenerated - this is now a static file which +# is not dependent on perly.y any more. +# +# If a filename of the form foo.y is given on the command line, then +# this is used instead as the basename for all the files mentioned +# above. +# +# Note that temporary files of the form perlytmp.h and perlytmp.c are +# created and then deleted during this process +# +# Note also that this script is intended to be run on a UNIX system; +# it may work elsewhere but no specific attempt has been made to make it +# portable. + +sub usage { die "usage: $0 [ -b bison_executable ] [ file.y ]\n" } + +use warnings; +use strict; + +my $bison = 'bison'; + +if (@ARGV >= 2 and $ARGV[0] eq '-b') { + shift; + $bison = shift; +} + +my $y_file = shift || 'perly.y'; + +usage unless @ARGV==0 && $y_file =~ /\.y$/; + +(my $h_file = $y_file) =~ s/\.y$/.h/; +(my $act_file = $y_file) =~ s/\.y$/.act/; +(my $tab_file = $y_file) =~ s/\.y$/.tab/; +(my $tmpc_file = $y_file) =~ s/\.y$/tmp.c/; +(my $tmph_file = $y_file) =~ s/\.y$/tmp.h/; + +# the yytranslate[] table generated by bison is ASCII/EBCDIC sensitive + +die "$0: must be run on an ASCII system\n" unless ord 'A' == 65; + +# check for correct version number. The constraints are: +# * must be >= 1.24 to avoid licensing issues. +# * it must generate the yystos[] table. Version 1.28 doesn't generate +# this; 1.35+ does +# * Must produce output which is extractable by the regexes below +# * Must produce the right values. +# These last two contstraints may well be met by earlier versions, but +# I simply haven't tested them yet. If it works for you, then modify +# the test below to allow that version too. DAPM Feb 04. + +my $version = `$bison -V`; +unless ($version =~ /\b1\.875\b/) { die <; } +die "failed to read $tmpc_file: length mismatch\n" + unless length $clines == -s $tmpc_file; +close CTMPFILE; + +my ($actlines, $tablines) = extract($clines); + +chmod 0644, $act_file; +open ACTFILE, ">$act_file" or die "can't open $act_file: $!\n"; +print ACTFILE $actlines; +close ACTFILE; +chmod 0444, $act_file; + +chmod 0644, $tab_file; +open TABFILE, ">$tab_file" or die "can't open $tab_file: $!\n"; +print TABFILE $tablines; +close TABFILE; +chmod 0444, $tab_file; + +unlink $tmpc_file; + +# Wrap PERL_CORE round the symbol definitions. Also, the +# C<#line 123 "perlytmp.h"> gets picked up by make depend, so change it. + +open TMPH_FILE, $tmph_file or die "Can't open $tmph_file: $!\n"; +chmod 0644, $h_file; +open H_FILE, ">$h_file" or die "Can't open $h_file: $!\n"; +my $endcore_done = 0; +while () { + print H_FILE "#ifdef PERL_CORE\n" if $. == 1; + if (!$endcore_done and /YYSTYPE_IS_DECLARED/) { + print H_FILE "#endif /* PERL_CORE */\n"; + $endcore_done = 1; + } + s/"perlytmp.h"/"perly.h"/; + print H_FILE $_; +} +close TMPH_FILE; +close H_FILE; +chmod 0444, $h_file; +unlink $tmph_file; + +print "rebuilt: $h_file $tab_file $act_file\n"; + +exit 0; + + +sub extract { + my $clines = shift; + my $tablines; + my $actlines; + + $clines =~ m@ + (?: + ^/* YYFINAL[^\n]+\n #optional comment + )? + \# \s* define \s* YYFINAL # first #define + .*? # other defines + most tables + yystos\[\]\s*= # start of last table + .*? + }\s*; # end of last table + @xms + or die "Can't extract tables from $tmpc_file\n"; + $tablines = $&; + + + $clines =~ m@ + switch \s* \( \s* \w+ \s* \) \s* { \s* + ( + case \s* \d+ \s* : \s* + \#line [^\n]+"perly\.y" + .*? + ) + } + \s* + ( \s* /\* .*? \*/ \s* )* # optional C-comments + \s* + ( + \#line[^\n]+\.c" + | + \#line[^\n]+\.simple" + ) + @xms + or die "Can't extract actions from $tmpc_file\n"; + $actlines = $1; + + return $actlines. "\n", $tablines. "\n"; +} + + + + + +sub my_system { + system(@_); + if ($? == -1) { + die "failed to execute comamnd '@_': $!\n"; + } + elsif ($? & 127) { + die sprintf "command '@_' died with signal %d\n", + ($? & 127); + } + elsif ($? >> 8) { + die sprintf "command '@_' exited with value %d\n", $? >> 8; + } +} diff --git a/sv.c b/sv.c index 1b8760a..98f19c5 100644 --- a/sv.c +++ b/sv.c @@ -11468,14 +11468,6 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags, PL_last_swash_tmps = (U8*)NULL; PL_last_swash_slen = 0; - /* perly.c globals */ - PL_yydebug = proto_perl->Iyydebug; - PL_yynerrs = proto_perl->Iyynerrs; - PL_yyerrflag = proto_perl->Iyyerrflag; - PL_yychar = proto_perl->Iyychar; - PL_yyval = proto_perl->Iyyval; - PL_yylval = proto_perl->Iyylval; - PL_glob_index = proto_perl->Iglob_index; PL_srand_called = proto_perl->Isrand_called; PL_hash_seed = proto_perl->Ihash_seed; diff --git a/toke.c b/toke.c index 1ca076e..627468c 100644 --- a/toke.c +++ b/toke.c @@ -2189,6 +2189,11 @@ Perl_yylex_r(pTHX_ YYSTYPE *lvalp, int *lcharp) Perl_croak(aTHX_ "panic: YYMAXLEVEL"); r = Perl_yylex(aTHX); +# ifdef EBCDIC + if (r >= 0 && r < 255) { + r = NATIVE_TO_ASCII(r); + } +# endif if (yyactlevel > 0) yyactlevel--; diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 047e30a..63f9476 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -1224,12 +1224,6 @@ regen_headers : $(INSTPERL) regcomp.pl $(INSTPERL) warnings.pl -# VMS uses modified perly.[ch] with tags for globaldefs if using DEC compiler -perly.c : [.vms]perly_c.vms - Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) -perly.h : [.vms]perly_h.vms - Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) - .ifdef LINK_ONLY .else perly$(O) : perly.c, perly.h, $(h) diff --git a/vms/perly_c.vms b/vms/perly_c.vms deleted file mode 100644 index 70a8583..0000000 --- a/vms/perly_c.vms +++ /dev/null @@ -1,2658 +0,0 @@ -/* Postprocessed by vms_yfix.pl 1.11 to add VMS declarations of globals */ -#ifndef lint -/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ -#endif -#define YYBYACC 1 -#line 16 "perly.y" -#include "EXTERN.h" -#define PERL_IN_PERLY_C -#include "perl.h" -#ifdef EBCDIC -#undef YYDEBUG -#endif -#define dep() deprecate_old("\"do\" to call subroutines") - -/* stuff included here to make perly_c.diff apply better */ - -#define yydebug PL_yydebug -#define yynerrs PL_yynerrs -#define yyerrflag PL_yyerrflag -#define yychar PL_yychar -#define yyval PL_yyval -#define yylval PL_yylval - -struct ysv { - short* yyss; - YYSTYPE* yyvs; - int oldyydebug; - int oldyynerrs; - int oldyyerrflag; - int oldyychar; - YYSTYPE oldyyval; - YYSTYPE oldyylval; -}; - -static void yydestruct(pTHX_ void *ptr); - -#line 51 "perly.y" -#if 0 /* get this from perly.h instead */ -#line 54 "perly.y" -typedef union { - I32 ival; - char *pval; - OP *opval; - GV *gvval; -} YYSTYPE; -#line 62 "perly.y" -#endif /* 0 */ - -#ifdef USE_PURE_BISON -#define YYLEX_PARAM (&yychar) -#define yylex yylex_r -#endif - -#line 54 "perly.c" -#define YYERRCODE 256 -static short yylhs[] = { -1, - 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, - 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, - 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, - 13, 13, 13, 13, 27, 27, 28, 28, 29, 30, - 31, 32, 33, 54, 54, 1, 1, 1, 1, 1, - 2, 39, 39, 47, 55, 3, 4, 5, 40, 41, - 41, 45, 45, 45, 46, 46, 42, 42, 56, 58, - 57, 16, 16, 16, 16, 26, 26, 26, 37, 37, - 37, 37, 37, 37, 37, 37, 59, 37, 38, 38, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, - 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, - 53, 53, 53, 53, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 48, 48, 49, 49, 49, - 49, 49, 34, 34, 35, 35, 35, 44, 24, 19, - 20, 21, 22, 23, 36, 36, 36, 36, -}; -static short yylen[] = { 2, - 2, 4, 0, 0, 4, 0, 0, 2, 2, 2, - 1, 2, 3, 1, 1, 3, 3, 3, 3, 3, - 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, - 9, 8, 11, 3, 0, 1, 0, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, - 4, 1, 0, 6, 6, 0, 0, 0, 1, 0, - 1, 0, 2, 1, 2, 1, 1, 1, 3, 0, - 7, 3, 3, 3, 1, 2, 3, 1, 3, 5, - 6, 3, 3, 5, 2, 4, 0, 5, 1, 1, - 5, 4, 5, 4, 5, 6, 5, 4, 5, 4, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 4, 3, 5, 2, 2, - 4, 5, 4, 5, 1, 1, 1, 1, 5, 2, - 1, 2, 3, 2, 1, 1, 1, 1, 1, 1, - 6, 5, 4, 5, 1, 1, 3, 4, 3, 1, - 2, 2, 1, 2, 2, 2, 1, 3, 1, 3, - 4, 4, 6, 1, 1, 3, 2, 3, 2, 1, - 1, 1, 0, 1, 0, 1, 2, 1, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 1, -}; -static short yydefred[] = { 4, - 0, 7, 0, 45, 58, 56, 0, 56, 56, 8, - 46, 9, 11, 48, 0, 47, 49, 50, 0, 0, - 0, 70, 0, 14, 3, 174, 0, 0, 155, 0, - 169, 0, 57, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 147, 149, 0, 0, 0, 0, - 175, 141, 135, 136, 137, 138, 52, 0, 59, 0, - 69, 0, 0, 7, 195, 198, 197, 196, 0, 0, - 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, - 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, - 85, 0, 193, 0, 130, 0, 0, 0, 0, 0, - 0, 0, 180, 182, 181, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 0, 190, - 191, 192, 194, 0, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 120, 121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 0, 51, 61, 0, 0, 0, 0, 83, 0, - 0, 87, 0, 0, 0, 0, 0, 0, 0, 3, - 168, 170, 0, 0, 0, 0, 0, 0, 0, 127, - 0, 159, 179, 0, 0, 176, 0, 0, 124, 27, - 0, 0, 19, 0, 0, 0, 0, 0, 72, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 0, 0, 90, 0, - 0, 101, 0, 0, 0, 0, 0, 0, 0, 157, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 172, - 0, 0, 0, 42, 0, 43, 0, 0, 0, 0, - 188, 0, 0, 36, 41, 0, 0, 0, 171, 187, - 86, 0, 131, 0, 133, 0, 126, 178, 65, 0, - 0, 0, 0, 98, 0, 0, 0, 0, 100, 94, - 0, 92, 0, 153, 0, 158, 63, 68, 67, 55, - 0, 54, 84, 0, 88, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 132, 134, 152, 0, 0, - 0, 99, 93, 0, 97, 95, 154, 91, 71, 173, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 96, 81, 7, 28, 29, 0, 0, 24, 25, 0, - 32, 0, 0, 0, 22, 0, 0, 0, 31, 5, - 0, 30, 0, 0, 33, 0, 23, -}; -static short yydgoto[] = { 1, - 10, 11, 20, 103, 19, 2, 94, 373, 97, 362, - 3, 12, 13, 69, 378, 288, 71, 72, 73, 74, - 75, 76, 77, 78, 294, 80, 295, 284, 286, 289, - 297, 285, 287, 121, 215, 99, 81, 260, 88, 90, - 195, 330, 155, 292, 274, 226, 14, 82, 136, 83, - 84, 85, 86, 15, 16, 17, 18, 92, 281, -}; -static short yysindex[] = { 0, - 0, 0, -236, 0, 0, 0, -231, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 0, 0, -211, -209, - 3, 0, -209, 0, 0, 0, -32, -32, 0, 23, - 0, 2213, 0, 0, 28, 30, 32, 33, -18, 2213, - 42, 52, 64, 1004, 940, -32, 1149, 1268, -168, 2213, - 174, -32, 2213, 2213, 2213, 2213, 2213, 2213, 1328, 1413, - 0, 2213, 2213, -32, -32, -32, -32, -173, 0, 607, - 404, -27, -71, -67, 0, 0, -12, 68, 66, 94, - 0, 0, 0, 0, 0, 0, 0, 27, 0, -108, - 0, -100, -108, 0, 0, 0, 0, 0, 2213, 122, - 2213, 743, 27, -108, 0, 0, 0, 0, 0, 0, - 125, 404, 135, 1454, 940, 0, 743, 0, -71, 94, - 0, 2213, 0, 140, 0, 743, -25, 38, -8, 2213, - 743, 1562, 0, 0, 0, -114, 0, 94, 245, 245, - 245, -123, -123, 106, -34, 0, -53, 245, 245, 0, - 0, 0, 0, 27, 0, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 0, 0, - -26, 2213, 1723, 2213, 2213, 2213, 2213, 2213, 2213, 1796, - 0, 2213, 0, 0, -90, -48, -90, 285, 0, 2213, - -35, 0, -90, 2213, 2213, 2213, 2213, 182, 1859, 0, - 0, 0, -2, -42, 180, 2213, 94, 1932, 2004, 0, - 102, 0, 0, 13, -21, 0, 2213, 142, 0, 0, - 184, 184, 0, 184, 184, 184, -51, -51, 0, 296, - 743, 386, 683, -158, 404, 643, 1034, 1034, 1067, 1345, - 960, -112, 245, 245, 2213, 0, 2140, 2213, 0, 216, - 120, 0, 40, 127, 123, 214, 132, 217, 136, 0, - 77, 404, -3, -47, 2213, -47, 0, 220, 2213, 0, - 2213, 27, 184, 0, 224, 0, 240, 184, 244, 246, - 0, 261, 607, 0, 0, 267, 227, 2213, 0, 0, - 0, 88, 0, 95, 0, 98, 0, 0, 0, 236, - 2213, 2213, 139, 0, 117, 239, 2213, 194, 0, 0, - 206, 0, 213, 0, 218, 0, 0, 0, 0, 0, - 293, 0, 0, 585, 0, 0, 221, 221, 221, 221, - 2213, 221, 2213, 325, 0, 0, 0, 0, 243, 703, - 255, 0, 0, 327, 0, 0, 0, 0, 0, 0, - 0, -173, -173, -240, -240, 351, -173, 332, 221, 0, - 0, 0, 0, 0, 0, 221, 354, 0, 0, 221, - 0, 1859, -173, 350, 0, 2213, -173, 360, 0, 0, - 361, 0, 221, 221, 0, -240, 0, -}; -static short yyrindex[] = { 0, - 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 2282, 0, 0, 2401, 2566, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, -16, - 1607, 2620, 2673, 2721, 0, 0, 2769, 2856, 0, -38, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, - 0, 0, -54, 0, 0, 0, 0, 0, 2566, 0, - 0, 4274, 0, -115, 0, 0, 0, 0, 0, 0, - 0, 1886, 0, 0, 374, 0, 4339, 467, 532, 3224, - 0, 0, 0, 3005, 0, 4394, 2673, 0, 0, 2566, - 4404, 0, 0, 0, 0, 3055, 0, 3459, 3695, 3746, - 3801, 3582, 3630, 3127, 0, 0, 0, 3866, 3914, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3175, 0, 0, -43, 0, -43, 880, 0, 374, - 0, 0, 303, 390, 0, 0, 0, 0, 389, 0, - 0, 0, 0, 422, 0, 0, 3510, 0, 0, 0, - 0, 0, 0, 0, 3291, 0, 0, 3346, 0, 0, - 8, 12, 0, 61, 62, 65, 1479, 1642, 0, 2274, - 4445, 4493, 4120, 4168, 2421, 0, 4697, 4745, 4630, 4591, - 4543, 4219, 4000, 4055, 0, 0, 0, 0, 0, 3411, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2474, -30, 0, 405, 0, 0, 0, 0, 0, - 2566, 0, 78, 0, 0, 0, 0, 432, 0, 0, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 415, 0, 0, 0, 0, 0, 0, 1201, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 90, 186, 186, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 90, 880, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 186, 0, -}; -static short yygindex[] = { 0, - 0, 0, 50, 453, 0, 0, -22, 0, 63, 153, - -93, 0, 0, 0, -346, -15, 2480, 0, 1744, 437, - 439, 0, 0, 0, 481, 755, 0, 0, 341, -186, - 124, 170, 313, -88, -183, 49, 0, 0, 0, 498, - -66, 247, 225, 0, -156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -#define YYTABLESIZE 5051 -static short yytable[] = { 70, - 198, 300, 75, 64, 60, 280, 228, 60, 279, 64, - 199, 328, 183, 257, 219, 62, 278, 64, 379, 186, - 75, 110, 296, 188, 15, 21, 197, 170, 64, 4, - 5, 6, 129, 7, 8, 376, 377, 203, 299, 229, - 276, 222, 15, 145, 147, 87, 282, 89, 18, 397, - 221, 185, 39, 308, 75, 187, 160, 22, 23, 160, - 9, 91, 101, 184, 258, 186, 18, 105, 60, 106, - 39, 107, 108, 160, 160, 25, 100, 68, 160, 62, - 319, 113, 204, 205, 206, 207, 208, 209, 130, 26, - 25, 114, 64, 122, 123, 182, 255, 185, 213, 214, - 137, 16, 17, 115, 154, 20, 116, 190, 160, 125, - 189, 344, 150, 151, 152, 153, 224, 326, 38, 16, - 17, 40, 26, 20, 191, 26, 26, 26, 345, 26, - 167, 26, 26, 354, 26, 346, 38, 192, 347, 15, - 231, 232, 234, 235, 236, 237, 238, 239, 26, 25, - 193, 194, 177, 26, 366, 178, 196, 352, 179, 180, - 181, 200, 220, 216, 210, 202, 261, 263, 264, 265, - 266, 267, 268, 269, 271, 211, 167, 168, 318, 218, - 26, 321, 60, 225, 214, 21, 331, 298, 283, 232, - 323, 232, 335, 293, 325, 181, 227, 351, 177, 391, - 302, 178, 304, 306, 179, 180, 181, 273, 275, 64, - 66, 310, 26, 132, 26, 26, 230, 64, 21, 320, - 301, 21, 21, 21, 95, 21, 307, 21, 21, 96, - 21, 256, 311, 75, 75, 75, 75, 65, 309, 313, - 75, 315, 316, 60, 21, 164, 161, 162, 163, 21, - 163, 165, 166, 167, 168, 317, 327, 161, 162, 163, - 333, 75, 75, 75, 337, 161, 162, 163, 169, 171, - 172, 173, 174, 175, 176, 177, 21, 109, 178, 384, - 338, 179, 180, 181, 339, 343, 340, 160, 160, 160, - 160, 161, 162, 163, 160, 349, 160, 161, 162, 163, - 341, 214, 160, 160, 160, 160, 322, 342, 21, 324, - 21, 21, 161, 162, 163, 160, 160, 160, 355, 160, - 160, 160, 160, 160, 160, 160, 160, 283, 348, 160, - 356, 353, 160, 160, 160, 370, 329, 357, 329, 161, - 162, 163, 358, 361, 336, 26, 26, 26, 26, 26, - 26, 359, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 369, 70, 372, 26, 26, - 1, 26, 26, 26, 26, 26, 161, 162, 163, 371, - 26, 26, 26, 26, 26, 26, 26, 161, 162, 163, - 382, 380, 26, 386, 161, 162, 163, 161, 162, 163, - 393, 394, 26, 44, 26, 26, 44, 44, 44, 277, - 44, 53, 44, 44, 185, 44, 161, 162, 163, 161, - 162, 163, 161, 162, 163, 62, 161, 162, 163, 44, - 37, 161, 162, 163, 44, 161, 162, 163, 161, 162, - 163, 21, 21, 21, 21, 21, 21, 35, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 44, 186, 183, 21, 21, 170, 21, 21, 21, - 21, 21, 40, 37, 390, 35, 21, 21, 21, 21, - 21, 21, 21, 161, 162, 163, 104, 134, 21, 135, - 363, 364, 365, 44, 367, 79, 44, 233, 21, 195, - 21, 21, 195, 195, 195, 388, 195, 174, 195, 195, - 174, 195, 368, 161, 162, 163, 161, 162, 163, 290, - 93, 383, 332, 0, 174, 174, 0, 0, 385, 174, - 195, 0, 387, 0, 0, 161, 162, 163, 161, 162, - 163, 0, 161, 162, 163, 395, 396, 0, 0, 0, - 4, 5, 6, 0, 7, 8, 0, 195, 178, 174, - 0, 179, 180, 181, 196, 0, 0, 196, 196, 196, - 0, 196, 145, 196, 196, 145, 196, 0, 0, 0, - 0, 9, 165, 166, 167, 168, 374, 375, 0, 145, - 145, 381, 195, 0, 145, 196, 0, 0, 0, 0, - 171, 172, 173, 174, 175, 176, 177, 389, 0, 178, - 0, 392, 179, 180, 181, 4, 5, 6, 0, 7, - 8, 0, 0, 0, 145, 360, 44, 44, 44, 44, - 44, 44, 0, 44, 44, 44, 0, 0, 0, 44, - 0, 0, 44, 44, 44, 44, 9, 170, 0, 44, - 44, 0, 44, 44, 44, 44, 44, 196, 0, 0, - 0, 44, 44, 44, 44, 44, 44, 0, 0, 0, - 0, 0, 165, 44, 167, 168, 0, 0, 0, 0, - 0, 0, 0, 44, 164, 44, 44, 0, 0, 0, - 165, 166, 167, 168, 0, 176, 177, 0, 0, 178, - 312, 0, 179, 180, 181, 170, 0, 169, 171, 172, - 173, 174, 175, 176, 177, 0, 0, 178, 0, 0, - 179, 180, 181, 195, 195, 195, 195, 195, 0, 195, - 195, 195, 0, 0, 0, 195, 0, 0, 174, 174, - 174, 174, 0, 0, 0, 174, 195, 174, 195, 195, - 195, 195, 195, 174, 174, 174, 174, 195, 195, 195, - 195, 195, 195, 0, 0, 170, 174, 174, 174, 195, - 174, 174, 174, 174, 174, 174, 174, 174, 0, 195, - 174, 195, 195, 174, 174, 174, 0, 0, 196, 196, - 196, 196, 196, 0, 196, 196, 196, 0, 0, 120, - 196, 0, 0, 145, 145, 145, 145, 138, 0, 0, - 145, 196, 145, 196, 196, 196, 196, 196, 145, 145, - 145, 145, 196, 196, 196, 196, 196, 196, 0, 0, - 0, 145, 145, 145, 196, 145, 145, 145, 145, 145, - 145, 145, 145, 0, 196, 145, 196, 196, 145, 145, - 145, 54, 0, 120, 64, 66, 52, 0, 59, 0, - 67, 63, 0, 62, 0, 164, 0, 0, 0, 0, - 0, 165, 166, 167, 168, 0, 217, 61, 156, 157, - 158, 159, 65, 0, 120, 160, 0, 0, 169, 171, - 172, 173, 174, 175, 176, 177, 0, 0, 178, 0, - 0, 179, 180, 181, 0, 0, 161, 162, 163, 60, - 0, 0, 44, 0, 0, 44, 44, 44, 0, 44, - 0, 44, 44, 164, 44, 0, 0, 0, 0, 165, - 166, 167, 168, 0, 0, 0, 0, 0, 44, 0, - 0, 25, 0, 44, 55, 0, 169, 171, 172, 173, - 174, 175, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 54, 0, 0, 64, 66, 52, 0, 59, - 0, 67, 63, 164, 62, 0, 0, 0, 0, 165, - 166, 167, 168, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 44, 65, 0, 44, 0, 171, 172, 173, - 174, 175, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 0, 0, 0, 0, 0, 0, 0, 120, - 60, 167, 168, 0, 0, 120, 54, 0, 0, 64, - 66, 52, 0, 59, 0, 67, 63, 0, 62, 0, - 0, 0, 176, 177, 0, 0, 178, 0, 0, 179, - 180, 181, 25, 0, 0, 55, 0, 65, 0, 0, - 0, 0, 0, 0, 24, 26, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 0, 0, - 35, 36, 37, 38, 60, 0, 0, 39, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 25, 0, 0, 55, - 0, 56, 0, 57, 58, 44, 44, 44, 44, 44, - 44, 0, 44, 44, 44, 0, 0, 0, 44, 0, - 0, 44, 44, 44, 44, 0, 0, 0, 44, 44, - 0, 44, 44, 44, 44, 44, 0, 0, 0, 0, - 44, 44, 44, 44, 44, 44, 0, 0, 0, 0, - 0, 54, 44, 0, 64, 66, 52, 0, 59, 0, - 67, 63, 44, 62, 44, 44, 118, 27, 28, 29, - 30, 96, 31, 32, 33, 0, 0, 0, 34, 0, - 0, 0, 65, 0, 0, 0, 0, 0, 0, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, - 46, 47, 48, 49, 50, 51, 0, 0, 0, 60, - 0, 139, 53, 0, 139, 0, 165, 166, 167, 168, - 0, 0, 56, 0, 57, 58, 0, 0, 139, 139, - 26, 27, 28, 29, 30, 0, 31, 32, 33, 176, - 177, 25, 34, 178, 55, 0, 179, 180, 181, 0, - 0, 0, 0, 40, 0, 41, 42, 43, 44, 45, - 0, 0, 0, 139, 46, 47, 48, 49, 50, 51, - 54, 0, 0, 64, 66, 52, 53, 59, 0, 67, - 63, 0, 62, 0, 0, 0, 56, 0, 57, 58, - 165, 166, 167, 168, 0, 0, 128, 0, 0, 0, - 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 174, 175, 176, 177, 0, 0, 178, 0, 0, - 179, 180, 181, 165, 166, 167, 168, 0, 60, 0, - 54, 0, 0, 64, 66, 52, 0, 59, 144, 67, - 63, 0, 62, 0, 174, 175, 176, 177, 0, 0, - 178, 0, 0, 179, 180, 181, 0, 0, 0, 0, - 0, 65, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 60, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 54, 0, 0, 64, 66, - 52, 53, 59, 55, 67, 63, 0, 62, 0, 0, - 0, 56, 0, 57, 58, 0, 0, 0, 0, 0, - 0, 0, 139, 139, 139, 139, 65, 0, 0, 139, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 64, - 66, 52, 0, 59, 212, 67, 63, 0, 62, 0, - 139, 139, 139, 60, 139, 146, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 73, - 0, 0, 73, 0, 26, 27, 28, 29, 30, 0, - 31, 32, 33, 0, 0, 0, 34, 73, 55, 0, - 0, 0, 0, 0, 60, 0, 0, 40, 0, 41, - 42, 43, 44, 45, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, - 53, 73, 0, 0, 0, 0, 0, 0, 0, 55, - 56, 0, 57, 58, 26, 27, 28, 29, 30, 0, - 31, 32, 33, 0, 54, 0, 34, 64, 66, 52, - 0, 59, 223, 67, 63, 0, 62, 40, 0, 41, - 42, 43, 44, 45, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 0, 65, 0, 0, 0, 0, - 53, 165, 166, 167, 168, 0, 0, 0, 0, 0, - 56, 0, 57, 58, 0, 0, 0, 78, 0, 0, - 78, 0, 60, 175, 176, 177, 0, 0, 178, 0, - 0, 179, 180, 181, 78, 78, 0, 0, 0, 26, - 27, 28, 29, 30, 0, 31, 32, 33, 0, 0, - 0, 34, 74, 0, 0, 74, 0, 55, 0, 0, - 0, 0, 40, 0, 41, 42, 43, 44, 45, 78, - 74, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 26, 27, 28, 29, 30, 53, 31, 32, 33, 0, - 0, 0, 34, 0, 0, 56, 0, 57, 58, 0, - 0, 0, 0, 40, 74, 41, 42, 43, 44, 45, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 73, 73, 73, 73, 0, 54, 53, 73, 64, 66, - 52, 0, 59, 262, 67, 63, 56, 62, 57, 58, - 98, 98, 0, 0, 0, 0, 0, 0, 73, 73, - 0, 0, 111, 0, 0, 0, 65, 0, 119, 98, - 127, 0, 0, 0, 133, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, - 98, 0, 0, 60, 0, 0, 0, 0, 26, 27, - 28, 29, 30, 0, 31, 32, 33, 0, 54, 0, - 34, 64, 66, 52, 0, 59, 270, 67, 63, 0, - 62, 40, 0, 41, 42, 43, 44, 45, 55, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 119, 65, - 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 57, 58, 78, 78, - 78, 78, 0, 0, 0, 78, 60, 0, 0, 0, - 0, 54, 0, 0, 64, 66, 52, 0, 59, 0, - 67, 63, 0, 62, 0, 0, 78, 78, 78, 0, - 0, 0, 0, 74, 74, 74, 74, 0, 0, 0, - 74, 55, 65, 0, 259, 0, 161, 0, 0, 161, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 74, 161, 161, 0, 0, 0, 0, 60, - 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 64, 66, 52, - 0, 59, 303, 67, 63, 0, 62, 0, 161, 26, - 27, 28, 29, 30, 55, 31, 32, 33, 0, 0, - 0, 34, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0, 40, 0, 41, 42, 43, 44, 45, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 0, 0, 60, 0, 0, 53, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 54, 57, 58, 64, - 66, 52, 0, 59, 305, 67, 63, 0, 62, 0, - 0, 0, 26, 27, 28, 29, 30, 55, 31, 32, - 33, 0, 0, 0, 34, 0, 0, 65, 0, 0, - 0, 0, 0, 0, 0, 40, 0, 41, 42, 43, - 44, 45, 0, 0, 0, 0, 46, 47, 48, 49, - 50, 51, 0, 0, 60, 0, 0, 0, 53, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 57, 58, 0, 0, 24, 26, 27, 28, 29, 30, - 0, 31, 32, 33, 0, 0, 0, 34, 0, 55, - 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 41, 42, 43, 44, 45, 0, 0, 0, 0, 46, - 47, 48, 49, 50, 51, 0, 0, 161, 161, 161, - 161, 53, 0, 0, 161, 0, 0, 0, 0, 0, - 0, 56, 54, 57, 58, 64, 66, 52, 0, 59, - 314, 67, 63, 0, 62, 161, 161, 161, 26, 27, - 28, 29, 30, 0, 31, 32, 33, 0, 0, 0, - 34, 0, 0, 65, 0, 0, 0, 0, 0, 0, - 0, 40, 0, 41, 42, 43, 44, 45, 0, 0, - 0, 0, 46, 47, 48, 49, 50, 51, 0, 0, - 60, 0, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 54, 57, 58, 64, 66, - 52, 0, 59, 0, 67, 63, 0, 62, 0, 0, - 26, 27, 28, 29, 30, 55, 31, 32, 33, 0, - 0, 0, 34, 0, 0, 0, 65, 0, 0, 0, - 0, 0, 0, 40, 0, 41, 42, 43, 44, 45, - 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, - 0, 0, 0, 60, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 56, 111, 57, 58, - 0, 0, 167, 0, 0, 167, 0, 0, 0, 0, - 0, 111, 111, 0, 0, 0, 111, 0, 55, 167, - 167, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, - 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, - 30, 0, 31, 32, 33, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, - 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, - 0, 163, 53, 0, 163, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 57, 58, 0, 0, 163, 163, - 0, 102, 0, 163, 102, 0, 0, 0, 0, 26, - 27, 28, 29, 30, 0, 31, 32, 33, 102, 102, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 163, 41, 42, 43, 44, 45, 0, - 0, 0, 0, 46, 47, 48, 49, 50, 51, 0, - 0, 102, 0, 102, 77, 53, 0, 77, 0, 112, - 0, 0, 0, 117, 0, 56, 126, 57, 58, 131, - 0, 77, 77, 139, 140, 141, 142, 143, 0, 0, - 0, 148, 149, 0, 0, 111, 111, 111, 111, 0, - 0, 0, 111, 167, 167, 167, 167, 0, 0, 0, - 167, 0, 167, 0, 0, 0, 77, 0, 167, 167, - 167, 167, 0, 111, 111, 111, 0, 111, 0, 0, - 201, 167, 167, 167, 0, 167, 167, 167, 167, 167, - 167, 167, 167, 0, 0, 167, 0, 0, 167, 167, - 167, 0, 0, 0, 0, 0, 183, 0, 0, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 183, 183, 0, 0, 0, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 183, 0, - 150, 0, 0, 150, 0, 0, 0, 0, 0, 0, - 0, 272, 163, 163, 163, 163, 0, 150, 150, 163, - 0, 163, 150, 0, 0, 0, 0, 163, 163, 163, - 163, 0, 102, 102, 102, 102, 0, 0, 0, 102, - 163, 163, 163, 0, 163, 163, 163, 163, 163, 163, - 163, 163, 150, 145, 163, 0, 145, 163, 163, 163, - 102, 102, 102, 0, 0, 0, 0, 0, 0, 0, - 145, 145, 0, 0, 0, 145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 77, 77, 77, 77, 0, - 0, 0, 77, 0, 0, 0, 0, 0, 334, 0, - 0, 148, 0, 0, 148, 145, 0, 0, 0, 0, - 0, 0, 0, 77, 77, 77, 0, 0, 148, 148, - 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, - 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, - 0, 0, 146, 148, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 146, 146, 0, 0, - 0, 146, 0, 0, 0, 0, 0, 183, 183, 183, - 183, 0, 0, 0, 183, 0, 183, 0, 0, 0, - 0, 0, 183, 183, 183, 183, 0, 0, 0, 0, - 0, 146, 0, 0, 0, 183, 183, 183, 0, 183, - 183, 183, 183, 183, 183, 183, 183, 0, 0, 183, - 0, 0, 183, 183, 183, 0, 0, 0, 0, 0, - 0, 150, 150, 150, 150, 0, 156, 0, 150, 156, - 150, 0, 0, 0, 0, 0, 150, 150, 150, 150, - 0, 0, 0, 156, 156, 0, 0, 0, 156, 150, - 150, 150, 0, 150, 150, 150, 150, 150, 150, 150, - 150, 0, 0, 150, 0, 0, 150, 150, 150, 0, - 0, 0, 0, 0, 145, 145, 145, 145, 156, 0, - 0, 145, 0, 145, 0, 0, 0, 0, 0, 145, - 145, 145, 145, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 145, 145, 145, 0, 145, 145, 145, 145, - 145, 145, 145, 145, 0, 0, 145, 0, 0, 145, - 145, 145, 148, 148, 148, 148, 0, 0, 0, 148, - 0, 148, 0, 0, 0, 0, 0, 148, 148, 148, - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 148, 148, 148, 0, 148, 148, 148, 148, 148, 148, - 148, 148, 0, 0, 148, 0, 0, 148, 148, 148, - 146, 146, 146, 146, 0, 174, 0, 146, 174, 146, - 0, 0, 0, 0, 0, 146, 146, 146, 146, 0, - 0, 0, 174, 174, 0, 0, 0, 174, 146, 146, - 146, 0, 146, 146, 146, 146, 146, 146, 146, 146, - 0, 0, 146, 0, 0, 146, 146, 146, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 174, 177, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 177, 177, 0, 0, 0, 177, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 156, 156, 156, - 156, 0, 0, 0, 156, 0, 156, 0, 0, 0, - 0, 0, 156, 156, 156, 156, 0, 177, 0, 0, - 0, 0, 0, 0, 0, 156, 156, 156, 0, 156, - 156, 156, 156, 156, 156, 156, 156, 144, 0, 156, - 144, 0, 156, 156, 156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 144, 144, 0, 0, 0, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 0, 0, 76, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 76, 0, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 76, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 174, 174, 174, - 0, 184, 184, 174, 0, 174, 184, 0, 0, 0, - 0, 174, 174, 174, 174, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 174, 174, 0, 174, 174, - 174, 174, 174, 174, 174, 174, 184, 0, 174, 0, - 0, 174, 174, 174, 0, 0, 177, 177, 177, 177, - 0, 66, 0, 177, 66, 177, 0, 0, 0, 0, - 0, 177, 177, 177, 177, 0, 0, 0, 66, 66, - 0, 0, 0, 66, 177, 177, 177, 0, 177, 177, - 177, 177, 177, 177, 177, 177, 0, 0, 177, 0, - 0, 177, 177, 177, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 0, 0, 143, 0, 0, 143, - 0, 0, 0, 0, 0, 0, 0, 0, 144, 144, - 144, 144, 0, 143, 143, 144, 0, 144, 143, 0, - 0, 0, 0, 144, 144, 144, 144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 144, 144, 144, 0, - 144, 144, 144, 144, 144, 144, 144, 144, 143, 0, - 144, 0, 0, 144, 144, 144, 76, 76, 76, 76, - 0, 82, 0, 76, 82, 76, 0, 0, 0, 0, - 0, 76, 76, 76, 76, 0, 0, 0, 82, 82, - 0, 0, 0, 82, 76, 76, 76, 0, 76, 76, - 76, 76, 76, 76, 76, 76, 0, 0, 76, 0, - 0, 76, 76, 76, 0, 184, 184, 184, 184, 162, - 0, 0, 184, 82, 184, 0, 0, 0, 0, 0, - 184, 184, 184, 184, 0, 0, 162, 162, 0, 0, - 0, 162, 0, 184, 184, 184, 0, 184, 184, 184, - 184, 184, 184, 184, 184, 0, 0, 184, 0, 0, - 184, 184, 184, 0, 0, 0, 0, 0, 0, 0, - 79, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 66, 66, 66, 0, 79, 79, 66, - 0, 66, 79, 0, 0, 0, 0, 66, 66, 66, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 66, 66, 0, 66, 66, 66, 66, 66, 66, - 66, 66, 79, 0, 66, 0, 0, 66, 66, 66, - 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, - 143, 0, 122, 0, 143, 122, 143, 0, 0, 0, - 0, 0, 143, 143, 143, 143, 0, 0, 0, 122, - 122, 0, 0, 0, 122, 143, 143, 143, 0, 143, - 143, 143, 143, 143, 143, 143, 143, 0, 0, 143, - 0, 0, 143, 143, 143, 0, 0, 0, 0, 0, - 123, 0, 0, 123, 122, 0, 0, 0, 0, 0, - 0, 0, 82, 82, 82, 82, 0, 123, 123, 82, - 0, 82, 123, 0, 0, 0, 0, 82, 82, 82, - 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 82, 82, 0, 82, 82, 82, 82, 82, 82, - 82, 82, 123, 0, 82, 0, 0, 82, 82, 82, - 162, 162, 162, 162, 0, 118, 0, 162, 118, 162, - 0, 0, 0, 0, 0, 162, 162, 162, 162, 0, - 0, 0, 118, 118, 0, 0, 0, 118, 162, 162, - 162, 0, 162, 162, 162, 162, 162, 162, 162, 162, - 0, 0, 162, 0, 0, 162, 162, 162, 0, 0, - 0, 79, 79, 79, 79, 0, 119, 118, 79, 119, - 79, 0, 0, 0, 0, 0, 79, 79, 79, 79, - 0, 0, 0, 119, 119, 0, 0, 0, 119, 79, - 79, 79, 0, 79, 79, 79, 79, 79, 79, 79, - 79, 0, 0, 79, 0, 0, 79, 79, 79, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, - 0, 140, 0, 0, 140, 0, 0, 0, 0, 0, - 0, 0, 0, 122, 122, 122, 122, 0, 140, 140, - 122, 0, 122, 140, 0, 0, 0, 0, 122, 122, - 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 122, 122, 122, 0, 122, 122, 122, 122, 122, - 122, 122, 122, 140, 0, 122, 0, 0, 0, 0, - 0, 123, 123, 123, 123, 0, 116, 0, 123, 116, - 123, 0, 0, 0, 0, 0, 123, 123, 123, 123, - 0, 0, 0, 116, 116, 0, 0, 0, 116, 123, - 123, 123, 0, 123, 123, 123, 123, 123, 123, 123, - 123, 0, 0, 123, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 0, 0, 117, 116, 0, - 0, 0, 0, 0, 0, 0, 118, 118, 118, 118, - 0, 117, 117, 118, 0, 118, 117, 0, 0, 0, - 0, 118, 118, 118, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 118, 118, 0, 118, 118, - 118, 118, 118, 118, 118, 118, 117, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 119, 119, - 119, 0, 0, 0, 119, 0, 119, 0, 0, 0, - 0, 0, 119, 119, 119, 119, 0, 0, 0, 0, - 115, 0, 0, 115, 0, 119, 119, 119, 0, 119, - 119, 119, 119, 119, 119, 119, 119, 115, 115, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 140, 140, 140, 0, 0, 0, 140, - 0, 140, 0, 0, 0, 0, 0, 140, 140, 140, - 140, 0, 115, 0, 0, 103, 0, 0, 103, 0, - 140, 140, 140, 0, 140, 140, 140, 140, 140, 140, - 140, 140, 103, 103, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 116, 116, - 116, 0, 0, 0, 116, 0, 116, 103, 0, 0, - 0, 0, 116, 116, 116, 116, 0, 0, 0, 0, - 104, 0, 0, 104, 0, 116, 116, 116, 0, 116, - 116, 116, 116, 116, 116, 116, 116, 104, 104, 0, - 0, 0, 104, 0, 0, 117, 117, 117, 117, 0, - 0, 0, 117, 0, 117, 0, 0, 0, 0, 0, - 117, 117, 117, 117, 0, 0, 0, 0, 105, 0, - 0, 105, 104, 117, 117, 117, 0, 117, 117, 117, - 117, 117, 117, 117, 117, 105, 105, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 115, 115, 115, 0, 106, 106, 115, 0, - 115, 106, 0, 0, 0, 0, 115, 115, 115, 115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 115, 115, 0, 115, 115, 115, 115, 115, 115, 115, - 115, 106, 0, 0, 166, 0, 0, 166, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, - 0, 166, 166, 103, 0, 103, 166, 0, 0, 0, - 0, 103, 103, 103, 103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 103, 103, 0, 103, 103, - 103, 103, 103, 103, 103, 103, 166, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, - 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, - 0, 104, 104, 104, 104, 0, 165, 165, 104, 0, - 104, 165, 0, 0, 0, 0, 104, 104, 104, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, - 104, 104, 0, 104, 104, 104, 104, 104, 104, 104, - 0, 165, 0, 0, 129, 0, 0, 129, 0, 105, - 105, 105, 105, 0, 142, 0, 105, 142, 105, 0, - 0, 129, 129, 0, 105, 105, 129, 105, 0, 0, - 0, 142, 142, 0, 0, 0, 142, 105, 105, 105, - 0, 105, 105, 105, 105, 105, 105, 105, 0, 0, - 0, 0, 0, 0, 0, 107, 129, 0, 107, 0, - 106, 106, 106, 106, 0, 0, 142, 106, 0, 106, - 0, 0, 107, 107, 0, 106, 106, 107, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, - 106, 0, 106, 106, 106, 106, 106, 106, 106, 0, - 0, 0, 0, 108, 0, 0, 108, 107, 0, 0, - 0, 0, 0, 0, 0, 166, 166, 166, 166, 0, - 108, 108, 166, 0, 166, 108, 0, 0, 0, 0, - 166, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 166, 166, 0, 166, 166, 166, - 166, 166, 166, 109, 0, 108, 109, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 109, 0, 0, 0, 109, 0, 0, 0, 0, - 165, 165, 165, 165, 0, 0, 0, 165, 0, 165, - 0, 0, 0, 0, 0, 165, 165, 0, 0, 0, - 0, 110, 0, 0, 110, 109, 0, 0, 165, 165, - 165, 0, 165, 165, 165, 165, 165, 165, 110, 110, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 129, 129, 129, 0, - 112, 0, 129, 112, 129, 142, 142, 142, 142, 0, - 129, 129, 142, 110, 142, 0, 0, 112, 112, 0, - 142, 142, 112, 129, 129, 129, 0, 129, 129, 129, - 129, 129, 129, 142, 142, 142, 0, 142, 142, 142, - 142, 142, 142, 0, 0, 0, 107, 107, 107, 107, - 0, 0, 112, 107, 0, 107, 0, 0, 0, 0, - 0, 0, 107, 0, 0, 0, 0, 113, 0, 0, - 113, 0, 0, 0, 107, 107, 107, 0, 107, 107, - 107, 107, 107, 107, 113, 113, 0, 0, 0, 113, - 0, 0, 0, 0, 108, 108, 108, 108, 0, 0, - 0, 108, 0, 108, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 114, 0, 0, 114, 113, - 0, 0, 108, 108, 108, 0, 108, 108, 108, 108, - 108, 108, 114, 114, 0, 0, 0, 114, 0, 0, - 0, 0, 0, 0, 109, 109, 109, 109, 0, 0, - 0, 109, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, - 0, 0, 109, 109, 109, 0, 109, 109, 109, 109, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 110, 110, 110, 110, 0, 0, 0, 110, - 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 110, 110, 0, 110, 110, 110, 110, 110, 0, - 0, 112, 112, 112, 112, 0, 0, 0, 112, 0, - 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, - 112, 112, 0, 112, 112, 112, 112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, - 113, 113, 0, 0, 0, 113, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 113, 113, 0, - 113, 113, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 114, 114, 114, 114, - 0, 0, 0, 114, 0, 114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 114, 114, 114, 0, 114, 114, - 114, -}; -static short yycheck[] = { 15, - 94, 44, 41, 36, 59, 41, 41, 123, 44, 36, - 99, 59, 40, 40, 40, 59, 200, 36, 365, 91, - 59, 40, 209, 91, 41, 257, 93, 63, 59, 266, - 267, 268, 48, 270, 271, 276, 277, 104, 41, 93, - 197, 130, 59, 59, 60, 257, 203, 257, 41, 396, - 59, 123, 41, 41, 93, 123, 41, 8, 9, 44, - 297, 59, 40, 91, 91, 91, 59, 40, 123, 40, - 59, 40, 40, 58, 59, 123, 28, 15, 63, 123, - 41, 40, 105, 106, 107, 108, 109, 110, 257, 0, - 123, 40, 123, 45, 46, 123, 123, 123, 114, 115, - 52, 41, 41, 40, 278, 41, 44, 40, 93, 47, - 123, 298, 64, 65, 66, 67, 132, 41, 41, 59, - 59, 41, 33, 59, 59, 36, 37, 38, 41, 40, - 289, 42, 43, 317, 45, 41, 59, 44, 41, 59, - 156, 157, 158, 159, 160, 161, 162, 163, 59, 123, - 88, 260, 311, 64, 341, 314, 257, 41, 317, 318, - 319, 40, 125, 115, 40, 103, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 41, 289, 290, 59, 40, - 91, 59, 298, 298, 200, 0, 275, 210, 204, 205, - 59, 207, 281, 209, 59, 319, 91, 59, 311, 386, - 216, 314, 218, 219, 317, 318, 319, 298, 257, 36, - 37, 227, 123, 40, 125, 126, 154, 36, 33, 93, - 41, 36, 37, 38, 257, 40, 125, 42, 43, 262, - 45, 258, 91, 272, 273, 274, 275, 64, 260, 255, - 279, 257, 258, 298, 59, 281, 300, 301, 302, 64, - 302, 287, 288, 289, 290, 40, 260, 300, 301, 302, - 41, 300, 301, 302, 41, 300, 301, 302, 304, 305, - 306, 307, 308, 309, 310, 311, 91, 296, 314, 373, - 41, 317, 318, 319, 41, 59, 41, 272, 273, 274, - 275, 300, 301, 302, 279, 311, 281, 300, 301, 302, - 40, 317, 287, 288, 289, 290, 93, 41, 123, 93, - 125, 126, 300, 301, 302, 300, 301, 302, 125, 304, - 305, 306, 307, 308, 309, 310, 311, 343, 93, 314, - 125, 93, 317, 318, 319, 93, 274, 125, 276, 300, - 301, 302, 125, 123, 282, 256, 257, 258, 259, 260, - 261, 59, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 41, 382, 41, 279, 280, - 0, 282, 283, 284, 285, 286, 300, 301, 302, 125, - 291, 292, 293, 294, 295, 296, 297, 300, 301, 302, - 59, 41, 303, 40, 300, 301, 302, 300, 301, 302, - 41, 41, 313, 33, 315, 316, 36, 37, 38, 125, - 40, 123, 42, 43, 41, 45, 300, 301, 302, 300, - 301, 302, 300, 301, 302, 123, 300, 301, 302, 59, - 41, 300, 301, 302, 64, 300, 301, 302, 300, 301, - 302, 256, 257, 258, 259, 260, 261, 59, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 91, 41, 59, 279, 280, 63, 282, 283, 284, - 285, 286, 41, 59, 125, 41, 291, 292, 293, 294, - 295, 296, 297, 300, 301, 302, 34, 51, 303, 51, - 338, 339, 340, 123, 342, 15, 126, 157, 313, 33, - 315, 316, 36, 37, 38, 382, 40, 41, 42, 43, - 44, 45, 343, 300, 301, 302, 300, 301, 302, 207, - 23, 369, 276, -1, 58, 59, -1, -1, 376, 63, - 64, -1, 380, -1, -1, 300, 301, 302, 300, 301, - 302, -1, 300, 301, 302, 393, 394, -1, -1, -1, - 266, 267, 268, -1, 270, 271, -1, 91, 314, 93, - -1, 317, 318, 319, 33, -1, -1, 36, 37, 38, - -1, 40, 41, 42, 43, 44, 45, -1, -1, -1, - -1, 297, 287, 288, 289, 290, 362, 363, -1, 58, - 59, 367, 126, -1, 63, 64, -1, -1, -1, -1, - 305, 306, 307, 308, 309, 310, 311, 383, -1, 314, - -1, 387, 317, 318, 319, 266, 267, 268, -1, 270, - 271, -1, -1, -1, 93, 41, 256, 257, 258, 259, - 260, 261, -1, 263, 264, 265, -1, -1, -1, 269, - -1, -1, 272, 273, 274, 275, 297, 63, -1, 279, - 280, -1, 282, 283, 284, 285, 286, 126, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, -1, -1, - -1, -1, 287, 303, 289, 290, -1, -1, -1, -1, - -1, -1, -1, 313, 281, 315, 316, -1, -1, -1, - 287, 288, 289, 290, -1, 310, 311, -1, -1, 314, - 58, -1, 317, 318, 319, 63, -1, 304, 305, 306, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, 257, 258, 259, 260, 261, -1, 263, - 264, 265, -1, -1, -1, 269, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, -1, -1, 63, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, -1, 313, - 314, 315, 316, 317, 318, 319, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, 45, - 269, -1, -1, 272, 273, 274, 275, 53, -1, -1, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, -1, - -1, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, -1, 313, 314, 315, 316, 317, 318, - 319, 33, -1, 99, 36, 37, 38, -1, 40, -1, - 42, 43, -1, 45, -1, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, 122, 59, 272, 273, - 274, 275, 64, -1, 130, 279, -1, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, -1, 300, 301, 302, 91, - -1, -1, 33, -1, -1, 36, 37, 38, -1, 40, - -1, 42, 43, 281, 45, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, 59, -1, - -1, 123, -1, 64, 126, -1, 304, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, -1, -1, -1, -1, -1, -1, -1, -1, - 91, -1, 33, -1, -1, 36, 37, 38, -1, 40, - -1, 42, 43, 281, 45, -1, -1, -1, -1, 287, - 288, 289, 290, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 123, 64, -1, 126, -1, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, -1, -1, -1, -1, -1, -1, -1, 275, - 91, 289, 290, -1, -1, 281, 33, -1, -1, 36, - 37, 38, -1, 40, -1, 42, 43, -1, 45, -1, - -1, -1, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 123, -1, -1, 126, -1, 64, -1, -1, - -1, -1, -1, -1, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, -1, -1, - 272, 273, 274, 275, 91, -1, -1, 279, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, -1, -1, -1, -1, - -1, 303, -1, -1, -1, -1, 123, -1, -1, 126, - -1, 313, -1, 315, 316, 256, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - -1, 272, 273, 274, 275, -1, -1, -1, 279, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, -1, - -1, 33, 303, -1, 36, 37, 38, -1, 40, -1, - 42, 43, 313, 45, 315, 316, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, -1, 269, -1, - -1, -1, 64, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, 91, - -1, 41, 303, -1, 44, -1, 287, 288, 289, 290, - -1, -1, 313, -1, 315, 316, -1, -1, 58, 59, - 257, 258, 259, 260, 261, -1, 263, 264, 265, 310, - 311, 123, 269, 314, 126, -1, 317, 318, 319, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, 93, 291, 292, 293, 294, 295, 296, - 33, -1, -1, 36, 37, 38, 303, 40, -1, 42, - 43, -1, 45, -1, -1, -1, 313, -1, 315, 316, - 287, 288, 289, 290, -1, -1, 59, -1, -1, -1, - -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, 287, 288, 289, 290, -1, 91, -1, - 33, -1, -1, 36, 37, 38, -1, 40, 41, 42, - 43, -1, 45, -1, 308, 309, 310, 311, -1, -1, - 314, -1, -1, 317, 318, 319, -1, -1, -1, -1, - -1, 64, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, 91, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, 33, -1, -1, 36, 37, - 38, 303, 40, 126, 42, 43, -1, 45, -1, -1, - -1, 313, -1, 315, 316, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, 64, -1, -1, 279, - -1, -1, -1, -1, -1, -1, 33, -1, -1, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, - 300, 301, 302, 91, 304, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 64, -1, 41, - -1, -1, 44, -1, 257, 258, 259, 260, 261, -1, - 263, 264, 265, -1, -1, -1, 269, 59, 126, -1, - -1, -1, -1, -1, 91, -1, -1, 280, -1, 282, - 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, -1, -1, -1, -1, -1, - 303, 93, -1, -1, -1, -1, -1, -1, -1, 126, - 313, -1, 315, 316, 257, 258, 259, 260, 261, -1, - 263, 264, 265, -1, 33, -1, 269, 36, 37, 38, - -1, 40, 41, 42, 43, -1, 45, 280, -1, 282, - 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, 64, -1, -1, -1, -1, - 303, 287, 288, 289, 290, -1, -1, -1, -1, -1, - 313, -1, 315, 316, -1, -1, -1, 41, -1, -1, - 44, -1, 91, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, 58, 59, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 264, 265, -1, -1, - -1, 269, 41, -1, -1, 44, -1, 126, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, 93, - 59, -1, -1, 291, 292, 293, 294, 295, 296, -1, - 257, 258, 259, 260, 261, 303, 263, 264, 265, -1, - -1, -1, 269, -1, -1, 313, -1, 315, 316, -1, - -1, -1, -1, 280, 93, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - 272, 273, 274, 275, -1, 33, 303, 279, 36, 37, - 38, -1, 40, 41, 42, 43, 313, 45, 315, 316, - 27, 28, -1, -1, -1, -1, -1, -1, 300, 301, - -1, -1, 39, -1, -1, -1, 64, -1, 45, 46, - 47, -1, -1, -1, 51, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 64, 65, 66, - 67, -1, -1, 91, -1, -1, -1, -1, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, 33, -1, - 269, 36, 37, 38, -1, 40, 41, 42, 43, -1, - 45, 280, -1, 282, 283, 284, 285, 286, 126, -1, - -1, -1, 291, 292, 293, 294, 295, 296, 115, 64, - -1, -1, -1, -1, 303, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 313, -1, 315, 316, 272, 273, - 274, 275, -1, -1, -1, 279, 91, -1, -1, -1, - -1, 33, -1, -1, 36, 37, 38, -1, 40, -1, - 42, 43, -1, 45, -1, -1, 300, 301, 302, -1, - -1, -1, -1, 272, 273, 274, 275, -1, -1, -1, - 279, 126, 64, -1, 181, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, 58, 59, -1, -1, -1, -1, 91, - -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, 36, 37, 38, - -1, 40, 41, 42, 43, -1, 45, -1, 93, 257, - 258, 259, 260, 261, 126, 263, 264, 265, -1, -1, - -1, 269, -1, -1, -1, 64, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, -1, 91, -1, -1, 303, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 313, 33, 315, 316, 36, - 37, 38, -1, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 257, 258, 259, 260, 261, 126, 263, 264, - 265, -1, -1, -1, 269, -1, -1, 64, -1, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, - 295, 296, -1, -1, 91, -1, -1, -1, 303, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, - 315, 316, -1, -1, 256, 257, 258, 259, 260, 261, - -1, 263, 264, 265, -1, -1, -1, 269, -1, 126, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, -1, 272, 273, 274, - 275, 303, -1, -1, 279, -1, -1, -1, -1, -1, - -1, 313, 33, 315, 316, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, 300, 301, 302, 257, 258, - 259, 260, 261, -1, 263, 264, 265, -1, -1, -1, - 269, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 295, 296, -1, -1, - 91, -1, -1, -1, 303, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 313, 33, 315, 316, 36, 37, - 38, -1, 40, -1, 42, 43, -1, 45, -1, -1, - 257, 258, 259, 260, 261, 126, 263, 264, 265, -1, - -1, -1, 269, -1, -1, -1, 64, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, -1, -1, 91, -1, -1, 303, -1, -1, -1, - -1, -1, -1, -1, 41, -1, 313, 44, 315, 316, - -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, 58, 59, -1, -1, -1, 63, -1, 126, 58, - 59, -1, -1, -1, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, - 261, -1, 263, 264, 265, -1, -1, -1, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, - 291, 292, 293, 294, 295, 296, -1, -1, -1, -1, - -1, 41, 303, -1, 44, -1, -1, -1, -1, -1, - -1, -1, 313, -1, 315, 316, -1, -1, 58, 59, - -1, 41, -1, 63, 44, -1, -1, -1, -1, 257, - 258, 259, 260, 261, -1, 263, 264, 265, 58, 59, - -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, 93, 282, 283, 284, 285, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - -1, 32, -1, 93, 41, 303, -1, 44, -1, 40, - -1, -1, -1, 44, -1, 313, 47, 315, 316, 50, - -1, 58, 59, 54, 55, 56, 57, 58, -1, -1, - -1, 62, 63, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, 272, 273, 274, 275, -1, -1, -1, - 279, -1, 281, -1, -1, -1, 93, -1, 287, 288, - 289, 290, -1, 300, 301, 302, -1, 304, -1, -1, - 101, 300, 301, 302, -1, 304, 305, 306, 307, 308, - 309, 310, 311, -1, -1, 314, -1, -1, 317, 318, - 319, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, -1, -1, -1, 63, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 93, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, 192, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, 272, 273, 274, 275, -1, -1, -1, 279, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, 41, 314, -1, 44, 317, 318, 319, - 300, 301, 302, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, -1, -1, -1, -1, -1, 279, -1, - -1, 41, -1, -1, 44, 93, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 302, -1, -1, 58, 59, - -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, - -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - -1, 93, -1, -1, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, -1, -1, 314, - -1, -1, 317, 318, 319, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, 317, 318, 319, -1, - -1, -1, -1, -1, 272, 273, 274, 275, 93, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, 287, - 288, 289, 290, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, 310, 311, -1, -1, 314, -1, -1, 317, - 318, 319, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, -1, -1, 314, -1, -1, 317, 318, 319, - 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, - -1, -1, 314, -1, -1, 317, 318, 319, -1, -1, - -1, -1, -1, -1, -1, 41, -1, 93, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, 93, -1, -1, - -1, -1, -1, -1, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 41, -1, 314, - 44, -1, 317, 318, 319, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 44, 93, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, 314, -1, - -1, 317, 318, 319, -1, -1, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, 58, 59, 279, -1, 281, 63, -1, - -1, -1, -1, 287, 288, 289, 290, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 300, 301, 302, -1, - 304, 305, 306, 307, 308, 309, 310, 311, 93, -1, - 314, -1, -1, 317, 318, 319, 272, 273, 274, 275, - -1, 41, -1, 279, 44, 281, -1, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, 58, 59, - -1, -1, -1, 63, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, -1, -1, 314, -1, - -1, 317, 318, 319, -1, 272, 273, 274, 275, 41, - -1, -1, 279, 93, 281, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, 58, 59, -1, -1, - -1, 63, -1, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 310, 311, -1, -1, 314, -1, -1, - 317, 318, 319, -1, -1, -1, -1, -1, -1, -1, - 41, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, -1, 314, -1, -1, 317, 318, 319, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, 41, -1, 279, 44, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, 58, - 59, -1, -1, -1, 63, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, -1, -1, 314, - -1, -1, 317, 318, 319, -1, -1, -1, -1, -1, - 41, -1, -1, 44, 93, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, 58, 59, 279, - -1, 281, 63, -1, -1, -1, -1, 287, 288, 289, - 290, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 93, -1, 314, -1, -1, 317, 318, 319, - 272, 273, 274, 275, -1, 41, -1, 279, 44, 281, - -1, -1, -1, -1, -1, 287, 288, 289, 290, -1, - -1, -1, 58, 59, -1, -1, -1, 63, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, 311, - -1, -1, 314, -1, -1, 317, 318, 319, -1, -1, - -1, 272, 273, 274, 275, -1, 41, 93, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, 317, 318, 319, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, - -1, -1, -1, 272, 273, 274, 275, -1, 58, 59, - 279, -1, 281, 63, -1, -1, -1, -1, 287, 288, - 289, 290, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 300, 301, 302, -1, 304, 305, 306, 307, 308, - 309, 310, 311, 93, -1, 314, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 41, -1, 279, 44, - 281, -1, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, 58, 59, -1, -1, -1, 63, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, -1, -1, 314, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, 44, 93, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, -1, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - 41, -1, -1, 44, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 58, 59, -1, - -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, 287, 288, 289, - 290, -1, 93, -1, -1, 41, -1, -1, 44, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, 309, - 310, 311, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 273, 274, - 275, -1, -1, -1, 279, -1, 281, 93, -1, -1, - -1, -1, 287, 288, 289, 290, -1, -1, -1, -1, - 41, -1, -1, 44, -1, 300, 301, 302, -1, 304, - 305, 306, 307, 308, 309, 310, 311, 58, 59, -1, - -1, -1, 63, -1, -1, 272, 273, 274, 275, -1, - -1, -1, 279, -1, 281, -1, -1, -1, -1, -1, - 287, 288, 289, 290, -1, -1, -1, -1, 41, -1, - -1, 44, 93, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 310, 311, 58, 59, -1, -1, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - 93, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 58, 59, 279, -1, - 281, 63, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - 311, 93, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, 58, 59, 279, -1, 281, 63, -1, -1, -1, - -1, 287, 288, 289, 290, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 310, 311, 93, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, 272, 273, 274, 275, -1, 58, 59, 279, -1, - 281, 63, -1, -1, -1, -1, 287, 288, 289, 290, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, 308, 309, 310, - -1, 93, -1, -1, 41, -1, -1, 44, -1, 272, - 273, 274, 275, -1, 41, -1, 279, 44, 281, -1, - -1, 58, 59, -1, 287, 288, 63, 290, -1, -1, - -1, 58, 59, -1, -1, -1, 63, 300, 301, 302, - -1, 304, 305, 306, 307, 308, 309, 310, -1, -1, - -1, -1, -1, -1, -1, 41, 93, -1, 44, -1, - 272, 273, 274, 275, -1, -1, 93, 279, -1, 281, - -1, -1, 58, 59, -1, 287, 288, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 310, -1, - -1, -1, -1, 41, -1, -1, 44, 93, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 58, 59, 279, -1, 281, 63, -1, -1, -1, -1, - 287, 288, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 41, -1, 93, 44, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, -1, -1, 63, -1, -1, -1, -1, - 272, 273, 274, 275, -1, -1, -1, 279, -1, 281, - -1, -1, -1, -1, -1, 287, 288, -1, -1, -1, - -1, 41, -1, -1, 44, 93, -1, -1, 300, 301, - 302, -1, 304, 305, 306, 307, 308, 309, 58, 59, - -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 272, 273, 274, 275, -1, - 41, -1, 279, 44, 281, 272, 273, 274, 275, -1, - 287, 288, 279, 93, 281, -1, -1, 58, 59, -1, - 287, 288, 63, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, 300, 301, 302, -1, 304, 305, 306, - 307, 308, 309, -1, -1, -1, 272, 273, 274, 275, - -1, -1, 93, 279, -1, 281, -1, -1, -1, -1, - -1, -1, 288, -1, -1, -1, -1, 41, -1, -1, - 44, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, 307, 308, 309, 58, 59, -1, -1, -1, 63, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 44, 93, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, 58, 59, -1, -1, -1, 63, -1, -1, - -1, -1, -1, -1, 272, 273, 274, 275, -1, -1, - -1, 279, -1, 281, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, - -1, -1, 300, 301, 302, -1, 304, 305, 306, 307, - 308, 309, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 272, 273, 274, 275, -1, -1, -1, 279, - -1, 281, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 300, 301, 302, -1, 304, 305, 306, 307, 308, -1, - -1, 272, 273, 274, 275, -1, -1, -1, 279, -1, - 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - 301, 302, -1, 304, 305, 306, 307, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 272, 273, - 274, 275, -1, -1, -1, 279, -1, 281, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 300, 301, 302, -1, - 304, 305, 306, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 272, 273, 274, 275, - -1, -1, -1, 279, -1, 281, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 300, 301, 302, -1, 304, 305, - 306, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 319 -#if YYDEBUG -static char *yyname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -"'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0, -0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,"'{'",0,"'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"WORD","METHOD","FUNCMETH","THING", -"PMFUNC","PRIVATEREF","FUNC0SUB","UNIOPSUB","LSTOPSUB","LABEL","FORMAT","SUB", -"ANONSUB","PACKAGE","USE","WHILE","UNTIL","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","OROP","DOROP","ANDOP","NOTOP","ASSIGNOP","OROR", -"DORDOR","ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN", -"POWOP","PREINC","PREDEC","POSTINC","POSTDEC","ARROW", -}; -static char *yyrule[] = { -"$accept : prog", -"prog : progstart lineseq", -"block : '{' remember lineseq '}'", -"remember :", -"progstart :", -"mblock : '{' mremember lineseq '}'", -"mremember :", -"lineseq :", -"lineseq : lineseq decl", -"lineseq : lineseq line", -"line : label cond", -"line : loop", -"line : label ';'", -"line : label sideff ';'", -"sideff : error", -"sideff : expr", -"sideff : expr IF expr", -"sideff : expr UNLESS expr", -"sideff : expr WHILE expr", -"sideff : expr UNTIL iexpr", -"sideff : expr FOR expr", -"else :", -"else : ELSE mblock", -"else : ELSIF '(' mexpr ')' mblock else", -"cond : IF '(' remember mexpr ')' mblock else", -"cond : UNLESS '(' remember miexpr ')' mblock else", -"cont :", -"cont : CONTINUE block", -"loop : label WHILE '(' remember mtexpr ')' mblock cont", -"loop : label UNTIL '(' remember miexpr ')' mblock cont", -"loop : label FOR MY remember my_scalar '(' mexpr ')' mblock cont", -"loop : label FOR scalar '(' remember mexpr ')' mblock cont", -"loop : label FOR '(' remember mexpr ')' mblock cont", -"loop : label FOR '(' remember mnexpr ';' mtexpr ';' mnexpr ')' mblock", -"loop : label block cont", -"nexpr :", -"nexpr : sideff", -"texpr :", -"texpr : expr", -"iexpr : expr", -"mexpr : expr", -"mnexpr : nexpr", -"mtexpr : texpr", -"miexpr : iexpr", -"label :", -"label : LABEL", -"decl : format", -"decl : subrout", -"decl : mysubrout", -"decl : package", -"decl : use", -"format : FORMAT startformsub formname block", -"formname : WORD", -"formname :", -"mysubrout : MYSUB startsub subname proto subattrlist subbody", -"subrout : SUB startsub subname proto subattrlist subbody", -"startsub :", -"startanonsub :", -"startformsub :", -"subname : WORD", -"proto :", -"proto : THING", -"subattrlist :", -"subattrlist : COLONATTR THING", -"subattrlist : COLONATTR", -"myattrlist : COLONATTR THING", -"myattrlist : COLONATTR", -"subbody : block", -"subbody : ';'", -"package : PACKAGE WORD ';'", -"$$1 :", -"use : USE startsub $$1 WORD WORD listexpr ';'", -"expr : expr ANDOP expr", -"expr : expr OROP expr", -"expr : expr DOROP expr", -"expr : argexpr", -"argexpr : argexpr ','", -"argexpr : argexpr ',' term", -"argexpr : term", -"listop : LSTOP indirob argexpr", -"listop : FUNC '(' indirob expr ')'", -"listop : term ARROW method '(' listexprcom ')'", -"listop : term ARROW method", -"listop : METHOD indirob listexpr", -"listop : FUNCMETH indirob '(' listexprcom ')'", -"listop : LSTOP listexpr", -"listop : FUNC '(' listexprcom ')'", -"$$2 :", -"listop : LSTOPSUB startanonsub block $$2 listexpr", -"method : METHOD", -"method : scalar", -"subscripted : star '{' expr ';' '}'", -"subscripted : scalar '[' expr ']'", -"subscripted : term ARROW '[' expr ']'", -"subscripted : subscripted '[' expr ']'", -"subscripted : scalar '{' expr ';' '}'", -"subscripted : term ARROW '{' expr ';' '}'", -"subscripted : subscripted '{' expr ';' '}'", -"subscripted : term ARROW '(' ')'", -"subscripted : term ARROW '(' expr ')'", -"subscripted : subscripted '(' expr ')'", -"subscripted : subscripted '(' ')'", -"termbinop : term ASSIGNOP term", -"termbinop : term POWOP term", -"termbinop : term MULOP term", -"termbinop : term ADDOP term", -"termbinop : term SHIFTOP term", -"termbinop : term RELOP term", -"termbinop : term EQOP term", -"termbinop : term BITANDOP term", -"termbinop : term BITOROP term", -"termbinop : term DOTDOT term", -"termbinop : term ANDAND term", -"termbinop : term OROR term", -"termbinop : term DORDOR term", -"termbinop : term MATCHOP term", -"termunop : '-' term", -"termunop : '+' term", -"termunop : '!' term", -"termunop : '~' term", -"termunop : term POSTINC", -"termunop : term POSTDEC", -"termunop : PREINC term", -"termunop : PREDEC term", -"anonymous : '[' expr ']'", -"anonymous : '[' ']'", -"anonymous : HASHBRACK expr ';' '}'", -"anonymous : HASHBRACK ';' '}'", -"anonymous : ANONSUB startanonsub proto subattrlist block", -"termdo : DO term", -"termdo : DO block", -"termdo : DO WORD '(' ')'", -"termdo : DO WORD '(' expr ')'", -"termdo : DO scalar '(' ')'", -"termdo : DO scalar '(' expr ')'", -"term : termbinop", -"term : termunop", -"term : anonymous", -"term : termdo", -"term : term '?' term ':' term", -"term : REFGEN term", -"term : myattrterm", -"term : LOCAL term", -"term : '(' expr ')'", -"term : '(' ')'", -"term : scalar", -"term : star", -"term : hsh", -"term : ary", -"term : arylen", -"term : subscripted", -"term : '(' expr ')' '[' expr ']'", -"term : '(' ')' '[' expr ']'", -"term : ary '[' expr ']'", -"term : ary '{' expr ';' '}'", -"term : THING", -"term : amper", -"term : amper '(' ')'", -"term : amper '(' expr ')'", -"term : NOAMP WORD listexpr", -"term : LOOPEX", -"term : LOOPEX term", -"term : NOTOP argexpr", -"term : UNIOP", -"term : UNIOP block", -"term : UNIOP term", -"term : UNIOPSUB term", -"term : FUNC0", -"term : FUNC0 '(' ')'", -"term : FUNC0SUB", -"term : FUNC1 '(' ')'", -"term : FUNC1 '(' expr ')'", -"term : PMFUNC '(' term ')'", -"term : PMFUNC '(' term ',' term ')'", -"term : WORD", -"term : listop", -"myattrterm : MY myterm myattrlist", -"myattrterm : MY myterm", -"myterm : '(' expr ')'", -"myterm : '(' ')'", -"myterm : scalar", -"myterm : hsh", -"myterm : ary", -"listexpr :", -"listexpr : argexpr", -"listexprcom :", -"listexprcom : expr", -"listexprcom : expr ','", -"my_scalar : scalar", -"amper : '&' indirob", -"scalar : '$' indirob", -"ary : '@' indirob", -"hsh : '%' indirob", -"arylen : DOLSHARP indirob", -"star : '*' indirob", -"indirob : WORD", -"indirob : scalar", -"indirob : block", -"indirob : PRIVATEREF", -}; -#endif -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#ifdef YYSTACKSIZE -#ifndef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#endif -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif -#line 796 "perly.y" - /* PROGRAM */ - -/* more stuff added to make perly_c.diff easier to apply */ - -#ifdef yyparse -#undef yyparse -#endif -#define yyparse() Perl_yyparse(pTHX) - -#line 1508 "perly.c" -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab -int -yyparse() -{ - register int yym, yyn, yystate; - register short *yyssp; - register YYSTYPE *yyvsp; - short* yyss; - YYSTYPE* yyvs; - unsigned yystacksize = YYSTACKSIZE; - int retval = 0; -#if YYDEBUG - register char *yys; -#endif - - struct ysv *ysave; -#ifdef USE_ITHREADS - ENTER; /* force yydestruct() before we return */ -#endif - New(73, ysave, 1, struct ysv); - SAVEDESTRUCTOR_X(yydestruct, ysave); - ysave->oldyydebug = yydebug; - ysave->oldyynerrs = yynerrs; - ysave->oldyyerrflag = yyerrflag; - ysave->oldyychar = yychar; - ysave->oldyyval = yyval; - ysave->oldyylval = yylval; - -#if YYDEBUG - { - register int saved_errno = errno; -#ifdef VMS - register int saved_vaxc_errno = vaxc$errno; -#else - register int saved_vaxc_errno = 0; -#endif - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } - else SETERRNO(saved_errno,saved_vaxc_errno); - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - /* - ** Initialize private stacks (yyparse may be called from an action) - */ - New(73, yyss, yystacksize, short); - New(73, yyvs, yystacksize, YYSTYPE); - ysave->yyss = yyss; - ysave->yyvs = yyvs; - if (!yyvs || !yyss) - goto yyoverflow; - - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#ifdef lint - -#endif - - yyerror("syntax error"); -#ifdef lint - -#endif - - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", - *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 1: -#line 131 "perly.y" -{ yyval.ival = yyvsp[-1].ival; newPROG(block_end(yyvsp[-1].ival,yyvsp[0].opval)); } -break; -case 2: -#line 136 "perly.y" -{ if (PL_copline > (line_t)yyvsp[-3].ival) - PL_copline = (line_t)yyvsp[-3].ival; - yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } -break; -case 3: -#line 142 "perly.y" -{ yyval.ival = block_start(TRUE); } -break; -case 4: -#line 146 "perly.y" -{ -#if defined(YYDEBUG) && defined(DEBUGGING) - yydebug = (DEBUG_p_TEST); -#endif - PL_expect = XSTATE; yyval.ival = block_start(TRUE); - } -break; -case 5: -#line 156 "perly.y" -{ if (PL_copline > (line_t)yyvsp[-3].ival) - PL_copline = (line_t)yyvsp[-3].ival; - yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); } -break; -case 6: -#line 162 "perly.y" -{ yyval.ival = block_start(FALSE); } -break; -case 7: -#line 167 "perly.y" -{ yyval.opval = Nullop; } -break; -case 8: -#line 169 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 9: -#line 171 "perly.y" -{ yyval.opval = append_list(OP_LINESEQ, - (LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval); - PL_pad_reset_pending = TRUE; - if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 10: -#line 179 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); } -break; -case 12: -#line 182 "perly.y" -{ if (yyvsp[-1].pval != Nullch) { - yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0)); - } - else { - yyval.opval = Nullop; - PL_copline = NOLINE; - } - PL_expect = XSTATE; } -break; -case 13: -#line 191 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval); - PL_expect = XSTATE; } -break; -case 14: -#line 197 "perly.y" -{ yyval.opval = Nullop; } -break; -case 15: -#line 199 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 16: -#line 201 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); } -break; -case 17: -#line 203 "perly.y" -{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); } -break; -case 18: -#line 205 "perly.y" -{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); } -break; -case 19: -#line 207 "perly.y" -{ yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);} -break; -case 20: -#line 209 "perly.y" -{ yyval.opval = newFOROP(0, Nullch, (line_t)yyvsp[-1].ival, - Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); } -break; -case 21: -#line 215 "perly.y" -{ yyval.opval = Nullop; } -break; -case 22: -#line 217 "perly.y" -{ (yyvsp[0].opval)->op_flags |= OPf_PARENS; yyval.opval = scope(yyvsp[0].opval); } -break; -case 23: -#line 219 "perly.y" -{ PL_copline = (line_t)yyvsp[-5].ival; - yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval); - PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 24: -#line 226 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } -break; -case 25: -#line 230 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); } -break; -case 26: -#line 237 "perly.y" -{ yyval.opval = Nullop; } -break; -case 27: -#line 239 "perly.y" -{ yyval.opval = scope(yyvsp[0].opval); } -break; -case 28: -#line 244 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newSTATEOP(0, yyvsp[-7].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } -break; -case 29: -#line 250 "perly.y" -{ PL_copline = (line_t)yyvsp[-6].ival; - yyval.opval = block_end(yyvsp[-4].ival, - newSTATEOP(0, yyvsp[-7].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); } -break; -case 30: -#line 256 "perly.y" -{ yyval.opval = block_end(yyvsp[-6].ival, - newFOROP(0, yyvsp[-9].pval, (line_t)yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 31: -#line 259 "perly.y" -{ yyval.opval = block_end(yyvsp[-4].ival, - newFOROP(0, yyvsp[-8].pval, (line_t)yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP), - yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 32: -#line 263 "perly.y" -{ yyval.opval = block_end(yyvsp[-4].ival, - newFOROP(0, yyvsp[-7].pval, (line_t)yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 33: -#line 267 "perly.y" -{ OP *forop; - PL_copline = (line_t)yyvsp[-9].ival; - forop = newSTATEOP(0, yyvsp[-10].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - yyvsp[-9].ival, scalar(yyvsp[-4].opval), - yyvsp[0].opval, yyvsp[-2].opval)); - if (yyvsp[-6].opval) { - forop = append_elem(OP_LINESEQ, - newSTATEOP(0, (yyvsp[-10].pval?savepv(yyvsp[-10].pval):Nullch), - yyvsp[-6].opval), - forop); - } - - yyval.opval = block_end(yyvsp[-7].ival, forop); } -break; -case 34: -#line 282 "perly.y" -{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, - newWHILEOP(0, 1, (LOOP*)Nullop, - NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); } -break; -case 35: -#line 289 "perly.y" -{ yyval.opval = Nullop; } -break; -case 37: -#line 295 "perly.y" -{ (void)scan_num("1", &yylval); yyval.opval = yylval.opval; } -break; -case 39: -#line 301 "perly.y" -{ yyval.opval = invert(scalar(yyvsp[0].opval)); } -break; -case 40: -#line 306 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 41: -#line 310 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 42: -#line 314 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 43: -#line 318 "perly.y" -{ yyval.opval = yyvsp[0].opval; intro_my(); } -break; -case 44: -#line 323 "perly.y" -{ yyval.pval = Nullch; } -break; -case 46: -#line 329 "perly.y" -{ yyval.ival = 0; } -break; -case 47: -#line 331 "perly.y" -{ yyval.ival = 0; } -break; -case 48: -#line 333 "perly.y" -{ yyval.ival = 0; } -break; -case 49: -#line 335 "perly.y" -{ yyval.ival = 0; } -break; -case 50: -#line 337 "perly.y" -{ yyval.ival = 0; } -break; -case 51: -#line 341 "perly.y" -{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 52: -#line 344 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 53: -#line 345 "perly.y" -{ yyval.opval = Nullop; } -break; -case 54: -#line 350 "perly.y" -{ newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 55: -#line 355 "perly.y" -{ newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 56: -#line 359 "perly.y" -{ yyval.ival = start_subparse(FALSE, 0); } -break; -case 57: -#line 363 "perly.y" -{ yyval.ival = start_subparse(FALSE, CVf_ANON); } -break; -case 58: -#line 367 "perly.y" -{ yyval.ival = start_subparse(TRUE, 0); } -break; -case 59: -#line 371 "perly.y" -{ STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a); - if (strEQ(name, "BEGIN") || strEQ(name, "END") - || strEQ(name, "INIT") || strEQ(name, "CHECK")) - CvSPECIAL_on(PL_compcv); - yyval.opval = yyvsp[0].opval; } -break; -case 60: -#line 380 "perly.y" -{ yyval.opval = Nullop; } -break; -case 62: -#line 386 "perly.y" -{ yyval.opval = Nullop; } -break; -case 63: -#line 388 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 64: -#line 390 "perly.y" -{ yyval.opval = Nullop; } -break; -case 65: -#line 395 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 66: -#line 397 "perly.y" -{ yyval.opval = Nullop; } -break; -case 67: -#line 401 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 68: -#line 402 "perly.y" -{ yyval.opval = Nullop; PL_expect = XSTATE; } -break; -case 69: -#line 406 "perly.y" -{ package(yyvsp[-1].opval); } -break; -case 70: -#line 410 "perly.y" -{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ } -break; -case 71: -#line 412 "perly.y" -{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); } -break; -case 72: -#line 417 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 73: -#line 419 "perly.y" -{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 74: -#line 421 "perly.y" -{ yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 76: -#line 427 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 77: -#line 429 "perly.y" -{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 79: -#line 435 "perly.y" -{ yyval.opval = convert(yyvsp[-2].ival, OPf_STACKED, - prepend_elem(OP_LIST, newGVREF(yyvsp[-2].ival,yyvsp[-1].opval), yyvsp[0].opval) ); } -break; -case 80: -#line 438 "perly.y" -{ yyval.opval = convert(yyvsp[-4].ival, OPf_STACKED, - prepend_elem(OP_LIST, newGVREF(yyvsp[-4].ival,yyvsp[-2].opval), yyvsp[-1].opval) ); } -break; -case 81: -#line 441 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, scalar(yyvsp[-5].opval), yyvsp[-1].opval), - newUNOP(OP_METHOD, 0, yyvsp[-3].opval))); } -break; -case 82: -#line 446 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, scalar(yyvsp[-2].opval), - newUNOP(OP_METHOD, 0, yyvsp[0].opval))); } -break; -case 83: -#line 450 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-1].opval, yyvsp[0].opval), - newUNOP(OP_METHOD, 0, yyvsp[-2].opval))); } -break; -case 84: -#line 455 "perly.y" -{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-3].opval, yyvsp[-1].opval), - newUNOP(OP_METHOD, 0, yyvsp[-4].opval))); } -break; -case 85: -#line 460 "perly.y" -{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 86: -#line 462 "perly.y" -{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); } -break; -case 87: -#line 464 "perly.y" -{ yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); } -break; -case 88: -#line 466 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); } -break; -case 91: -#line 480 "perly.y" -{ yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 92: -#line 483 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); } -break; -case 93: -#line 485 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, - ref(newAVREF(yyvsp[-4].opval),OP_RV2AV), - scalar(yyvsp[-1].opval));} -break; -case 94: -#line 489 "perly.y" -{ yyval.opval = newBINOP(OP_AELEM, 0, - ref(newAVREF(yyvsp[-3].opval),OP_RV2AV), - scalar(yyvsp[-1].opval));} -break; -case 95: -#line 493 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 96: -#line 496 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, - ref(newHVREF(yyvsp[-5].opval),OP_RV2HV), - jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 97: -#line 501 "perly.y" -{ yyval.opval = newBINOP(OP_HELEM, 0, - ref(newHVREF(yyvsp[-4].opval),OP_RV2HV), - jmaybe(yyvsp[-2].opval)); - PL_expect = XOPERATOR; } -break; -case 98: -#line 506 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar(yyvsp[-3].opval))); } -break; -case 99: -#line 509 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, - newCVREF(0, scalar(yyvsp[-4].opval)))); } -break; -case 100: -#line 514 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, - newCVREF(0, scalar(yyvsp[-3].opval)))); } -break; -case 101: -#line 518 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - newCVREF(0, scalar(yyvsp[-2].opval))); } -break; -case 102: -#line 524 "perly.y" -{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); } -break; -case 103: -#line 526 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 104: -#line 528 "perly.y" -{ if (yyvsp[-1].ival != OP_REPEAT) - scalar(yyvsp[-2].opval); - yyval.opval = newBINOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, scalar(yyvsp[0].opval)); } -break; -case 105: -#line 532 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 106: -#line 534 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 107: -#line 536 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 108: -#line 538 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 109: -#line 540 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 110: -#line 542 "perly.y" -{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); } -break; -case 111: -#line 544 "perly.y" -{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));} -break; -case 112: -#line 546 "perly.y" -{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 113: -#line 548 "perly.y" -{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 114: -#line 550 "perly.y" -{ yyval.opval = newLOGOP(OP_DOR, 0, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 115: -#line 552 "perly.y" -{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 116: -#line 557 "perly.y" -{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); } -break; -case 117: -#line 559 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 118: -#line 561 "perly.y" -{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } -break; -case 119: -#line 563 "perly.y" -{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));} -break; -case 120: -#line 565 "perly.y" -{ yyval.opval = newUNOP(OP_POSTINC, 0, - mod(scalar(yyvsp[-1].opval), OP_POSTINC)); } -break; -case 121: -#line 568 "perly.y" -{ yyval.opval = newUNOP(OP_POSTDEC, 0, - mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); } -break; -case 122: -#line 571 "perly.y" -{ yyval.opval = newUNOP(OP_PREINC, 0, - mod(scalar(yyvsp[0].opval), OP_PREINC)); } -break; -case 123: -#line 574 "perly.y" -{ yyval.opval = newUNOP(OP_PREDEC, 0, - mod(scalar(yyvsp[0].opval), OP_PREDEC)); } -break; -case 124: -#line 581 "perly.y" -{ yyval.opval = newANONLIST(yyvsp[-1].opval); } -break; -case 125: -#line 583 "perly.y" -{ yyval.opval = newANONLIST(Nullop); } -break; -case 126: -#line 585 "perly.y" -{ yyval.opval = newANONHASH(yyvsp[-2].opval); } -break; -case 127: -#line 587 "perly.y" -{ yyval.opval = newANONHASH(Nullop); } -break; -case 128: -#line 589 "perly.y" -{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); } -break; -case 129: -#line 595 "perly.y" -{ yyval.opval = dofile(yyvsp[0].opval); } -break; -case 130: -#line 597 "perly.y" -{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); } -break; -case 131: -#line 599 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-2].opval) - )),Nullop)); dep();} -break; -case 132: -#line 607 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, - OPf_SPECIAL|OPf_STACKED, - append_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF( - (OPpENTERSUB_AMPER<<8), - scalar(yyvsp[-3].opval) - )))); dep();} -break; -case 133: -#line 616 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - scalar(newCVREF(0,scalar(yyvsp[-2].opval))), Nullop)); dep();} -break; -case 134: -#line 620 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED, - prepend_elem(OP_LIST, - yyvsp[-1].opval, - scalar(newCVREF(0,scalar(yyvsp[-3].opval))))); dep();} -break; -case 139: -#line 632 "perly.y" -{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); } -break; -case 140: -#line 634 "perly.y" -{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); } -break; -case 141: -#line 636 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 142: -#line 638 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } -break; -case 143: -#line 640 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } -break; -case 144: -#line 642 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } -break; -case 145: -#line 644 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 146: -#line 646 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 147: -#line 648 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 148: -#line 650 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 149: -#line 652 "perly.y" -{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));} -break; -case 150: -#line 654 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 151: -#line 656 "perly.y" -{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); } -break; -case 152: -#line 658 "perly.y" -{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); } -break; -case 153: -#line 660 "perly.y" -{ yyval.opval = prepend_elem(OP_ASLICE, - newOP(OP_PUSHMARK, 0), - newLISTOP(OP_ASLICE, 0, - list(yyvsp[-1].opval), - ref(yyvsp[-3].opval, OP_ASLICE))); } -break; -case 154: -#line 666 "perly.y" -{ yyval.opval = prepend_elem(OP_HSLICE, - newOP(OP_PUSHMARK, 0), - newLISTOP(OP_HSLICE, 0, - list(yyvsp[-2].opval), - ref(oopsHV(yyvsp[-4].opval), OP_HSLICE))); - PL_expect = XOPERATOR; } -break; -case 155: -#line 673 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 156: -#line 675 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); } -break; -case 157: -#line 677 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); } -break; -case 158: -#line 679 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); } -break; -case 159: -#line 682 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } -break; -case 160: -#line 685 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL); - PL_hints |= HINT_BLOCK_SCOPE; } -break; -case 161: -#line 688 "perly.y" -{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); } -break; -case 162: -#line 690 "perly.y" -{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); } -break; -case 163: -#line 692 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, 0); } -break; -case 164: -#line 694 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 165: -#line 696 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); } -break; -case 166: -#line 698 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); } -break; -case 167: -#line 701 "perly.y" -{ yyval.opval = newOP(yyvsp[0].ival, 0); } -break; -case 168: -#line 703 "perly.y" -{ yyval.opval = newOP(yyvsp[-2].ival, 0); } -break; -case 169: -#line 705 "perly.y" -{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, - scalar(yyvsp[0].opval)); } -break; -case 170: -#line 708 "perly.y" -{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); } -break; -case 171: -#line 710 "perly.y" -{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); } -break; -case 172: -#line 712 "perly.y" -{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); } -break; -case 173: -#line 714 "perly.y" -{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); } -break; -case 176: -#line 721 "perly.y" -{ yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); } -break; -case 177: -#line 723 "perly.y" -{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); } -break; -case 178: -#line 728 "perly.y" -{ yyval.opval = sawparens(yyvsp[-1].opval); } -break; -case 179: -#line 730 "perly.y" -{ yyval.opval = sawparens(newNULLLIST()); } -break; -case 180: -#line 732 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 181: -#line 734 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 182: -#line 736 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 183: -#line 741 "perly.y" -{ yyval.opval = Nullop; } -break; -case 184: -#line 743 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 185: -#line 747 "perly.y" -{ yyval.opval = Nullop; } -break; -case 186: -#line 749 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -case 187: -#line 751 "perly.y" -{ yyval.opval = yyvsp[-1].opval; } -break; -case 188: -#line 757 "perly.y" -{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); } -break; -case 189: -#line 761 "perly.y" -{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); } -break; -case 190: -#line 765 "perly.y" -{ yyval.opval = newSVREF(yyvsp[0].opval); } -break; -case 191: -#line 769 "perly.y" -{ yyval.opval = newAVREF(yyvsp[0].opval); } -break; -case 192: -#line 773 "perly.y" -{ yyval.opval = newHVREF(yyvsp[0].opval); } -break; -case 193: -#line 777 "perly.y" -{ yyval.opval = newAVREF(yyvsp[0].opval); } -break; -case 194: -#line 781 "perly.y" -{ yyval.opval = newGVREF(0,yyvsp[0].opval); } -break; -case 195: -#line 786 "perly.y" -{ yyval.opval = scalar(yyvsp[0].opval); } -break; -case 196: -#line 788 "perly.y" -{ yyval.opval = scalar(yyvsp[0].opval); } -break; -case 197: -#line 790 "perly.y" -{ yyval.opval = scope(yyvsp[0].opval); } -break; -case 198: -#line 793 "perly.y" -{ yyval.opval = yyvsp[0].opval; } -break; -#line 2563 "perly.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ - state %d\n", YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", - YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - /* - ** reallocate and recover. Note that pointers - ** have to be reset, or bad things will happen - */ - int yyps_index = (yyssp - yyss); - int yypv_index = (yyvsp - yyvs); - yystacksize += YYSTACKSIZE; - ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE); - ysave->yyss = Renew(yyss, yystacksize, short); - if (!yyvs || !yyss) - goto yyoverflow; - yyssp = yyss + yyps_index; - yyvsp = yyvs + yypv_index; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("Out of memory for yacc stack"); -yyabort: - retval = 1; -yyaccept: -#ifdef USE_ITHREADS - LEAVE; /* force yydestruct() before we return */ -#endif - return retval; -} - -static void -yydestruct(pTHX_ void *ptr) -{ - struct ysv* ysave = (struct ysv*)ptr; - if (ysave->yyss) Safefree(ysave->yyss); - if (ysave->yyvs) Safefree(ysave->yyvs); - yydebug = ysave->oldyydebug; - yynerrs = ysave->oldyynerrs; - yyerrflag = ysave->oldyyerrflag; - yychar = ysave->oldyychar; - yyval = ysave->oldyyval; - yylval = ysave->oldyylval; - Safefree(ysave); -} diff --git a/vms/perly_h.vms b/vms/perly_h.vms deleted file mode 100644 index d45735f..0000000 --- a/vms/perly_h.vms +++ /dev/null @@ -1,78 +0,0 @@ -/* Postprocessed by vms_yfix.pl 1.11 to add VMS declarations of globals */ -#ifdef PERL_CORE -#define WORD 257 -#define METHOD 258 -#define FUNCMETH 259 -#define THING 260 -#define PMFUNC 261 -#define PRIVATEREF 262 -#define FUNC0SUB 263 -#define UNIOPSUB 264 -#define LSTOPSUB 265 -#define LABEL 266 -#define FORMAT 267 -#define SUB 268 -#define ANONSUB 269 -#define PACKAGE 270 -#define USE 271 -#define WHILE 272 -#define UNTIL 273 -#define IF 274 -#define UNLESS 275 -#define ELSE 276 -#define ELSIF 277 -#define CONTINUE 278 -#define FOR 279 -#define LOOPEX 280 -#define DOTDOT 281 -#define FUNC0 282 -#define FUNC1 283 -#define FUNC 284 -#define UNIOP 285 -#define LSTOP 286 -#define RELOP 287 -#define EQOP 288 -#define MULOP 289 -#define ADDOP 290 -#define DOLSHARP 291 -#define DO 292 -#define HASHBRACK 293 -#define NOAMP 294 -#define LOCAL 295 -#define MY 296 -#define MYSUB 297 -#define COLONATTR 298 -#define PREC_LOW 299 -#define OROP 300 -#define DOROP 301 -#define ANDOP 302 -#define NOTOP 303 -#define ASSIGNOP 304 -#define OROR 305 -#define DORDOR 306 -#define ANDAND 307 -#define BITOROP 308 -#define BITANDOP 309 -#define SHIFTOP 310 -#define MATCHOP 311 -#define UMINUS 312 -#define REFGEN 313 -#define POWOP 314 -#define PREINC 315 -#define PREDEC 316 -#define POSTINC 317 -#define POSTDEC 318 -#define ARROW 319 -#endif /* PERL_CORE */ - -typedef union { - I32 ival; - char *pval; - OP *opval; - GV *gvval; -} YYSTYPE; -#ifndef vax11c - extern YYSTYPE yylval; -#else - globalref YYSTYPE yylval; -#endif diff --git a/vms/vms_yfix.pl b/vms/vms_yfix.pl deleted file mode 100644 index 37fefad..0000000 --- a/vms/vms_yfix.pl +++ /dev/null @@ -1,70 +0,0 @@ -# This script takes the output produced from perly.y by byacc and -# the perly.fixer shell script (i.e. the perly.c and perly.h built -# for Unix systems) and patches them to produce copies containing -# appropriate declarations for VMS handling of global symbols. -# -# If it finds that the input files are already patches for VMS, -# it just copies the input to the output. -# -# Revised 20-Dec-1996 by Charles Bailey bailey@newman.upenn.edu - -$VERSION = '1.11'; - -push(@ARGV,(qw[ perly.c perly.h vms/perly_c.vms vms/perly_h.vms])[@ARGV..4]) - if @ARGV < 4; -($cinfile,$hinfile,$coutfile,$houtfile) = @ARGV; - -open C,$cinfile or die "Can't read $cinfile: $!\n"; -open COUT, ">$coutfile" or die "Can't create $coutfile: $!\n"; -print COUT <) { - # "y.tab.c" is illegal as a VMS filename; DECC 5.2/VAX preprocessor - # doesn't like this. - if ( s/^#line\s+(\d+)\s+"y.tab.c"/#line $1 "y_tab.c"/ ) { 1; } - elsif (/char \*getenv/) { - # accomodate old VAXC's macro susbstitution pecularities - $_ = "# ifndef getenv\n$_# endif\n"; - } - elsif ( /getenv\("YYDEBUG"\)/ ) { - $_ = " {\n register int saved_errno = errno;\n" - . "#ifdef VMS\n register int saved_vaxc_errno = vaxc\$errno;\n" - . "#else\n register int saved_vaxc_errno = 0;\n#endif\n" . $_; - # Reset the "error" status if an optional lookup fails - while (not /^\s+\}/) { print COUT; $_ = ; } - $_ .= " else SETERRNO(saved_errno,saved_vaxc_errno);\n }\n"; - } - else { - # add the dEXT tag to definitions of global vars, so we'll insert - # a globaldef when perly.c is compiled - s/^(short|int|YYSTYPE|char \*)\s*yy/dEXT $1 yy/; - } - print COUT; -} -close C; -close COUT; - -open H,$hinfile or die "Can't read $hinfile: $!\n"; -open HOUT, ">$houtfile" or die "Can't create $houtfile: $!\n"; -print HOUT <) { - $hfixed = /globalref/ unless $hfixed; # we've already got a fixed copy - next if /^extern YYSTYPE yylval/; # we've got a Unix version, and this - # is what we want to replace - print HOUT; -} -close H; - -print HOUT <<'EODECL' unless $hfixed; -#ifndef vax11c - extern YYSTYPE yylval; -#else - globalref YYSTYPE yylval; -#endif -EODECL - -close HOUT;