This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Switch from byacc to bison and simplify the perly.* regeneration
authorDave Mitchell <davem@fdisolutions.com>
Sat, 14 Feb 2004 02:06:53 +0000 (02:06 +0000)
committerDave Mitchell <davem@fdisolutions.com>
Sat, 14 Feb 2004 02:06:53 +0000 (02:06 +0000)
process

p4raw-id: //depot/perl@22302

23 files changed:
MANIFEST
Makefile.SH
Porting/pumpkin.pod
embedvar.h
intrpvar.h
op.c
perl.h
perlapi.h
perly.act [new file with mode: 0644]
perly.c
perly.fixer [deleted file]
perly.h
perly.tab [new file with mode: 0644]
perly.y
perly_c.diff [deleted file]
perlyline.pl [deleted file]
regen_perly.pl [new file with mode: 0644]
sv.c
toke.c
vms/descrip_mms.template
vms/perly_c.vms [deleted file]
vms/perly_h.vms [deleted file]
vms/vms_yfix.pl [deleted file]

index ebfbd1d..4fe2c94 100644 (file)
--- 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
index c39effa..b759821 100644 (file)
@@ -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 <<!GROK!THIS!
 # Makefile.SH
@@ -170,10 +161,7 @@ $spitshell >Makefile <<!GROK!THIS!
 # be lost the next time you run Configure.
 #  Makefile is used to generate $firstmakefile.  The only difference
 #  is that $firstmakefile has the dependencies filled in at the end.
-#
-#
-# I now supply perly.c with the kits, so don't remake perly.c without byacc
-BYACC = $byacc
+
 CC = $cc
 LD = $ld
 
@@ -826,28 +814,18 @@ install.html: all installhtml
 
 
 # I now supply perly.c with the kits, so the following section is
-# used only if you force byacc to run by saying
-#      make run_byacc
-# Since we patch up the byacc output, the perly.fixer script needs
-# to run with precisely the same version of byacc as I use.  You
-# normally shouldn't remake perly.[ch].
-
-.PHONY: check_byacc run_byacc
-
-check_byacc:
-       @$(BYACC) -V 2>&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
index 9de8434..aa52845 100644 (file)
@@ -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<perly.y>, you can regenerate the F<perly.c> 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<perly.fixer>
-script.  Depending on the nature of the changes to F<perly.y>, 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<perly.fixer> 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<not> rebuilt; this is just a
+plain static file now. 
 
-If C<perly.c> or C<perly.h> changes, make sure you run C<perl vms/vms_yfix.pl> 
-to update the corresponding VMS files.  The run_byacc target in the Unix
-Makefile takes care of this.  See also L<VMS-specific updates>.
+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
-    # manually apply any failed hunks
-    diff -u perly.c.orig 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<make run_byacc> 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<perly.y> or F<perly.c>, then you most probably want
-to update F<vms/perly_{h,c}.vms> by running C<perl vms/vms_yfix.pl>, 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.
 
index 08631b4..104d853 100644 (file)
 #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 */
 
 #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
index f8b20a5..2e9d1af 100644 (file)
@@ -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 (file)
--- 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 (file)
--- a/perl.h
+++ b/perl.h
 #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  /* <assert.h> might have been included somehow */
 #ifdef DEBUGGING
 #define assert(what)   PERL_DEB( {                                     \
index c761540..f6895de 100644 (file)
--- 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 (file)
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 (file)
--- a/perly.c
+++ b/perly.c
-#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 (executable)
index fec981f..0000000
+++ /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 <perly_c.diff
-       sed -e '/^[     ]*printf("yydebug:/s/printf(/PerlIO_printf(Perl_debug_log, /' \
-           -e '/^#line /s/"y[.]tab[.]c"/"perly.c"/' \
-           -e '/\[\] *= *[{]/s/^/static /' \
-           -e '/^static static/s/^static //' \
-           -e '/^#define.WORD/,/^#define.ARROW/d' \
-           -e '/^int.yydebug/,/^#define.yystacksize/d' \
-           -e 's/^yyerrlab:$//' \
-           -e 's/^    goto yyerrlab;//' \
-           -e 's/^yynewerror:$//' \
-           -e 's/^    goto yynewerror;//' \
-           -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
-           -e 's|deprecate(|deprecate_old(|' \
-           < $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 <perly.c.dif9
-       sed -e '/^[     ]*printf("yydebug:/s/printf(/PerlIO_printf(Perl_debug_log, /' \
-           -e '/^#line /s/"y[.]tab[.]c"/"perly.c"/' \
-           -e '/\[\] *= *[{]/s/^/static /' \
-           -e '/^static static/s/^static //' \
-           -e '/^#define.WORD/,/^#define.ARROW/d' \
-           -e '/^int.yydebug/,/^#define.yystacksize/d' \
-           -e 's/^yyerrlab:$//' \
-           -e 's/^    goto yyerrlab;//' \
-           -e 's/^yynewerror:$//' \
-           -e 's/^    goto yynewerror;//' \
-           -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
-           -e 's|deprecate(|deprecate_old(|' \
-           < $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 (file)
--- a/perly.h
+++ b/perly.h
 #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 (file)
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 (file)
--- 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.
  * 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 <ival> '{'
 
 %token <opval> 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 (file)
index 1a9c2d7..0000000
+++ /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 (file)
index f360fb4..0000000
+++ /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 (file)
index 0000000..da917e0
--- /dev/null
@@ -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 <<EOF; }
+
+You have the wrong version of bison in your path; currently 1.875 is
+required.  Try installing
+    http://ftp.gnu.org/gnu/bison/bison-1.875.tar.bz2
+or similar.  Your bison identifies itself as:
+
+$version
+EOF
+
+# creates $tmpc_file and $tmph_file
+my_system("$bison -d -o $tmpc_file $y_file");
+
+open CTMPFILE, $tmpc_file or die "Can't open $tmpc_file: $!\n";
+my $clines;
+{ local $/; $clines = <CTMPFILE>; }
+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 (<TMPH_FILE>) {
+    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 (file)
--- 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 (file)
--- 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--;
index 047e30a..63f9476 100644 (file)
@@ -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 (file)
index 70a8583..0000000
+++ /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 (file)
index d45735f..0000000
+++ /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 (file)
index 37fefad..0000000
+++ /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 <<EOH;
-/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
-EOH
-while (<C>) {
-  # "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; $_ = <C>; }
-    $_ .= "    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 <<EOH;
-/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
-EOH
-$hfixed = 0;  # keep -w happy
-while (<H>) {
-  $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;