summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1997-01-16 07:24:00 +1200
committerChip Salzenberg <chip@atlantic.net>1997-01-16 07:24:00 +1200
commit44a8e56aa037ed0f03f0506f6f85f5ed290c78e1 (patch)
treecb236761929c3161f91de24c86322902758b6efb
parent8227f81cbd3d53a745747c4247824562383badae (diff)
downloadperl-44a8e56aa037ed0f03f0506f6f85f5ed290c78e1.tar.gz
[inseparable changes from patch from perl5.003_20 to perl5.003_21]
BUILD PROCESS Subject: Make MachTen hints file warn about db-recno failures Date: Wed, 8 Jan 1997 12:07:18 +0100 From: Dominic Dunlop <domo@slipper.ip.lu> Files: hints/machten.sh Msg-ID: <v03010d00aef92fba6aca@[194.51.248.78]> (applied based on p5p patch as commit a4c70ab8da3ec1d87c83e5c617f4550814ec1724) Subject: 5.003_20, FreeBSD 3.0 and minor patch Date: Wed, 8 Jan 1997 14:37:47 +0100 From: Ollivier Robert <roberto@eurocontrol.fr> Files: Configure Msg-ID: <Mutt.19970108143747.roberto@caerdonn.eurocontrol.fr> (applied based on p5p patch as commit 50e0d465254be88fb90ac23584812a529741b4b1) CORE LANGUAGE CHANGES Subject: Fix overloading via inherited autoloaded functions Date: Mon, 13 Jan 1997 05:22:47 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: gv.c lib/overload.pm pod/perldiag.pod t/pragma/overload.t Msg-ID: <199701131022.FAA22830@monk.mps.ohio-state.edu> (applied based on p5p patch as commit a9bc755754f0db5e848e65dfd2e63a96af50ffd4) Subject: Method call fixes: Don't cache in alias, don't skip undef From: Chip Salzenberg <chip@atlantic.net> Files: global.sym gv.c gv.h hv.c op.c pod/perlguts.pod pod/perltoc.pod pp.c pp_ctl.c pp_hot.c proto.h scope.c sv.c t/op/method.t Subject: Formats can be closures From: Chip Salzenberg <chip@atlantic.net> Files: cv.h op.c perly.c perly.c.diff perly.y pp_sys.c sv.h Subject: Quote 'foo' in C<$x{-foo}> From: Chip Salzenberg <chip@atlantic.net> Files: toke.c Subject: Forbid C< x->{y} > and C< x->[0] > under C<strict refs> From: Chip Salzenberg <chip@atlantic.net> Files: op.c pod/perldiag.pod t/pragma/strict-refs Subject: Allow <=> to return undef when operands are not ordered From: Chip Salzenberg <chip@perl.com> Files: MANIFEST pp.c t/op/cmp.t CORE PORTABILITY Subject: Re: Perl 5.003_20: OS/2 patches Date: Fri, 10 Jan 1997 06:02:16 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: hints/os2.sh os2/Changes os2/os2.c os2/os2ish.h pp_sys.c Msg-ID: <199701101102.GAA19051@monk.mps.ohio-state.edu> (applied based on p5p patch as commit 9a3e71f668bd84b1cf53dd3ea10f588d59ecfebb) Subject: VMS patches for _20 Date: Tue, 14 Jan 1997 17:34:43 -0500 (EST) From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU> Files: configpm dosish.h os2/os2ish.h plan9/plan9ish.h proto.h t/pragma/strict.t t/pragma/subs.t t/pragma/warning.t toke.c unixish.h vms/Makefile vms/config.vms vms/descrip.mms vms/genconfig.pl vms/perly_c.vms vms/test.com vms/vmsish.h x2p/a2p.h x2p/str.c private-msgid: <01IE7MGK7ULQ003K5M@hmivax.humgen.upenn.edu> Subject: Irix 6.3 & 6.4 and perl5.003_20 Date: Mon, 13 Jan 1997 17:42:50 -0500 (EST) From: John Stoffel <jfs@fluent.com> Files: MANIFEST hints/irix_6_3.sh hints/irix_6_4.sh Msg-ID: <199701132242.RAA14601@jfs.Fluent.COM> (applied based on p5p patch as commit 8a1e91d771b51ae31eed1ac5944c63934213fb07) Subject: Patch: MachTen hints, Configure Date: Tue, 14 Jan 1997 13:43:13 +0100 From: Dominic Dunlop <domo@slipper.ip.lu> Files: Configure hints/machten.sh private-msgid: <v03010d00af0123a93670@[194.51.248.75]> Subject: Rename aux.sh to aux_3.sh for MS-LOSS From: Chip Salzenberg <chip@atlantic.net> Files: MANIFEST hints/aux_3.sh DOCUMENTATION Subject: Full documentation generation patch Date: Wed, 15 Jan 97 11:16:28 +0100 From: Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> Files: MANIFEST pod/roffitall pod/rofftoc Msg-ID: <15309.853323388@lyon.grenoble.hp.com> (applied based on p5p patch as commit a3270a1d7469cab9221ab0050a0e6695bd0047d8) Subject: Document use of pos() and /\G/ Date: Mon, 13 Jan 1997 15:13:12 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pod/perlfunc.pod pod/perlnews.pod pod/perlop.pod pod/perlre.pod pod/perltoc.pod pod/perltrap.pod Msg-ID: <199701132013.PAA26606@aatma.engin.umich.edu> (applied based on p5p patch as commit b2a07c1c241ec86f010fc0ea3bfa54c8ec28be90) Subject: Document new closure warnings From: Chip Salzenberg <chip@atlantic.net> Files: op.c pod/perldiag.pod Subject: Misc. doc patches missing in _20 Date: Tue, 07 Jan 1997 22:55:33 -0500 From: Roderick Schertler <roderick@gate.net> Files: pod/perlsub.pod pod/perltoc.pod pod/perlvar.pod Msg-ID: <102.852695733@eeyore.ibcinc.com> (applied based on p5p patch as commit b88f04ff2985d0899964b90ae56789d88f6b353e) LIBRARY AND EXTENSIONS Subject: Localize info about filesystems being case-forgiving From: Chip Salzenberg <chip@atlantic.net> Files: lib/File/Basename.pm pod/checkpods.PL pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL utils/splain.PL x2p/find2perl.PL x2p/s2p.PL Subject: Eliminate warning from C<use overload> From: Chip Salzenberg <chip@atlantic.net> Files: lib/overload.pm OTHER CORE CHANGES Subject: Fix C< eval { my $x; eval '$x' } > From: Chip Salzenberg <chip@atlantic.net> Files: op.c t/op/misc.t Subject: Don't warn if eval '' uses outer func's lexicals From: Chip Salzenberg <chip@atlantic.net> Files: op.c Subject: Avoid memory wastage in wait(); make pidstatus global From: Chip Salzenberg <chip@atlantic.net> Files: global.sym interp.sym perl.c perl.h pp_sys.c Subject: Forbid ++ and -- on readonly values Date: Fri, 10 Jan 1997 19:47:16 -0800 (PST) From: "John Q. Linux" <jql@accessone.com> Files: pp.c pp_hot.c Msg-ID: <Pine.LNX.3.95.970110193330.11249D-100000@jql.accessone.com> (applied based on p5p patch as commit 74c80e585086695d5428ab316ca82fd6931aeabd) Subject: Keep array from dying during foreach(@array) From: Chip Salzenberg <chip@atlantic.net> Files: cop.h pp_ctl.c Subject: Fix C< $a="simple"; split /($a)/o > From: Chip Salzenberg <chip@atlantic.net> Files: pp.c t/op/misc.t Subject: Fix for anon-lists with tied entries coredump Date: Fri, 10 Jan 1997 02:45:11 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pp.c Msg-ID: <199701100745.CAA13057@aatma.engin.umich.edu> (applied based on p5p patch as commit d976ac8220f8890bb7663152c4870f60e8e018c8) Subject: Don't set SVf_PADBUSY on immortal SVs From: Chip Salzenberg <chip@atlantic.net> Files: op.c Subject: Patch for Object subroutines Date: Tue, 7 Jan 1997 20:56:02 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: cop.h Msg-ID: <199701080156.UAA15366@monk.mps.ohio-state.edu> (applied based on p5p patch as commit 174150afa5efdafc0e94a18211d3c9aa06b15cd9) Subject: Use an SVt_PVLV to hold stacked OP pointers when debugging From: Chip Salzenberg <chip@atlantic.net> Files: pp.c pp_hot.c Subject: Undo change that freed large pad vars From: Chip Salzenberg <chip@atlantic.net> Files: scope.c TESTS Subject: UNIVERSAL tests From: Roderick Schertler <roderick@gate.net> Files: MANIFEST t/op/universal.t Subject: Test deletion of array during foreach From: Jarkko Hietaniemi <jhi@alpha.hut.fi> Files: t/op/misc.t UTILITIES Subject: Don't search for pod if path is already valid Date: Wed, 08 Jan 1997 15:25:19 -0800 From: Wayne Scott <wscott@ichips.intel.com> Files: utils/perldoc.PL Msg-ID: <199701082325.PAA04521@pdxlx008.intel.com> (applied based on p5p patch as commit 88f0eda82bb679b4e6445ccb17e18d0781c6a5da) Subject: Yet another perldoc option Date: Thu, 3 Oct 1996 00:00:35 +0200 From: Gisle Aas <aas@aas.no> Files: utils/perldoc.PL Msg-ID: <199610022200.AAA15334@furubotn.sn.no> (applied based on p5p patch as commit a2333f3625faa17fb193cfa25c3d598cb59f105f) Subject: Re: perldoc, temp files, async pagers Date: 07 Jan 1997 22:54:14 -0500 From: Roderick Schertler <roderick@gate.net> Files: utils/perldoc.PL Msg-ID: <pzwwtoom8p.fsf@eeyore.ibcinc.com> (applied based on p5p patch as commit 7c36043de26da560a0f7eb04f36d232762c0092c)
-rw-r--r--Changes298
-rwxr-xr-xConfigure6
-rw-r--r--MANIFEST7
-rwxr-xr-xMakefile.SH2
-rwxr-xr-xconfigpm16
-rw-r--r--cop.h17
-rw-r--r--cv.h7
-rw-r--r--dosish.h12
-rw-r--r--embed.h8
-rw-r--r--global.sym5
-rw-r--r--gv.c175
-rw-r--r--gv.h4
-rw-r--r--hints/aux_3.sh22
-rw-r--r--hints/irix_6_3.sh16
-rw-r--r--hints/irix_6_4.sh16
-rw-r--r--hints/machten.sh31
-rw-r--r--hints/os2.sh4
-rw-r--r--hv.c32
-rw-r--r--interp.sym1
-rw-r--r--lib/File/Basename.pm29
-rw-r--r--lib/overload.pm30
-rw-r--r--op.c205
-rw-r--r--os2/Changes5
-rw-r--r--os2/os2.c16
-rw-r--r--os2/os2ish.h19
-rw-r--r--patchlevel.h2
-rw-r--r--perl.c15
-rw-r--r--perl.h2
-rw-r--r--perly.c1371
-rw-r--r--perly.c.diff54
-rw-r--r--perly.y19
-rw-r--r--plan9/plan9ish.h12
-rw-r--r--pod/checkpods.PL7
-rw-r--r--pod/perldiag.pod60
-rw-r--r--pod/perlfunc.pod4
-rw-r--r--pod/perlguts.pod18
-rw-r--r--pod/perlnews.pod15
-rw-r--r--pod/perlop.pod29
-rw-r--r--pod/perlre.pod5
-rw-r--r--pod/perlsub.pod28
-rw-r--r--pod/perltoc.pod43
-rw-r--r--pod/perltrap.pod20
-rw-r--r--pod/perlvar.pod16
-rw-r--r--pod/pod2html.PL6
-rw-r--r--pod/pod2latex.PL6
-rw-r--r--pod/pod2man.PL6
-rw-r--r--pod/pod2text.PL6
-rwxr-xr-xpod/roffitall251
-rwxr-xr-xpod/rofftoc66
-rw-r--r--pp.c45
-rw-r--r--pp_ctl.c17
-rw-r--r--pp_hot.c69
-rw-r--r--pp_sys.c32
-rw-r--r--proto.h10
-rw-r--r--scope.c27
-rw-r--r--sv.c9
-rw-r--r--sv.h4
-rwxr-xr-xt/comp/proto.t6
-rwxr-xr-xt/io/fs.t2
-rwxr-xr-xt/op/cmp.t35
-rwxr-xr-xt/op/method.t24
-rwxr-xr-xt/op/misc.t14
-rwxr-xr-xt/op/universal.t38
-rwxr-xr-xt/pragma/overload.t24
-rw-r--r--t/pragma/strict-refs16
-rwxr-xr-xt/pragma/strict.t14
-rwxr-xr-xt/pragma/subs.t14
-rwxr-xr-xt/pragma/warning.t15
-rw-r--r--toke.c61
-rw-r--r--unixish.h12
-rw-r--r--utils/c2ph.PL6
-rw-r--r--utils/h2ph.PL6
-rw-r--r--utils/h2xs.PL6
-rw-r--r--utils/perlbug.PL6
-rw-r--r--utils/perldoc.PL33
-rw-r--r--utils/pl2pm.PL6
-rw-r--r--utils/splain.PL6
-rw-r--r--vms/Makefile137
-rw-r--r--vms/config.vms2
-rw-r--r--vms/descrip.mms2
-rw-r--r--vms/genconfig.pl4
-rw-r--r--vms/perly_c.vms2371
-rw-r--r--vms/test.com6
-rw-r--r--vms/vmsish.h46
-rw-r--r--x2p/a2p.h3
-rw-r--r--x2p/find2perl.PL6
-rw-r--r--x2p/s2p.PL6
-rw-r--r--x2p/str.c12
88 files changed, 3642 insertions, 2554 deletions
diff --git a/Changes b/Changes
index d75ec7edbe..8449c367f6 100644
--- a/Changes
+++ b/Changes
@@ -9,6 +9,304 @@ releases.)
----------------
+Version 5.003_21
+----------------
+
+This release includes several important bug fixes, and a couple of
+minor but valuable language tweaks. Please read on for a list of the
+significant changes:
+
+ CORE LANGUAGE CHANGES
+
+ Title: "Fix overloading via inherited autoloaded functions"
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ Msg-ID: <199701131022.FAA22830@monk.mps.ohio-state.edu>
+ Date: Mon, 13 Jan 1997 05:22:47 -0500 (EST)
+ Files: gv.c lib/overload.pm pod/perldiag.pod t/pragma/overload.t
+
+ Title: "Method call fixes: Don't cache in alias, don't skip undef"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: global.sym gv.c gv.h hv.c op.c pod/perlguts.pod
+ pod/perltoc.pod pp.c pp_ctl.c pp_hot.c proto.h scope.c sv.c
+ t/op/method.t
+
+ Title: "Formats can be closures"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: cv.h op.c perly.c perly.c.diff perly.y pp_sys.c sv.h
+
+ Title: "Quote 'foo' in C<$x{-foo}>"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: toke.c
+
+ Title: "Forbid C< x->{y} > and C< x->[0] > under C<strict refs>"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: op.c pod/perldiag.pod t/pragma/strict-refs
+
+ Title: "Allow <=> to return undef when operands are not ordered"
+ From: Chip Salzenberg and Andreas Koenig
+ Files: MANIFEST pp.c t/op/cmp.t
+
+ Title: "Fail regex that starts with '{'"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: regcomp.c
+
+ CORE PORTABILITY
+
+ Title: "Re: Perl 5.003_20: OS/2 patches"
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ Msg-ID: <199701101102.GAA19051@monk.mps.ohio-state.edu>
+ Date: Fri, 10 Jan 1997 06:02:16 -0500 (EST)
+ Files: hints/os2.sh os2/Changes os2/os2.c os2/os2ish.h pp_sys.c
+
+ Title: "VMS patches for _20"
+ From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
+ Msg-ID: <01IE7MGK7ULQ003K5M@hmivax.humgen.upenn.edu>
+ Date: Tue, 14 Jan 1997 17:34:43 -0500 (EST)
+ Files: configpm dosish.h os2/os2ish.h plan9/plan9ish.h proto.h
+ t/pragma/strict.t t/pragma/subs.t t/pragma/warning.t toke.c
+ unixish.h vms/Makefile vms/config.vms vms/descrip.mms
+ vms/genconfig.pl vms/perly_c.vms vms/test.com vms/vmsish.h
+ x2p/a2p.h x2p/str.c
+
+ Title: "Irix 6.3 & 6.4 and perl5.003_20"
+ From: John Stoffel <jfs@fluent.com>
+ Msg-ID: <199701132242.RAA14601@jfs.Fluent.COM>
+ Date: Mon, 13 Jan 1997 17:42:50 -0500 (EST)
+ Files: MANIFEST hints/irix_6_3.sh hints/irix_6_4.sh
+
+ Title: "Patch: MachTen hints, Configure"
+ From: Dominic Dunlop <domo@slipper.ip.lu>
+ Msg-ID: <v03010d00af0123a93670@[194.51.248.75]>
+ Date: Tue, 14 Jan 1997 13:43:13 +0100
+ Files: Configure hints/machten.sh
+
+ Title: "Rename aux.sh to aux_3.sh for MS-LOSS"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: MANIFEST hints/aux_3.sh
+
+ OTHER CORE CHANGES
+
+ Title: "Fix C< eval { my $x; eval '$x' } >"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: op.c t/op/misc.t
+
+ Title: "Don't warn if eval '' uses outer func's lexicals"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: op.c
+
+ Title: "Avoid memory wastage in wait(); make pidstatus global"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: global.sym interp.sym perl.c perl.h pp_sys.c
+
+ Title: "Forbid ++ and -- on readonly values"
+ From: "John Q. Linux" <jql@accessone.com>
+ Msg-ID: <Pine.LNX.3.95.970110193330.11249D-100000@jql.accessone.com>
+ Date: Fri, 10 Jan 1997 19:47:16 -0800 (PST)
+ Files: pp.c pp_hot.c
+
+ Title: "Keep array from dying during foreach(@array)"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: cop.h pp_ctl.c
+
+ Title: "Fix C< $a="simple"; split /($a)/o >"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: pp.c t/op/misc.t
+
+ Title: "Fix infinite loop for undef function in @SIG{__WARN__,__DIE__}"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: util.c
+
+ Title: "Fix for anon-lists with tied entries coredump"
+ From: Gurusamy Sarathy <gsar@engin.umich.edu>
+ Msg-ID: <199701100745.CAA13057@aatma.engin.umich.edu>
+ Date: Fri, 10 Jan 1997 02:45:11 -0500
+ Files: pp.c
+
+ Title: "Don't set SVf_PADBUSY on immortal SVs"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: op.c
+
+ Title: "Patch for Object subroutines"
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ Msg-ID: <199701080156.UAA15366@monk.mps.ohio-state.edu>
+ Date: Tue, 7 Jan 1997 20:56:02 -0500 (EST)
+ Files: cop.h
+
+ Title: "Use an SVt_PVLV to hold stacked OP pointers when debugging"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: pp.c pp_hot.c
+
+ Title: "Undo change that freed large pad vars"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: scope.c
+
+ BUILD PROCESS
+
+ Title: "Make MachTen hints file warn about db-recno failures"
+ From: Dominic Dunlop <domo@slipper.ip.lu>
+ Msg-ID: <v03010d00aef92fba6aca@[194.51.248.78]>
+ Date: Wed, 8 Jan 1997 12:07:18 +0100
+ Files: hints/machten.sh
+
+ Title: "5.003_20, FreeBSD 3.0 and minor patch"
+ From: roberto@eurocontrol.fr (Ollivier Robert)
+ Msg-ID: <Mutt.19970108143747.roberto@caerdonn.eurocontrol.fr>
+ Date: Wed, 8 Jan 1997 14:37:47 +0100
+ Files: Configure
+
+ Title: "Make installperl quieter; only shared libraries need 0555"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: installperl
+
+ TESTS
+
+ Title: "Advice on TEST failure"
+ From: Dominic Dunlop <domo@slipper.ip.lu>
+ Msg-ID: <v03010d01aefbaefcf3bc@[194.51.248.78]>
+ Date: Fri, 10 Jan 1997 10:19:07 +0100
+ Files: t/TEST
+
+ Title: "UNIVERSAL tests"
+ From: Roderick Schertler <roderick@gate.net>
+ Files: MANIFEST t/op/universal.t
+
+ Title: "Test deletion of array during foreach"
+ From: Jarkko Hietaniemi <jhi@alpha.hut.fi>
+ Files: t/op/misc.t
+
+ Title: "patch for db-recno.t"
+ From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+ Msg-ID: <9701121509.AA11147@claudius.bfsec.bt.co.uk>
+ Date: Sun, 12 Jan 1997 15:09:33 +0000 (GMT)
+ Files: t/lib/db-recno.t
+
+ LIBRARY AND EXTENSIONS
+
+ Title: "Localize info about filesystems being case-forgiving"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: lib/File/Basename.pm pod/checkpods.PL pod/pod2html.PL
+ pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL
+ utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL
+ utils/perldoc.PL utils/pl2pm.PL utils/splain.PL
+ x2p/find2perl.PL x2p/s2p.PL
+
+ Title: "Fix for fd leak in IO::File::new_tmpfile"
+ From: Graham Barr and Chip Salzenberg
+ Files: ext/IO/IO.xs ext/IO/lib/IO/Handle.pm
+
+ Title: "Refresh Getopt::Long to 2.6"
+ From: Johan Vromans <jvromans@squirrel.nl>
+ Files: lib/Getopt/Long.pm
+
+ Title: "Refresh DB_File to 1.10"
+ From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+ Msg-ID: <9701141247.AA21242@claudius.bfsec.bt.co.uk>
+ Date: Tue, 14 Jan 97 12:47:40 GMT
+ Files: ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs
+
+ Title: "Re: FileCache::cacheout clobbers $_"
+ From: Roderick Schertler <roderick@gate.net>
+ Msg-ID: <pz3ewb3189.fsf@eeyore.ibcinc.com>
+ Date: 08 Jan 1997 23:45:58 -0500
+ Files: lib/FileCache.pm lib/cacheout.pl
+
+ Title: "PATCH: AutoSplit"
+ From: Graham Barr <bodg@tiuk.ti.com>
+ Msg-ID: <9603111010.AA29935@tiuk.ti.com>
+ Date: 11 Mar 1996 06:01:58 -0500
+ Files: lib/AutoSplit.pm
+
+ Title: "Re: Uninitialized value in Carp.pm ? "
+ From: Gurusamy Sarathy <gsar@engin.umich.edu>
+ Msg-ID: <199701141815.NAA07960@aatma.engin.umich.edu>
+ Date: Tue, 14 Jan 1997 13:15:25 -0500
+ Files: lib/Carp.pm
+
+ Title: "Avoid "uninitialized" warnings from POSIX::constant()"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: ext/POSIX/POSIX.pm
+
+ Title: "Eliminate warning from C<use overload>"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: lib/overload.pm
+
+ Title: "low priority patches"
+ From: pmarquess@bfsec.bt.co.uk (Paul Marquess)
+ Msg-ID: <9701081655.AA27349@claudius.bfsec.bt.co.uk>
+ Date: Wed, 8 Jan 97 16:55:02 GMT
+ Files: lib/Cwd.pm t/comp/redef.t t/lib/db-btree.t
+
+ UTILITIES
+
+ Title: "Re: xsubpp and Tk ==> segfault"
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ Msg-ID: <199701080825.DAA15813@monk.mps.ohio-state.edu>
+ Date: Wed, 8 Jan 1997 03:25:47 -0500 (EST)
+ Files: lib/ExtUtils/xsubpp
+
+ Title: "Re: MakeMaker and 'make uninstall'"
+ From: Andreas Koenig <k@anna.in-berlin.de>
+ Msg-ID: <199701101243.NAA26400@anna.in-berlin.de>
+ Date: Fri, 10 Jan 1997 13:43:39 +0100
+ Files: lib/ExtUtils/MM_Unix.pm
+
+ Title: "Don't search for pod if path is already valid"
+ From: Wayne Scott <wscott@ichips.intel.com>
+ Msg-ID: <199701082325.PAA04521@pdxlx008.intel.com>
+ Date: Wed, 08 Jan 1997 15:25:19 -0800
+ Files: utils/perldoc.PL
+
+ Title: "Yet another perldoc option"
+ From: Gisle Aas <aas@aas.no>
+ Msg-ID: <199610022200.AAA15334@furubotn.sn.no>
+ Date: Thu, 3 Oct 1996 00:00:35 +0200
+ Files: utils/perldoc.PL
+
+ Title: "Re: perldoc, temp files, async pagers"
+ From: Roderick Schertler <roderick@gate.net>
+ Msg-ID: <pzwwtoom8p.fsf@eeyore.ibcinc.com>
+ Date: 07 Jan 1997 22:54:14 -0500
+ Files: utils/perldoc.PL
+
+ DOCUMENTATION
+
+ Title: "Full documentation generation patch"
+ From: Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
+ Msg-ID: <15309.853323388@lyon.grenoble.hp.com>
+ Date: Wed, 15 Jan 97 11:16:28 +0100
+ Files: MANIFEST pod/roffitall pod/rofftoc
+
+ Title: "Re: documentation correction (i.e. patch) for perlsyn.pod"
+ From: "M.J.T. Guy" <mjtg@cus.cam.ac.uk>
+ Msg-ID: <E0vilLh-0000M6-00@ursa.cus.cam.ac.uk>
+ Date: Fri, 10 Jan 1997 18:06:37 +0000
+ Files: pod/perlsyn.pod
+
+ Title: "Document use of pos() and /\G/"
+ From: Gurusamy Sarathy <gsar@engin.umich.edu>
+ Msg-ID: <199701132013.PAA26606@aatma.engin.umich.edu>
+ Date: Mon, 13 Jan 1997 15:13:12 -0500
+ Files: pod/perlfunc.pod pod/perlnews.pod pod/perlop.pod
+ pod/perlre.pod pod/perltoc.pod pod/perltrap.pod
+
+ Title: "Fix example #4 in perlXStut"
+ From: Ilya Zakharevich <ilya@math.ohio-state.edu>
+ Msg-ID: <199701050739.CAA11112@monk.mps.ohio-state.edu>
+ Date: Sun, 5 Jan 1997 02:39:45 -0500 (EST)
+ Files: pod/perlxstut.pod
+
+ Title: "Document new closure warnings"
+ From: Chip Salzenberg <chip@atlantic.net>
+ Files: op.c pod/perldiag.pod
+
+ Title: "Misc. doc patches missing in _20"
+ From: Roderick Schertler <roderick@gate.net>
+ Msg-ID: <102.852695733@eeyore.ibcinc.com>
+ Date: Tue, 07 Jan 1997 22:55:33 -0500
+ Files: pod/perlsub.pod pod/perltoc.pod pod/perlvar.pod
+
+
+----------------
Version 5.003_20
----------------
diff --git a/Configure b/Configure
index 9211439ce2..f9af03cf84 100755
--- a/Configure
+++ b/Configure
@@ -4105,6 +4105,10 @@ elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
eval $xscan;\
$contains '^fprintf$' libc.list >/dev/null 2>&1; then
eval $xrun
+elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
+ eval $xscan;\
+ $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+ eval $xrun
else
nm -p $* 2>/dev/null >libc.tmp
$grep fprintf libc.tmp > libc.ptf
@@ -4691,7 +4695,7 @@ if "$useshrplib"; then
xxx="-R $shrpdir"
;;
freebsd)
- xxx="-Wl,-R,$shrpdir"
+ xxx="-Wl,-R$shrpdir"
;;
linux|irix*)
xxx="-Wl,-rpath,$shrpdir"
diff --git a/MANIFEST b/MANIFEST
index ac32354741..6b202da522 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -203,7 +203,7 @@ hints/aix.sh Hints for named architecture
hints/altos486.sh Hints for named architecture
hints/amigaos.sh Hints for named architecture
hints/apollo.sh Hints for named architecture
-hints/aux.sh Hints for named architecture
+hints/aux_3.sh Hints for named architecture
hints/broken-db.msg Warning message for systems with broken DB library
hints/bsdos.sh Hints for named architecture
hints/convexos.sh Hints for named architecture
@@ -224,6 +224,8 @@ hints/irix_4.sh Hints for named architecture
hints/irix_5.sh Hints for named architecture
hints/irix_6.sh Hints for named architecture
hints/irix_6_2.sh Hints for named architecture
+hints/irix_6_3.sh Hints for named architecture
+hints/irix_6_4.sh Hints for named architecture
hints/isc.sh Hints for named architecture
hints/isc_2.sh Hints for named architecture
hints/linux.sh Hints for named architecture
@@ -526,6 +528,7 @@ pod/pod2latex.PL Precursor for translator to turn pod into LaTeX
pod/pod2man.PL Precursor for translator to turn pod into manpage
pod/pod2text.PL Precursor for translator to turn pod into text
pod/roffitall troff the whole man page set
+pod/rofftoc Generate a table of contents in troff format
pod/splitman Splits perlfunc into multiple man pages
pod/splitpod Splits perlfunc into multiple pod pages
pp.c Push/Pop code
@@ -636,6 +639,7 @@ t/op/assignwarn.t See if OP= operators warn correctly for undef targets
t/op/auto.t See if autoincrement et all work
t/op/bop.t See if bitops work
t/op/chop.t See if chop works
+t/op/cmp.t See if the various string and numeric compare work
t/op/cond.t See if conditional expressions work
t/op/delete.t See if delete works
t/op/do.t See if subroutines work
@@ -687,6 +691,7 @@ t/op/sysio.t See if sysread and syswrite work
t/op/tie.t See if tie/untie functions work
t/op/time.t See if time functions work
t/op/undef.t See if undef works
+t/op/universal.t See if UNIVERSAL class works
t/op/unshift.t See if unshift works
t/op/vec.t See if vectors work
t/op/write.t See if write works
diff --git a/Makefile.SH b/Makefile.SH
index 0cce725b21..025dd22248 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -478,7 +478,7 @@ minitest: miniperl
@echo "You may see some irrelevant test failures if you have been unable"
@echo "to build lib/Config.pm."
- cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
- && ./perl TEST base/*.t comp/*.t cmd/*.t pragma/*.t io/*.t op/*.t </dev/tty
+ && ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t </dev/tty
clist: $(c)
echo $(c) | tr ' ' '\012' >.clist
diff --git a/configpm b/configpm
index 3cef56dba4..1fef6fe1b2 100755
--- a/configpm
+++ b/configpm
@@ -39,19 +39,23 @@ ENDOFBEG
@non_v=();
@v_fast=();
@v_others=();
+$in_v = 0;
while (<>) {
next if m:^#!/bin/sh:;
# Catch CONFIG=true and PATCHLEVEL=n line from Configure.
s/^(\w+)=(true|\d+)\s*$/$1='$2'\n/;
- unless (m/^(\w+)='(.*)'\s*$/){
+ unless ($in_v or m/^(\w+)='(.*\n)/){
push(@non_v, "#$_"); # not a name='value' line
next;
}
- $name = $1;
+ if ($in_v) { $val .= $_; }
+ else { ($name,$val) = ($1,$2); }
+ $in_v = $val !~ /'\n/;
+ next if $in_v;
if ($extensions{$name}) { s,/,::,g }
- if (!$fast{$name}){ push(@v_others, $_); next; }
- push(@v_fast,$_);
+ if (!$fast{$name}){ push(@v_others, "$name='$val"); next; }
+ push(@v_fast,"$name='$val");
}
foreach(@non_v){ print CONFIG $_ }
@@ -99,7 +103,7 @@ sub FETCH {
if ($start == -1) { $start = length($marker) }
else { $start += length($marker) + 1 }
$value = substr($config_sh, $start,
- index($config_sh, q('), $start) - $start);
+ index($config_sh, qq('\n), $start) - $start);
$value = undef if $value eq 'undef'; # So we can say "if $Config{'foo'}".
$_[0]->{$_[1]} = $value; # cache it
@@ -116,7 +120,7 @@ sub FIRSTKEY {
}
sub NEXTKEY {
- my $pos = index($config_sh, "\n", $prevpos) + 1;
+ my $pos = index($config_sh, qq('\n), $prevpos) + 2;
my $len = index($config_sh, "=", $pos) - $pos;
$prevpos = $pos;
$len > 0 ? substr($config_sh, $pos, $len) : undef;
diff --git a/cop.h b/cop.h
index 9728962312..14cd43e3c0 100644
--- a/cop.h
+++ b/cop.h
@@ -46,14 +46,19 @@ struct block_sub {
cx->blk_sub.dfoutgv = defoutgv; \
(void)SvREFCNT_inc(cx->blk_sub.dfoutgv)
+/* We muck with cxstack_ix since _dec may call a DESTROY, overwriting cx. */
+
#define POPSUB(cx) \
if (cx->blk_sub.hasargs) { /* put back old @_ */ \
SvREFCNT_dec(GvAV(defgv)); \
GvAV(defgv) = cx->blk_sub.savearray; \
} \
if (cx->blk_sub.cv) { \
- if (!(CvDEPTH(cx->blk_sub.cv) = cx->blk_sub.olddepth)) \
+ if (!(CvDEPTH(cx->blk_sub.cv) = cx->blk_sub.olddepth)) { \
+ cxstack_ix++; \
SvREFCNT_dec((SV*)cx->blk_sub.cv); \
+ cxstack_ix--; \
+ } \
}
#define POPFORMAT(cx) \
@@ -101,9 +106,11 @@ struct block_loop {
cx->blk_loop.redo_op = cLOOP->op_redoop; \
cx->blk_loop.next_op = cLOOP->op_nextop; \
cx->blk_loop.last_op = cLOOP->op_lastop; \
- cx->blk_loop.iterlval = Nullsv; \
if (cx->blk_loop.itervar = (ivar)) \
- cx->blk_loop.itersave = SvREFCNT_inc(*cx->blk_loop.itervar);
+ cx->blk_loop.itersave = SvREFCNT_inc(*cx->blk_loop.itervar);\
+ cx->blk_loop.iterlval = Nullsv; \
+ cx->blk_loop.iterary = Nullav; \
+ cx->blk_loop.iterix = -1;
#define POPLOOP(cx) \
newsp = stack_base + cx->blk_loop.resetsp; \
@@ -111,7 +118,9 @@ struct block_loop {
if (cx->blk_loop.itervar) { \
SvREFCNT_dec(*cx->blk_loop.itervar); \
*cx->blk_loop.itervar = cx->blk_loop.itersave; \
- }
+ } \
+ if (cx->blk_loop.iterary && cx->blk_loop.iterary != curstack) \
+ SvREFCNT_dec(cx->blk_loop.iterary);
/* context common to subroutines, evals and loops */
struct block {
diff --git a/cv.h b/cv.h
index 57e814298f..b29793fa75 100644
--- a/cv.h
+++ b/cv.h
@@ -7,6 +7,8 @@
*
*/
+/* This structure much match the beginning of XPVFM */
+
struct xpvcv {
char * xpv_pv; /* pointer to malloced string */
STRLEN xpv_cur; /* length of xp_pv as a C string */
@@ -50,6 +52,7 @@ struct xpvcv {
#define CVf_UNIQUE 0x10 /* can't be cloned */
#define CVf_NODEBUG 0x20 /* no DB::sub indirection for this CV
(esp. useful for special XSUBs) */
+#define CVf_FORMAT 0x40 /* is a format, not a sub */
#define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE)
#define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE)
@@ -71,6 +74,10 @@ struct xpvcv {
#define CvUNIQUE_on(cv) (CvFLAGS(cv) |= CVf_UNIQUE)
#define CvUNIQUE_off(cv) (CvFLAGS(cv) &= ~CVf_UNIQUE)
+#define CvFORMAT(cv) (CvFLAGS(cv) & CVf_FORMAT)
+#define CvFORMAT_on(cv) (CvFLAGS(cv) |= CVf_FORMAT)
+#define CvFORMAT_off(cv) (CvFLAGS(cv) &= ~CVf_FORMAT)
+
#define CvNODEBUG(cv) (CvFLAGS(cv) & CVf_NODEBUG)
#define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG)
#define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG)
diff --git a/dosish.h b/dosish.h
index ff7e245834..58296a4224 100644
--- a/dosish.h
+++ b/dosish.h
@@ -55,6 +55,18 @@ void Perl_DJGPP_init();
*/
#undef ACME_MESS /**/
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+/* #define ALTERNATE_SHEBANG "#!" / **/
+
/*
* fwrite1() should be a routine with the same calling sequence as fwrite(),
* but which outputs all of the bytes requested as a single stream (unlike
diff --git a/embed.h b/embed.h
index 2399d0a4d5..b4bce4b58d 100644
--- a/embed.h
+++ b/embed.h
@@ -218,6 +218,7 @@
#define gv_AVadd Perl_gv_AVadd
#define gv_HVadd Perl_gv_HVadd
#define gv_IOadd Perl_gv_IOadd
+#define gv_autoload Perl_gv_autoload
#define gv_check Perl_gv_check
#define gv_efullname Perl_gv_efullname
#define gv_efullname3 Perl_gv_efullname3
@@ -483,6 +484,7 @@
#define patleave Perl_patleave
#define peep Perl_peep
#define pidgone Perl_pidgone
+#define pidstatus Perl_pidstatus
#define pmflag Perl_pmflag
#define pmruntime Perl_pmruntime
#define pmtrans Perl_pmtrans
@@ -975,9 +977,8 @@
#define start_subparse Perl_start_subparse
#define statbuf Perl_statbuf
#define string_amg Perl_string_amg
+#define sub_crush_depth Perl_sub_crush_depth
#define sub_generation Perl_sub_generation
-#define sublex_done Perl_sublex_done
-#define sublex_start Perl_sublex_start
#define subline Perl_subline
#define subname Perl_subname
#define subtr_amg Perl_subtr_amg
@@ -1275,7 +1276,6 @@
#define patchlevel (curinterp->Ipatchlevel)
#define perl_destruct_level (curinterp->Iperl_destruct_level)
#define perldb (curinterp->Iperldb)
-#define pidstatus (curinterp->Ipidstatus)
#define preambleav (curinterp->Ipreambleav)
#define preambled (curinterp->Ipreambled)
#define preprocess (curinterp->Ipreprocess)
@@ -1427,7 +1427,6 @@
#define Ipatchlevel patchlevel
#define Iperl_destruct_level perl_destruct_level
#define Iperldb perldb
-#define Ipidstatus pidstatus
#define Ipreambleav preambleav
#define Ipreambled preambled
#define Ipreprocess preprocess
@@ -1588,7 +1587,6 @@
#define patchlevel Perl_patchlevel
#define perl_destruct_level Perl_perl_destruct_level
#define perldb Perl_perldb
-#define pidstatus Perl_pidstatus
#define preambleav Perl_preambleav
#define preambled Perl_preambled
#define preprocess Perl_preprocess
diff --git a/global.sym b/global.sym
index e130524a96..6ffac19fee 100644
--- a/global.sym
+++ b/global.sym
@@ -158,6 +158,7 @@ pad_reset_pending
padix
padix_floor
patleave
+pidstatus
pow_amg
pow_ass_amg
ppaddr
@@ -434,6 +435,7 @@ gp_ref
gv_AVadd
gv_HVadd
gv_IOadd
+gv_autoload
gv_check
gv_efullname
gv_efullname3
@@ -1051,8 +1053,7 @@ sighandler
skipspace
stack_grow
start_subparse
-sublex_done
-sublex_start
+sub_crush_depth
sv_2bool
sv_2cv
sv_2io
diff --git a/gv.c b/gv.c
index 5ffa11b02e..89533ff906 100644
--- a/gv.c
+++ b/gv.c
@@ -88,9 +88,8 @@ int multi;
sv_upgrade((SV*)gv, SVt_PVGV);
if (SvLEN(gv))
Safefree(SvPVX(gv));
- Newz(602,gp, 1, GP);
+ Newz(602, gp, 1, GP);
GvGP(gv) = gp_ref(gp);
- GvREFCNT(gv) = 1;
GvSV(gv) = NEWSV(72,0);
GvLINE(gv) = curcop->cop_line;
GvFILEGV(gv) = curcop->cop_filegv;
@@ -137,30 +136,28 @@ I32 level;
if (!stash)
return 0;
- if (level > 100)
+ if ((level > 100) || (level < -100))
croak("Recursive inheritance detected");
- gvp = (GV**)hv_fetch(stash, name, len, TRUE);
-
DEBUG_o( deb("Looking for method %s in package %s\n",name,HvNAME(stash)) );
- topgv = *gvp;
- if (SvTYPE(topgv) != SVt_PVGV)
- gv_init(topgv, stash, name, len, TRUE);
-
- if (cv = GvCV(topgv)) {
- if (CvXSUB(cv) || CvROOT(cv) || CvGV(cv)) { /* Not deleted, possibly autoloaded. */
- if (GvCVGEN(topgv) >= sub_generation)
- return topgv; /* valid cached inheritance */
- if (!GvCVGEN(topgv)) { /* not an inheritance cache */
+
+ gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
+ if (!gvp)
+ topgv = Nullgv;
+ else {
+ topgv = *gvp;
+ if (SvTYPE(topgv) != SVt_PVGV)
+ gv_init(topgv, stash, name, len, TRUE);
+ if (cv = GvCV(topgv)) {
+ /* If genuine method or valid cache entry, use it */
+ if (!GvCVGEN(topgv) || GvCVGEN(topgv) >= sub_generation)
return topgv;
- }
+ /* Stale cached entry: junk it */
+ SvREFCNT_dec(cv);
+ GvCV(topgv) = cv = Nullcv;
+ GvCVGEN(topgv) = 0;
}
- /* stale cached entry, just junk it */
- SvREFCNT_dec(cv);
- GvCV(topgv) = cv = 0;
- GvCVGEN(topgv) = 0;
}
- /* Now cv = 0, and there is no cv in topgv. */
gvp = (GV**)hv_fetch(stash,"ISA",3,FALSE);
if (gvp && (gv = *gvp) != (GV*)&sv_undef && (av = GvAV(gv))) {
@@ -175,22 +172,25 @@ I32 level;
SvPVX(sv), HvNAME(stash));
continue;
}
- gv = gv_fetchmeth(basestash, name, len, level + 1);
- if (gv) {
- GvCV(topgv) = GvCV(gv); /* cache the CV */
- GvCVGEN(topgv) = sub_generation; /* valid for now */
- SvREFCNT_inc(GvCV(gv));
- return gv;
- }
+ gv = gv_fetchmeth(basestash, name, len,
+ (level >= 0) ? level + 1 : level - 1);
+ if (gv)
+ goto gotcha;
}
}
- if (!level) {
+ if (level == 0 || level == -1) {
if (lastchance = gv_stashpvn("UNIVERSAL", 9, FALSE)) {
- if (gv = gv_fetchmeth(lastchance, name, len, level + 1)) {
- GvCV(topgv) = GvCV(gv); /* cache the CV */
- GvCVGEN(topgv) = sub_generation; /* valid for now */
- SvREFCNT_inc(GvCV(gv));
+ if (gv = gv_fetchmeth(lastchance, name, len,
+ (level >= 0) ? level + 1 : level - 1)) {
+ gotcha:
+ /* Use topgv for cache only if it has no synonyms */
+ if (topgv && GvREFCNT(topgv) == 1) {
+ if (cv = GvCV(topgv))
+ SvREFCNT_dec(cv);
+ GvCV(topgv) = (CV*)SvREFCNT_inc(GvCV(gv));
+ GvCVGEN(topgv) = sub_generation;
+ }
return gv;
}
}
@@ -271,22 +271,50 @@ char* name;
}
if (!gv) {
- CV* cv;
-
if (strEQ(name,"import"))
gv = (GV*)&sv_yes;
- else if (strNE(name, "AUTOLOAD")) {
- if (gv = gv_fetchmeth(stash, "AUTOLOAD", 8, 0)) {
- /* One more chance... */
- SV *tmpstr = sv_2mortal(newSVpv(HvNAME(stash),0));
- sv_catpvn(tmpstr,"::", 2);
- sv_catpvn(tmpstr, name, nend - name);
- cv = GvCV(gv);
- sv_setsv(GvSV(CvGV(cv)), tmpstr);
- SvTAINTED_off(GvSV(CvGV(cv)));
- }
- }
+ else
+ gv = gv_autoload(stash, name, nend - name);
}
+
+ return gv;
+}
+
+GV*
+gv_autoload(stash, name, len)
+HV* stash;
+char* name;
+STRLEN len;
+{
+ static char autoload[] = "AUTOLOAD";
+ static STRLEN autolen = 8;
+ GV* gv;
+ CV* cv;
+ HV* varstash;
+ GV* vargv;
+ SV* varsv;
+
+ if (len == autolen && strnEQ(name, autoload, autolen))
+ return Nullgv;
+ if (!(gv = gv_fetchmeth(stash, autoload, autolen, 0)))
+ return Nullgv;
+ cv = GvCV(gv);
+
+ /*
+ * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
+ * The subroutine's original name may not be "AUTOLOAD", so we don't
+ * use that, but for lack of anything better we will use the sub's
+ * original package to look up $AUTOLOAD.
+ */
+ varstash = GvSTASH(CvGV(cv));
+ vargv = *(GV**)hv_fetch(varstash, autoload, autolen, TRUE);
+ if (!isGV(vargv))
+ gv_init(vargv, varstash, autoload, autolen, FALSE);
+ varsv = GvSV(vargv);
+ sv_setpv(varsv, HvNAME(stash));
+ sv_catpvn(varsv, "::", 2);
+ sv_catpvn(varsv, name, len);
+ SvTAINTED_off(varsv);
return gv;
}
@@ -796,8 +824,19 @@ gp_ref(gp)
GP* gp;
{
gp->gp_refcnt++;
+ if (gp->gp_cv) {
+ if (gp->gp_cvgen) {
+ /* multi-named GPs cannot be used for method cache */
+ SvREFCNT_dec(gp->gp_cv);
+ gp->gp_cv = Nullcv;
+ gp->gp_cvgen = 0;
+ }
+ else {
+ /* Adding a new name to a subroutine invalidates method cache */
+ sub_generation++;
+ }
+ }
return gp;
-
}
void
@@ -813,6 +852,10 @@ GV* gv;
warn("Attempt to free unreferenced glob pointers");
return;
}
+ if (gp->gp_cv) {
+ /* Deleting the name of a subroutine invalidates method cache */
+ sub_generation++;
+ }
if (--gp->gp_refcnt > 0) {
if (gp->gp_egv == gv)
gp->gp_egv = 0;
@@ -968,8 +1011,42 @@ HV* stash;
*buf = '('; /* A cooky: "(". */
strcpy(buf + 1, cp);
- gv = gv_fetchmeth(stash, buf, strlen(buf), 0); /* fills the stash! */
- if(gv && (cv = GvCV(gv))) filled = 1;
+ DEBUG_o( deb("Checking overloading of `%s' in package `%.256s'\n",
+ cp, HvNAME(stash)) );
+ gv = gv_fetchmeth(stash, buf, strlen(buf), -1); /* no filling stash! */
+ if(gv && (cv = GvCV(gv))) {
+ char *name = buf;
+ if (GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")
+ && strEQ(HvNAME(GvSTASH(CvGV(cv))), "overload")) {
+ /* GvSV contains the name of the method. */
+ GV *ngv;
+
+ DEBUG_o( deb("Resolving method `%.256s' for overloaded `%s' in package `%.256s'\n",
+ SvPV(GvSV(gv), na), cp, HvNAME(stash)) );
+ if (SvPOK(GvSV(gv))
+ && (ngv = gv_fetchmethod(stash, SvPVX(GvSV(gv))))) {
+ name = SvPVX(GvSV(gv));
+ cv = GvCV(gv = ngv);
+ } else {
+ /* Can be an import stub (created by `can'). */
+ if (GvCVGEN(gv)) {
+ croak("Stub found while resolving method `%.256s' overloading `%s' in package `%.256s'",
+ (SvPOK(GvSV(gv)) ? SvPVX(GvSV(gv)) : "???" ),
+ cp, HvNAME(stash));
+ } else
+ croak("Cannot resolve method `%.256s' overloading `%s' in package `%.256s'",
+ (SvPOK(GvSV(gv)) ? SvPVX(GvSV(gv)) : "???" ),
+ cp, HvNAME(stash));
+ }
+ /* If the sub is only a stub then we may have a gv to AUTOLOAD */
+ gv = (GV*)*hv_fetch(GvSTASH(gv), name, strlen(name), TRUE);
+ cv = GvCV(gv);
+ }
+ DEBUG_o( deb("Overloading `%s' in package `%.256s' via `%.256s::%.256s' \n",
+ cp, HvNAME(stash), HvNAME(GvSTASH(CvGV(cv))),
+ GvNAME(CvGV(cv))) );
+ filled = 1;
+ }
#endif
amt.table[i]=(CV*)SvREFCNT_inc(cv);
}
@@ -1255,7 +1332,7 @@ int flags;
case dec_amg:
SvSetSV(left,res); return left;
case not_amg:
-ans=!SvOK(res); break;
+ ans=!SvOK(res); break;
}
return ans? &sv_yes: &sv_no;
} else if (method==copy_amg) {
diff --git a/gv.h b/gv.h
index c713f4e178..2def7c49a4 100644
--- a/gv.h
+++ b/gv.h
@@ -42,7 +42,9 @@ struct gp {
#define GvFORM(gv) (GvGP(gv)->gp_form)
#define GvAV(gv) (GvGP(gv)->gp_av)
-#define GvREFCNT_inc(gv) ((GV*)SvREFCNT_inc(gv))
+
+/* This macro is deprecated. Do not use! */
+#define GvREFCNT_inc(gv) ((GV*)SvREFCNT_inc(gv)) /* DO NOT USE */
#ifdef MICROPORT /* Microport 2.4 hack */
AV *GvAVn();
diff --git a/hints/aux_3.sh b/hints/aux_3.sh
new file mode 100644
index 0000000000..aa3150afbe
--- /dev/null
+++ b/hints/aux_3.sh
@@ -0,0 +1,22 @@
+# hints/aux_3.sh
+#
+# Improved by Jake Hamby <jehamby@lightside.com> to support both Apple CC
+# and GNU CC. Tested on A/UX 3.1.1 with GCC 2.6.3.
+# Now notifies of problem with version of dbm shipped with A/UX
+# Last modified
+# Sun Jan 5 11:16:41 WET 1997
+
+case "$cc" in
+*gcc*) optimize='-O2'
+ ccflags="$ccflags -D_POSIX_SOURCE"
+ echo "Setting hints for GNU CC."
+ ;;
+*) optimize='-O'
+ ccflags="$ccflags -B/usr/lib/big/ -DPARAM_NEEDS_TYPES -D_POSIX_SOURCE"
+ POSIX_cflags='ccflags="$ccflags -ZP -Du_long=U32"'
+ echo "Setting hints for Apple's CC. If you plan to use"
+ echo "GNU CC, please rerun this Configure script as:"
+ echo "./Configure -Dcc=gcc"
+ ;;
+esac
+test -r ./broken-db.msg && . ./broken-db.msg
diff --git a/hints/irix_6_3.sh b/hints/irix_6_3.sh
new file mode 100644
index 0000000000..11bd82ac38
--- /dev/null
+++ b/hints/irix_6_3.sh
@@ -0,0 +1,16 @@
+# hints/irix_6_3.sh
+#
+# Created by John Stoffel (jfs@fluent.com), 01/13/1997
+# Based on the Irix 6.2 hints file, but simplified.
+
+# Configure can't parse 'nm' output on Irix 6.3
+usenm='n'
+
+# This keeps optimizer warnings quiet.
+ccflags="$ccflags -Olimit 3000"
+
+# Gets rid of some extra libs that don't seem to be really needed.
+# See the Irix 6.2 hints file for some justifications.
+set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ dl / /' -e 's/ socket / /' -e 's/ nsl / /'`
+shift
+libswanted="$*"
diff --git a/hints/irix_6_4.sh b/hints/irix_6_4.sh
new file mode 100644
index 0000000000..b5a994525a
--- /dev/null
+++ b/hints/irix_6_4.sh
@@ -0,0 +1,16 @@
+# hints/irix_6_4.sh
+#
+# Created by John Stoffel (jfs@fluent.com), 01/13/1997
+# Based on the Irix 6.2 hints file, but simplified.
+
+# Configure can't parse 'nm' output on Irix 6.4
+usenm='n'
+
+# This keeps optimizer warnings quiet.
+ccflags="$ccflags -Olimit 3000"
+
+# Gets rid of some extra libs that don't seem to be really needed.
+# See the Irix 6.2 hints file for some justifications.
+set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /' -e 's/ dl / /' -e 's/ socket / /' -e 's/ nsl / /'`
+shift
+libswanted="$*"
diff --git a/hints/machten.sh b/hints/machten.sh
index f6f75d6616..55feadcfb7 100644
--- a/hints/machten.sh
+++ b/hints/machten.sh
@@ -1,5 +1,5 @@
# machten.sh
-# This is for MachTen 4.0.2. It might work on other versions too.
+# This is for MachTen 4.0.3. It might work on other versions too.
#
# MachTen users might need a fixed tr from ftp.tenon.com. This should
# be described in the MachTen release notes.
@@ -13,6 +13,9 @@
# Martijn Koster <m.koster@webcrawler.com>
# Richard Yeh <rcyeh@cco.caltech.edu>
#
+# Reinstate sigsetjmp iff version is 4.0.3 or greater; use nm
+# (assumes Configure change); prune libswanted -- Dominic Dunlop 970113
+# Warn about test failure due to old Berkeley db -- Dominic Dunlop 970105
# Do not use perl's malloc; SysV IPC OK -- Neil Cutcliffe, Tenon 961030
# File::Find's use of link count disabled by Dominic Dunlop 960528
# Perl's use of sigsetjmp etc. disabled by Dominic Dunlop 960521
@@ -23,16 +26,15 @@
# know how to use it yet.
#
# Updated by Dominic Dunlop <domo@tcp.ip.lu>
-# Wed Nov 13 11:47:09 WET 1996
-
+# Tue Jan 14 10:17:18 WET 1997
# Power MachTen is a real memory system and its standard malloc
# has been optimized for this. Using this malloc instead of Perl's
# malloc may result in significant memory savings.
usemymalloc='false'
-# Configure doesn't know how to parse the nm output.
-usenm=undef
+# Make symbol table listings les voluminous
+nmopts=-gp
# Install in /usr/local by default
prefix='/usr/local'
@@ -42,9 +44,19 @@ prefix='/usr/local'
# determine this automatically.
alignbytes=8
-# There appears to be a problem with perl's use of sigsetjmp and
+# 4.0.2 and earlier had a problem with perl's use of sigsetjmp and
# friends. Use setjmp and friends instead.
-d_sigsetjmp='undef'
+expr "$osvers" \< "4.0.3" > /dev/null && d_sigsetjmp='undef'
+
+# Get rid of some extra libs which it takes Configure a tediously
+# long time never to find on MachTen
+set `echo X "$libswanted "|sed -e 's/ net / /' -e 's/ socket / /' \
+ -e 's/ inet / /' -e 's/ nsl / /' -e 's/ nm / /' -e 's/ malloc / /' \
+ -e 's/ ld / /' -e 's/ sun / /' -e 's/ posix / /' \
+ -e 's/ cposix / /' -e 's/ crypt / /' \
+ -e 's/ ucb / /' -e 's/ bsd / /' -e 's/ BSD / /' -e 's/ PW / /'`
+shift
+libswanted="$*"
# MachTen always reports ony two links to directories, even if they
# contain subdirectories. Consequently, we use this variable to stop
@@ -66,7 +78,8 @@ At the end of Configure, you will see a harmless message
Hmm...You had some extra variables I don't know about...I'll try to keep 'em.
Propagating recommended variable dont_use_nlink
-
-Read the File::Find documentation for more information.
+ Propagating recommended variable nmopts
+Read the File::Find documentation for more information about dont_use_nlink
EOM
+test -r ./broken-db.msg && . ./broken-db.msg
diff --git a/hints/os2.sh b/hints/os2.sh
index 59087e3888..9bce2a594c 100644
--- a/hints/os2.sh
+++ b/hints/os2.sh
@@ -129,7 +129,9 @@ fi
# [Maybe we should just remove c from $libswanted ?]
-libs='-lsocket -lm'
+# Test would pick up wrong rand, so we hardwire the value for random()
+libs='-lsocket -lm -lbsd'
+randbits=31
archobjs="os2$obj_ext dl_os2$obj_ext"
# Run files without extension with sh:
diff --git a/hv.c b/hv.c
index e73266b367..71009c9e20 100644
--- a/hv.c
+++ b/hv.c
@@ -423,7 +423,7 @@ I32 flags;
if (entry == xhv->xhv_eiter)
HvLAZYDEL_on(hv);
else
- he_free(entry, HvSHAREKEYS(hv));
+ he_free(hv, entry);
--xhv->xhv_keys;
return sv;
}
@@ -485,7 +485,7 @@ U32 hash;
if (entry == xhv->xhv_eiter)
HvLAZYDEL_on(hv);
else
- he_free(entry, HvSHAREKEYS(hv));
+ he_free(hv, entry);
--xhv->xhv_keys;
return sv;
}
@@ -746,19 +746,20 @@ newHV()
}
void
-he_free(hent, shared)
+he_free(hv, hent)
+HV *hv;
register HE *hent;
-I32 shared;
{
if (!hent)
return;
- if (SvTYPE(HeVAL(hent)) == SVt_PVGV && GvCVu(HeVAL(hent)))
- sub_generation++; /* May be deletion of method? */
+ if (isGV(HeVAL(hent)) && GvCVu(HeVAL(hent)) && HvNAME(hv))
+ sub_generation++; /* may be deletion of method from stash */
SvREFCNT_dec(HeVAL(hent));
if (HeKLEN(hent) == HEf_SVKEY) {
SvREFCNT_dec(HeKEY_sv(hent));
Safefree(HeKEY_hek(hent));
- } else if (shared)
+ }
+ else if (HvSHAREKEYS(hv))
unshare_hek(HeKEY_hek(hent));
else
Safefree(HeKEY_hek(hent));
@@ -766,17 +767,20 @@ I32 shared;
}
void
-he_delayfree(hent, shared)
+he_delayfree(hv, hent)
+HV *hv;
register HE *hent;
-I32 shared;
{
if (!hent)
return;
+ if (isGV(HeVAL(hent)) && GvCVu(HeVAL(hent)) && HvNAME(hv))
+ sub_generation++; /* may be deletion of method from stash */
sv_2mortal(HeVAL(hent)); /* free between statements */
if (HeKLEN(hent) == HEf_SVKEY) {
sv_2mortal(HeKEY_sv(hent));
Safefree(HeKEY_hek(hent));
- } else if (shared)
+ }
+ else if (HvSHAREKEYS(hv))
unshare_hek(HeKEY_hek(hent));
else
Safefree(HeKEY_hek(hent));
@@ -810,7 +814,6 @@ HV *hv;
register HE *ohent = Null(HE*);
I32 riter;
I32 max;
- I32 shared;
if (!hv)
return;
@@ -821,12 +824,11 @@ HV *hv;
max = HvMAX(hv);
array = HvARRAY(hv);
hent = array[0];
- shared = HvSHAREKEYS(hv);
for (;;) {
if (hent) {
ohent = hent;
hent = HeNEXT(hent);
- he_free(ohent, shared);
+ he_free(hv, ohent);
}
if (!hent) {
if (++riter > max)
@@ -871,7 +873,7 @@ HV *hv;
#endif
if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
HvLAZYDEL_off(hv);
- he_free(entry, HvSHAREKEYS(hv));
+ he_free(hv, entry);
}
xhv->xhv_riter = -1;
xhv->xhv_eiter = Null(HE*);
@@ -938,7 +940,7 @@ HV *hv;
if (oldentry && HvLAZYDEL(hv)) { /* was deleted earlier? */
HvLAZYDEL_off(hv);
- he_free(oldentry, HvSHAREKEYS(hv));
+ he_free(hv, oldentry);
}
xhv->xhv_eiter = entry;
diff --git a/interp.sym b/interp.sym
index 55b53389af..ea4241ac25 100644
--- a/interp.sym
+++ b/interp.sym
@@ -106,7 +106,6 @@ parsehook
patchlevel
perldb
perl_destruct_level
-pidstatus
preambled
preambleav
preprocess
diff --git a/lib/File/Basename.pm b/lib/File/Basename.pm
index af52c34c3a..b904a529bd 100644
--- a/lib/File/Basename.pm
+++ b/lib/File/Basename.pm
@@ -91,8 +91,9 @@ would yield
=item C<basename>
The basename() routine returns the first element of the list produced
-by calling fileparse() with the same arguments. It is provided for
-compatibility with the UNIX shell command basename(1).
+by calling fileparse() with the same arguments, except that it always
+quotes metacharacters in the given suffixes. It is provided for
+programmer compatibility with the UNIX shell command basename(1).
=item C<dirname>
@@ -115,20 +116,23 @@ require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
#use strict;
-#use vars qw($VERSION $Fileparse_fstype);
+#use vars qw($VERSION $Fileparse_fstype $Fileparse_fgcase);
$VERSION = "2.4";
# fileparse_set_fstype() - specify OS-based rules used in future
# calls to routines in this package
#
-# Currently recognized values: VMS, MSDOS, MacOS
+# Currently recognized values: VMS, MSDOS, MacOS, os2, AmigaOS
# Any other name uses Unix-style rules
sub fileparse_set_fstype {
- my($old) = $Fileparse_fstype;
- $Fileparse_fstype = $_[0] if $_[0];
- $old;
+ my @old = ($Fileparse_fstype, $Fileparse_fgcase);
+ if (@_) {
+ $Fileparse_fstype = $_[0];
+ $Fileparse_fgcase = ($_[0] =~ /^(?:MacOS|VMS|os2|AmigaOS)/i);
+ }
+ wantarray ? @old : $old[0];
}
# fileparse() - parse file specification
@@ -138,7 +142,7 @@ sub fileparse_set_fstype {
sub fileparse {
my($fullname,@suffices) = @_;
- my($fstype) = $Fileparse_fstype;
+ my($fstype,$fgcase) = ($Fileparse_fstype, $Fileparse_fgcase);
my($dirpath,$tail,$suffix,$basename);
if ($fstype =~ /^VMS/i) {
@@ -165,15 +169,14 @@ sub fileparse {
if (@suffices) {
$tail = '';
foreach $suffix (@suffices) {
- if ($basename =~ /([\x00-\xff]*?)($suffix)$/) {
- $tail = $2 . $tail;
- $basename = $1;
+ my $pat = ($fgcase ? '(?i)' : '') . "($suffix)\$";
+ if ($basename =~ s/$pat//) {
+ $tail = $1 . $tail;
}
}
}
wantarray ? ($basename,$dirpath,$tail) : $basename;
-
}
@@ -225,6 +228,6 @@ sub dirname {
$dirname;
}
-$Fileparse_fstype = $^O;
+fileparse_set_fstype $^O;
1;
diff --git a/lib/overload.pm b/lib/overload.pm
index ec874ec8d7..049545995c 100644
--- a/lib/overload.pm
+++ b/lib/overload.pm
@@ -14,7 +14,8 @@ sub OVERLOAD {
} else {
$sub = $arg{$_};
if (not ref $sub and $sub !~ /::/) {
- $sub = "${'package'}::$sub";
+ $ {$package . "::(" . $_} = $sub;
+ $sub = \&nil;
}
#print STDERR "Setting `$ {'package'}::\cO$_' to \\&`$sub'.\n";
*{$package . "::(" . $_} = \&{ $sub };
@@ -49,16 +50,28 @@ sub Overloaded {
$package->can('()');
}
+sub ov_method {
+ my $globref = shift;
+ return undef unless $globref;
+ my $sub = \&{*$globref};
+ return $sub if $sub ne \&nil;
+ return shift->can($ {*$globref});
+}
+
sub OverloadedStringify {
my $package = shift;
$package = ref $package if ref $package;
- $package->can('(""')
+ #$package->can('(""')
+ ov_method mycan($package, '(""'), $package;
}
sub Method {
my $package = shift;
$package = ref $package if ref $package;
- $package->can('(' . shift)
+ #my $meth = $package->can('(' . shift);
+ ov_method mycan($package, '(' . shift), $package;
+ #return $meth if $meth ne \&nil;
+ #return $ {*{$meth}};
}
sub AddrRef {
@@ -76,6 +89,17 @@ sub StrVal {
"$_[0]";
}
+sub mycan { # Real can would leave stubs.
+ my ($package, $meth) = @_;
+ return \*{$package . "::$meth"} if defined &{$package . "::$meth"};
+ my $p;
+ foreach $p (@{$package . "::ISA"}) {
+ my $out = mycan($p, $meth);
+ return $out if $out;
+ }
+ return undef;
+}
+
1;
__END__
diff --git a/op.c b/op.c
index 3e3df86a27..34683106dd 100644
--- a/op.c
+++ b/op.c
@@ -212,7 +212,7 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
SvNVX(sv) = (double)curcop->cop_seq;
SvIVX(sv) = 999999999; /* A ref, intro immediately */
SvFLAGS(sv) |= SVf_FAKE;
- if (CvANON(compcv)) {
+ if (CvANON(compcv) || CvFORMAT(compcv)) {
/* "It's closures all the way down." */
CvCLONE_on(compcv);
if (cv != startcv) {
@@ -224,16 +224,17 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
CvCLONE_on(bcv);
else {
if (dowarn)
- warn("Value of %s may be unavailable",
+ warn(
+ "Variable \"%s\" may be unavailable",
name);
break;
}
}
}
}
- else {
+ else if (!CvUNIQUE(compcv)) {
if (dowarn && !CvUNIQUE(cv))
- warn("Value of %s will not stay shared", name);
+ warn("Variable \"%s\" will not stay shared", name);
}
}
av_store(comppad, newoff, SvREFCNT_inc(oldsv));
@@ -258,10 +259,14 @@ pad_findlex(char *name, PADOFFSET newoff, U32 seq, CV* startcv, I32 cx_ix)
}
break;
case CXt_EVAL:
- if (cx->blk_eval.old_op_type != OP_ENTEREVAL &&
- cx->blk_eval.old_op_type != OP_ENTERTRY)
- return 0; /* require must have its own scope */
- saweval = i;
+ switch (cx->blk_eval.old_op_type) {
+ case OP_ENTEREVAL:
+ saweval = i;
+ break;
+ case OP_REQUIRE:
+ /* require must have its own scope */
+ return 0;
+ }
break;
case CXt_SUB:
if (!saweval)
@@ -2376,7 +2381,7 @@ OP *op;
cop->cop_line = copline;
copline = NOLINE;
}
- cop->cop_filegv = GvREFCNT_inc(curcop->cop_filegv);
+ cop->cop_filegv = (GV*)SvREFCNT_inc(curcop->cop_filegv);
cop->cop_stash = curstash;
if (perldb && curstash != debstash) {
@@ -2810,6 +2815,7 @@ CV *cv;
CvROOT(cv) = Nullop;
LEAVE;
}
+ CvFLAGS(cv) = 0;
SvREFCNT_dec(CvGV(cv));
CvGV(cv) = Nullgv;
SvREFCNT_dec(CvOUTSIDE(cv));
@@ -2847,13 +2853,13 @@ CV* cv;
(CvANON(cv) ? "ANON"
: (cv == main_cv) ? "MAIN"
: CvUNIQUE(outside) ? "UNIQUE"
- : CvGV(cv) ? GvNAME(CvGV(cv)) : "?mystery?"),
+ : CvGV(cv) ? GvNAME(CvGV(cv)) : "UNDEFINED"),
outside,
(!outside ? "null"
: CvANON(outside) ? "ANON"
: (outside == main_cv) ? "MAIN"
: CvUNIQUE(outside) ? "UNIQUE"
- : CvGV(outside) ? GvNAME(CvGV(outside)) : "?mystery?"));
+ : CvGV(outside) ? GvNAME(CvGV(outside)) : "UNDEFINED"));
for (ix = 1; ix <= AvFILL(pad); ix++) {
if (SvPOK(pname[ix]))
@@ -2894,7 +2900,7 @@ CV* outside;
CvANON_on(cv);
CvFILEGV(cv) = CvFILEGV(proto);
- CvGV(cv) = GvREFCNT_inc(CvGV(proto));
+ CvGV(cv) = (GV*)SvREFCNT_inc(CvGV(proto));
CvSTASH(cv) = CvSTASH(proto);
CvROOT(cv) = CvROOT(proto);
CvSTART(cv) = CvSTART(proto);
@@ -3018,17 +3024,15 @@ OP *op;
OP *proto;
OP *block;
{
+ char *name = op ? SvPVx(cSVOP->op_sv, na) : Nullch;
+ GV *gv = gv_fetchpv(name ? name : "__ANON__", GV_ADDMULTI, SVt_PVCV);
register CV *cv;
- char *name = op ? SvPVx(cSVOP->op_sv, na) : "__ANON__";
- GV* gv = gv_fetchpv(name, GV_ADDMULTI, SVt_PVCV);
- AV* av;
+ AV *av;
I32 ix;
- if (op) {
+ if (op)
SAVEFREEOP(op);
- sub_generation++;
- }
- if (cv = GvCV(gv)) {
+ if (cv = (name ? GvCV(gv) : Nullcv)) {
if (GvCVGEN(gv)) {
/* just a cached method */
SvREFCNT_dec(cv);
@@ -3045,9 +3049,8 @@ OP *block;
SvPOK(cv) ? SvPV((SV*)cv,na) : "none",
p ? p : "none");
}
- if ((const_sv || dowarn) && strNE(name, "BEGIN")) {
+ if (const_sv || dowarn) {
line_t oldline = curcop->cop_line;
-
curcop->cop_line = copline;
warn(const_sv ? "Constant subroutine %s redefined"
: "Subroutine %s redefined",name);
@@ -3059,7 +3062,7 @@ OP *block;
}
if (cv) { /* must reuse cv if autoloaded */
cv_undef(cv);
- CvFLAGS(cv) = (CvFLAGS(cv)&~CVf_CLONE) | (CvFLAGS(compcv)&CVf_CLONE);
+ CvFLAGS(cv) = CvFLAGS(compcv);
CvOUTSIDE(cv) = CvOUTSIDE(compcv);
CvOUTSIDE(compcv) = 0;
CvPADLIST(cv) = CvPADLIST(compcv);
@@ -3070,11 +3073,14 @@ OP *block;
}
else {
cv = compcv;
+ if (name) {
+ GvCV(gv) = cv;
+ GvCVGEN(gv) = 0;
+ sub_generation++;
+ }
}
- GvCV(gv) = cv;
- GvCVGEN(gv) = 0;
+ CvGV(cv) = (GV*)SvREFCNT_inc(gv);
CvFILEGV(cv) = curcop->cop_filegv;
- CvGV(cv) = GvREFCNT_inc(gv);
CvSTASH(cv) = curstash;
if (proto) {
@@ -3088,7 +3094,6 @@ OP *block;
block = Nullop;
}
if (!block) {
- CvROOT(cv) = 0;
copline = NOLINE;
LEAVE_SCOPE(floor);
return cv;
@@ -3100,7 +3105,7 @@ OP *block;
AvFLAGS(av) = AVf_REIFY;
for (ix = AvFILL(comppad); ix > 0; ix--) {
- if (!SvPADMY(curpad[ix]))
+ if (!SvPADMY(curpad[ix]) && !SvIMMORTAL(curpad[ix]))
SvPADTMP_on(curpad[ix]);
}
@@ -3112,9 +3117,39 @@ OP *block;
CvROOT(cv)->op_next = 0;
peep(CvSTART(cv));
- if (op) {
- char *s = strrchr(name,':');
- if (s)
+ if (name) {
+ char *s;
+
+ if (perldb && curstash != debstash) {
+ SV *sv;
+ SV *tmpstr = sv_newmortal();
+ static GV *db_postponed;
+ CV *cv;
+ HV *hv;
+
+ sprintf(buf, "%s:%ld",
+ SvPVX(GvSV(curcop->cop_filegv)), (long)subline);
+ sv = newSVpv(buf,0);
+ sv_catpv(sv,"-");
+ sprintf(buf,"%ld",(long)curcop->cop_line);
+ sv_catpv(sv,buf);
+ gv_efullname3(tmpstr, gv, Nullch);
+ hv_store(GvHV(DBsub), SvPVX(tmpstr), SvCUR(tmpstr), sv, 0);
+ if (!db_postponed) {
+ db_postponed = gv_fetchpv("DB::postponed", TRUE, SVt_PVHV);
+ }
+ hv = GvHVn(db_postponed);
+ if (HvFILL(hv) >= 0 && hv_exists(hv, SvPVX(tmpstr), SvCUR(tmpstr))
+ && (cv = GvCV(db_postponed))) {
+ dSP;
+ PUSHMARK(sp);
+ XPUSHs(tmpstr);
+ PUTBACK;
+ perl_call_sv((SV*)cv, G_DISCARD);
+ }
+ }
+
+ if ((s = strrchr(name,':')))
s++;
else
s = name;
@@ -3145,37 +3180,6 @@ OP *block;
}
}
- if (perldb && curstash != debstash) {
- SV *sv;
- SV *tmpstr = sv_newmortal();
- static GV *db_postponed;
- CV *cv;
- HV *hv;
-
- sprintf(buf,"%s:%ld",SvPVX(GvSV(curcop->cop_filegv)), (long)subline);
- sv = newSVpv(buf,0);
- sv_catpv(sv,"-");
- sprintf(buf,"%ld",(long)curcop->cop_line);
- sv_catpv(sv,buf);
- gv_efullname3(tmpstr, gv, Nullch);
- hv_store(GvHV(DBsub), SvPVX(tmpstr), SvCUR(tmpstr), sv, 0);
- if (!db_postponed) {
- db_postponed = gv_fetchpv("DB::postponed", TRUE, SVt_PVHV);
- }
- hv = GvHVn(db_postponed);
- if (HvFILL(hv) >= 0 && hv_exists(hv, SvPVX(tmpstr), SvCUR(tmpstr))
- && (cv = GvCV(db_postponed))) {
- dSP;
- PUSHMARK(sp);
- XPUSHs(tmpstr);
- PUTBACK;
- perl_call_sv((SV*)cv, G_DISCARD);
- }
- }
-
- if (!op)
- GvCV(gv) = 0; /* Will remember in SVOP instead. */
-
copline = NOLINE;
LEAVE_SCOPE(floor);
return cv;
@@ -3202,18 +3206,19 @@ char *name;
void (*subaddr) _((CV*));
char *filename;
{
+ GV *gv = gv_fetchpv(name ? name : "__ANON__", GV_ADDMULTI, SVt_PVCV);
register CV *cv;
- GV *gv = gv_fetchpv((name ? name : "__ANON__"), GV_ADDMULTI, SVt_PVCV);
-
- if (name)
- sub_generation++;
- if (cv = GvCV(gv)) {
- if (GvCVGEN(gv))
- cv = 0; /* just a cached method */
- else if (CvROOT(cv) || CvXSUB(cv)) { /* already defined? */
+
+ if (cv = (name ? GvCV(gv) : Nullcv)) {
+ if (GvCVGEN(gv)) {
+ /* just a cached method */
+ SvREFCNT_dec(cv);
+ cv = 0;
+ }
+ else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
+ /* already defined (or promised) */
if (dowarn) {
line_t oldline = curcop->cop_line;
-
curcop->cop_line = copline;
warn("Subroutine %s redefined",name);
curcop->cop_line = oldline;
@@ -3222,19 +3227,22 @@ char *filename;
cv = 0;
}
}
- if (cv) { /* must reuse cv if autoloaded */
- assert(SvREFCNT(CvGV(cv)) > 1);
- SvREFCNT_dec(CvGV(cv));
- }
+
+ if (cv) /* must reuse cv if autoloaded */
+ cv_undef(cv);
else {
cv = (CV*)NEWSV(1105,0);
sv_upgrade((SV *)cv, SVt_PVCV);
+ if (name) {
+ GvCV(gv) = cv;
+ GvCVGEN(gv) = 0;
+ sub_generation++;
+ }
}
- GvCV(gv) = cv;
- CvGV(cv) = GvREFCNT_inc(gv);
- GvCVGEN(gv) = 0;
+ CvGV(cv) = (GV*)SvREFCNT_inc(gv);
CvFILEGV(cv) = gv_fetchfile(filename);
CvXSUB(cv) = subaddr;
+
if (name) {
char *s = strrchr(name,':');
if (s)
@@ -3244,19 +3252,20 @@ char *filename;
if (strEQ(s, "BEGIN")) {
if (!beginav)
beginav = newAV();
- av_push(beginav, SvREFCNT_inc(gv));
+ av_push(beginav, (SV *)cv);
+ GvCV(gv) = 0;
}
else if (strEQ(s, "END")) {
if (!endav)
endav = newAV();
av_unshift(endav, 1);
- av_store(endav, 0, SvREFCNT_inc(gv));
+ av_store(endav, 0, (SV *)cv);
+ GvCV(gv) = 0;
}
}
- else {
- GvCV(gv) = 0; /* Will remember elsewhere instead. */
+ else
CvANON_on(cv);
- }
+
return cv;
}
@@ -3289,11 +3298,11 @@ OP *block;
}
cv = compcv;
GvFORM(gv) = cv;
- CvGV(cv) = GvREFCNT_inc(gv);
+ CvGV(cv) = (GV*)SvREFCNT_inc(gv);
CvFILEGV(cv) = curcop->cop_filegv;
for (ix = AvFILL(comppad); ix > 0; ix--) {
- if (!SvPADMY(curpad[ix]))
+ if (!SvPADMY(curpad[ix]) && !SvIMMORTAL(curpad[ix]))
SvPADTMP_on(curpad[ix]);
}
@@ -3635,9 +3644,31 @@ register OP *op;
op->op_private |= (hints & HINT_STRICT_REFS);
if (kid->op_type == OP_CONST) {
- int iscv = (op->op_type==OP_RV2CV)*2;
- GV *gv = 0;
+ char *name;
+ int iscv;
+ GV *gv;
+
+ name = SvPV(kid->op_sv, na);
+ if ((hints & HINT_STRICT_REFS) && (kid->op_private & OPpCONST_BARE)) {
+ char *badthing = Nullch;
+ switch (op->op_type) {
+ case OP_RV2SV:
+ badthing = "a SCALAR";
+ break;
+ case OP_RV2AV:
+ badthing = "an ARRAY";
+ break;
+ case OP_RV2HV:
+ badthing = "a HASH";
+ break;
+ }
+ if (badthing)
+ croak(
+ "Can't use bareword (\"%s\") as %s ref while \"strict refs\" in use",
+ name, badthing);
+ }
kid->op_type = OP_GV;
+ iscv = (op->op_type == OP_RV2CV) * 2;
for (gv = 0; !gv; iscv++) {
/*
* This is a little tricky. We only want to add the symbol if we
@@ -3647,7 +3678,7 @@ register OP *op;
* or we get possible typo warnings. OPpCONST_ENTERED says
* whether the lexer already added THIS instance of this symbol.
*/
- gv = gv_fetchpv(SvPVx(kid->op_sv, na),
+ gv = gv_fetchpv(name,
iscv | !(kid->op_private & OPpCONST_ENTERED),
iscv
? SVt_PVCV
diff --git a/os2/Changes b/os2/Changes
index 83af2d8893..902783295f 100644
--- a/os2/Changes
+++ b/os2/Changes
@@ -122,3 +122,8 @@ after 5.003_08:
after 5.003_11:
Functions emx_{malloc,realloc,calloc,free} are exported from DLL.
get_sysinfo() bugs corrected (flags were not used and wrongly defined).
+
+after 5.003_20:
+ _isterm is substituted instead of isatty, s?random instead of srand.
+ `register' disabled if -DDEBUGGING and not AOUT build: stupid SD386.
+ 3-argument select() was stomping over memory.
diff --git a/os2/os2.c b/os2/os2.c
index c9d1e55f6c..701bb52a3c 100644
--- a/os2/os2.c
+++ b/os2/os2.c
@@ -158,22 +158,6 @@ getpriority(int which /* ignored */, int pid)
/* spawn */
typedef void (*Sigfunc) _((int));
-static
-Sigfunc rsignal(signo,handler)
-int signo;
-Sigfunc handler;
-{
- struct sigaction act,oact;
-
- act.sa_handler = handler;
- sigemptyset(&act.sa_mask);
- act.sa_flags = 0;
- if (sigaction(signo, &act, &oact) < 0)
- return(SIG_ERR);
- else
- return(oact.sa_handler);
-}
-
static int
result(int flag, int pid)
{
diff --git a/os2/os2ish.h b/os2/os2ish.h
index b2e1f66c78..ade419912f 100644
--- a/os2/os2ish.h
+++ b/os2/os2ish.h
@@ -37,6 +37,18 @@
*/
#undef ACME_MESS /**/
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+/* #define ALTERNATE_SHEBANG "#!" / **/
+
#ifndef SIGABRT
# define SIGABRT SIGILL
#endif
@@ -99,6 +111,8 @@ char *my_tmpnam (char *);
#define tmpfile my_tmpfile
#define tmpnam my_tmpnam
#define isatty _isterm
+#define rand random
+#define srand srandom
/*
* fwrite1() should be a routine with the same calling sequence as fwrite(),
@@ -155,6 +169,11 @@ void *emx_realloc (void *, size_t);
#endif
+/* With SD386 it is impossible to debug register variables. */
+#if !defined(PERL_IS_AOUT) && defined(DEBUGGING) && !defined(register)
+# define register
+#endif
+
/* Our private OS/2 specific data. */
typedef struct OS2_Perl_data {
diff --git a/patchlevel.h b/patchlevel.h
index ae441d5c9a..529bcbd608 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1,5 +1,5 @@
#define PATCHLEVEL 3
-#define SUBVERSION 20
+#define SUBVERSION 21
/*
local_patches -- list of locally applied less-than-subversion patches.
diff --git a/perl.c b/perl.c
index 36e4795760..8cb8169cb3 100644
--- a/perl.c
+++ b/perl.c
@@ -116,6 +116,8 @@ register PerlInterpreter *sv_interp;
nrs = newSVpv("\n", 1);
rs = SvREFCNT_inc(nrs);
+ pidstatus = newHV();
+
#ifdef MSDOS
/*
* There is no way we can refer to them from Perl so close them to save
@@ -154,7 +156,6 @@ register PerlInterpreter *sv_interp;
PerlIO_init(); /* Hook to IO system */
fdpid = newAV(); /* for remembering popen pids by fd */
- pidstatus = newHV();/* for remembering status of dead pids */
init_stacks();
ENTER;
@@ -319,10 +320,6 @@ register PerlInterpreter *sv_interp;
beginav = Nullav;
endav = Nullav;
- /* pid-to-status mappings for waitpid */
- SvREFCNT_dec(pidstatus);
- pidstatus = Nullhv;
-
/* temp stack during pp_sort() */
SvREFCNT_dec(sortstack);
sortstack = Nullav;
@@ -402,8 +399,10 @@ register PerlInterpreter *sv_interp;
warn("Scalars leaked: %d\n", sv_count);
sv_free_arenas();
-
- linestr = NULL; /* No SVs have survived, need to clean out */
+
+ /* No SVs have survived, need to clean out */
+ linestr = NULL;
+ pidstatus = Nullhv;
if (origfilename)
Safefree(origfilename);
nuke_stacks();
@@ -1444,7 +1443,7 @@ char *s;
printf("\nThis is perl, version %s",patchlevel);
#endif
- printf("\n\nCopyright 1987-1996, Larry Wall\n");
+ printf("\n\nCopyright 1987-1997, Larry Wall\n");
printf("\n\t+ suidperl security patch");
#ifdef MSDOS
printf("\n\nMS-DOS port Copyright (c) 1989, 1990, Diomidis Spinellis\n");
diff --git a/perl.h b/perl.h
index d81678598e..6e8d00b78a 100644
--- a/perl.h
+++ b/perl.h
@@ -1242,6 +1242,7 @@ EXT U32 evalseq; /* eval sequence number */
EXT U32 sub_generation; /* inc to force methods to be looked up again */
EXT char ** origenviron;
EXT U32 origalen;
+EXT HV * pidstatus; /* pid-to-status mappings for waitpid */
EXT U32 * profiledata;
EXT int maxo INIT(MAXO);/* Number of ops */
EXT char * osname; /* operating system */
@@ -1740,7 +1741,6 @@ IEXT int Iforkprocess; /* so do_open |- can return proc# */
/* subprocess state */
IEXT AV * Ifdpid; /* keep fd-to-pid mappings for my_popen */
-IEXT HV * Ipidstatus; /* keep pid-to-status mappings for waitpid */
/* internal state */
IEXT VOL int Iin_eval; /* trap "fatal" errors? */
diff --git a/perly.c b/perly.c
index 33860470cd..f8a16687b0 100644
--- a/perly.c
+++ b/perly.c
@@ -15,131 +15,131 @@ dep()
#line 16 "perly.c"
#define YYERRCODE 256
short yylhs[] = { -1,
- 43, 0, 8, 6, 9, 7, 10, 10, 10, 11,
- 11, 11, 11, 23, 23, 23, 23, 23, 23, 14,
- 14, 14, 13, 13, 40, 40, 12, 12, 12, 12,
- 12, 12, 12, 25, 25, 26, 26, 27, 28, 29,
- 30, 31, 42, 42, 1, 1, 1, 1, 3, 3,
- 44, 4, 5, 37, 38, 38, 39, 39, 45, 45,
- 47, 46, 15, 15, 15, 24, 24, 24, 35, 35,
- 35, 35, 35, 35, 35, 48, 35, 36, 36, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 32, 32, 33, 33, 33, 2, 2,
- 41, 22, 17, 18, 19, 20, 21, 34, 34, 34,
- 34,
+ 45, 0, 9, 7, 10, 8, 11, 11, 11, 12,
+ 12, 12, 12, 24, 24, 24, 24, 24, 24, 15,
+ 15, 15, 14, 14, 42, 42, 13, 13, 13, 13,
+ 13, 13, 13, 26, 26, 27, 27, 28, 29, 30,
+ 31, 32, 44, 44, 1, 1, 1, 1, 3, 38,
+ 38, 46, 4, 5, 6, 39, 40, 40, 41, 41,
+ 47, 47, 49, 48, 16, 16, 16, 25, 25, 25,
+ 36, 36, 36, 36, 36, 36, 36, 50, 36, 37,
+ 37, 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, 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, 33, 33, 34, 34, 34,
+ 2, 2, 43, 23, 18, 19, 20, 21, 22, 35,
+ 35, 35, 35,
};
short yylen[] = { 2,
0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
1, 2, 3, 1, 1, 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, 4, 3,
- 5, 0, 0, 1, 0, 1, 1, 1, 3, 2,
- 0, 7, 3, 3, 1, 2, 3, 1, 3, 5,
- 6, 3, 5, 2, 4, 0, 5, 1, 1, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 5, 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 3, 2, 4, 3, 4,
- 1, 5, 1, 4, 5, 4, 1, 1, 1, 5,
- 6, 5, 6, 5, 4, 5, 1, 1, 3, 4,
- 3, 2, 2, 4, 5, 4, 5, 1, 2, 2,
- 1, 2, 2, 2, 1, 3, 1, 3, 4, 4,
- 6, 1, 1, 0, 1, 0, 1, 2, 1, 1,
- 1, 2, 2, 2, 2, 2, 2, 1, 1, 1,
- 1,
+ 1, 1, 0, 1, 1, 1, 1, 1, 4, 1,
+ 0, 5, 0, 0, 0, 1, 0, 1, 1, 1,
+ 3, 2, 0, 7, 3, 3, 1, 2, 3, 1,
+ 3, 5, 6, 3, 5, 2, 4, 0, 5, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 5, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 3, 2, 3, 2, 4,
+ 3, 4, 1, 5, 1, 4, 5, 4, 1, 1,
+ 1, 5, 6, 5, 6, 5, 4, 5, 1, 1,
+ 3, 4, 3, 2, 2, 4, 5, 4, 5, 1,
+ 2, 2, 1, 2, 2, 2, 1, 3, 1, 3,
+ 4, 4, 6, 1, 1, 0, 1, 0, 1, 2,
+ 1, 1, 1, 2, 2, 2, 2, 2, 2, 1,
+ 1, 1, 1,
};
short yydefred[] = { 1,
- 0, 7, 0, 44, 52, 52, 0, 52, 8, 45,
- 9, 11, 0, 46, 47, 48, 0, 0, 0, 60,
- 61, 14, 4, 152, 0, 0, 127, 0, 147, 0,
- 53, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 159, 160, 0,
+ 0, 7, 0, 44, 55, 53, 0, 53, 8, 45,
+ 9, 11, 0, 46, 47, 48, 0, 0, 0, 62,
+ 63, 14, 4, 154, 0, 0, 129, 0, 149, 0,
+ 54, 54, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 161, 162, 0,
0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 117, 119, 0, 0, 0, 0, 153, 0,
- 50, 54, 0, 59, 0, 7, 168, 171, 170, 169,
+ 0, 0, 119, 121, 0, 0, 0, 0, 155, 50,
+ 0, 56, 0, 61, 0, 7, 170, 173, 172, 171,
0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
- 4, 4, 0, 0, 0, 0, 0, 142, 0, 0,
- 0, 0, 74, 0, 166, 0, 133, 0, 0, 0,
- 0, 0, 162, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 107, 0, 163, 164, 165, 167, 0,
+ 4, 4, 0, 0, 0, 0, 0, 144, 0, 0,
+ 0, 0, 76, 0, 168, 0, 135, 0, 0, 0,
+ 0, 0, 164, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 109, 0, 165, 166, 167, 169, 0,
0, 33, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 100, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 49, 56, 0, 0, 0,
- 72, 0, 0, 76, 0, 0, 0, 0, 0, 0,
- 0, 4, 146, 148, 0, 0, 0, 0, 0, 0,
- 0, 109, 0, 131, 0, 0, 106, 26, 0, 0,
- 19, 0, 0, 0, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 101, 102, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 49, 58, 0, 0, 0,
+ 74, 0, 0, 78, 0, 0, 0, 0, 0, 0,
+ 0, 4, 148, 150, 0, 0, 0, 0, 0, 0,
+ 0, 111, 0, 133, 0, 0, 108, 26, 0, 0,
+ 19, 0, 0, 0, 65, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 78, 0, 79, 0, 0, 0, 0, 0, 0,
- 0, 129, 0, 0, 58, 57, 51, 0, 3, 0,
- 150, 0, 0, 110, 0, 41, 0, 42, 0, 0,
- 0, 0, 161, 0, 0, 35, 40, 0, 0, 0,
- 149, 158, 75, 0, 134, 0, 136, 0, 108, 0,
- 0, 0, 0, 0, 0, 0, 116, 0, 114, 0,
- 125, 0, 130, 0, 73, 0, 77, 0, 0, 0,
- 0, 0, 0, 0, 0, 70, 135, 137, 124, 0,
- 122, 0, 0, 115, 0, 120, 126, 112, 62, 151,
- 6, 0, 0, 0, 0, 0, 0, 0, 0, 123,
- 121, 71, 7, 27, 28, 0, 0, 23, 24, 0,
+ 0, 80, 0, 81, 0, 0, 0, 0, 0, 0,
+ 0, 131, 0, 0, 60, 59, 52, 0, 3, 0,
+ 152, 0, 0, 112, 0, 41, 0, 42, 0, 0,
+ 0, 0, 163, 0, 0, 35, 40, 0, 0, 0,
+ 151, 160, 77, 0, 136, 0, 138, 0, 110, 0,
+ 0, 0, 0, 0, 0, 0, 118, 0, 116, 0,
+ 127, 0, 132, 0, 75, 0, 79, 0, 0, 0,
+ 0, 0, 0, 0, 0, 72, 137, 139, 126, 0,
+ 124, 0, 0, 117, 0, 122, 128, 114, 64, 153,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 125,
+ 123, 73, 7, 27, 28, 0, 0, 23, 24, 0,
31, 0, 0, 0, 21, 0, 0, 0, 30, 5,
0, 29, 0, 0, 32, 0, 22,
};
short yydgoto[] = { 1,
- 9, 66, 10, 17, 95, 86, 333, 89, 322, 3,
- 11, 12, 68, 338, 260, 70, 71, 72, 73, 74,
- 75, 76, 266, 78, 267, 256, 258, 261, 269, 257,
- 259, 113, 197, 91, 79, 235, 83, 178, 247, 142,
- 264, 13, 2, 14, 15, 16, 85, 253,
+ 9, 66, 10, 18, 95, 17, 86, 333, 89, 322,
+ 3, 11, 12, 68, 338, 260, 70, 71, 72, 73,
+ 74, 75, 76, 266, 78, 267, 256, 258, 261, 269,
+ 257, 259, 113, 197, 91, 79, 235, 81, 83, 178,
+ 247, 142, 264, 13, 2, 14, 15, 16, 85, 253,
};
short yysindex[] = { 0,
0, 0, -126, 0, 0, 0, -58, 0, 0, 0,
- 0, 0, 827, 0, 0, 0, -111, -235, -21, 0,
- 0, 0, 0, 0, -33, -33, 0, 7, 0, 1816,
- 0, 0, 15, 30, 61, 62, -29, 1816, 67, 70,
- 73, 1002, 939, -33, 1236, 1292, -227, 0, 0, -33,
+ 0, 0, 827, 0, 0, 0, -242, -235, -21, 0,
+ 0, 0, 0, 0, -33, -33, 0, 11, 0, 1816,
+ 0, 0, 13, 15, 30, 45, -29, 1816, 67, 68,
+ 70, 1002, 939, -33, 1236, 1292, -227, 0, 0, -33,
1816, 1816, 1816, 1816, 1816, 1816, 1173, 0, 1816, 1816,
1348, -33, -33, -33, -33, 1816, -220, 0, -169, 3558,
- -78, -59, 0, 0, -38, 78, 52, 76, 0, 14,
- 0, 0, -137, 0, -118, 0, 0, 0, 0, 0,
- 1816, 107, 1816, 1847, 14, -137, 0, 0, 0, 0,
- 0, 0, 108, 3558, 109, 1407, 939, 0, 1847, 0,
- -78, 76, 0, 1816, 0, 112, 0, 1847, -23, 36,
- -51, 1816, 0, 76, -82, -82, -82, -54, -54, 72,
+ -78, -59, 0, 0, -62, 73, 42, 65, 0, 0,
+ -5, 0, -149, 0, -134, 0, 0, 0, 0, 0,
+ 1816, 97, 1816, 1847, -5, -149, 0, 0, 0, 0,
+ 0, 0, 99, 3558, 105, 1407, 939, 0, 1847, 0,
+ -78, 65, 0, 1816, 0, 107, 0, 1847, -23, 36,
+ -51, 1816, 0, 65, -82, -82, -82, -54, -54, 57,
-27, -82, -82, 0, -87, 0, 0, 0, 0, 1847,
- 14, 0, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
+ -5, 0, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
1816, 1816, 1816, 0, 0, -32, 1816, 1816, 1816, 1816,
- 1816, 1816, 1582, 0, 1816, 0, 0, -36, -108, 667,
- 0, 1816, 209, 0, 14, 1816, 1816, 1816, 1816, 129,
- 1641, 0, 0, 0, -16, 6, 126, 1816, 76, 1697,
- 1753, 0, 43, 0, 1816, 81, 0, 0, -199, -199,
- 0, -199, -199, -123, 0, 18, 3516, 1847, 1089, 382,
+ 1816, 1816, 1582, 0, 1816, 0, 0, -36, -108, 665,
+ 0, 1816, 209, 0, -5, 1816, 1816, 1816, 1816, 114,
+ 1641, 0, 0, 0, -16, 6, 111, 1816, 65, 1697,
+ 1753, 0, 38, 0, 1816, 74, 0, 0, -251, -251,
+ 0, -251, -251, -131, 0, 18, 3516, 1847, 1089, 382,
92, 3558, 3594, 3689, 369, 1060, 482, 285, -82, -82,
- 1816, 0, 1816, 0, 137, 33, 23, 58, 25, 69,
- 27, 0, -14, 3558, 0, 0, 0, 1816, 0, 139,
- 0, 1816, 1816, 0, -199, 0, 141, 0, 143, -199,
- 156, 159, 0, 154, -169, 0, 0, 160, 144, 1816,
+ 1816, 0, 1816, 0, 128, 33, 23, 58, 25, 69,
+ 27, 0, -14, 3558, 0, 0, 0, 1816, 0, 131,
+ 0, 1816, 1816, 0, -251, 0, 134, 0, 136, -251,
+ 139, 141, 0, 144, -169, 0, 0, 156, 135, 1816,
0, 0, 0, -12, 0, -10, 0, 1, 0, 71,
- 1816, 82, 1816, 29, 86, 1816, 0, 83, 0, 84,
- 0, 89, 0, 147, 0, 339, 0, 90, 90, 90,
- 90, 1816, 90, 1816, 175, 0, 0, 0, 0, 88,
- 0, 3653, 94, 0, 180, 0, 0, 0, 0, 0,
- 0, -220, -220, -168, -168, 196, -220, 184, 90, 0,
- 0, 0, 0, 0, 0, 90, 205, 0, 0, 90,
- 0, 1641, -220, 688, 0, 1816, -220, 211, 0, 0,
- 213, 0, 90, 90, 0, -168, 0,
+ 1816, 75, 1816, 29, 86, 1816, 0, 76, 0, 78,
+ 0, 81, 0, 148, 0, 339, 0, 85, 85, 85,
+ 85, 1816, 85, 1816, 168, 0, 0, 0, 0, 88,
+ 0, 3653, 89, 0, 172, 0, 0, 0, 0, 0,
+ 0, -220, -220, -178, -178, 175, -220, 160, 85, 0,
+ 0, 0, 0, 0, 0, 85, 203, 0, 0, 85,
+ 0, 1641, -220, 688, 0, 1816, -220, 180, 0, 0,
+ 196, 0, 85, 85, 0, -178, 0,
};
short yyrindex[] = { 0,
0, 0, 269, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2076, 1906, 0,
0, 2716, 2784, 0, 0, 0, 0, 0, 0, 0,
@@ -147,8 +147,8 @@ short yyrindex[] = { 0,
0, 0, 0, 0, 0, 0, 79, 0, -7, 181,
2827, 2871, 0, 0, 2142, 1965, 0, 21, 0, 0,
0, 0, -31, 0, 0, 0, 0, 0, 0, 0,
- 2201, 0, 0, 3299, 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 197, 0, 0, 236, 0, 3343, 444,
+ 2201, 0, 0, 3299, 0, 129, 0, 0, 0, 0,
+ 0, 0, 0, 197, 0, 0, 213, 0, 3343, 444,
545, 2312, 0, 0, 0, 2028, 0, 3386, 2827, 0,
0, 2201, 0, 2437, 2914, 2952, 2990, 606, 723, 2480,
0, 3063, 3107, 0, 0, 0, 0, 0, 0, 3424,
@@ -156,146 +156,146 @@ short yyrindex[] = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2548, 0, 0, 0, 0, 883,
- 0, 236, 0, 0, 0, 239, 0, 0, 0, 0,
- 230, 0, 0, 0, 0, 251, 0, 0, 2591, 0,
- 0, 0, 0, 0, 0, 2635, 0, 0, -2, 2,
- 0, 8, 22, 525, 0, 0, 3579, 1448, 1504, 3226,
+ 0, 213, 0, 0, 0, 234, 0, 0, 0, 0,
+ 218, 0, 0, 0, 0, 239, 0, 0, 2591, 0,
+ 0, 0, 0, 0, 0, 2635, 0, 0, -2, 8,
+ 0, 22, 24, 525, 0, 0, 3579, 1448, 1504, 3226,
-39, 338, 0, 2490, 3535, 3498, 3462, 3262, 3150, 3188,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1870, 0, 0, 0, 238, 0, 0,
- 0, 0, 2201, 0, 24, 0, 0, 0, 0, 260,
- 0, 0, 0, 0, 37, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1870, 0, 0, 0, 230, 0, 0,
+ 0, 0, 2201, 0, 37, 0, 0, 0, 0, 251,
+ 0, 0, 0, 0, 61, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 236, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 213, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 249, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 238, 0, 0, 0, 0, 0, 0,
0, 718, 0, 0, 0, 0, 0, 0, 0, 0,
0, 79, 79, 153, 153, 0, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 272, 79, 883, 0, 0, 79, 0, 0, 0,
+ 0, 260, 79, 883, 0, 0, 79, 0, 0, 0,
0, 0, 0, 0, 0, 153, 0,
};
short yygindex[] = { 0,
- 0, 0, 0, 45, 278, -26, 0, 919, 1004, -76,
- 0, 0, 0, -310, -13, 3871, 3724, 0, 0, 0,
- 0, 0, 304, -25, 0, 0, 190, -175, -1, 53,
- 188, 384, -161, 1007, 0, 0, 0, 292, 0, -287,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 300, 278, 0, -26, 0, 892, 1004,
+ -76, 0, 0, 0, -313, -13, 3871, 3724, 0, 0,
+ 0, 0, 0, 304, -25, 0, 0, 169, -175, -8,
+ 53, 152, 384, -161, 901, 0, 0, 0, 0, 281,
+ 0, -287, 0, 0, 0, 0, 0, 0, 0, 0,
};
#define YYTABLESIZE 4154
short yytable[] = { 69,
- 20, 83, 62, 62, 83, 207, 62, 203, 167, 180,
- 102, 23, 169, 206, 339, 268, 201, 112, 83, 83,
- 250, 82, 245, 83, 271, 124, 293, 55, 306, 122,
+ 20, 85, 62, 62, 85, 207, 62, 203, 167, 180,
+ 102, 339, 169, 206, 80, 268, 201, 112, 85, 85,
+ 250, 82, 245, 85, 271, 124, 293, 57, 306, 122,
307, 171, 121, 15, 334, 335, 167, 84, 18, 341,
- 149, 308, 38, 131, 168, 357, 93, 135, 16, 272,
- 18, 15, 21, 83, 97, 349, 18, 141, 233, 352,
- 38, 65, 17, 170, 37, 112, 16, 169, 149, 98,
- 186, 187, 188, 189, 190, 191, 282, 39, 25, 65,
- 17, 288, 37, 290, 172, 292, 23, 313, 199, 23,
- 231, 55, 195, 196, 305, 15, 112, 147, 148, 168,
- 99, 100, 143, 144, 145, 146, 105, 336, 337, 106,
- 174, 25, 107, 65, 25, 25, 25, 173, 25, 175,
- 25, 25, 177, 25, 315, 287, 326, 147, 148, 209,
- 210, 212, 213, 214, 215, 216, 23, 25, 179, 4,
- 5, 6, 25, 7, 8, 80, 182, 192, 248, 193,
- 289, 200, 20, 236, 237, 238, 239, 240, 241, 243,
- 202, 291, 205, 309, 62, 270, 273, 279, 196, 25,
- 351, 281, 255, 210, 148, 210, 286, 265, 314, 295,
- 330, 298, 167, 299, 274, 20, 276, 278, 20, 20,
- 20, 280, 20, 302, 20, 20, 300, 20, 19, 301,
- 303, 25, 304, 25, 25, 319, 311, 316, 317, 147,
- 148, 20, 321, 318, 149, 329, 20, 284, 331, 285,
- 332, 68, 112, 87, 68, 232, 163, 112, 88, 164,
- 165, 166, 83, 83, 83, 83, 340, 139, 68, 68,
- 139, 83, 342, 20, 346, 147, 148, 83, 83, 251,
- 83, 353, 252, 354, 139, 139, 344, 83, 83, 166,
- 83, 83, 83, 83, 83, 83, 101, 310, 2, 147,
- 148, 156, 196, 68, 55, 20, 156, 20, 20, 36,
- 147, 148, 147, 148, 147, 148, 147, 148, 34, 139,
- 255, 157, 65, 65, 65, 65, 154, 147, 148, 167,
- 39, 43, 147, 148, 43, 43, 43, 36, 43, 96,
- 43, 43, 34, 43, 147, 148, 77, 65, 65, 147,
+ 149, 308, 357, 131, 168, 147, 148, 135, 38, 272,
+ 93, 15, 97, 85, 98, 349, 18, 141, 233, 352,
+ 172, 67, 16, 170, 17, 112, 38, 169, 149, 99,
+ 186, 187, 188, 189, 190, 191, 282, 37, 25, 67,
+ 16, 288, 17, 290, 100, 292, 23, 313, 199, 23,
+ 231, 57, 195, 196, 305, 37, 112, 336, 337, 168,
+ 174, 39, 143, 144, 145, 146, 105, 106, 175, 107,
+ 177, 25, 173, 67, 25, 25, 25, 23, 25, 15,
+ 25, 25, 179, 25, 315, 287, 326, 147, 148, 209,
+ 210, 212, 213, 214, 215, 216, 182, 25, 192, 4,
+ 5, 6, 25, 7, 8, 193, 200, 205, 248, 62,
+ 289, 273, 20, 236, 237, 238, 239, 240, 241, 243,
+ 202, 291, 279, 309, 281, 270, 148, 286, 196, 25,
+ 351, 295, 255, 210, 298, 210, 299, 265, 314, 300,
+ 330, 301, 167, 302, 274, 20, 276, 278, 20, 20,
+ 20, 280, 20, 304, 20, 20, 303, 20, 19, 311,
+ 316, 25, 317, 25, 25, 318, 319, 321, 329, 147,
+ 148, 20, 332, 331, 149, 340, 20, 284, 342, 285,
+ 353, 70, 112, 87, 70, 232, 163, 112, 88, 164,
+ 165, 166, 85, 85, 85, 85, 354, 141, 70, 70,
+ 141, 85, 346, 20, 51, 147, 148, 85, 85, 251,
+ 85, 57, 252, 158, 141, 141, 344, 85, 85, 166,
+ 85, 85, 85, 85, 85, 85, 101, 310, 2, 147,
+ 148, 156, 196, 70, 36, 20, 34, 20, 20, 159,
+ 147, 148, 147, 148, 147, 148, 147, 148, 156, 141,
+ 255, 39, 67, 67, 67, 67, 36, 147, 148, 167,
+ 34, 43, 147, 148, 43, 43, 43, 21, 43, 96,
+ 43, 43, 211, 43, 147, 148, 77, 67, 67, 147,
148, 147, 148, 147, 148, 147, 148, 43, 69, 147,
- 148, 149, 43, 211, 25, 25, 25, 25, 25, 25,
- 348, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+ 148, 149, 43, 348, 25, 25, 25, 25, 25, 25,
+ 262, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 147, 148, 328, 25, 25, 43,
25, 25, 25, 25, 25, 147, 148, 147, 148, 25,
- 25, 25, 25, 25, 25, 167, 262, 25, 80, 320,
- 153, 80, 147, 148, 147, 148, 25, 185, 25, 25,
- 0, 43, 0, 0, 43, 80, 80, 162, 0, 0,
+ 25, 25, 25, 25, 25, 167, 185, 25, 82, 320,
+ 153, 82, 147, 148, 147, 148, 25, 0, 25, 25,
+ 0, 43, 0, 0, 43, 82, 82, 162, 0, 0,
163, 156, 0, 164, 165, 166, 0, 149, 20, 20,
20, 20, 20, 20, 0, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 0, 167,
- 80, 20, 20, 0, 20, 20, 20, 20, 20, 0,
+ 82, 20, 20, 0, 20, 20, 20, 20, 20, 0,
0, 0, 0, 20, 20, 20, 20, 20, 20, 0,
- 0, 20, 68, 68, 68, 68, 0, 0, 0, 167,
- 20, 149, 20, 20, 0, 0, 0, 0, 139, 139,
- 139, 139, 167, 0, 181, 0, 168, 68, 68, 168,
- 168, 168, 0, 168, 152, 168, 168, 152, 168, 150,
- 0, 149, 0, 139, 139, 151, 152, 153, 154, 0,
- 0, 152, 152, 0, 149, 204, 152, 168, 155, 157,
+ 0, 20, 70, 70, 70, 70, 0, 0, 0, 167,
+ 20, 149, 20, 20, 0, 0, 0, 0, 141, 141,
+ 141, 141, 167, 0, 181, 0, 170, 70, 70, 170,
+ 170, 170, 0, 170, 154, 170, 170, 154, 170, 150,
+ 0, 149, 0, 141, 141, 151, 152, 153, 154, 0,
+ 0, 154, 154, 0, 149, 204, 154, 170, 155, 157,
158, 159, 160, 161, 162, 0, 0, 163, 0, 0,
164, 165, 166, 0, 43, 43, 43, 43, 43, 43,
- 0, 43, 43, 43, 152, 0, 152, 43, 0, 0,
+ 0, 43, 43, 43, 154, 0, 154, 43, 0, 0,
43, 43, 43, 43, 0, 0, 0, 43, 43, 0,
43, 43, 43, 43, 43, 0, 0, 0, 0, 43,
- 43, 43, 43, 43, 43, 64, 152, 43, 64, 168,
- 0, 0, 167, 153, 154, 0, 43, 169, 43, 43,
- 169, 169, 169, 64, 169, 111, 169, 169, 111, 169,
+ 43, 43, 43, 43, 43, 66, 154, 43, 66, 170,
+ 0, 0, 167, 153, 154, 0, 43, 171, 43, 43,
+ 171, 171, 171, 66, 171, 113, 171, 171, 113, 171,
162, 0, 0, 163, 0, 0, 164, 165, 166, 0,
- 0, 0, 111, 111, 149, 0, 0, 111, 169, 80,
- 80, 80, 80, 0, 0, 0, 0, 64, 0, 150,
+ 0, 0, 113, 113, 149, 0, 0, 113, 171, 82,
+ 82, 82, 82, 0, 0, 0, 0, 66, 0, 150,
0, 0, 0, 0, 0, 151, 152, 153, 154, 0,
- 0, 294, 0, 0, 80, 80, 297, 111, 155, 157,
- 158, 159, 160, 161, 162, 0, 101, 163, 0, 101,
+ 0, 294, 0, 0, 82, 82, 297, 113, 155, 157,
+ 158, 159, 160, 161, 162, 0, 103, 163, 0, 103,
164, 165, 166, 0, 0, 151, 152, 153, 154, 0,
- 0, 0, 0, 101, 101, 0, 0, 0, 101, 0,
- 169, 159, 160, 161, 162, 0, 0, 163, 0, 0,
+ 0, 0, 0, 103, 103, 0, 0, 0, 103, 0,
+ 171, 159, 160, 161, 162, 0, 0, 163, 0, 0,
164, 165, 166, 0, 0, 0, 0, 162, 0, 0,
- 163, 0, 0, 164, 165, 166, 0, 0, 101, 0,
- 168, 168, 168, 168, 168, 0, 168, 168, 168, 0,
- 0, 0, 168, 0, 0, 152, 152, 152, 152, 0,
- 0, 0, 0, 168, 152, 168, 168, 168, 168, 168,
- 152, 152, 152, 152, 168, 168, 168, 168, 168, 168,
- 152, 152, 168, 152, 152, 152, 152, 152, 152, 152,
- 0, 168, 152, 168, 168, 152, 152, 152, 92, 0,
- 0, 92, 0, 102, 0, 0, 102, 0, 151, 152,
- 153, 154, 0, 0, 0, 92, 92, 0, 0, 0,
- 102, 102, 0, 0, 0, 102, 161, 162, 0, 0,
- 163, 249, 0, 164, 165, 166, 64, 64, 64, 64,
- 0, 169, 169, 169, 169, 169, 0, 169, 169, 169,
- 92, 0, 350, 169, 0, 102, 111, 111, 111, 111,
- 0, 64, 0, 0, 169, 111, 169, 169, 169, 169,
- 169, 111, 111, 111, 111, 169, 169, 169, 169, 169,
- 169, 111, 111, 169, 111, 111, 111, 111, 111, 111,
- 111, 0, 169, 111, 169, 169, 111, 111, 111, 52,
+ 163, 0, 0, 164, 165, 166, 0, 0, 103, 0,
+ 170, 170, 170, 170, 170, 0, 170, 170, 170, 0,
+ 0, 0, 170, 0, 0, 154, 154, 154, 154, 0,
+ 0, 0, 0, 170, 154, 170, 170, 170, 170, 170,
+ 154, 154, 154, 154, 170, 170, 170, 170, 170, 170,
+ 154, 154, 170, 154, 154, 154, 154, 154, 154, 154,
+ 0, 170, 154, 170, 170, 154, 154, 154, 94, 0,
+ 0, 94, 0, 104, 0, 0, 104, 0, 151, 152,
+ 153, 154, 0, 0, 0, 94, 94, 0, 0, 0,
+ 104, 104, 0, 0, 0, 104, 161, 162, 0, 249,
+ 163, 0, 0, 164, 165, 166, 66, 66, 66, 66,
+ 0, 171, 171, 171, 171, 171, 0, 171, 171, 171,
+ 94, 0, 350, 171, 0, 104, 113, 113, 113, 113,
+ 0, 66, 0, 0, 171, 113, 171, 171, 171, 171,
+ 171, 113, 113, 113, 113, 171, 171, 171, 171, 171,
+ 171, 113, 113, 171, 113, 113, 113, 113, 113, 113,
+ 113, 0, 171, 113, 171, 171, 113, 113, 113, 52,
0, 0, 62, 64, 50, 0, 57, 0, 65, 60,
- 0, 59, 0, 0, 0, 0, 0, 101, 101, 101,
- 101, 0, 0, 0, 0, 58, 101, 0, 0, 0,
- 63, 0, 101, 101, 101, 101, 0, 0, 0, 0,
- 0, 0, 101, 101, 0, 101, 101, 101, 101, 101,
- 101, 101, 0, 0, 101, 43, 0, 61, 43, 43,
- 43, 0, 43, 0, 43, 43, 0, 43, 0, 0,
- 0, 67, 4, 5, 6, 81, 7, 8, 0, 0,
- 0, 43, 0, 0, 0, 0, 43, 0, 0, 23,
- 0, 0, 53, 4, 5, 6, 0, 7, 8, 0,
- 108, 0, 0, 117, 0, 0, 0, 0, 0, 0,
- 0, 52, 0, 43, 62, 64, 50, 0, 57, 0,
- 65, 60, 0, 59, 0, 0, 0, 0, 0, 92,
- 92, 92, 92, 0, 102, 102, 102, 102, 176, 0,
- 0, 0, 63, 102, 0, 43, 0, 0, 43, 102,
- 102, 102, 102, 184, 92, 92, 0, 92, 0, 102,
- 102, 0, 102, 102, 102, 102, 102, 102, 102, 61,
- 0, 102, 92, 0, 52, 0, 0, 62, 64, 50,
- 0, 57, 0, 65, 60, 0, 59, 0, 0, 114,
- 115, 0, 0, 0, 0, 0, 123, 0, 0, 208,
- 0, 23, 0, 0, 53, 63, 0, 0, 136, 137,
- 138, 139, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 59, 0, 0, 0, 0, 0, 103, 103, 103,
+ 103, 0, 0, 0, 0, 58, 103, 0, 0, 0,
+ 63, 0, 103, 103, 103, 103, 0, 0, 0, 0,
+ 0, 0, 103, 103, 67, 103, 103, 103, 103, 103,
+ 103, 103, 0, 0, 103, 43, 0, 61, 43, 43,
+ 43, 0, 43, 0, 43, 43, 92, 43, 0, 0,
+ 4, 5, 6, 108, 7, 8, 117, 0, 0, 0,
+ 0, 43, 0, 114, 115, 0, 43, 0, 0, 23,
+ 123, 0, 53, 4, 5, 6, 0, 7, 8, 0,
+ 0, 0, 136, 137, 138, 139, 0, 0, 0, 0,
+ 0, 52, 176, 43, 62, 64, 50, 0, 57, 0,
+ 65, 60, 0, 59, 0, 0, 184, 0, 0, 94,
+ 94, 94, 94, 0, 104, 104, 104, 104, 0, 0,
+ 0, 0, 63, 104, 0, 43, 0, 198, 43, 104,
+ 104, 104, 104, 0, 94, 94, 0, 94, 0, 104,
+ 104, 0, 104, 104, 104, 104, 104, 104, 104, 61,
+ 0, 104, 208, 0, 52, 0, 0, 62, 64, 50,
+ 0, 57, 0, 65, 60, 0, 59, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 23, 0, 0, 53, 63, 0, 0, 0, 246,
+ 0, 0, 0, 0, 0, 0, 254, 0, 0, 0,
0, 0, 22, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 61, 0, 0, 32, 246, 0, 33, 34,
- 35, 36, 0, 254, 0, 37, 38, 0, 39, 40,
- 41, 42, 43, 198, 0, 0, 0, 44, 45, 46,
+ 30, 31, 61, 0, 0, 32, 0, 0, 33, 34,
+ 35, 36, 0, 0, 0, 37, 38, 0, 39, 40,
+ 41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
47, 48, 49, 0, 23, 51, 0, 53, 0, 0,
0, 0, 0, 0, 54, 0, 55, 56, 43, 43,
43, 43, 43, 43, 0, 43, 43, 43, 0, 0,
@@ -332,18 +332,18 @@ short yytable[] = { 69,
0, 59, 38, 0, 39, 40, 41, 42, 43, 0,
0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
63, 51, 0, 53, 0, 0, 0, 0, 0, 0,
- 54, 0, 55, 56, 0, 0, 0, 0, 85, 0,
- 0, 85, 116, 25, 26, 27, 28, 61, 29, 30,
- 31, 0, 0, 0, 32, 85, 85, 0, 0, 0,
- 85, 0, 0, 0, 0, 38, 0, 39, 40, 41,
+ 54, 0, 55, 56, 0, 0, 0, 0, 87, 0,
+ 0, 87, 116, 25, 26, 27, 28, 61, 29, 30,
+ 31, 0, 0, 0, 32, 87, 87, 0, 0, 0,
+ 87, 0, 0, 0, 0, 38, 0, 39, 40, 41,
42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
48, 49, 53, 0, 51, 0, 0, 0, 0, 0,
- 85, 0, 0, 54, 86, 55, 56, 86, 24, 25,
+ 87, 0, 0, 54, 88, 55, 56, 88, 24, 25,
26, 27, 28, 0, 29, 30, 31, 0, 0, 0,
- 32, 86, 86, 0, 0, 0, 86, 0, 0, 0,
+ 32, 88, 88, 0, 0, 0, 88, 0, 0, 0,
0, 38, 0, 39, 40, 41, 42, 43, 0, 0,
0, 0, 44, 45, 46, 47, 48, 49, 0, 0,
- 51, 0, 0, 0, 0, 0, 86, 0, 0, 54,
+ 51, 0, 0, 0, 0, 0, 88, 0, 0, 54,
0, 55, 56, 0, 24, 25, 26, 27, 28, 0,
29, 30, 31, 0, 52, 0, 32, 62, 64, 50,
0, 57, 242, 65, 60, 0, 59, 38, 0, 39,
@@ -355,16 +355,16 @@ short yytable[] = { 69,
57, 0, 65, 60, 0, 59, 38, 0, 39, 40,
41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
47, 48, 49, 0, 63, 51, 0, 53, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 85,
- 85, 85, 85, 0, 0, 0, 0, 0, 85, 52,
- 0, 61, 62, 64, 50, 85, 57, 275, 65, 60,
- 0, 59, 0, 0, 85, 85, 0, 85, 85, 85,
- 85, 85, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 54, 0, 55, 56, 0, 87,
+ 87, 87, 87, 0, 0, 0, 0, 0, 87, 52,
+ 0, 61, 62, 64, 50, 87, 57, 275, 65, 60,
+ 0, 59, 0, 0, 87, 87, 0, 87, 87, 87,
+ 87, 87, 0, 0, 0, 0, 0, 0, 0, 0,
63, 0, 0, 0, 0, 0, 53, 0, 0, 0,
- 0, 0, 0, 0, 0, 86, 86, 86, 86, 0,
- 0, 0, 0, 0, 86, 52, 0, 61, 62, 64,
+ 0, 0, 0, 0, 0, 88, 88, 88, 88, 0,
+ 0, 0, 0, 0, 88, 52, 0, 61, 62, 64,
50, 0, 57, 277, 65, 60, 0, 59, 0, 0,
- 86, 86, 0, 86, 86, 86, 86, 86, 0, 0,
+ 88, 88, 0, 88, 88, 88, 88, 88, 0, 0,
0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 24, 25,
@@ -375,203 +375,203 @@ short yytable[] = { 69,
51, 0, 0, 0, 0, 0, 0, 0, 0, 54,
0, 55, 56, 0, 0, 0, 22, 24, 25, 26,
27, 28, 0, 29, 30, 31, 61, 0, 0, 32,
- 67, 0, 0, 67, 0, 0, 0, 0, 0, 0,
- 38, 0, 39, 40, 41, 42, 43, 67, 67, 0,
+ 69, 0, 0, 69, 0, 0, 0, 0, 0, 0,
+ 38, 0, 39, 40, 41, 42, 43, 69, 69, 0,
0, 44, 45, 46, 47, 48, 49, 167, 0, 51,
- 0, 53, 0, 0, 0, 0, 145, 0, 54, 145,
+ 0, 53, 0, 0, 0, 0, 147, 0, 54, 147,
55, 56, 0, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 67, 145, 145, 32, 0, 0, 145, 149,
+ 30, 31, 69, 147, 147, 32, 0, 0, 147, 149,
0, 0, 0, 0, 0, 0, 38, 0, 39, 40,
41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
- 47, 48, 49, 0, 0, 51, 145, 0, 145, 0,
- 0, 0, 0, 0, 54, 128, 55, 56, 128, 24,
+ 47, 48, 49, 0, 0, 51, 147, 0, 147, 0,
+ 0, 0, 0, 0, 54, 130, 55, 56, 130, 24,
25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 128, 128, 0, 0, 0, 128, 145, 0,
+ 0, 32, 130, 130, 0, 0, 0, 130, 147, 0,
0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 0, 51, 0, 0, 0, 128, 0, 128, 0, 0,
- 54, 0, 55, 56, 0, 0, 0, 0, 152, 0,
- 0, 152, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 152, 152, 128, 0, 0,
- 152, 0, 0, 0, 0, 38, 0, 39, 40, 41,
+ 0, 51, 0, 0, 0, 130, 0, 130, 0, 0,
+ 54, 0, 55, 56, 0, 0, 0, 0, 154, 0,
+ 0, 154, 24, 25, 26, 27, 28, 0, 29, 30,
+ 31, 0, 0, 0, 32, 154, 154, 130, 0, 0,
+ 154, 0, 0, 0, 0, 38, 0, 39, 40, 41,
42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 0, 51, 0, 138, 0, 152, 138,
- 152, 0, 0, 54, 0, 55, 56, 0, 0, 0,
- 0, 0, 0, 138, 138, 153, 154, 0, 138, 0,
- 0, 67, 67, 67, 67, 0, 0, 0, 0, 0,
- 152, 161, 162, 0, 0, 163, 0, 0, 164, 165,
- 166, 0, 0, 0, 0, 0, 67, 67, 138, 0,
- 0, 0, 0, 0, 0, 0, 0, 145, 145, 145,
- 145, 0, 113, 0, 0, 113, 145, 0, 0, 0,
- 0, 0, 145, 145, 145, 145, 0, 0, 138, 113,
- 113, 0, 145, 145, 113, 145, 145, 145, 145, 145,
- 145, 145, 0, 0, 145, 0, 0, 145, 145, 145,
+ 48, 49, 0, 0, 51, 0, 140, 0, 154, 140,
+ 154, 0, 0, 54, 0, 55, 56, 0, 0, 0,
+ 0, 0, 0, 140, 140, 153, 154, 0, 140, 0,
+ 0, 69, 69, 69, 69, 0, 0, 0, 0, 0,
+ 154, 161, 162, 0, 0, 163, 0, 0, 164, 165,
+ 166, 0, 0, 0, 0, 0, 69, 69, 140, 0,
+ 0, 0, 0, 0, 0, 0, 0, 147, 147, 147,
+ 147, 0, 115, 0, 0, 115, 147, 0, 0, 0,
+ 0, 0, 147, 147, 147, 147, 0, 0, 140, 115,
+ 115, 0, 147, 147, 115, 147, 147, 147, 147, 147,
+ 147, 147, 0, 0, 147, 0, 0, 147, 147, 147,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 113, 0, 113, 0, 128, 128, 128, 128,
- 0, 154, 0, 0, 154, 128, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 0, 0, 0, 154, 154,
- 0, 128, 128, 154, 128, 128, 128, 128, 128, 128,
- 128, 0, 0, 128, 0, 0, 128, 128, 128, 0,
+ 0, 0, 115, 0, 115, 0, 130, 130, 130, 130,
+ 0, 156, 0, 0, 156, 130, 0, 0, 0, 0,
+ 0, 130, 130, 130, 130, 0, 0, 0, 156, 156,
+ 0, 130, 130, 156, 130, 130, 130, 130, 130, 130,
+ 130, 0, 0, 130, 0, 0, 130, 130, 130, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 154, 0, 0, 0, 0, 0, 152,
- 152, 152, 152, 0, 0, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 152, 152, 152, 152, 0, 0,
- 0, 0, 0, 154, 152, 152, 0, 152, 152, 152,
- 152, 152, 152, 152, 0, 0, 152, 0, 0, 152,
- 152, 152, 0, 0, 0, 0, 0, 138, 138, 138,
- 138, 0, 155, 0, 0, 0, 138, 0, 0, 0,
- 0, 0, 138, 138, 138, 138, 0, 0, 0, 155,
- 155, 0, 138, 138, 155, 138, 138, 138, 138, 138,
- 138, 138, 0, 0, 138, 0, 0, 138, 138, 138,
+ 0, 0, 0, 156, 0, 0, 0, 0, 0, 154,
+ 154, 154, 154, 0, 0, 0, 0, 0, 154, 0,
+ 0, 0, 0, 0, 154, 154, 154, 154, 0, 0,
+ 0, 0, 0, 156, 154, 154, 0, 154, 154, 154,
+ 154, 154, 154, 154, 0, 0, 154, 0, 0, 154,
+ 154, 154, 0, 0, 0, 0, 0, 140, 140, 140,
+ 140, 0, 157, 0, 0, 0, 140, 0, 0, 0,
+ 0, 0, 140, 140, 140, 140, 0, 0, 0, 157,
+ 157, 0, 140, 140, 157, 140, 140, 140, 140, 140,
+ 140, 140, 0, 0, 140, 0, 0, 140, 140, 140,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 155, 0, 155, 0, 0, 0, 0, 0,
- 0, 0, 0, 113, 113, 113, 113, 0, 0, 0,
- 0, 0, 113, 0, 0, 0, 0, 0, 113, 113,
- 113, 113, 0, 0, 155, 0, 0, 0, 113, 113,
- 0, 113, 113, 113, 113, 113, 113, 113, 0, 0,
- 113, 0, 0, 113, 113, 113, 0, 0, 0, 0,
+ 0, 0, 157, 0, 157, 0, 0, 0, 0, 0,
+ 0, 0, 0, 115, 115, 115, 115, 0, 0, 0,
+ 0, 0, 115, 0, 0, 0, 0, 0, 115, 115,
+ 115, 115, 0, 0, 157, 0, 0, 0, 115, 115,
+ 0, 115, 115, 115, 115, 115, 115, 115, 0, 0,
+ 115, 0, 0, 115, 115, 115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 154, 154, 154, 154, 0, 140, 0, 0,
- 0, 154, 0, 0, 0, 0, 0, 154, 154, 154,
- 154, 0, 0, 0, 140, 140, 0, 154, 154, 140,
- 154, 154, 154, 154, 154, 154, 154, 0, 0, 154,
- 0, 0, 154, 154, 154, 0, 0, 0, 0, 0,
- 105, 0, 0, 105, 0, 0, 0, 140, 0, 140,
- 91, 0, 0, 91, 0, 0, 0, 105, 105, 0,
- 0, 0, 105, 0, 0, 0, 0, 91, 91, 0,
- 0, 0, 91, 0, 0, 0, 0, 0, 0, 140,
+ 0, 0, 156, 156, 156, 156, 0, 142, 0, 0,
+ 0, 156, 0, 0, 0, 0, 0, 156, 156, 156,
+ 156, 0, 0, 0, 142, 142, 0, 156, 156, 142,
+ 156, 156, 156, 156, 156, 156, 156, 0, 0, 156,
+ 0, 0, 156, 156, 156, 0, 0, 0, 0, 0,
+ 107, 0, 0, 107, 0, 0, 0, 142, 0, 142,
+ 93, 0, 0, 93, 0, 0, 0, 107, 107, 0,
+ 0, 0, 107, 0, 0, 0, 0, 93, 93, 0,
+ 0, 0, 93, 0, 0, 0, 0, 0, 0, 142,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 91, 155, 155, 155, 155, 0, 66, 0,
- 0, 66, 155, 0, 0, 0, 0, 0, 155, 155,
- 155, 155, 105, 0, 0, 66, 66, 0, 155, 155,
- 66, 155, 155, 155, 155, 155, 155, 155, 0, 0,
- 155, 0, 0, 155, 155, 155, 0, 0, 0, 0,
- 0, 69, 0, 0, 0, 0, 0, 0, 0, 0,
- 66, 0, 0, 0, 0, 0, 0, 0, 69, 69,
- 0, 0, 0, 69, 0, 0, 0, 0, 0, 0,
+ 0, 0, 107, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 93, 157, 157, 157, 157, 0, 68, 0,
+ 0, 68, 157, 0, 0, 0, 0, 0, 157, 157,
+ 157, 157, 107, 0, 0, 68, 68, 0, 157, 157,
+ 68, 157, 157, 157, 157, 157, 157, 157, 0, 0,
+ 157, 0, 0, 157, 157, 157, 0, 0, 0, 0,
+ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 0, 0, 0, 0, 71, 71,
+ 0, 0, 0, 71, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 66, 0, 0, 0, 0, 104, 0, 0, 104, 0,
- 0, 69, 0, 69, 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 104, 0, 0, 0, 104, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 140, 140,
- 140, 140, 0, 69, 0, 0, 0, 140, 0, 0,
- 0, 0, 0, 140, 140, 140, 140, 104, 0, 0,
- 0, 0, 0, 140, 140, 0, 140, 140, 140, 140,
- 140, 140, 140, 0, 0, 140, 0, 0, 140, 140,
- 140, 105, 105, 105, 105, 0, 141, 104, 0, 141,
- 105, 91, 91, 91, 91, 0, 105, 105, 105, 105,
- 91, 0, 0, 141, 141, 0, 105, 105, 141, 105,
- 105, 105, 105, 105, 105, 105, 91, 91, 105, 91,
- 91, 105, 105, 105, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
- 66, 66, 66, 0, 154, 0, 0, 154, 66, 0,
- 0, 0, 0, 0, 66, 66, 66, 66, 0, 0,
- 0, 154, 154, 0, 66, 66, 154, 66, 66, 66,
- 66, 66, 66, 66, 0, 0, 66, 0, 0, 66,
- 66, 66, 69, 69, 69, 69, 0, 111, 0, 0,
- 111, 69, 0, 0, 0, 0, 154, 69, 69, 69,
- 69, 0, 0, 0, 111, 111, 0, 69, 69, 111,
- 69, 69, 69, 69, 69, 69, 69, 0, 0, 69,
- 0, 0, 69, 69, 69, 0, 104, 104, 104, 104,
- 0, 118, 0, 0, 118, 104, 0, 0, 0, 111,
- 0, 104, 104, 104, 104, 0, 0, 0, 118, 118,
- 0, 104, 104, 118, 104, 104, 104, 104, 104, 104,
- 104, 0, 0, 104, 0, 0, 104, 104, 104, 0,
- 0, 0, 0, 0, 96, 0, 0, 96, 0, 0,
- 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
- 0, 96, 96, 0, 0, 0, 96, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 141, 141, 141,
- 141, 0, 97, 0, 0, 97, 141, 0, 0, 0,
- 0, 0, 141, 141, 141, 141, 96, 0, 0, 97,
- 97, 0, 141, 141, 97, 141, 141, 141, 141, 141,
- 141, 141, 0, 0, 141, 0, 0, 141, 141, 141,
- 98, 0, 0, 98, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 97, 0, 0, 98, 98, 0,
- 0, 0, 98, 0, 0, 154, 154, 154, 154, 0,
- 0, 0, 0, 0, 154, 0, 0, 0, 0, 0,
- 154, 154, 154, 154, 0, 0, 0, 0, 0, 0,
- 154, 154, 98, 154, 154, 154, 154, 154, 154, 154,
- 0, 0, 154, 0, 0, 154, 154, 154, 111, 111,
- 111, 111, 0, 94, 0, 0, 94, 111, 0, 0,
- 0, 0, 0, 111, 111, 111, 111, 0, 0, 0,
- 94, 94, 0, 111, 111, 94, 111, 111, 111, 111,
- 111, 111, 111, 0, 0, 111, 0, 0, 111, 111,
- 111, 0, 118, 118, 118, 118, 0, 95, 0, 0,
- 95, 118, 0, 0, 0, 94, 0, 118, 118, 118,
- 118, 0, 0, 0, 95, 95, 0, 118, 118, 95,
- 118, 118, 118, 118, 118, 118, 118, 0, 0, 118,
- 0, 0, 118, 118, 118, 96, 96, 96, 96, 0,
- 93, 0, 0, 93, 96, 0, 0, 0, 0, 95,
- 96, 96, 96, 96, 0, 0, 0, 93, 93, 0,
- 96, 96, 93, 96, 96, 96, 96, 96, 96, 96,
- 0, 0, 0, 97, 97, 97, 97, 0, 81, 0,
- 0, 81, 97, 0, 0, 0, 0, 0, 97, 97,
- 97, 97, 93, 0, 0, 81, 81, 0, 97, 97,
- 81, 97, 97, 97, 97, 97, 97, 97, 0, 0,
- 0, 98, 98, 98, 98, 0, 82, 0, 0, 82,
- 98, 0, 0, 0, 0, 0, 98, 98, 98, 98,
- 81, 0, 0, 82, 82, 0, 98, 98, 82, 98,
- 98, 98, 98, 98, 98, 98, 0, 0, 0, 0,
- 0, 0, 84, 0, 0, 84, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82, 84,
- 84, 0, 0, 0, 84, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 94, 94, 94, 94, 0, 144,
- 0, 0, 144, 94, 0, 0, 0, 0, 0, 94,
- 94, 94, 94, 0, 84, 0, 144, 144, 0, 94,
- 94, 144, 94, 94, 94, 94, 94, 94, 94, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,
- 95, 95, 0, 143, 0, 0, 143, 95, 0, 0,
- 0, 144, 0, 95, 95, 95, 95, 0, 0, 0,
- 143, 143, 0, 95, 95, 143, 95, 95, 95, 95,
- 95, 95, 95, 0, 0, 0, 0, 0, 0, 0,
- 0, 93, 93, 93, 93, 0, 132, 0, 0, 132,
- 93, 0, 0, 0, 0, 143, 93, 93, 93, 93,
- 0, 0, 0, 132, 132, 0, 93, 93, 132, 93,
- 93, 93, 93, 93, 93, 93, 0, 0, 0, 81,
- 81, 81, 81, 0, 103, 0, 0, 103, 81, 0,
- 0, 0, 0, 0, 81, 81, 81, 81, 132, 0,
- 0, 103, 103, 0, 81, 81, 103, 81, 81, 81,
- 81, 81, 81, 81, 0, 0, 0, 82, 82, 82,
- 82, 0, 87, 0, 0, 87, 82, 0, 0, 0,
- 0, 0, 82, 82, 82, 82, 103, 0, 0, 87,
- 87, 0, 82, 82, 87, 82, 82, 82, 82, 82,
- 82, 0, 0, 84, 84, 84, 84, 0, 88, 0,
- 0, 88, 84, 0, 0, 0, 0, 0, 84, 84,
- 0, 0, 0, 0, 87, 88, 88, 0, 84, 84,
- 88, 84, 84, 84, 84, 84, 84, 0, 0, 0,
- 144, 144, 144, 144, 0, 90, 0, 0, 90, 144,
- 0, 0, 0, 0, 0, 144, 144, 0, 0, 0,
- 88, 0, 90, 90, 0, 144, 144, 90, 144, 144,
- 144, 144, 144, 0, 0, 0, 167, 0, 0, 0,
- 0, 0, 0, 0, 143, 143, 143, 143, 0, 89,
- 156, 0, 89, 143, 0, 0, 0, 90, 0, 143,
- 143, 0, 0, 0, 0, 0, 89, 89, 149, 143,
- 143, 89, 143, 143, 143, 143, 143, 0, 167, 0,
- 0, 283, 0, 0, 0, 0, 156, 132, 132, 132,
- 132, 0, 0, 0, 0, 0, 132, 0, 0, 0,
- 0, 89, 132, 132, 0, 0, 0, 0, 0, 0,
- 149, 0, 132, 132, 167, 132, 132, 132, 132, 132,
- 0, 0, 0, 0, 0, 103, 103, 103, 103, 0,
- 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
- 103, 103, 0, 0, 0, 156, 149, 0, 0, 0,
- 103, 103, 0, 103, 103, 103, 103, 103, 0, 0,
- 0, 0, 0, 87, 87, 87, 87, 0, 0, 0,
- 0, 0, 87, 167, 0, 0, 0, 0, 90, 90,
- 0, 0, 0, 0, 0, 0, 0, 0, 87, 87,
- 103, 87, 87, 87, 87, 87, 111, 90, 119, 88,
- 88, 88, 88, 90, 0, 149, 0, 0, 88, 167,
+ 68, 0, 0, 0, 0, 106, 0, 0, 106, 0,
+ 0, 71, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 106, 106, 0, 0, 0, 106, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 142, 142,
+ 142, 142, 0, 71, 0, 0, 0, 142, 0, 0,
+ 0, 0, 0, 142, 142, 142, 142, 106, 0, 0,
+ 0, 0, 0, 142, 142, 0, 142, 142, 142, 142,
+ 142, 142, 142, 0, 0, 142, 0, 0, 142, 142,
+ 142, 107, 107, 107, 107, 0, 143, 106, 0, 143,
+ 107, 93, 93, 93, 93, 0, 107, 107, 107, 107,
+ 93, 0, 0, 143, 143, 0, 107, 107, 143, 107,
+ 107, 107, 107, 107, 107, 107, 93, 93, 107, 93,
+ 93, 107, 107, 107, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 143, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 68, 68, 68, 0, 156, 0, 0, 156, 68, 0,
+ 0, 0, 0, 0, 68, 68, 68, 68, 0, 0,
+ 0, 156, 156, 0, 68, 68, 156, 68, 68, 68,
+ 68, 68, 68, 68, 0, 0, 68, 0, 0, 68,
+ 68, 68, 71, 71, 71, 71, 0, 113, 0, 0,
+ 113, 71, 0, 0, 0, 0, 156, 71, 71, 71,
+ 71, 0, 0, 0, 113, 113, 0, 71, 71, 113,
+ 71, 71, 71, 71, 71, 71, 71, 0, 0, 71,
+ 0, 0, 71, 71, 71, 0, 106, 106, 106, 106,
+ 0, 120, 0, 0, 120, 106, 0, 0, 0, 113,
+ 0, 106, 106, 106, 106, 0, 0, 0, 120, 120,
+ 0, 106, 106, 120, 106, 106, 106, 106, 106, 106,
+ 106, 0, 0, 106, 0, 0, 106, 106, 106, 0,
+ 0, 0, 0, 0, 98, 0, 0, 98, 0, 0,
+ 0, 0, 0, 120, 0, 0, 0, 0, 0, 0,
+ 0, 98, 98, 0, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 143, 143, 143,
+ 143, 0, 99, 0, 0, 99, 143, 0, 0, 0,
+ 0, 0, 143, 143, 143, 143, 98, 0, 0, 99,
+ 99, 0, 143, 143, 99, 143, 143, 143, 143, 143,
+ 143, 143, 0, 0, 143, 0, 0, 143, 143, 143,
+ 100, 0, 0, 100, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 99, 0, 0, 100, 100, 0,
+ 0, 0, 100, 0, 0, 156, 156, 156, 156, 0,
+ 0, 0, 0, 0, 156, 0, 0, 0, 0, 0,
+ 156, 156, 156, 156, 0, 0, 0, 0, 0, 0,
+ 156, 156, 100, 156, 156, 156, 156, 156, 156, 156,
+ 0, 0, 156, 0, 0, 156, 156, 156, 113, 113,
+ 113, 113, 0, 96, 0, 0, 96, 113, 0, 0,
+ 0, 0, 0, 113, 113, 113, 113, 0, 0, 0,
+ 96, 96, 0, 113, 113, 96, 113, 113, 113, 113,
+ 113, 113, 113, 0, 0, 113, 0, 0, 113, 113,
+ 113, 0, 120, 120, 120, 120, 0, 97, 0, 0,
+ 97, 120, 0, 0, 0, 96, 0, 120, 120, 120,
+ 120, 0, 0, 0, 97, 97, 0, 120, 120, 97,
+ 120, 120, 120, 120, 120, 120, 120, 0, 0, 120,
+ 0, 0, 120, 120, 120, 98, 98, 98, 98, 0,
+ 95, 0, 0, 95, 98, 0, 0, 0, 0, 97,
+ 98, 98, 98, 98, 0, 0, 0, 95, 95, 0,
+ 98, 98, 95, 98, 98, 98, 98, 98, 98, 98,
+ 0, 0, 0, 99, 99, 99, 99, 0, 83, 0,
+ 0, 83, 99, 0, 0, 0, 0, 0, 99, 99,
+ 99, 99, 95, 0, 0, 83, 83, 0, 99, 99,
+ 83, 99, 99, 99, 99, 99, 99, 99, 0, 0,
+ 0, 100, 100, 100, 100, 0, 84, 0, 0, 84,
+ 100, 0, 0, 0, 0, 0, 100, 100, 100, 100,
+ 83, 0, 0, 84, 84, 0, 100, 100, 84, 100,
+ 100, 100, 100, 100, 100, 100, 0, 0, 0, 0,
+ 0, 0, 86, 0, 0, 86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 86,
+ 86, 0, 0, 0, 86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96, 96, 96, 96, 0, 146,
+ 0, 0, 146, 96, 0, 0, 0, 0, 0, 96,
+ 96, 96, 96, 0, 86, 0, 146, 146, 0, 96,
+ 96, 146, 96, 96, 96, 96, 96, 96, 96, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 97, 97,
+ 97, 97, 0, 145, 0, 0, 145, 97, 0, 0,
+ 0, 146, 0, 97, 97, 97, 97, 0, 0, 0,
+ 145, 145, 0, 97, 97, 145, 97, 97, 97, 97,
+ 97, 97, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 95, 95, 95, 95, 0, 134, 0, 0, 134,
+ 95, 0, 0, 0, 0, 145, 95, 95, 95, 95,
+ 0, 0, 0, 134, 134, 0, 95, 95, 134, 95,
+ 95, 95, 95, 95, 95, 95, 0, 0, 0, 83,
+ 83, 83, 83, 0, 105, 0, 0, 105, 83, 0,
+ 0, 0, 0, 0, 83, 83, 83, 83, 134, 0,
+ 0, 105, 105, 0, 83, 83, 105, 83, 83, 83,
+ 83, 83, 83, 83, 0, 0, 0, 84, 84, 84,
+ 84, 0, 89, 0, 0, 89, 84, 0, 0, 0,
+ 0, 0, 84, 84, 84, 84, 105, 0, 0, 89,
+ 89, 0, 84, 84, 89, 84, 84, 84, 84, 84,
+ 84, 0, 0, 86, 86, 86, 86, 0, 90, 0,
+ 0, 90, 86, 0, 0, 0, 0, 0, 86, 86,
+ 0, 0, 0, 0, 89, 90, 90, 0, 86, 86,
+ 90, 86, 86, 86, 86, 86, 86, 0, 0, 0,
+ 146, 146, 146, 146, 0, 92, 0, 0, 92, 146,
+ 0, 0, 0, 0, 0, 146, 146, 0, 0, 0,
+ 90, 0, 92, 92, 0, 146, 146, 92, 146, 146,
+ 146, 146, 146, 0, 0, 0, 167, 0, 0, 0,
+ 0, 0, 0, 0, 145, 145, 145, 145, 0, 91,
+ 156, 0, 91, 145, 0, 0, 0, 92, 0, 145,
+ 145, 0, 0, 0, 0, 0, 91, 91, 149, 145,
+ 145, 91, 145, 145, 145, 145, 145, 0, 167, 0,
+ 0, 283, 0, 0, 0, 0, 156, 134, 134, 134,
+ 134, 0, 0, 0, 0, 0, 134, 0, 0, 0,
+ 0, 91, 134, 134, 0, 0, 0, 0, 0, 0,
+ 149, 0, 134, 134, 167, 134, 134, 134, 134, 134,
+ 0, 0, 0, 0, 0, 105, 105, 105, 105, 0,
+ 0, 0, 0, 0, 105, 0, 0, 0, 0, 0,
+ 105, 105, 0, 0, 0, 156, 149, 0, 0, 0,
+ 105, 105, 0, 105, 105, 105, 105, 105, 0, 0,
+ 0, 0, 0, 89, 89, 89, 89, 0, 0, 0,
+ 0, 0, 89, 167, 0, 0, 0, 0, 90, 90,
+ 0, 0, 0, 0, 0, 0, 0, 0, 89, 89,
+ 103, 89, 89, 89, 89, 89, 111, 90, 119, 90,
+ 90, 90, 90, 90, 0, 149, 0, 0, 90, 167,
0, 0, 0, 0, 0, 90, 90, 90, 90, 0,
- 0, 0, 0, 0, 88, 88, 0, 88, 88, 88,
- 88, 0, 151, 152, 153, 154, 90, 90, 90, 90,
- 0, 149, 0, 0, 0, 90, 157, 158, 159, 160,
+ 0, 0, 0, 0, 90, 90, 0, 90, 90, 90,
+ 90, 0, 151, 152, 153, 154, 92, 92, 92, 92,
+ 0, 149, 0, 0, 0, 92, 157, 158, 159, 160,
161, 162, 0, 0, 163, 0, 0, 164, 165, 166,
- 111, 90, 90, 0, 90, 90, 90, 0, 150, 0,
+ 111, 92, 92, 0, 92, 92, 92, 0, 150, 0,
0, 0, 0, 0, 151, 152, 153, 154, 0, 0,
- 89, 89, 89, 89, 0, 0, 0, 155, 157, 158,
+ 91, 91, 91, 91, 0, 0, 0, 155, 157, 158,
159, 160, 161, 162, 0, 0, 163, 0, 0, 164,
- 165, 166, 0, 0, 150, 89, 89, 0, 89, 0,
+ 165, 166, 0, 0, 150, 91, 91, 0, 91, 0,
151, 152, 153, 154, 0, 0, 0, 0, 0, 234,
0, 0, 0, 155, 157, 158, 159, 160, 161, 162,
94, 0, 163, 0, 0, 164, 165, 166, 104, 0,
@@ -603,44 +603,44 @@ short yytable[] = { 69,
};
short yycheck[] = { 13,
59, 41, 36, 36, 44, 93, 36, 59, 91, 86,
- 40, 123, 91, 41, 325, 191, 40, 43, 58, 59,
+ 40, 325, 91, 41, 257, 191, 40, 43, 58, 59,
182, 257, 59, 63, 41, 51, 41, 59, 41, 257,
41, 91, 46, 41, 322, 323, 91, 59, 41, 327,
- 123, 41, 41, 57, 123, 356, 40, 61, 41, 44,
- 6, 59, 8, 93, 40, 343, 59, 278, 91, 347,
- 59, 41, 41, 123, 41, 91, 59, 91, 123, 40,
+ 123, 41, 356, 57, 123, 297, 298, 61, 41, 44,
+ 40, 59, 40, 93, 40, 343, 59, 278, 91, 347,
+ 123, 41, 41, 123, 41, 91, 59, 91, 123, 40,
97, 98, 99, 100, 101, 102, 59, 41, 0, 59,
- 59, 59, 59, 59, 123, 59, 123, 59, 114, 123,
- 123, 123, 106, 107, 270, 59, 122, 297, 298, 123,
- 40, 40, 272, 273, 274, 275, 40, 276, 277, 40,
- 59, 33, 40, 93, 36, 37, 38, 40, 40, 44,
- 42, 43, 260, 45, 286, 93, 302, 297, 298, 143,
- 144, 145, 146, 147, 148, 149, 123, 59, 257, 266,
- 267, 268, 64, 270, 271, 257, 40, 40, 257, 41,
- 93, 40, 0, 167, 168, 169, 170, 171, 172, 173,
- 125, 93, 91, 93, 36, 192, 41, 125, 182, 91,
- 346, 91, 186, 187, 298, 189, 40, 191, 93, 41,
- 93, 41, 91, 41, 198, 33, 200, 201, 36, 37,
- 38, 205, 40, 40, 42, 43, 41, 45, 257, 41,
- 41, 123, 59, 125, 126, 59, 125, 125, 125, 297,
- 298, 59, 123, 125, 123, 41, 64, 231, 125, 233,
+ 59, 59, 59, 59, 40, 59, 123, 59, 114, 123,
+ 123, 123, 106, 107, 270, 59, 122, 276, 277, 123,
+ 59, 41, 272, 273, 274, 275, 40, 40, 44, 40,
+ 260, 33, 40, 93, 36, 37, 38, 123, 40, 59,
+ 42, 43, 257, 45, 286, 93, 302, 297, 298, 143,
+ 144, 145, 146, 147, 148, 149, 40, 59, 40, 266,
+ 267, 268, 64, 270, 271, 41, 40, 91, 257, 36,
+ 93, 41, 0, 167, 168, 169, 170, 171, 172, 173,
+ 125, 93, 125, 93, 91, 192, 298, 40, 182, 91,
+ 346, 41, 186, 187, 41, 189, 41, 191, 93, 41,
+ 93, 41, 91, 40, 198, 33, 200, 201, 36, 37,
+ 38, 205, 40, 59, 42, 43, 41, 45, 257, 125,
+ 125, 123, 125, 125, 126, 125, 59, 123, 41, 297,
+ 298, 59, 41, 125, 123, 41, 64, 231, 59, 233,
41, 41, 248, 257, 44, 258, 309, 253, 262, 312,
313, 314, 272, 273, 274, 275, 41, 41, 58, 59,
- 44, 281, 59, 91, 40, 297, 298, 287, 288, 41,
- 290, 41, 44, 41, 58, 59, 333, 297, 298, 314,
+ 44, 281, 40, 91, 123, 297, 298, 287, 288, 41,
+ 290, 123, 44, 41, 58, 59, 333, 297, 298, 314,
300, 301, 302, 303, 304, 305, 296, 281, 0, 297,
- 298, 63, 286, 93, 123, 123, 41, 125, 126, 41,
+ 298, 63, 286, 93, 41, 123, 59, 125, 126, 41,
297, 298, 297, 298, 297, 298, 297, 298, 59, 93,
304, 41, 272, 273, 274, 275, 59, 297, 298, 91,
- 41, 33, 297, 298, 36, 37, 38, 59, 40, 32,
- 42, 43, 41, 45, 297, 298, 13, 297, 298, 297,
+ 41, 33, 297, 298, 36, 37, 38, 8, 40, 32,
+ 42, 43, 144, 45, 297, 298, 13, 297, 298, 297,
298, 297, 298, 297, 298, 297, 298, 59, 342, 297,
- 298, 123, 64, 144, 256, 257, 258, 259, 260, 261,
- 342, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 298, 123, 64, 342, 256, 257, 258, 259, 260, 261,
+ 189, 263, 264, 265, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 297, 298, 304, 279, 280, 91,
282, 283, 284, 285, 286, 297, 298, 297, 298, 291,
- 292, 293, 294, 295, 296, 91, 189, 299, 41, 41,
- 289, 44, 297, 298, 297, 298, 308, 96, 310, 311,
+ 292, 293, 294, 295, 296, 91, 96, 299, 41, 41,
+ 289, 44, 297, 298, 297, 298, 308, -1, 310, 311,
-1, 123, -1, -1, 126, 58, 59, 306, -1, -1,
309, 63, -1, 312, 313, 314, -1, 123, 256, 257,
258, 259, 260, 261, -1, 263, 264, 265, 266, 267,
@@ -680,8 +680,8 @@ short yycheck[] = { 13,
-1, 308, 309, 310, 311, 312, 313, 314, 41, -1,
-1, 44, -1, 41, -1, -1, 44, -1, 287, 288,
289, 290, -1, -1, -1, 58, 59, -1, -1, -1,
- 58, 59, -1, -1, -1, 63, 305, 306, -1, -1,
- 309, 125, -1, 312, 313, 314, 272, 273, 274, 275,
+ 58, 59, -1, -1, -1, 63, 305, 306, -1, 125,
+ 309, -1, -1, 312, 313, 314, 272, 273, 274, 275,
-1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
93, -1, 125, 269, -1, 93, 272, 273, 274, 275,
-1, 297, -1, -1, 280, 281, 282, 283, 284, 285,
@@ -692,28 +692,28 @@ short yycheck[] = { 13,
-1, 45, -1, -1, -1, -1, -1, 272, 273, 274,
275, -1, -1, -1, -1, 59, 281, -1, -1, -1,
64, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, -1, 297, 298, -1, 300, 301, 302, 303, 304,
+ -1, -1, 297, 298, 13, 300, 301, 302, 303, 304,
305, 306, -1, -1, 309, 33, -1, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, -1, -1,
- -1, 13, 266, 267, 268, 17, 270, 271, -1, -1,
- -1, 59, -1, -1, -1, -1, 64, -1, -1, 123,
- -1, -1, 126, 266, 267, 268, -1, 270, 271, -1,
- 42, -1, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, 33, -1, 91, 36, 37, 38, -1, 40, -1,
- 42, 43, -1, 45, -1, -1, -1, -1, -1, 272,
- 273, 274, 275, -1, 272, 273, 274, 275, 80, -1,
- -1, -1, 64, 281, -1, 123, -1, -1, 126, 287,
- 288, 289, 290, 95, 297, 298, -1, 300, -1, 297,
+ 38, -1, 40, -1, 42, 43, 26, 45, -1, -1,
+ 266, 267, 268, 42, 270, 271, 45, -1, -1, -1,
+ -1, 59, -1, 43, 44, -1, 64, -1, -1, 123,
+ 50, -1, 126, 266, 267, 268, -1, 270, 271, -1,
+ -1, -1, 62, 63, 64, 65, -1, -1, -1, -1,
+ -1, 33, 81, 91, 36, 37, 38, -1, 40, -1,
+ 42, 43, -1, 45, -1, -1, 95, -1, -1, 272,
+ 273, 274, 275, -1, 272, 273, 274, 275, -1, -1,
+ -1, -1, 64, 281, -1, 123, -1, 107, 126, 287,
+ 288, 289, 290, -1, 297, 298, -1, 300, -1, 297,
298, -1, 300, 301, 302, 303, 304, 305, 306, 91,
- -1, 309, 26, -1, 33, -1, -1, 36, 37, 38,
- -1, 40, -1, 42, 43, -1, 45, -1, -1, 43,
- 44, -1, -1, -1, -1, -1, 50, -1, -1, 141,
- -1, 123, -1, -1, 126, 64, -1, -1, 62, 63,
- 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 309, 141, -1, 33, -1, -1, 36, 37, 38,
+ -1, 40, -1, 42, 43, -1, 45, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 123, -1, -1, 126, 64, -1, -1, -1, 178,
+ -1, -1, -1, -1, -1, -1, 185, -1, -1, -1,
-1, -1, 256, 257, 258, 259, 260, 261, -1, 263,
- 264, 265, 91, -1, -1, 269, 178, -1, 272, 273,
- 274, 275, -1, 185, -1, 279, 280, -1, 282, 283,
- 284, 285, 286, 107, -1, -1, -1, 291, 292, 293,
+ 264, 265, 91, -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, 123, 299, -1, 126, -1, -1,
-1, -1, -1, -1, 308, -1, 310, 311, 256, 257,
258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
@@ -1092,11 +1092,13 @@ char *yyrule[] = {
"decl : subrout",
"decl : package",
"decl : use",
-"format : FORMAT startsub WORD block",
-"format : FORMAT startsub block",
+"format : FORMAT startformsub formname block",
+"formname : WORD",
+"formname :",
"subrout : SUB startsub subname proto subbody",
"startsub :",
"startanonsub :",
+"startformsub :",
"subname : WORD",
"proto :",
"proto : THING",
@@ -1237,9 +1239,9 @@ int yyerrflag;
int yychar;
YYSTYPE yyval;
YYSTYPE yylval;
-#line 619 "perly.y"
+#line 626 "perly.y"
/* PROGRAM */
-#line 1313 "perly.c"
+#line 1315 "perly.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
@@ -1691,329 +1693,338 @@ case 49:
{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 50:
-#line 270 "perly.y"
-{ newFORM(yyvsp[-1].ival, Nullop, yyvsp[0].opval); }
+#line 271 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 51:
-#line 274 "perly.y"
-{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 272 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 52:
-#line 278 "perly.y"
-{ yyval.ival = start_subparse(); }
+#line 276 "perly.y"
+{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 53:
-#line 282 "perly.y"
+#line 280 "perly.y"
+{ yyval.ival = start_subparse(); }
+break;
+case 54:
+#line 284 "perly.y"
{ yyval.ival = start_subparse();
CvANON_on(compcv); }
break;
-case 54:
-#line 286 "perly.y"
+case 55:
+#line 289 "perly.y"
+{ yyval.ival = start_subparse();
+ CvFORMAT_on(compcv); }
+break;
+case 56:
+#line 293 "perly.y"
{ char *name = SvPVx(((SVOP*)yyvsp[0].opval)->op_sv, na);
if (strEQ(name, "BEGIN") || strEQ(name, "END"))
CvUNIQUE_on(compcv);
yyval.opval = yyvsp[0].opval; }
break;
-case 55:
-#line 293 "perly.y"
+case 57:
+#line 300 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 57:
-#line 297 "perly.y"
+case 59:
+#line 304 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 58:
-#line 298 "perly.y"
+case 60:
+#line 305 "perly.y"
{ yyval.opval = Nullop; expect = XSTATE; }
break;
-case 59:
-#line 302 "perly.y"
+case 61:
+#line 309 "perly.y"
{ package(yyvsp[-1].opval); }
break;
-case 60:
-#line 304 "perly.y"
+case 62:
+#line 311 "perly.y"
{ package(Nullop); }
break;
-case 61:
-#line 308 "perly.y"
+case 63:
+#line 315 "perly.y"
{ CvUNIQUE_on(compcv); /* It's a BEGIN {} */ }
break;
-case 62:
-#line 310 "perly.y"
+case 64:
+#line 317 "perly.y"
{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); }
break;
-case 63:
-#line 314 "perly.y"
+case 65:
+#line 321 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 64:
-#line 316 "perly.y"
+case 66:
+#line 323 "perly.y"
{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 66:
-#line 321 "perly.y"
+case 68:
+#line 328 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 67:
-#line 323 "perly.y"
+case 69:
+#line 330 "perly.y"
{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 69:
-#line 328 "perly.y"
+case 71:
+#line 335 "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 70:
-#line 331 "perly.y"
+case 72:
+#line 338 "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 71:
-#line 334 "perly.y"
+case 73:
+#line 341 "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 72:
-#line 339 "perly.y"
+case 74:
+#line 346 "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 73:
-#line 344 "perly.y"
+case 75:
+#line 351 "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 74:
-#line 349 "perly.y"
+case 76:
+#line 356 "perly.y"
{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 75:
-#line 351 "perly.y"
+case 77:
+#line 358 "perly.y"
{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 76:
-#line 353 "perly.y"
+case 78:
+#line 360 "perly.y"
{ yyvsp[0].opval = newANONSUB(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 77:
-#line 355 "perly.y"
+case 79:
+#line 362 "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 80:
-#line 365 "perly.y"
+case 82:
+#line 372 "perly.y"
{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); }
break;
-case 81:
-#line 367 "perly.y"
+case 83:
+#line 374 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 82:
-#line 369 "perly.y"
+case 84:
+#line 376 "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 83:
-#line 373 "perly.y"
-{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
-break;
-case 84:
-#line 375 "perly.y"
-{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
-break;
case 85:
-#line 377 "perly.y"
+#line 380 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 86:
-#line 379 "perly.y"
+#line 382 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 87:
-#line 381 "perly.y"
+#line 384 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 88:
-#line 383 "perly.y"
+#line 386 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 89:
-#line 385 "perly.y"
-{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
+#line 388 "perly.y"
+{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 90:
-#line 387 "perly.y"
-{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
+#line 390 "perly.y"
+{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
case 91:
-#line 389 "perly.y"
-{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
+#line 392 "perly.y"
+{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
break;
case 92:
-#line 391 "perly.y"
-{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
+#line 394 "perly.y"
+{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
case 93:
-#line 393 "perly.y"
-{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
+#line 396 "perly.y"
+{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
case 94:
-#line 396 "perly.y"
-{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
+#line 398 "perly.y"
+{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
break;
case 95:
-#line 398 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
+#line 400 "perly.y"
+{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
break;
case 96:
-#line 400 "perly.y"
-{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
+#line 403 "perly.y"
+{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
break;
case 97:
-#line 402 "perly.y"
-{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
+#line 405 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 98:
-#line 404 "perly.y"
-{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
+#line 407 "perly.y"
+{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
case 99:
-#line 406 "perly.y"
+#line 409 "perly.y"
+{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
+break;
+case 100:
+#line 411 "perly.y"
+{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
+break;
+case 101:
+#line 413 "perly.y"
{ yyval.opval = newUNOP(OP_POSTINC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTINC)); }
break;
-case 100:
-#line 409 "perly.y"
+case 102:
+#line 416 "perly.y"
{ yyval.opval = newUNOP(OP_POSTDEC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); }
break;
-case 101:
-#line 412 "perly.y"
+case 103:
+#line 419 "perly.y"
{ yyval.opval = newUNOP(OP_PREINC, 0,
mod(scalar(yyvsp[0].opval), OP_PREINC)); }
break;
-case 102:
-#line 415 "perly.y"
+case 104:
+#line 422 "perly.y"
{ yyval.opval = newUNOP(OP_PREDEC, 0,
mod(scalar(yyvsp[0].opval), OP_PREDEC)); }
break;
-case 103:
-#line 418 "perly.y"
+case 105:
+#line 425 "perly.y"
{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
break;
-case 104:
-#line 420 "perly.y"
+case 106:
+#line 427 "perly.y"
{ yyval.opval = sawparens(yyvsp[-1].opval); }
break;
-case 105:
-#line 422 "perly.y"
+case 107:
+#line 429 "perly.y"
{ yyval.opval = sawparens(newNULLLIST()); }
break;
-case 106:
-#line 424 "perly.y"
+case 108:
+#line 431 "perly.y"
{ yyval.opval = newANONLIST(yyvsp[-1].opval); }
break;
-case 107:
-#line 426 "perly.y"
+case 109:
+#line 433 "perly.y"
{ yyval.opval = newANONLIST(Nullop); }
break;
-case 108:
-#line 428 "perly.y"
+case 110:
+#line 435 "perly.y"
{ yyval.opval = newANONHASH(yyvsp[-2].opval); }
break;
-case 109:
-#line 430 "perly.y"
+case 111:
+#line 437 "perly.y"
{ yyval.opval = newANONHASH(Nullop); }
break;
-case 110:
-#line 432 "perly.y"
+case 112:
+#line 439 "perly.y"
{ yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
-case 111:
-#line 434 "perly.y"
+case 113:
+#line 441 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 112:
-#line 436 "perly.y"
+case 114:
+#line 443 "perly.y"
{ yyval.opval = newBINOP(OP_GELEM, 0, newGVREF(0,yyvsp[-4].opval), yyvsp[-2].opval); }
break;
-case 113:
-#line 438 "perly.y"
+case 115:
+#line 445 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 114:
-#line 440 "perly.y"
+case 116:
+#line 447 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); }
break;
-case 115:
-#line 442 "perly.y"
+case 117:
+#line 449 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 116:
-#line 446 "perly.y"
+case 118:
+#line 453 "perly.y"
{ assertref(yyvsp[-3].opval); yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 117:
-#line 450 "perly.y"
+case 119:
+#line 457 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 118:
-#line 452 "perly.y"
+case 120:
+#line 459 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 119:
-#line 454 "perly.y"
+case 121:
+#line 461 "perly.y"
{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));}
break;
-case 120:
-#line 456 "perly.y"
+case 122:
+#line 463 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 121:
-#line 459 "perly.y"
+case 123:
+#line 466 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 122:
-#line 464 "perly.y"
+case 124:
+#line 471 "perly.y"
{ assertref(yyvsp[-4].opval); yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 123:
-#line 469 "perly.y"
+case 125:
+#line 476 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); }
break;
-case 124:
-#line 471 "perly.y"
+case 126:
+#line 478 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); }
break;
-case 125:
-#line 473 "perly.y"
+case 127:
+#line 480 "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 126:
-#line 479 "perly.y"
+case 128:
+#line 486 "perly.y"
{ yyval.opval = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -2021,38 +2032,38 @@ case 126:
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
expect = XOPERATOR; }
break;
-case 127:
-#line 486 "perly.y"
+case 129:
+#line 493 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 128:
-#line 488 "perly.y"
+case 130:
+#line 495 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); }
break;
-case 129:
-#line 490 "perly.y"
+case 131:
+#line 497 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); }
break;
-case 130:
-#line 492 "perly.y"
+case 132:
+#line 499 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); }
break;
-case 131:
-#line 495 "perly.y"
+case 133:
+#line 502 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 132:
-#line 498 "perly.y"
+case 134:
+#line 505 "perly.y"
{ yyval.opval = newUNOP(OP_DOFILE, 0, scalar(yyvsp[0].opval)); }
break;
-case 133:
-#line 500 "perly.y"
+case 135:
+#line 507 "perly.y"
{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); }
break;
-case 134:
-#line 502 "perly.y"
+case 136:
+#line 509 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
@@ -2061,8 +2072,8 @@ case 134:
scalar(yyvsp[-2].opval)
)),Nullop)); dep();}
break;
-case 135:
-#line 510 "perly.y"
+case 137:
+#line 517 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
@@ -2072,151 +2083,151 @@ case 135:
scalar(yyvsp[-3].opval)
)))); dep();}
break;
-case 136:
-#line 519 "perly.y"
+case 138:
+#line 526 "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 137:
-#line 523 "perly.y"
+case 139:
+#line 530 "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 138:
-#line 528 "perly.y"
+case 140:
+#line 535 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
hints |= HINT_BLOCK_SCOPE; }
break;
-case 139:
-#line 531 "perly.y"
+case 141:
+#line 538 "perly.y"
{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 140:
-#line 533 "perly.y"
+case 142:
+#line 540 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 141:
-#line 535 "perly.y"
+case 143:
+#line 542 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 142:
-#line 537 "perly.y"
+case 144:
+#line 544 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 143:
-#line 539 "perly.y"
+case 145:
+#line 546 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 144:
-#line 541 "perly.y"
+case 146:
+#line 548 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 145:
-#line 544 "perly.y"
+case 147:
+#line 551 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 146:
-#line 546 "perly.y"
+case 148:
+#line 553 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
break;
-case 147:
-#line 548 "perly.y"
+case 149:
+#line 555 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar(yyvsp[0].opval)); }
break;
-case 148:
-#line 551 "perly.y"
+case 150:
+#line 558 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
break;
-case 149:
-#line 553 "perly.y"
+case 151:
+#line 560 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 150:
-#line 555 "perly.y"
+case 152:
+#line 562 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
break;
-case 151:
-#line 557 "perly.y"
+case 153:
+#line 564 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
break;
-case 154:
-#line 563 "perly.y"
-{ yyval.opval = Nullop; }
-break;
-case 155:
-#line 565 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
-break;
case 156:
-#line 569 "perly.y"
+#line 570 "perly.y"
{ yyval.opval = Nullop; }
break;
case 157:
-#line 571 "perly.y"
+#line 572 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 158:
-#line 573 "perly.y"
-{ yyval.opval = yyvsp[-1].opval; }
+#line 576 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 159:
-#line 576 "perly.y"
-{ yyval.ival = 0; }
+#line 578 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 160:
-#line 577 "perly.y"
-{ yyval.ival = 1; }
+#line 580 "perly.y"
+{ yyval.opval = yyvsp[-1].opval; }
break;
case 161:
-#line 581 "perly.y"
-{ in_my = 0; yyval.opval = my(yyvsp[0].opval); }
+#line 583 "perly.y"
+{ yyval.ival = 0; }
break;
case 162:
-#line 585 "perly.y"
-{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
+#line 584 "perly.y"
+{ yyval.ival = 1; }
break;
case 163:
-#line 589 "perly.y"
-{ yyval.opval = newSVREF(yyvsp[0].opval); }
+#line 588 "perly.y"
+{ in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
case 164:
-#line 593 "perly.y"
-{ yyval.opval = newAVREF(yyvsp[0].opval); }
+#line 592 "perly.y"
+{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
break;
case 165:
-#line 597 "perly.y"
-{ yyval.opval = newHVREF(yyvsp[0].opval); }
+#line 596 "perly.y"
+{ yyval.opval = newSVREF(yyvsp[0].opval); }
break;
case 166:
-#line 601 "perly.y"
+#line 600 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
case 167:
-#line 605 "perly.y"
-{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
+#line 604 "perly.y"
+{ yyval.opval = newHVREF(yyvsp[0].opval); }
break;
case 168:
-#line 609 "perly.y"
-{ yyval.opval = scalar(yyvsp[0].opval); }
+#line 608 "perly.y"
+{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
case 169:
-#line 611 "perly.y"
-{ yyval.opval = scalar(yyvsp[0].opval); }
+#line 612 "perly.y"
+{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
break;
case 170:
-#line 613 "perly.y"
-{ yyval.opval = scope(yyvsp[0].opval); }
+#line 616 "perly.y"
+{ yyval.opval = scalar(yyvsp[0].opval); }
break;
case 171:
-#line 616 "perly.y"
+#line 618 "perly.y"
+{ yyval.opval = scalar(yyvsp[0].opval); }
+break;
+case 172:
+#line 620 "perly.y"
+{ yyval.opval = scope(yyvsp[0].opval); }
+break;
+case 173:
+#line 623 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-#line 2206 "perly.c"
+#line 2217 "perly.c"
}
yyssp -= yym;
yystate = *yyssp;
diff --git a/perly.c.diff b/perly.c.diff
index dea42d1188..4bae11aa35 100644
--- a/perly.c.diff
+++ b/perly.c.diff
@@ -78,7 +78,7 @@ Index: perly.c
#define YYERRCODE 256
short yylhs[] = { -1,
***************
-*** 1301,1311 ****
+*** 1303,1313 ****
int yyerrflag;
int yychar;
- short *yyssp;
@@ -88,12 +88,12 @@ Index: perly.c
- short yyss[YYSTACKSIZE];
- YYSTYPE yyvs[YYSTACKSIZE];
- #define yystacksize YYSTACKSIZE
- #line 619 "perly.y"
+ #line 626 "perly.y"
/* PROGRAM */
---- 1236,1241 ----
+--- 1238,1243 ----
***************
-*** 1314,1325 ****
---- 1244,1300 ----
+*** 1316,1327 ****
+--- 1246,1302 ----
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
+
@@ -152,8 +152,8 @@ Index: perly.c
if (yys = getenv("YYDEBUG"))
{
***************
-*** 1334,1337 ****
---- 1309,1320 ----
+*** 1336,1339 ****
+--- 1311,1322 ----
yychar = (-1);
+ /*
@@ -167,20 +167,20 @@ Index: perly.c
yyssp = yyss;
yyvsp = yyvs;
***************
-*** 1349,1353 ****
+*** 1351,1355 ****
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! printf("yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
---- 1332,1336 ----
+--- 1334,1338 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
***************
-*** 1359,1368 ****
+*** 1361,1370 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, shifting to state %d\n",
@@ -191,7 +191,7 @@ Index: perly.c
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1342,1365 ----
+--- 1344,1367 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr, "yydebug: state %d, shifting to state %d\n",
@@ -217,7 +217,7 @@ Index: perly.c
}
*++yyssp = yystate = yytable[yyn];
***************
-*** 1400,1409 ****
+*** 1402,1411 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, error recovery shifting\
@@ -228,7 +228,7 @@ Index: perly.c
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1397,1421 ----
+--- 1399,1423 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
@@ -255,14 +255,14 @@ Index: perly.c
}
*++yyssp = yystate = yytable[yyn];
***************
-*** 1415,1420 ****
+*** 1417,1422 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: error recovery discarding state %d\n",
! *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
---- 1427,1433 ----
+--- 1429,1435 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
@@ -271,14 +271,14 @@ Index: perly.c
#endif
if (yyssp <= yyss) goto yyabort;
***************
-*** 1433,1438 ****
+*** 1435,1440 ****
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! printf("yydebug: state %d, error recovery discards token %d (%s)\n",
! yystate, yychar, yys);
}
#endif
---- 1446,1452 ----
+--- 1448,1454 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr,
@@ -287,27 +287,27 @@ Index: perly.c
}
#endif
***************
-*** 1443,1447 ****
+*** 1445,1449 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: state %d, reducing by rule %d (%s)\n",
yystate, yyn, yyrule[yyn]);
#endif
---- 1457,1461 ----
+--- 1459,1463 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr, "yydebug: state %d, reducing by rule %d (%s)\n",
yystate, yyn, yyrule[yyn]);
#endif
***************
-*** 2213,2218 ****
+*** 2224,2229 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: after reduction, shifting from state 0 to\
! state %d\n", YYFINAL);
#endif
yystate = YYFINAL;
---- 2227,2233 ----
+--- 2238,2244 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
@@ -316,20 +316,20 @@ Index: perly.c
#endif
yystate = YYFINAL;
***************
-*** 2228,2232 ****
+*** 2239,2243 ****
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! printf("yydebug: state %d, reading %d (%s)\n",
YYFINAL, yychar, yys);
}
---- 2243,2247 ----
+--- 2254,2258 ----
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n",
YYFINAL, yychar, yys);
}
***************
-*** 2243,2252 ****
+*** 2254,2263 ****
#if YYDEBUG
if (yydebug)
! printf("yydebug: after reduction, shifting from state %d \
@@ -340,7 +340,7 @@ Index: perly.c
! goto yyoverflow;
}
*++yyssp = yystate;
---- 2258,2282 ----
+--- 2269,2293 ----
#if YYDEBUG
if (yydebug)
! fprintf(stderr,
@@ -367,7 +367,7 @@ Index: perly.c
}
*++yyssp = yystate;
***************
-*** 2254,2261 ****
+*** 2265,2272 ****
goto yyloop;
yyoverflow:
! yyerror("yacc stack overflow");
@@ -376,7 +376,7 @@ Index: perly.c
yyaccept:
! return (0);
}
---- 2284,2291 ----
+--- 2295,2302 ----
goto yyloop;
yyoverflow:
! yyerror("Out of memory for yacc stack");
diff --git a/perly.y b/perly.y
index 75d9a3a76f..7da1be33f1 100644
--- a/perly.y
+++ b/perly.y
@@ -46,13 +46,13 @@ dep()
%token <ival> DOLSHARP DO HASHBRACK NOAMP
%token LOCAL MY
-%type <ival> prog decl local format startsub startanonsub
+%type <ival> prog decl local format startsub startanonsub startformsub
%type <ival> remember mremember '&'
%type <opval> block mblock lineseq line loop cond else
%type <opval> expr term scalar ary hsh arylen star amper sideff
%type <opval> argexpr nexpr texpr iexpr mexpr mnexpr mtexpr miexpr
-%type <opval> listexpr listexprcom indirob
-%type <opval> listop method subname proto subbody cont my_scalar
+%type <opval> listexpr listexprcom indirob listop method
+%type <opval> formname subname proto subbody cont my_scalar
%type <pval> label
%left <ival> OROP
@@ -264,10 +264,12 @@ decl : format
{ $$ = 0; }
;
-format : FORMAT startsub WORD block
+format : FORMAT startformsub formname block
{ newFORM($2, $3, $4); }
- | FORMAT startsub block
- { newFORM($2, Nullop, $3); }
+ ;
+
+formname: WORD { $$ = $1; }
+ | /* NULL */ { $$ = Nullop; }
;
subrout : SUB startsub subname proto subbody
@@ -283,6 +285,11 @@ startanonsub: /* NULL */ /* start an anonymous subroutine scope */
CvANON_on(compcv); }
;
+startformsub: /* NULL */ /* start a format subroutine scope */
+ { $$ = start_subparse();
+ CvFORMAT_on(compcv); }
+ ;
+
subname : WORD { char *name = SvPVx(((SVOP*)$1)->op_sv, na);
if (strEQ(name, "BEGIN") || strEQ(name, "END"))
CvUNIQUE_on(compcv);
diff --git a/plan9/plan9ish.h b/plan9/plan9ish.h
index 6613c362e6..c225d286a3 100644
--- a/plan9/plan9ish.h
+++ b/plan9/plan9ish.h
@@ -73,6 +73,18 @@
*/
#define ACME_MESS /**/
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+/* #define ALTERNATE_SHEBANG "#!" / **/
+
#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX)
# include <signal.h>
#endif
diff --git a/pod/checkpods.PL b/pod/checkpods.PL
index 5265a19808..c4721a6118 100644
--- a/pod/checkpods.PL
+++ b/pod/checkpods.PL
@@ -12,11 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($Config{'osname'} eq 'VMS' or
- $Config{'osname'} eq 'OS2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index fb0a2d76c0..d08d2dc452 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -754,6 +754,11 @@ to a matched substring is valid only as part of a regular expression pattern.
Trying to do this in ordinary Perl code produces a value that prints
out looking like SCALAR(0xdecaf). Use the $1 form instead.
+=item Can't use bareword ("%s") as %s ref while \"strict refs\" in use
+
+(F) Only hard references are allowed by "strict refs". Symbolic references
+are disallowed. See L<perlref>.
+
=item Can't use string ("%s") as %s ref while "strict refs" in use
(F) Only hard references are allowed by "strict refs". Symbolic references
@@ -1487,6 +1492,17 @@ will extend the buffer and zero pad the new area.
(F) An attempt was made to use an entry in an overloading table that
somehow no longer points to a valid method. See L<overload>.
+=item Stub found while resolving method `%s' overloading `%s' in package `%s'
+
+(P) Overloading resolution over @ISA tree may be broken by importing stubs.
+Stubs should never be implicitely created, but explicit calls to C<can>
+may break this.
+
+=item Cannot resolve method `%s' overloading `%s' in package `s'
+
+(P) Internal error trying to resolve overloading specified by a method
+name (as opposed to a subroutine reference).
+
=item Operator or semicolon missing before %s
(S) You used a variable or subroutine call where the parser was
@@ -2385,6 +2401,50 @@ something else of the same name (usually a subroutine) is exported
by that module. It usually means you put the wrong funny character
on the front of your variable.
+=item Variable "%s" may be unavailable
+
+(W) An inner (nested) I<anonymous> subroutine is inside a I<named>
+subroutine, and outside that is another subroutine; and the anonymous
+(innermost) subroutine is referencing a lexical variable defined in
+the outermost subroutine. For example:
+
+ sub outermost { my $a; sub middle { sub { $a } } }
+
+If the anonymous subroutine is called or referenced (directly or
+indirectly) from the outermost subroutine, it will share the variable
+as you would expect. But if the anonymous subroutine is called or
+referenced when the outermost subroutine is not active, it will see
+the value of the shared variable as it was before and during the
+*first* call to the outermost subroutine, which is probably not what
+you want.
+
+In these circumstances, it is usually best to make the middle
+subroutine anonymous, using the C<sub {}> syntax. Perl has specific
+support for shared variables in nested anonymous subroutines; a named
+subroutine in between interferes with this feature.
+
+=item Variable "%s" will not stay shared
+
+(W) An inner (nested) I<named> subroutine is referencing a lexical
+variable defined in an outer subroutine.
+
+When the inner subroutine is called, it will probably see the value of
+the outer subroutine's variable as it was before and during the
+*first* call to the outer subroutine; in this case, after the first
+call to the outer subroutine is complete, the inner and outer
+subroutines will no longer share a common value for the variable. In
+other words, the variable will no longer be shared.
+
+Furthermore, if the outer subroutine is anonymous and references a
+lexical variable outside itself, then the outer and inner subroutines
+will I<never> share the given variable.
+
+This problem can usually be solved by making the inner subroutine
+anonymous, using the C<sub {}> syntax. When inner anonymous subs that
+reference variables in outer subroutines are called or referenced,
+they are automatically re-bound to the current values of such
+variables.
+
=item Variable syntax.
(A) You've accidentally run your script through B<csh> instead
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index c1cd67d8ba..65bba93bbb 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -2132,7 +2132,9 @@ like shift().
Returns the offset of where the last C<m//g> search left off for the variable
is in question ($_ is used when the variable is not specified). May be
-modified to change that offset.
+modified to change that offset. Such modification will also influence
+the C<\G> zero-width assertion in regular expressions. See L<perlre> and
+L<perlop>.
=item print FILEHANDLE LIST
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index a3ae46588e..55014fb404 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -677,6 +677,7 @@ The current kinds of Magic Virtual Tables are:
i vtbl_isaelem @ISA array element
L 0 (but sets RMAGICAL) Perl Module/Debugger???
l vtbl_dbline Debugger?
+ o vtbl_collxfrm Locale transformation
P vtbl_pack Tied Array or Hash
p vtbl_packelem Tied Array or Hash element
q vtbl_packelem Tied Scalar or Handle
@@ -1232,13 +1233,20 @@ Returns a pointer to the stash for a specified package. See C<gv_stashpv>.
HV* gv_stashsv _((SV* sv, I32 create));
-=item GvSV
+=item he_free
-Return the SV from the GV.
+Releases a hash entry, such as while iterating though the hash. See
+C<hv_iternext>.
-=item he_free
+ void he_free _((HV* hv, HE* hent));
+
+=item he_delayfree
+
+Releases a hash entry, such as while iterating though the hash, but
+delays actual freeing of key and value until the end of the current
+statement (or thereabouts) with C<sv_2mortal>. See C<hv_iternext>.
-Releases a hash entry from an iterator. See C<hv_iternext>.
+ void he_delayfree _((HV* hv, HE* hent));
=item hv_clear
@@ -2589,4 +2597,4 @@ API Listing by Dean Roehrich <roehrich@cray.com>.
=head1 DATE
-Version 28: 1996/12/27
+Version 28.1: 1997/1/13
diff --git a/pod/perlnews.pod b/pod/perlnews.pod
index e6d1225a76..3cd71de7d1 100644
--- a/pod/perlnews.pod
+++ b/pod/perlnews.pod
@@ -23,7 +23,8 @@ file in the distribution for details.
There is a new Configure question that asks if you want to maintain
binary compatibility with Perl 5.003. If you choose binary
compatibility, you do not have to recompile your extensions, but you
-might have symbol conflicts if you embed Perl in another application.
+might have symbol conflicts if you embed Perl in another application,
+just as in the 5.003 release.
=head2 New Opcode Module and Revised Safe Module
@@ -186,6 +187,16 @@ function whose prototype you want to retrieve.
Functions documented in the Camel to default to $_ now in
fact do, and all those that do are so documented in L<perlfunc>.
+=head2 C<m//g> does not trigger a pos() reset on failure
+
+The C<m//g> match iteration construct used to reset the iteration
+when it failed to match (so that the next C<m//g> match would start at
+the beginning of the string). You now have to explicitly do a
+C<pos $str = 0;> to reset the "last match" position, or modify the
+string in some way. This change makes it practical to chain C<m//g>
+matches together in conjunction with ordinary matches using the C<\G>
+zero-width assertion. See L<perlop> and L<perlre>.
+
=back
=head2 New Built-in Methods
@@ -652,4 +663,4 @@ Constructed by Tom Christiansen, grabbing material with permission
from innumerable contributors, with kibitzing by more than a few Perl
porters.
-Last update: Tue Dec 24 16:45:14 EST 1996
+Last update: Tue Jan 14 14:03:02 EST 1997
diff --git a/pod/perlop.pod b/pod/perlop.pod
index a8f34c0e57..dd3aeab663 100644
--- a/pod/perlop.pod
+++ b/pod/perlop.pod
@@ -695,7 +695,10 @@ In a scalar context, C<m//g> iterates through the string, returning TRUE
each time it matches, and FALSE when it eventually runs out of
matches. (In other words, it remembers where it left off last time and
restarts the search at that point. You can actually find the current
-match position of a string using the pos() function--see L<perlfunc>.)
+match position of a string or set it using the pos() function--see
+L<perlfunc/pos>.) Note that you can use this feature to stack C<m//g>
+matches or intermix C<m//g> matches with C<m/\G.../>.
+
If you modify the string in any way, the match position is reset to the
beginning. Examples:
@@ -711,6 +714,30 @@ beginning. Examples:
}
print "$sentences\n";
+ # using m//g with \G
+ $_ = "ppooqppq";
+ while ($i++ < 2) {
+ print "1: '";
+ print $1 while /(o)/g; print "', pos=", pos, "\n";
+ print "2: '";
+ print $1 if /\G(q)/; print "', pos=", pos, "\n";
+ print "3: '";
+ print $1 while /(p)/g; print "', pos=", pos, "\n";
+ }
+
+The last example should print:
+
+ 1: 'oo', pos=4
+ 2: 'q', pos=4
+ 3: 'pp', pos=7
+ 1: '', pos=7
+ 2: 'q', pos=7
+ 3: '', pos=7
+
+Note how C<m//g> matches change the value reported by C<pos()>, but the
+non-global match doesn't.
+
+
=item q/STRING/
=item C<'STRING'>
diff --git a/pod/perlre.pod b/pod/perlre.pod
index 12f9f51016..a4c0a7d9de 100644
--- a/pod/perlre.pod
+++ b/pod/perlre.pod
@@ -174,7 +174,10 @@ represents backspace rather than a word boundary.) The C<\A> and C<\Z> are
just like "^" and "$" except that they won't match multiple times when the
C</m> modifier is used, while "^" and "$" will match at every internal line
boundary. To match the actual end of the string, not ignoring newline,
-you can use C<\Z(?!\n)>.
+you can use C<\Z(?!\n)>. The C<\G> assertion can be used to mix global
+matches (using C<m//g>) and non-global ones, as described in L<perlop>.
+The actual location where C<\G> will match can also be influenced
+by using C<pos()> as an lvalue. See L<perlfunc/pos>.
When the bracketing construct C<( ... )> is used, \E<lt>digitE<gt> matches the
digit'th substring. Outside of the pattern, always use "$" instead of "\"
diff --git a/pod/perlsub.pod b/pod/perlsub.pod
index bd3eb18154..c83f2da336 100644
--- a/pod/perlsub.pod
+++ b/pod/perlsub.pod
@@ -754,6 +754,34 @@ starts scribbling on your @_ parameter list.
This is all very powerful, of course, and should be used only in moderation
to make the world a better place.
+=head2 Constant Functions
+
+Functions with a prototype of C<()> are potential candidates for
+inlining. If the result after optimization and constant folding is a
+constant then it will be used in place of new-style calls to the
+function. Old-style calls (that is, calls made using C<&>) are not
+affected.
+
+All of the following functions would be inlined.
+
+ sub PI () { 3.14159 }
+ sub ST_DEV () { 0 }
+ sub ST_INO () { 1 }
+
+ sub FLAG_FOO () { 1 << 8 }
+ sub FLAG_BAR () { 1 << 9 }
+ sub FLAG_MASK () { FLAG_FOO | FLAG_BAR }
+
+ sub OPT_BAZ () { 1 }
+ sub BAZ_VAL () {
+ if (OPT_BAZ) {
+ return 23;
+ }
+ else {
+ return 42;
+ }
+ }
+
If you redefine a subroutine which was eligible for inlining you'll get
a mandatory warning. (You can use this warning to tell whether or not a
particular subroutine is considered constant.) The warning is
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index cbc17857a4..b8353fcdb1 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -68,6 +68,8 @@ delete on slices, flock, keys as an lvalue, my() in Control Structures,
unpack() and pack(), use VERSION, use Module VERSION LIST,
prototype(FUNCTION), $_ as Default
+=item C<m//g> does not trigger a pos() reset on failure
+
=item New Built-in Methods
isa(CLASS), can(METHOD), VERSION( [NEED] ), class(), is_instance()
@@ -426,6 +428,8 @@ $ARGV, @ARGV, @INC, %INC, $ENV{expr}, $SIG{expr}
=item Prototypes
+=item Constant Functions
+
=item Overriding Builtin Functions
=item Autoloading
@@ -1107,7 +1111,8 @@ Precedence
=item General Regular Expression Traps using s///, etc.
Regular Expression, Regular Expression, Regular Expression, Regular
-Expression, Regular Expression, Regular Expression, Regular Expression
+Expression, Regular Expression, Regular Expression, Regular Expression,
+Regular Expression
=item Subroutine, Signal, Sorting Traps
@@ -1417,24 +1422,24 @@ av_shift, av_store, av_undef, av_unshift, CLASS, Copy, croak, CvSTASH,
DBsingle, DBsub, DBtrace, dMARK, dORIGMARK, dowarn, dSP, dXSARGS, dXSI32,
dXSI32, ENTER, EXTEND, FREETMPS, G_ARRAY, G_DISCARD, G_EVAL, GIMME,
G_NOARGS, G_SCALAR, gv_fetchmeth, gv_fetchmethod, gv_stashpv, gv_stashsv,
-GvSV, he_free, hv_clear, hv_delete, hv_exists, hv_fetch, hv_iterinit,
-hv_iterkey, hv_iternext, hv_iternextsv, hv_iterval, hv_magic, HvNAME,
-hv_store, hv_undef, isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE, isUPPER,
-items, ix, LEAVE, MARK, mg_clear, mg_copy, mg_find, mg_free, mg_get,
-mg_len, mg_magical, mg_set, Move, na, New, Newc, Newz, newAV, newHV,
-newRV_inc, newRV_noinc, newSV, newSViv, newSVnv, newSVpv, newSVrv, newSVsv,
-newXS, newXSproto, Nullav, Nullch, Nullcv, Nullhv, Nullsv, ORIGMARK,
-perl_alloc, perl_call_argv, perl_call_method, perl_call_pv, perl_call_sv,
-perl_construct, perl_destruct, perl_eval_sv, perl_free, perl_get_av,
-perl_get_cv, perl_get_hv, perl_get_sv, perl_parse, perl_require_pv,
-perl_run, POPi, POPl, POPp, POPn, POPs, PUSHMARK, PUSHi, PUSHn, PUSHp,
-PUSHs, PUTBACK, Renew, Renewc, RETVAL, safefree, safemalloc, saferealloc,
-savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE, strGT, strLE,
-strLT, strNE, strnEQ, strnNE, sv_2mortal, sv_bless, sv_catpv, sv_catpvn,
-sv_catsv, sv_cmp, sv_cmp, SvCUR, SvCUR_set, sv_dec, sv_dec, SvEND, sv_eq,
-SvGROW, sv_grow, sv_inc, SvIOK, SvIOK_off, SvIOK_on, SvIOK_only,
-SvIOK_only, SvIOKp, sv_isa, SvIV, sv_isobject, SvIVX, SvLEN, sv_len,
-sv_len, sv_magic, sv_mortalcopy, SvOK, sv_newmortal, sv_no, SvNIOK,
+he_free, he_delayfree, hv_clear, hv_delete, hv_exists, hv_fetch,
+hv_iterinit, hv_iterkey, hv_iternext, hv_iternextsv, hv_iterval, hv_magic,
+HvNAME, hv_store, hv_undef, isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE,
+isUPPER, items, ix, LEAVE, MARK, mg_clear, mg_copy, mg_find, mg_free,
+mg_get, mg_len, mg_magical, mg_set, Move, na, New, Newc, Newz, newAV,
+newHV, newRV_inc, newRV_noinc, newSV, newSViv, newSVnv, newSVpv, newSVrv,
+newSVsv, newXS, newXSproto, Nullav, Nullch, Nullcv, Nullhv, Nullsv,
+ORIGMARK, perl_alloc, perl_call_argv, perl_call_method, perl_call_pv,
+perl_call_sv, perl_construct, perl_destruct, perl_eval_sv, perl_free,
+perl_get_av, perl_get_cv, perl_get_hv, perl_get_sv, perl_parse,
+perl_require_pv, perl_run, POPi, POPl, POPp, POPn, POPs, PUSHMARK, PUSHi,
+PUSHn, PUSHp, PUSHs, PUTBACK, Renew, Renewc, RETVAL, safefree, safemalloc,
+saferealloc, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE,
+strGT, strLE, strLT, strNE, strnEQ, strnNE, sv_2mortal, sv_bless, sv_catpv,
+sv_catpvn, sv_catsv, sv_cmp, sv_cmp, SvCUR, SvCUR_set, sv_dec, sv_dec,
+SvEND, sv_eq, SvGROW, sv_grow, sv_inc, SvIOK, SvIOK_off, SvIOK_on,
+SvIOK_only, SvIOK_only, SvIOKp, sv_isa, SvIV, sv_isobject, SvIVX, SvLEN,
+sv_len, sv_len, sv_magic, sv_mortalcopy, SvOK, sv_newmortal, sv_no, SvNIOK,
SvNIOK_off, SvNIOKp, SvNOK, SvNOK_off, SvNOK_on, SvNOK_only, SvNOK_only,
SvNOKp, SvNV, SvNVX, SvPOK, SvPOK_off, SvPOK_on, SvPOK_only, SvPOK_only,
SvPOKp, SvPV, SvPVX, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK,
diff --git a/pod/perltrap.pod b/pod/perltrap.pod
index b8247a4208..4b56dd23d8 100644
--- a/pod/perltrap.pod
+++ b/pod/perltrap.pod
@@ -1108,6 +1108,26 @@ repeatedly, like C</x/> or C<m!x!>.
# perl5 prints: perl5
+=item * Regular Expression
+
+Under perl4 and upto version 5.003, a failed C<m//g> match used to
+reset the internal iterator, so that subsequent C<m//g> match attempts
+began from the beginning of the string. In perl version 5.004 and later,
+failed C<m//g> matches do not reset the iterator position (which can be
+found using the C<pos()> function--see L<perlfunc/pos>).
+
+ $test = "foop";
+ for (1..3) {
+ print $1 while ($test =~ /(o)/g);
+ # pos $test = 0; # to get old behavior
+ }
+
+ # perl4 prints: oooooo
+ # perl5.004 prints: oo
+
+You may always reset the iterator yourself as shown in the commented line
+to get the old behavior.
+
=back
=head2 Subroutine, Signal, Sorting Traps
diff --git a/pod/perlvar.pod b/pod/perlvar.pod
index a049e9d5a1..de9bd22348 100644
--- a/pod/perlvar.pod
+++ b/pod/perlvar.pod
@@ -698,6 +698,22 @@ sometimes it's a string representing the function, and sometimes it's
going to call the subroutine call right then and there! Best to be sure
and quote it or take a reference to it. *Plumber works too. See L<perlsub>.
+If your system has the sigaction() function then signal handlers are
+installed using it. This means you get reliable signal handling. If
+your system has the SA_RESTART flag it is used when signals handlers are
+installed. This means that system calls for which it is supported
+continue rather than returning when a signal arrives. If you want your
+system calls to be interrupted by signal delivery then do something like
+this:
+
+ use POSIX ':signal_h';
+
+ my $alarm = 0;
+ sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
+ or die "Error setting SIGALRM handler: $!\n";
+
+See L<POSIX>.
+
Certain internal hooks can be also set using the %SIG hash. The
routine indicated by C<$SIG{__WARN__}> is called when a warning message is
about to be printed. The warning message is passed as the first
diff --git a/pod/pod2html.PL b/pod/pod2html.PL
index b97c00ccb4..816fb6ba4c 100644
--- a/pod/pod2html.PL
+++ b/pod/pod2html.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/pod2latex.PL b/pod/pod2latex.PL
index 4f79c1297f..9702614ffa 100644
--- a/pod/pod2latex.PL
+++ b/pod/pod2latex.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/pod2man.PL b/pod/pod2man.PL
index 6821d84334..5d1e193a34 100644
--- a/pod/pod2man.PL
+++ b/pod/pod2man.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'amigaos'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/pod2text.PL b/pod/pod2text.PL
index 033a0d8f55..586da04e0f 100644
--- a/pod/pod2text.PL
+++ b/pod/pod2text.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/roffitall b/pod/roffitall
index 3df9386103..6bf47afad4 100755
--- a/pod/roffitall
+++ b/pod/roffitall
@@ -1,86 +1,171 @@
#!/bin/sh
-#psroff -t -man -rC1 -rD1 -rF1 > /tmp/PerlDoc.ps 2>/tmp/PerlTOC.raw \
-nroff -man -rC1 -rD1 -rF1 > /tmp/PerlDoc.txt 2>/tmp/PerlTOC.nr.raw \
- /usr/local/man/man1/perl.1 \
- /usr/local/man/man1/perlnews.1 \
- /usr/local/man/man1/perldata.1 \
- /usr/local/man/man1/perlsyn.1 \
- /usr/local/man/man1/perlop.1 \
- /usr/local/man/man1/perlre.1 \
- /usr/local/man/man1/perlrun.1 \
- /usr/local/man/man1/perllocale.1 \
- /usr/local/man/man1/perlfunc.1 \
- /usr/local/man/man1/perlvar.1 \
- /usr/local/man/man1/perlsub.1 \
- /usr/local/man/man1/perlmod.1 \
- /usr/local/man/man1/perlref.1 \
- /usr/local/man/man1/perldsc.1 \
- /usr/local/man/man1/perllol.1 \
- /usr/local/man/man1/perlobj.1 \
- /usr/local/man/man1/perltie.1 \
- /usr/local/man/man1/perlbot.1 \
- /usr/local/man/man1/perldebug.1 \
- /usr/local/man/man1/perldiag.1 \
- /usr/local/man/man1/perlform.1 \
- /usr/local/man/man1/perlipc.1 \
- /usr/local/man/man1/perlsec.1 \
- /usr/local/man/man1/perltrap.1 \
- /usr/local/man/man1/perlstyle.1 \
- /usr/local/man/man1/perlxs.1 \
- /usr/local/man/man1/perlxstut.1 \
- /usr/local/man/man1/perlguts.1 \
- /usr/local/man/man1/perlcall.1 \
- /usr/local/man/man1/perlembed.1 \
- /usr/local/man/man1/perlpod.1 \
- /usr/local/man/man1/perlbook.1 \
+#
+# Usage: roffitall [-nroff|-psroff|-groff]
+#
+# Authors: Tom Christiansen, Raphael Manfredi
+
+me=roffitall
+tmp=.
+
+#manroot=/usr/local
+#libroot=/usr/local
+
+manroot=$HOME/usr
+libroot=$HOME/usr/lib/perl5
+
+case "$1" in
+-nroff) cmd="nroff -man"; ext='txt';;
+-psroff) cmd="psroff -t"; ext='ps';;
+-groff) cmd="groff -man"; ext='ps';;
+*)
+ echo "Usage: roffitall [-nroff|-psroff|-groff]" >&2
+ exit 1
+ ;;
+esac
+
+toroff=`
+ echo \
+ $manroot/man/man1/perl.1 \
+ $manroot/man/man1/perlnews.1 \
+ $manroot/man/man1/perldata.1 \
+ $manroot/man/man1/perlsyn.1 \
+ $manroot/man/man1/perlop.1 \
+ $manroot/man/man1/perlre.1 \
+ $manroot/man/man1/perlrun.1 \
+ $manroot/man/man1/perllocale.1 \
+ $manroot/man/man1/perlfunc.1 \
+ $manroot/man/man1/perlvar.1 \
+ $manroot/man/man1/perlsub.1 \
+ $manroot/man/man1/perlmod.1 \
+ $manroot/man/man1/perlref.1 \
+ $manroot/man/man1/perldsc.1 \
+ $manroot/man/man1/perllol.1 \
+ $manroot/man/man1/perlobj.1 \
+ $manroot/man/man1/perltie.1 \
+ $manroot/man/man1/perlbot.1 \
+ $manroot/man/man1/perldebug.1 \
+ $manroot/man/man1/perldiag.1 \
+ $manroot/man/man1/perlform.1 \
+ $manroot/man/man1/perlipc.1 \
+ $manroot/man/man1/perlsec.1 \
+ $manroot/man/man1/perltrap.1 \
+ $manroot/man/man1/perlstyle.1 \
+ $manroot/man/man1/perlapio.1 \
+ $manroot/man/man1/perlxs.1 \
+ $manroot/man/man1/perlxstut.1 \
+ $manroot/man/man1/perlguts.1 \
+ $manroot/man/man1/perlcall.1 \
+ $manroot/man/man1/perlembed.1 \
+ $manroot/man/man1/perlpod.1 \
+ $manroot/man/man1/perlbook.1 \
\
- /usr/local/man/man3/diagnostics.3 \
- /usr/local/man/man3/integer.3 \
- /usr/local/man/man3/less.3 \
- /usr/local/man/man3/lib.3 \
- /usr/local/man/man3/overload.3 \
- /usr/local/man/man3/sigtrap.3 \
- /usr/local/man/man3/strict.3 \
- /usr/local/man/man3/subs.3 \
+ $libroot/man/man3/blib.3 \
+ $libroot/man/man3/diagnostics.3 \
+ $libroot/man/man3/integer.3 \
+ $libroot/man/man3/less.3 \
+ $libroot/man/man3/lib.3 \
+ $libroot/man/man3/localle.3 \
+ $libroot/man/man3/overload.3 \
+ $libroot/man/man3/sigtrap.3 \
+ $libroot/man/man3/strict.3 \
+ $libroot/man/man3/subs.3 \
+ $libroot/man/man3/vars.3 \
\
- /usr/local/man/man3/AnyDBM_File.3 \
- /usr/local/man/man3/AutoLoader.3 \
- /usr/local/man/man3/AutoSplit.3 \
- /usr/local/man/man3/Benchmark.3 \
- /usr/local/man/man3/Carp.3 \
- /usr/local/man/man3/Config.3 \
- /usr/local/man/man3/Cwd.3 \
- /usr/local/man/man3/DB_File.3 \
- /usr/local/man/man3/Devel::SelfStubber.3 \
- /usr/local/man/man3/DynaLoader.3 \
- /usr/local/man/man3/English.3 \
- /usr/local/man/man3/Env.3 \
- /usr/local/man/man3/Exporter.3 \
- /usr/local/man/man3/ExtUtils::Liblist.3 \
- /usr/local/man/man3/ExtUtils::MakeMaker.3 \
- /usr/local/man/man3/ExtUtils::Manifest.3 \
- /usr/local/man/man3/ExtUtils::Mkbootstrap.3 \
- /usr/local/man/man3/Fcntl.3 \
- /usr/local/man/man3/File::Basename.3 \
- /usr/local/man/man3/File::CheckTree.3 \
- /usr/local/man/man3/File::Find.3 \
- /usr/local/man/man3/FileHandle.3 \
- /usr/local/man/man3/File::Path.3 \
- /usr/local/man/man3/Getopt::Long.3 \
- /usr/local/man/man3/Getopt::Std.3 \
- /usr/local/man/man3/I18N::Collate.3 \
- /usr/local/man/man3/IPC::Open2.3 \
- /usr/local/man/man3/IPC::Open3.3 \
- /usr/local/man/man3/Net::Ping.3 \
- /usr/local/man/man3/POSIX.3 \
- /usr/local/man/man3/Safe.3 \
- /usr/local/man/man3/SelfLoader.3 \
- /usr/local/man/man3/Socket.3 \
- /usr/local/man/man3/Sys::Hostname.3 \
- /usr/local/man/man3/Term::Cap.3 \
- /usr/local/man/man3/Term::Complete.3 \
- /usr/local/man/man3/Test::Harness.3 \
- /usr/local/man/man3/Text::Abbrev.3 \
- /usr/local/man/man3/Text::Soundex.3 \
- /usr/local/man/man3/TieHash.3 \
- /usr/local/man/man3/Time::Local.3
+ $libroot/man/man3/AnyDBM_File.3 \
+ $libroot/man/man3/AutoLoader.3 \
+ $libroot/man/man3/AutoSplit.3 \
+ $libroot/man/man3/Benchmark.3 \
+ $libroot/man/man3/Carp.3 \
+ $libroot/man/man3/Config.3 \
+ $libroot/man/man3/Cwd.3 \
+ $libroot/man/man3/DB_File.3 \
+ $libroot/man/man3/Devel::SelfStubber.3 \
+ $libroot/man/man3/DynaLoader.3 \
+ $libroot/man/man3/English.3 \
+ $libroot/man/man3/Env.3 \
+ $libroot/man/man3/Exporter.3 \
+ $libroot/man/man3/ExtUtils::Embed.3 \
+ $libroot/man/man3/ExtUtils::Install.3 \
+ $libroot/man/man3/ExtUtils::Liblist.3 \
+ $libroot/man/man3/ExtUtils::MakeMaker.3 \
+ $libroot/man/man3/ExtUtils::Manifest.3 \
+ $libroot/man/man3/ExtUtils::Mkbootstrap.3 \
+ $libroot/man/man3/ExtUtils::Mksymlists.3 \
+ $libroot/man/man3/Fatal.3 \
+ $libroot/man/man3/Fcntl.3 \
+ $libroot/man/man3/File::Basename.3 \
+ $libroot/man/man3/File::CheckTree.3 \
+ $libroot/man/man3/File::Copy.3 \
+ $libroot/man/man3/File::Compare.3 \
+ $libroot/man/man3/File::Find.3 \
+ $libroot/man/man3/File::Path.3 \
+ $libroot/man/man3/File::stat.3 \
+ $libroot/man/man3/FileCache.3 \
+ $libroot/man/man3/FileHandle.3 \
+ $libroot/man/man3/FindBin.3 \
+ $libroot/man/man3/Getopt::Long.3 \
+ $libroot/man/man3/Getopt::Std.3 \
+ $libroot/man/man3/I18N::Collate.3 \
+ $libroot/man/man3/IO.3 \
+ $libroot/man/man3/IO::File.3 \
+ $libroot/man/man3/IO::Handle.3 \
+ $libroot/man/man3/IO::Pipe.3 \
+ $libroot/man/man3/IO::Seekable.3 \
+ $libroot/man/man3/IO::Select.3 \
+ $libroot/man/man3/IO::Socket.3 \
+ $libroot/man/man3/IPC::Open2.3 \
+ $libroot/man/man3/IPC::Open3.3 \
+ $libroot/man/man3/Math::BigFloat.3 \
+ $libroot/man/man3/Math::BigInt.3 \
+ $libroot/man/man3/Math::Complex.3 \
+ $libroot/man/man3/Net::Ping.3 \
+ $libroot/man/man3/Net::hostent.3 \
+ $libroot/man/man3/Net::netent.3 \
+ $libroot/man/man3/Net::protoent.3 \
+ $libroot/man/man3/Net::servent.3 \
+ $libroot/man/man3/Opcode.3 \
+ $libroot/man/man3/POSIX.3 \
+ $libroot/man/man3/Pod::Text.3 \
+ $libroot/man/man3/Safe.3 \
+ $libroot/man/man3/Search::Dict.3 \
+ $libroot/man/man3/SelectSaver.3 \
+ $libroot/man/man3/SelfLoader.3 \
+ $libroot/man/man3/Shell.3 \
+ $libroot/man/man3/Socket.3 \
+ $libroot/man/man3/Symbol.3 \
+ $libroot/man/man3/Sys::Hostname.3 \
+ $libroot/man/man3/Sys::Syslog.3 \
+ $libroot/man/man3/Term::Cap.3 \
+ $libroot/man/man3/Term::Complete.3 \
+ $libroot/man/man3/Test::Harness.3 \
+ $libroot/man/man3/Text::Abbrev.3 \
+ $libroot/man/man3/Text::ParseWords.3 \
+ $libroot/man/man3/Text::Soundex.3 \
+ $libroot/man/man3/Text::Tabs.3 \
+ $libroot/man/man3/Tie::Hash.3 \
+ $libroot/man/man3/Tie::RefHash.3 \
+ $libroot/man/man3/Tie::Scalar.3 \
+ $libroot/man/man3/Tie::SubstrHash.3 \
+ $libroot/man/man3/Time::Local.3 \
+ $libroot/man/man3/Time::gmtime.3 \
+ $libroot/man/man3/Time::localtime.3 \
+ $libroot/man/man3/Time::tm.3 \
+ $libroot/man/man3/UNIVERSAL.3 \
+ $libroot/man/man3/User::grent.3 \
+ $libroot/man/man3/User::pwent.3 | \
+perl -ne 'map { -r && print "$_ " } split'`
+
+#psroff -t -man -rC1 -rD1 -rF1 > $tmp/PerlDoc.ps 2>$tmp/PerlTOC.raw
+#nroff -man -rC1 -rD1 -rF1 > $tmp/PerlDoc.txt 2>$tmp/PerlTOC.nr.raw
+
+run="$cmd -rC1 -rD1 -rF1 >$tmp/PerlDoc.$ext 2>$tmp/PerlTOC.$ext.raw"
+echo "$me: running $run"
+eval $run $toroff
+echo "$me: parsing TOC"
+./rofftoc $tmp/PerlTOC.$ext.raw > $tmp/PerlTOC.tmp.man
+run="$cmd $tmp/PerlTOC.tmp.man >$tmp/PerlTOC.$ext"
+echo "$me: running $run"
+eval $run
+rm -f $tmp/PerlTOC.tmp.man $tmp/PerlTOC.$ext.raw
+echo "$me: leaving you with $tmp/PerlDoc.$ext and $tmp/PerlTOC.$ext"
+
diff --git a/pod/rofftoc b/pod/rofftoc
index e69de29bb2..a2d0e7ba20 100755
--- a/pod/rofftoc
+++ b/pod/rofftoc
@@ -0,0 +1,66 @@
+# feed this into perl
+ eval 'exec perl -S $0 ${1+"$@"}'
+ if $running_under_some_shell;
+
+# Usage: rofftoc PerlTOC.xxx.raw
+#
+# Post-processes roffitall output. Called from roffitall to produce
+# a formatted table of contents.
+#
+# Author: Tom Christiansen
+
+print <<'EOF';
+.de NP
+'.sp 0.8i
+.tl ''- % -''
+'bp
+'sp 0.5i
+.tl ''\fB\s+2Perl Table of Contents\s0\fR''
+'sp 0.3i
+..
+.wh -1i NP
+.af % i
+.sp 0.5i
+.tl ''\fB\s+5Perl Table of Contents\s0\fR''
+.sp 0.5i
+.nf
+.na
+EOF
+while (<>) {
+ #chomp;
+ s/Index://;
+ ($type, $page, $desc) = split ' ', $_, 3;
+ $desc =~ s/^"(.*)"$/$1/;
+ if ($type eq 'Title') {
+ ($name = $desc) =~ s/ .*//;
+ next;
+ } elsif ($type eq 'Name') {
+ #print STDERR $page, "\t", $desc;
+ print ".ne 5\n";
+ print ".in 0\n";
+ print ".sp\n";
+ print ".ft B\n";
+ print "$desc\n";
+ print ".ft P\n";
+ print ".in 5n\n";
+ } elsif ($type eq 'Header') {
+ print ".br\n", $page, "\t", $desc;
+ } elsif ($type eq 'Subsection') {
+ print ".br\n", $page, "\t\t", $desc;
+ } elsif ($type eq 'Item') {
+ next if $desc =~ /\\bu/;
+ next unless $name =~ /POSIX|func/i;
+ print ".br\n", $page, "\t\t\t", $desc;
+ }
+}
+__END__
+Index:Title 1 "PERL 1"
+Index:Name 1 "perl - Practical Extraction and Report Language"
+Index:Header 1 "NAME"
+Index:Header 1 "SYNOPSIS"
+Index:Header 2 "DESCRIPTION"
+Index:Item 2 "\(bu Many usability enhancements"
+Index:Item 2 "\(bu Simplified grammar"
+Index:Item 2 "\(bu Lexical scoping"
+Index:Item 2 "\(bu Arbitrarily nested data structures"
+Index:Item 2 "\(bu Modularity and reusability"
diff --git a/pp.c b/pp.c
index 7a24843f5d..f5c2225f91 100644
--- a/pp.c
+++ b/pp.c
@@ -544,13 +544,11 @@ PP(pp_undef)
break;
case SVt_PVCV:
cv_undef((CV*)sv);
- sub_generation++;
break;
case SVt_PVGV:
- if (SvFAKE(sv)) {
- sv_setsv(sv, &sv_undef);
- break;
- }
+ if (SvFAKE(sv))
+ sv_setsv(sv, &sv_undef);
+ break;
default:
if (SvPOK(sv) && SvLEN(sv)) {
(void)SvOOK_off(sv);
@@ -568,6 +566,8 @@ PP(pp_undef)
PP(pp_predec)
{
dSP;
+ if (SvREADONLY(TOPs))
+ croak(no_modify);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MIN)
{
@@ -583,6 +583,8 @@ PP(pp_predec)
PP(pp_postinc)
{
dSP; dTARGET;
+ if (SvREADONLY(TOPs))
+ croak(no_modify);
sv_setsv(TARG, TOPs);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MAX)
@@ -602,6 +604,8 @@ PP(pp_postinc)
PP(pp_postdec)
{
dSP; dTARGET;
+ if(SvREADONLY(TOPs))
+ croak(no_modify);
sv_setsv(TARG, TOPs);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MIN)
@@ -851,12 +855,16 @@ PP(pp_ncmp)
dPOPTOPnnrl;
I32 value;
- if (left > right)
- value = 1;
- else if (left < right)
+ if (left < right)
value = -1;
- else
+ else if (left == right)
value = 0;
+ else if (left > right)
+ value = 1;
+ else {
+ SETs(&sv_undef);
+ RETURN;
+ }
SETi(value);
RETURN;
}
@@ -2110,10 +2118,11 @@ PP(pp_lslice)
PP(pp_anonlist)
{
- dSP; dMARK;
+ dSP; dMARK; dORIGMARK;
I32 items = SP - MARK;
- SP = MARK;
- XPUSHs((SV*)sv_2mortal((SV*)av_make(items, MARK+1)));
+ SV *av = sv_2mortal((SV*)av_make(items, MARK+1));
+ SP = ORIGMARK; /* av_make() might realloc stack_sp */
+ XPUSHs(av);
RETURN;
}
@@ -3696,7 +3705,8 @@ PP(pp_split)
STRLEN len;
register char *s = SvPV(sv, len);
char *strend = s + len;
- register PMOP *pm = (PMOP*)POPs;
+ register PMOP *pm;
+ register REGEXP *rx;
register SV *dstr;
register char *m;
I32 iters = 0;
@@ -3707,12 +3717,17 @@ PP(pp_split)
I32 realarray = 0;
I32 base;
AV *oldstack = curstack;
- register REGEXP *rx = pm->op_pmregexp;
I32 gimme = GIMME;
I32 oldsave = savestack_ix;
+#ifdef DEBUGGING
+ Copy(&LvTARGOFF(POPs), &pm, 1, PMOP*);
+#else
+ pm = (PMOP*)POPs;
+#endif
if (!pm || !s)
DIE("panic: do_split");
+ rx = pm->op_pmregexp;
TAINT_IF((pm->op_pmflags & PMf_LOCALE) &&
(pm->op_pmflags & (PMf_WHITE | PMf_SKIPWHITE)));
@@ -3792,7 +3807,7 @@ PP(pp_split)
s = m;
}
}
- else if (pm->op_pmshort) {
+ else if (pm->op_pmshort && !rx->nparens) {
i = SvCUR(pm->op_pmshort);
if (i == 1) {
i = *SvPVX(pm->op_pmshort);
diff --git a/pp_ctl.c b/pp_ctl.c
index 94b40520e7..0d9a8cb309 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1254,11 +1254,8 @@ PP(pp_enteriter)
PUSHBLOCK(cx, CXt_LOOP, SP);
PUSHLOOP(cx, svp, MARK);
- if (op->op_flags & OPf_STACKED) {
- AV* av = (AV*)POPs;
- cx->blk_loop.iterary = av;
- cx->blk_loop.iterix = -1;
- }
+ if (op->op_flags & OPf_STACKED)
+ cx->blk_loop.iterary = (AV*)SvREFCNT_inc(POPs);
else {
cx->blk_loop.iterary = curstack;
AvFILL(curstack) = sp - stack_base;
@@ -1632,8 +1629,7 @@ PP(pp_goto)
(void)SvREFCNT_inc(cv);
else { /* save temporaries on recursion? */
if (CvDEPTH(cv) == 100 && dowarn)
- warn("Deep recursion on subroutine \"%s\"",
- GvENAME(CvGV(cv)));
+ sub_crush_depth(cv);
if (CvDEPTH(cv) > AvFILL(padlist)) {
AV *newpad = newAV();
SV **oldpad = AvARRAY(svp[CvDEPTH(cv)-1]);
@@ -1709,12 +1705,13 @@ PP(pp_goto)
}
}
if (perldb && curstash != debstash) {
- /* &xsub is not copying @_ */
+ /*
+ * We do not care about using sv to call CV;
+ * it's for informational purposes only.
+ */
SV *sv = GvSV(DBsub);
save_item(sv);
gv_efullname3(sv, CvGV(cv), Nullch);
- /* We do not care about using sv to call CV,
- * just for info. */
}
RETURNOP(CvSTART(cv));
}
diff --git a/pp_hot.c b/pp_hot.c
index 40432e0ae2..cbc2b95d38 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -242,6 +242,8 @@ PP(pp_eq)
PP(pp_preinc)
{
dSP;
+ if (SvREADONLY(TOPs))
+ croak(no_modify);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MAX)
{
@@ -297,7 +299,19 @@ PP(pp_join)
PP(pp_pushre)
{
dSP;
+#ifdef DEBUGGING
+ /*
+ * We ass_u_me that LvTARGOFF() comes first, and that two STRLENs
+ * will be enough to hold an OP*.
+ */
+ SV* sv = sv_newmortal();
+ sv_upgrade(sv, SVt_PVLV);
+ LvTYPE(sv) = '/';
+ Copy(&op, &LvTARGOFF(sv), 1, OP*);
+ XPUSHs(sv);
+#else
XPUSHs((SV*)op);
+#endif
RETURN;
}
@@ -1727,26 +1741,26 @@ PP(pp_entersub)
DIE("Not a CODE reference");
if (!CvROOT(cv) && !CvXSUB(cv)) {
- if (gv = CvGV(cv)) {
- SV *tmpstr;
- GV *ngv;
- if (cv != GvCV(gv)) { /* autoloaded stub? */
- cv = GvCV(gv);
- goto retry;
- }
- tmpstr = sv_newmortal();
- gv_efullname3(tmpstr, gv, Nullch);
- ngv = gv_fetchmethod(GvESTASH(gv), "AUTOLOAD");
- if (ngv && ngv != gv && (cv = GvCV(ngv))) { /* One more chance... */
- gv = ngv;
- sv_setsv(GvSV(CvGV(cv)), tmpstr); /* Set CV's $AUTOLOAD */
- SvTAINTED_off(GvSV(CvGV(cv)));
- goto retry;
- }
- else
- DIE("Undefined subroutine &%s called",SvPVX(tmpstr));
+ GV* autogv;
+ SV* subname;
+
+ /* anonymous or undef'd function leaves us no recourse */
+ if (CvANON(cv) || !(gv = CvGV(cv)))
+ DIE("Undefined subroutine called");
+ /* autoloaded stub? */
+ if (cv != GvCV(gv)) {
+ cv = GvCV(gv);
+ goto retry;
}
- DIE("Undefined subroutine called");
+ /* should call AUTOLOAD now? */
+ if ((autogv = gv_autoload(GvESTASH(gv), GvNAME(gv), GvNAMELEN(gv)))) {
+ cv = GvCV(autogv);
+ goto retry;
+ }
+ /* sorry */
+ subname = sv_newmortal();
+ gv_efullname3(subname, gv, Nullch);
+ DIE("Undefined subroutine &%s called", SvPVX(subname));
}
gimme = GIMME;
@@ -1844,8 +1858,8 @@ PP(pp_entersub)
(void)SvREFCNT_inc(cv);
else { /* save temporaries on recursion? */
if (CvDEPTH(cv) == 100 && dowarn
- && !(perldb && cv == GvCV(DBsub)))
- warn("Deep recursion on subroutine \"%s\"",GvENAME(CvGV(cv)));
+ && !(perldb && cv == GvCV(DBsub)))
+ sub_crush_depth(cv);
if (CvDEPTH(cv) > AvFILL(padlist)) {
AV *av;
AV *newpad = newAV();
@@ -1925,6 +1939,19 @@ PP(pp_entersub)
}
}
+void
+sub_crush_depth(cv)
+CV* cv;
+{
+ if (CvANON(cv))
+ warn("Deep recursion on anonymous subroutine");
+ else {
+ SV* tmpstr = sv_newmortal();
+ gv_efullname3(tmpstr, CvGV(cv), Nullch);
+ warn("Deep recursion on subroutine \"%s\"", SvPVX(tmpstr));
+ }
+}
+
PP(pp_aelem)
{
dSP;
diff --git a/pp_sys.c b/pp_sys.c
index f24c8abf77..11e11a5d48 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -675,7 +675,7 @@ PP(pp_sselect)
}
#if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
-#ifdef __linux__
+#if defined(__linux__) || defined(OS2)
growsize = sizeof(fd_set);
#else
growsize = maxlen; /* little endians can use vecs directly */
@@ -889,7 +889,6 @@ PP(pp_enterwrite)
fgv = gv;
cv = GvFORM(fgv);
-
if (!cv) {
if (fgv) {
SV *tmpsv = sv_newmortal();
@@ -898,8 +897,10 @@ PP(pp_enterwrite)
}
DIE("Not a format reference");
}
- IoFLAGS(io) &= ~IOf_DIDTOP;
+ if (CvCLONE(cv))
+ cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
+ IoFLAGS(io) &= ~IOf_DIDTOP;
return doform(cv,gv,op->op_next);
}
@@ -975,6 +976,8 @@ PP(pp_leavewrite)
gv_efullname3(tmpsv, fgv, Nullch);
DIE("Undefined top format \"%s\" called",SvPVX(tmpsv));
}
+ if (CvCLONE(cv))
+ cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
return doform(cv,gv,op);
}
@@ -2847,12 +2850,12 @@ nope:
PP(pp_fork)
{
+#ifdef HAS_FORK
dSP; dTARGET;
int childpid;
GV *tmpgv;
EXTEND(SP, 1);
-#ifdef HAS_FORK
childpid = fork();
if (childpid < 0)
RETSETUNDEF;
@@ -2871,19 +2874,14 @@ PP(pp_fork)
PP(pp_wait)
{
+#if !defined(DOSISH) || defined(OS2)
dSP; dTARGET;
int childpid;
int argflags;
- I32 value;
- EXTEND(SP, 1);
-#ifdef HAS_WAIT
- childpid = wait(&argflags);
- if (childpid > 0)
- pidgone(childpid, argflags);
- value = (I32)childpid;
- statusvalue = FIXSTATUS(argflags);
- PUSHi(value);
+ childpid = wait4pid(-1, &argflags, 0);
+ statusvalue = (childpid > 0) ? FIXSTATUS(argflags) : -1;
+ XPUSHi(childpid);
RETURN;
#else
DIE(no_func, "Unsupported function wait");
@@ -2892,19 +2890,17 @@ PP(pp_wait)
PP(pp_waitpid)
{
+#if !defined(DOSISH) || defined(OS2)
dSP; dTARGET;
int childpid;
int optype;
int argflags;
- I32 value;
-#ifdef HAS_WAIT
optype = POPi;
childpid = TOPi;
childpid = wait4pid(childpid, &argflags, optype);
- value = (I32)childpid;
- statusvalue = FIXSTATUS(argflags);
- SETi(value);
+ statusvalue = (childpid > 0) ? FIXSTATUS(argflags) : -1;
+ SETi(childpid);
RETURN;
#else
DIE(no_func, "Unsupported function wait");
diff --git a/proto.h b/proto.h
index c762d38723..86aaf73f21 100644
--- a/proto.h
+++ b/proto.h
@@ -8,7 +8,7 @@
#endif
#ifdef OVERLOAD
SV* amagic_call _((SV* left,SV* right,int method,int dir));
-bool Gv_AMupdate _((HV* stash));
+bool Gv_AMupdate _((HV* stash));
#endif /* OVERLOAD */
OP* append_elem _((I32 optype, OP* head, OP* tail));
OP* append_list _((I32 optype, LISTOP* first, LISTOP* last));
@@ -125,6 +125,7 @@ GP* gp_ref _((GP* gp));
GV* gv_AVadd _((GV* gv));
GV* gv_HVadd _((GV* gv));
GV* gv_IOadd _((GV* gv));
+GV* gv_autoload _((HV* stash, char* name, STRLEN len));
void gv_check _((HV* stash));
void gv_efullname _((SV* sv, GV* gv));
void gv_efullname3 _((SV* sv, GV* gv, char* prefix));
@@ -138,8 +139,8 @@ void gv_init _((GV *gv, HV *stash, char *name, STRLEN len, int multi));
HV* gv_stashpv _((char* name, I32 create));
HV* gv_stashpvn _((char* name, U32 namelen, I32 create));
HV* gv_stashsv _((SV* sv, I32 create));
-void he_delayfree _((HE* hent, I32 shared));
-void he_free _((HE* hent, I32 shared));
+void he_delayfree _((HV* hv, HE* hent));
+void he_free _((HV* hv, HE* hent));
void hoistmust _((PMOP* pm));
void hv_clear _((HV* tb));
SV* hv_delete _((HV* tb, char* key, U32 klen, I32 flags));
@@ -199,7 +200,9 @@ int magic_setamagic _((SV* sv, MAGIC* mg));
int magic_setarylen _((SV* sv, MAGIC* mg));
int magic_setbm _((SV* sv, MAGIC* mg));
int magic_setdbline _((SV* sv, MAGIC* mg));
+#ifdef USE_LOCALE_COLLATE
int magic_setcollxfrm _((SV* sv, MAGIC* mg));
+#endif
int magic_setenv _((SV* sv, MAGIC* mg));
int magic_setfm _((SV* sv, MAGIC* mg));
int magic_setisa _((SV* sv, MAGIC* mg));
@@ -418,6 +421,7 @@ HEK* share_hek _((char* sv, I32 len, U32 hash));
Signal_t sighandler _((int sig));
SV** stack_grow _((SV** sp, SV**p, int n));
int start_subparse _((void));
+void sub_crush_depth _((CV* cv));
bool sv_2bool _((SV* sv));
CV* sv_2cv _((SV* sv, HV** st, GV** gvp, I32 lref));
IO* sv_2io _((SV* sv));
diff --git a/scope.c b/scope.c
index 3ca31aa265..33a5048cf8 100644
--- a/scope.c
+++ b/scope.c
@@ -15,12 +15,6 @@
#include "EXTERN.h"
#include "perl.h"
-/*
- * This value determines how small an SV is "small enough" to keep
- * in a lexical variable in anticipation of the next invocation.
- */
-#define PADVAL_SMALL_ENOUGH 240
-
SV**
stack_grow(sp, p, n)
SV** sp;
@@ -179,14 +173,13 @@ I32 empty;
if (empty) {
register GP *gp;
Newz(602, gp, 1, GP);
- GvGP(gv) = gp;
- GvREFCNT(gv) = 1;
+ GvGP(gv) = gp_ref(gp);
GvSV(gv) = NEWSV(72,0);
GvLINE(gv) = curcop->cop_line;
GvEGV(gv) = gv;
}
else {
- GvGP(gv)->gp_refcnt++;
+ gp_ref(GvGP(gv));
GvINTRO_on(gv);
}
}
@@ -556,16 +549,10 @@ I32 base;
case SVt_NULL:
break;
case SVt_PVAV:
- if (AvMAX(sv) < (PADVAL_SMALL_ENOUGH / sizeof(SV*)))
- av_clear((AV*)sv);
- else
- av_undef((AV*)sv);
+ av_clear((AV*)sv);
break;
case SVt_PVHV:
- if (HvMAX(sv) < (PADVAL_SMALL_ENOUGH / sizeof(SV*)))
- hv_clear((HV*)sv);
- else
- hv_undef((HV*)sv);
+ hv_clear((HV*)sv);
break;
case SVt_PVCV:
croak("panic: leave_scope pad code");
@@ -577,12 +564,6 @@ I32 base;
default:
(void)SvOK_off(sv);
(void)SvOOK_off(sv);
- if (SvPVX(sv) && SvLEN(sv) > PADVAL_SMALL_ENOUGH) {
- Safefree(SvPVX(sv));
- SvPVX(sv) = Nullch;
- SvLEN(sv) = 0;
- SvCUR(sv) = 0;
- }
break;
}
}
diff --git a/sv.c b/sv.c
index d8704b8407..32ca7daef5 100644
--- a/sv.c
+++ b/sv.c
@@ -1911,8 +1911,7 @@ register SV *sstr;
GvGP(dstr)->gp_refcnt--;
GvINTRO_off(dstr); /* one-shot flag */
Newz(602,gp, 1, GP);
- GvGP(dstr) = gp;
- GvREFCNT(dstr) = 1;
+ GvGP(dstr) = gp_ref(gp);
GvSV(dstr) = NEWSV(72,0);
GvLINE(dstr) = curcop->cop_line;
GvEGV(dstr) = (GV*)dstr;
@@ -3523,16 +3522,14 @@ HV *stash;
(void)SvOK_off(sv);
if (SvTYPE(sv) >= SVt_PV) {
SvCUR_set(sv, 0);
- SvTAINT(sv);
if (SvPVX(sv) != Nullch)
*SvPVX(sv) = '\0';
+ SvTAINT(sv);
}
if (GvAV(gv)) {
av_clear(GvAV(gv));
}
- if (GvHV(gv)) {
- if (HvNAME(GvHV(gv)))
- continue;
+ if (GvHV(gv) && !HvNAME(GvHV(gv))) {
hv_clear(GvHV(gv));
#ifndef VMS /* VMS has no environ array */
if (gv == envgv)
diff --git a/sv.h b/sv.h
index 01865360d2..0322965b7f 100644
--- a/sv.h
+++ b/sv.h
@@ -218,6 +218,8 @@ struct xpvbm {
U8 xbm_rare; /* rarest character in string */
};
+/* This structure much match XPVCV */
+
struct xpvfm {
char * xpv_pv; /* pointer to malloced string */
STRLEN xpv_cur; /* length of xpv_pv as a C string */
@@ -237,6 +239,8 @@ struct xpvfm {
long xcv_depth; /* >= 2 indicates recursive call */
AV * xcv_padlist;
CV * xcv_outside;
+ U8 xcv_flags;
+
I32 xfm_lines;
};
diff --git a/t/comp/proto.t b/t/comp/proto.t
index 0d3de96a51..197ea78272 100755
--- a/t/comp/proto.t
+++ b/t/comp/proto.t
@@ -7,6 +7,12 @@
#
# It is impossible to test every prototype that can be specified, but
# we should test as many as we can.
+#
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
use strict;
diff --git a/t/io/fs.t b/t/io/fs.t
index 87a3d2f6fb..dc29fda4d9 100755
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -73,12 +73,14 @@ if ($ino == 0) {print "ok 20\n";} else {print "not ok 20\n";}
unlink 'c';
chdir $wd || die "Can't cd back to $wd";
+rmdir 'tmp';
unlink 'c';
if (`ls -l perl 2>/dev/null` =~ /^l.*->/) { # we have symbolic links
if (symlink("TEST","c")) {print "ok 21\n";} else {print "not ok 21\n";}
$foo = `grep perl c`;
if ($foo) {print "ok 22\n";} else {print "not ok 22\n";}
+ unlink 'c';
}
else {
print "ok 21\nok 22\n";
diff --git a/t/op/cmp.t b/t/op/cmp.t
index e69de29bb2..aba7c2e9dc 100755
--- a/t/op/cmp.t
+++ b/t/op/cmp.t
@@ -0,0 +1,35 @@
+#!./perl
+
+@FOO = ('s', 'N/A', 'a', 'NaN', -1, undef, 0, 1);
+
+$expect = ($#FOO+2) * ($#FOO+1);
+print "1..$expect\n";
+
+my $ok = 0;
+for my $i (0..$#FOO) {
+ for my $j ($i..$#FOO) {
+ $ok++;
+ my $cmp = $FOO[$i] <=> $FOO[$j];
+ if (!defined($cmp) ||
+ $cmp == -1 && $FOO[$i] < $FOO[$j] ||
+ $cmp == 0 && $FOO[$i] == $FOO[$j] ||
+ $cmp == 1 && $FOO[$i] > $FOO[$j])
+ {
+ print "ok $ok\n";
+ }
+ else {
+ print "not ok $ok ($FOO[$i] <=> $FOO[$j])\n";
+ }
+ $ok++;
+ $cmp = $FOO[$i] cmp $FOO[$j];
+ if ($cmp == -1 && $FOO[$i] lt $FOO[$j] ||
+ $cmp == 0 && $FOO[$i] eq $FOO[$j] ||
+ $cmp == 1 && $FOO[$i] gt $FOO[$j])
+ {
+ print "ok $ok\n";
+ }
+ else {
+ print "not ok $ok ($FOO[$i] cmp $FOO[$j])\n";
+ }
+ }
+}
diff --git a/t/op/method.t b/t/op/method.t
index 7c19ecdfdc..bdbc8a9673 100755
--- a/t/op/method.t
+++ b/t/op/method.t
@@ -4,7 +4,7 @@
# test method calls and autoloading.
#
-print "1..18\n";
+print "1..20\n";
@A::ISA = 'B';
@B::ISA = 'C';
@@ -24,11 +24,15 @@ test( A->d, "C::d"); # Update hash table;
*B::d = \&D::d; # Import now.
test (A->d, "D::d"); # Update hash table;
-eval 'sub B::d {"B::d1"}'; # Import now.
-test (A->d, "B::d1"); # Update hash table;
+{
+ local *B::d;
+ eval 'sub B::d {"B::d1"}'; # Import now.
+ test (A->d, "B::d1"); # Update hash table;
+ undef &B::d;
+ test ((eval { A->d }, ($@ =~ /Undefined subroutine/)), 1);
+}
-undef &B::d; # Should work without any help too
-test (A->d, "C::d");
+test (A->d, "D::d"); # Back to previous state
eval 'sub B::d {"B::d2"}'; # Import now.
test (A->d, "B::d2"); # Update hash table;
@@ -54,6 +58,10 @@ test (A->d, "B::d4"); # Update hash table;
delete $B::{d}; # Should work without any help too
test (A->d, "C::d");
+*A::x = *A::d; # See if cache incorrectly follows synonyms
+A->d;
+test (eval { A->x } || "nope", "nope");
+
eval <<'EOF';
sub C::e;
sub Y::f;
@@ -91,9 +99,9 @@ test(Y->f(), "B: In Y::f, 3"); # Which sticks
*B::AUTOLOAD = sub {
my $c = ++$counter;
- my $method = $main::__ANON__;
- *$main::__ANON__ = sub { "new B: In $method, $c" };
- goto &$main::__ANON__;
+ my $method = $AUTOLOAD;
+ *$AUTOLOAD = sub { "new B: In $method, $c" };
+ goto &$AUTOLOAD;
};
test(A->eee(), "new B: In A::eee, 4"); # We get a correct $autoload
diff --git a/t/op/misc.t b/t/op/misc.t
index 6d591c0556..4f47f0f7af 100755
--- a/t/op/misc.t
+++ b/t/op/misc.t
@@ -39,6 +39,10 @@ for (@prgs){
__END__
()=()
########
+$a = ":="; split /($a)/o, "a:=b:=c"; print "@_"
+EXPECT
+a := b := c
+########
$cusp = ~0 ^ (~0 >> 1);
$, = " ";
print +($cusp - 1) % 8, $cusp % 8, -$cusp % 8, ($cusp + 1) % 8, "!\n";
@@ -255,3 +259,13 @@ print p::func()->groovy(), "\n"
EXPECT
really groovy
########
+($k, $s) = qw(x 0);
+@{$h{$k}} = qw(1 2 4);
+for (@{$h{$k}}) { $s += $_; delete $h{$k} if ($_ == 2) }
+print "bogus\n" unless $s == 7;
+########
+my $a = 'outer';
+eval q[ my $a = 'inner'; eval q[ print "$a " ] ];
+eval { my $x = 'peace'; eval q[ print "$x\n" ] }
+EXPECT
+inner peace
diff --git a/t/op/universal.t b/t/op/universal.t
index e69de29bb2..3e075cff43 100755
--- a/t/op/universal.t
+++ b/t/op/universal.t
@@ -0,0 +1,38 @@
+#!./perl
+#
+# check UNIVERSAL
+#
+
+print "1..4\n";
+
+# explicit bless
+
+$a = {};
+bless $a, "Bob";
+if ($a->class eq "Bob") {print "ok 1\n";} else {print "not ok 1\n";}
+
+# bless through a package
+
+package Fred;
+
+$b = {};
+bless $b;
+if ($b->class eq "Fred") {print "ok 2\n";} else {print "not ok 2\n";}
+
+package main;
+
+# same as test 1 and 2, but with other object syntax
+
+# explicit bless
+
+$a = {};
+bless $a, "Bob";
+if (class $a eq "Bob") {print "ok 3\n";} else {print "not ok 3\n";}
+
+# bless through a package
+
+package Fred;
+
+$b = {};
+bless $b;
+if (class $b eq "Fred") {print "ok 4\n";} else {print "not ok 4\n";}
diff --git a/t/pragma/overload.t b/t/pragma/overload.t
index 9c897c31dc..42d045741d 100755
--- a/t/pragma/overload.t
+++ b/t/pragma/overload.t
@@ -291,7 +291,7 @@ test($@ =~ /no method found/); # 96
sub { *{"Oscalar::$AUTOLOAD"} = sub {"_!_" . shift() . "_!_"} ;
goto &{"Oscalar::$AUTOLOAD"}};
-eval "package Oscalar; use overload '~' => 'comple'";
+eval "package Oscalar; sub comple; use overload '~' => 'comple'";
$na = eval { ~$a }; # Hash was not updated
test($@ =~ /no method found/); # 97
@@ -299,6 +299,7 @@ test($@ =~ /no method found/); # 97
bless \$x, Oscalar;
$na = eval { ~$a }; # Hash updated
+warn "`$na', $@" if $@;
test !$@; # 98
test($na eq '_!_xx_!_'); # 99
@@ -315,7 +316,7 @@ print $@;
test !$@; # 101
test($na eq '_!_xx_!_'); # 102
-eval "package Oscalar; use overload '>>' => 'rshft'";
+eval "package Oscalar; sub rshft; use overload '>>' => 'rshft'";
$na = eval { $aI >> 1 }; # Hash was not updated
test($@ =~ /no method found/); # 103
@@ -330,6 +331,7 @@ print $@;
test !$@; # 104
test($na eq '_!_xx_!_'); # 105
+# warn overload::Method($a, '0+'), "\n";
test (overload::Method($a, '0+') eq \&Oscalar::numify); # 106
test (overload::Method($aI,'0+') eq \&Oscalar::numify); # 107
test (overload::Overloaded($aI)); # 108
@@ -341,5 +343,21 @@ test (! defined overload::Method($a, '<')); # 111
test (overload::StrVal($aI) =~ /^OscalarI=SCALAR\(0x[\da-fA-F]+\)$/); # 112
test (overload::StrVal(\$aI) eq "@{[\$aI]}"); # 113
+# Check overloading by methods (specified deep in the ISA tree).
+{
+ package OscalarII;
+ @ISA = 'OscalarI';
+ sub Oscalar::lshft {"_<<_" . shift() . "_<<_"}
+ eval "package OscalarI; use overload '<<' => 'lshft', '|' => 'lshft'";
+}
+
+$aaII = "087";
+$aII = \$aaII;
+bless $aII, 'OscalarII';
+bless \$fake, 'OscalarI'; # update the hash
+test(($aI | 3) eq '_<<_xx_<<_'); # 114
+# warn $aII << 3;
+test(($aII << 3) eq '_<<_087_<<_'); # 115
+
# Last test is:
-sub last {113}
+sub last {115}
diff --git a/t/pragma/strict-refs b/t/pragma/strict-refs
index 6d36ff88c9..7bf1556e10 100644
--- a/t/pragma/strict-refs
+++ b/t/pragma/strict-refs
@@ -11,6 +11,8 @@ $c = @{"def"} ;
$c = %{"def"} ;
$c = *{"def"} ;
$c = \&{"def"} ;
+$c = def->[0];
+$c = def->{xyz};
EXPECT
########
@@ -72,6 +74,20 @@ EXPECT
Can't use an undefined value as a symbol reference at - line 5.
########
+# strict refs - error
+use strict 'refs' ;
+my $a = fred->[0] ;
+EXPECT
+Can't use bareword ("fred") as an ARRAY ref while "strict refs" in use at - line 4.
+########
+
+# strict refs - error
+use strict 'refs' ;
+my $a = fred->{barney} ;
+EXPECT
+Can't use bareword ("fred") as a HASH ref while "strict refs" in use at - line 4.
+########
+
# strict refs - no error
use strict ;
no strict 'refs' ;
diff --git a/t/pragma/strict.t b/t/pragma/strict.t
index bf90266def..0ff849e2be 100755
--- a/t/pragma/strict.t
+++ b/t/pragma/strict.t
@@ -8,10 +8,11 @@ BEGIN {
$| = 1;
+my $Is_VMS = $^O eq 'VMS';
my $tmpfile = "tmp0000";
my $i = 0 ;
1 while -f ++$tmpfile;
-END { unlink $tmpfile if $tmpfile; }
+END { if ($tmpfile) { 1 while unlink $tmpfile; } }
my @prgs = () ;
@@ -58,12 +59,17 @@ for (@prgs){
shift @files ;
$prog = shift @files ;
}
- open TEST, "| sh -c './perl $switch' >$tmpfile 2>&1";
- print TEST $prog, "\n";
+ open TEST, ">$tmpfile";
+ print TEST $prog,"\n";
close TEST;
+ my $results = $Is_VMS ?
+ `MCR $^X $switch $tmpfile` :
+ `sh -c './perl $switch $tmpfile' 2>&1`;
my $status = $?;
- my $results = `cat $tmpfile`;
$results =~ s/\n+$//;
+ # allow expected output to be written as if $prog is on STDIN
+ $results =~ s/tmp\d+/-/g;
+ $results =~ s/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS; # clip off DCL status msg
$expected =~ s/\n+$//;
my $prefix = ($results =~ s/^PREFIX\n//) ;
if ( $results =~ s/^SKIPPED\n//) {
diff --git a/t/pragma/subs.t b/t/pragma/subs.t
index cf936d2b9f..33180066e0 100755
--- a/t/pragma/subs.t
+++ b/t/pragma/subs.t
@@ -11,10 +11,11 @@ undef $/;
my @prgs = split "\n########\n", <DATA>;
print "1..", scalar @prgs, "\n";
+my $Is_VMS = $^O eq 'VMS';
my $tmpfile = "tmp0000";
my $i = 0 ;
1 while -f ++$tmpfile;
-END { unlink $tmpfile if $tmpfile; }
+END { if ($tmpfile) { 1 while unlink $tmpfile} }
for (@prgs){
my $switch = "";
@@ -40,12 +41,17 @@ for (@prgs){
shift @files ;
$prog = shift @files ;
}
- open TEST, "| sh -c './perl $switch' >$tmpfile 2>&1";
- print TEST $prog, "\n";
+ open TEST, ">$tmpfile";
+ print TEST $prog,"\n";
close TEST;
+ my $results = $Is_VMS ?
+ `MCR $^X $switch $tmpfile` :
+ `sh -c './perl $switch $tmpfile' 2>&1`;
my $status = $?;
- my $results = `cat $tmpfile`;
$results =~ s/\n+$//;
+ # allow expected output to be written as if $prog is on STDIN
+ $results =~ s/tmp\d+/-/g;
+ $results =~ s/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS; # clip off DCL status msg
$expected =~ s/\n+$//;
my $prefix = ($results =~ s/^PREFIX\n//) ;
if ( $results =~ s/^SKIPPED\n//) {
diff --git a/t/pragma/warning.t b/t/pragma/warning.t
index c197f35980..3cb5c73569 100755
--- a/t/pragma/warning.t
+++ b/t/pragma/warning.t
@@ -8,10 +8,11 @@ BEGIN {
$| = 1;
+my $Is_VMS = $^O eq 'VMS';
my $tmpfile = "tmp0000";
my $i = 0 ;
1 while -f ++$tmpfile;
-END { unlink $tmpfile if $tmpfile; }
+END { if ($tmpfile) { 1 while unlink $tmpfile} }
my @prgs = () ;
@@ -39,6 +40,7 @@ for (@prgs){
my @temps = () ;
if (s/^\s*-\w+//){
$switch = $&;
+ $switch =~ s/(-\S*[A-Z]\S*)/"-$1"/ if $Is_VMS; # protect uc switches
}
my($prog,$expected) = split(/\nEXPECT\n/, $_);
if ( $prog =~ /--FILE--/) {
@@ -58,12 +60,17 @@ for (@prgs){
shift @files ;
$prog = shift @files ;
}
- open TEST, "| sh -c './perl $switch' >$tmpfile 2>&1";
- print TEST $prog, "\n";
+ open TEST, ">$tmpfile";
+ print TEST $prog,"\n";
close TEST;
+ my $results = $Is_VMS ?
+ `MCR $^X $switch $tmpfile` :
+ `sh -c './perl $switch $tmpfile' 2>&1`;
my $status = $?;
- my $results = `cat $tmpfile`;
$results =~ s/\n+$//;
+ # allow expected output to be written as if $prog is on STDIN
+ $results =~ s/tmp\d+/-/g;
+ $results =~ s/\n%[A-Z]+-[SIWEF]-.*$// if $Is_VMS; # clip off DCL status msg
$expected =~ s/\n+$//;
my $prefix = ($results =~ s/^PREFIX\n//) ;
if ( $results =~ s/^SKIPPED\n//) {
diff --git a/toke.c b/toke.c
index 39a7f572d7..ad978a884b 100644
--- a/toke.c
+++ b/toke.c
@@ -1566,7 +1566,19 @@ yylex()
s++;
if (*s == ':' && s[1] != ':') /* for csh execing sh scripts */
s++;
- if (!in_eval && *s == '#' && s[1] == '!') {
+ d = Nullch;
+ if (!in_eval) {
+ if (*s == '#' && *(s+1) == '!')
+ d = s + 2;
+#ifdef ALTERNATE_SHEBANG
+ else {
+ static char as[] = ALTERNATE_SHEBANG;
+ if (*s == as[0] && strnEQ(s, as, sizeof(as) - 1))
+ d = s + (sizeof(as) - 1);
+ }
+#endif /* ALTERNATE_SHEBANG */
+ }
+ if (d) {
/*
* HP-UX (at least) sets argv[0] to the script name,
* which makes $^X incorrect. And Digital UNIX and Linux,
@@ -1577,7 +1589,6 @@ yylex()
char *ipath;
char *ibase;
- d = s + 2;
while (*d == ' ' || *d == '\t')
d++;
ipath = d;
@@ -1604,7 +1615,29 @@ yylex()
d = instr(s,"perl -");
if (!d)
d = instr(s,"perl");
+#ifdef ALTERNATE_SHEBANG
+ /*
+ * If the ALTERNATE_SHEBANG on this system starts with a
+ * character that can be part of a Perl expression, then if
+ * we see it but not "perl", we're probably looking at the
+ * start of Perl code, not a request to hand off to some
+ * other interpreter. Similarly, if "perl" is there, but
+ * not in the first 'word' of the line, we assume the line
+ * contains the start of the Perl program.
+ * This isn't foolproof, but it's generally a good guess.
+ */
+ if (d && *s != '#') {
+ char *c = s;
+ while (*c && !strchr("; \t\r\n\f\v#", *c))
+ c++;
+ if (c < d)
+ d = Nullch; /* "perl" not in first word; ignore */
+ else
+ *s = '#'; /* Don't try to parse shebang line */
+ }
+#endif
if (!d &&
+ *s == '#' &&
!minus_c &&
!instr(s,"indir") &&
instr(origargv[0],"perl"))
@@ -1891,17 +1924,29 @@ yylex()
case XOPERATOR:
while (s < bufend && (*s == ' ' || *s == '\t'))
s++;
- if (s < bufend && isIDFIRST(*s)) {
- d = scan_word(s, tokenbuf, FALSE, &len);
+ d = s;
+ tokenbuf[0] = '\0';
+ if (d < bufend && *d == '-') {
+ tokenbuf[0] = '-';
+ d++;
+ while (d < bufend && (*d == ' ' || *d == '\t'))
+ d++;
+ }
+ if (d < bufend && isIDFIRST(*d)) {
+ d = scan_word(d, tokenbuf + 1, FALSE, &len);
while (d < bufend && (*d == ' ' || *d == '\t'))
d++;
if (*d == '}') {
+ char minus = (tokenbuf[0] == '-');
if (dowarn &&
- (keyword(tokenbuf, len) ||
- perl_get_cv(tokenbuf, FALSE) ))
+ (keyword(tokenbuf + 1, len) ||
+ (minus && len == 1 && isALPHA(tokenbuf[1])) ||
+ perl_get_cv(tokenbuf + 1, FALSE) ))
warn("Ambiguous use of {%s} resolved to {\"%s\"}",
- tokenbuf, tokenbuf);
- s = force_word(s,WORD,FALSE,TRUE,FALSE);
+ tokenbuf + !minus, tokenbuf + !minus);
+ s = force_word(s + minus, WORD, FALSE, TRUE, FALSE);
+ if (minus)
+ force_next('-');
}
}
/* FALL THROUGH */
diff --git a/unixish.h b/unixish.h
index 4474563755..e8ff11a107 100644
--- a/unixish.h
+++ b/unixish.h
@@ -69,6 +69,18 @@
*/
/* #define VMS / **/
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+/* #define ALTERNATE_SHEBANG "#!" / **/
+
#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX)
# include <signal.h>
#endif
diff --git a/utils/c2ph.PL b/utils/c2ph.PL
index 5f4523aa84..9f80bc04a6 100644
--- a/utils/c2ph.PL
+++ b/utils/c2ph.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/utils/h2ph.PL b/utils/h2ph.PL
index 1b2ce312a0..bfd606d399 100644
--- a/utils/h2ph.PL
+++ b/utils/h2ph.PL
@@ -13,10 +13,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/utils/h2xs.PL b/utils/h2xs.PL
index 73df801a24..466fdab9b8 100644
--- a/utils/h2xs.PL
+++ b/utils/h2xs.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/utils/perlbug.PL b/utils/perlbug.PL
index 7f894d89a2..ceda89d4d8 100644
--- a/utils/perlbug.PL
+++ b/utils/perlbug.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/utils/perldoc.PL b/utils/perldoc.PL
index e0f8a43b86..28bb464f85 100644
--- a/utils/perldoc.PL
+++ b/utils/perldoc.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
@@ -47,7 +45,7 @@ print OUT <<'!NO!SUBS!';
if(@ARGV<1) {
die <<EOF;
-Usage: $0 [-h] [-v] [-t] [-u] [-m] PageName|ModuleName|ProgramName
+Usage: $0 [-h] [-v] [-t] [-u] [-m] [-l] PageName|ModuleName|ProgramName
We suggest you use "perldoc perldoc" to get aquainted
with the system.
@@ -68,6 +66,7 @@ perldoc [-h] [-v] [-u] PageName|ModuleName|ProgramName...
-t Display pod using pod2text instead of pod2man and nroff.
-u Display unformatted pod text
-m Display modules file in its entirety
+ -l Display the modules file name
-v Verbosely describe what's going on.
PageName|ModuleName...
is the name of a piece of documentation that you want to look at. You
@@ -87,11 +86,11 @@ use Text::ParseWords;
unshift(@ARGV,shellwords($ENV{"PERLDOC"}));
-getopts("mhtuv") || usage;
+getopts("mhtluv") || usage;
usage if $opt_h || $opt_h; # avoid -w warning
-usage("only one of -t, -u, or -m") if $opt_t + $opt_u + $opt_m > 1;
+usage("only one of -t, -u, -m or -l") if $opt_t + $opt_u + $opt_m + $opt_l > 1;
if ($opt_t) { require Pod::Text; import Pod::Text; }
@@ -150,6 +149,7 @@ sub containspod {
my($recurse,$s,@dirs) = @_;
$s =~ s!::!/!g;
$s = VMS::Filespec::unixify($s) if $Is_VMS;
+ return $s if -f $s && containspod($s);
printf STDERR "looking for $s in @dirs\n" if $opt_v;
my $ret;
my $i;
@@ -218,19 +218,22 @@ if(!@found) {
exit ($Is_VMS ? 98962 : 1);
}
+if ($opt_l) {
+ print join("\n", @found), "\n";
+ exit;
+}
+
if( ! -t STDOUT ) { $opt_f = 1 }
unless($Is_VMS) {
$tmp = "/tmp/perldoc1.$$";
push @pagers, qw( more less pg view cat );
unshift @pagers, $ENV{PAGER} if $ENV{PAGER};
- $goodresult = 0;
} else {
$tmp = 'Sys$Scratch:perldoc.tmp1_'.$$;
push @pagers, qw( most more less type/page );
- unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER};
- $goodresult = 1;
}
+unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER};
if ($opt_m) {
foreach $pager (@pagers) {
@@ -297,7 +300,7 @@ perldoc - Look up Perl documentation in pod format.
=head1 SYNOPSIS
-B<perldoc> [B<-h>] [B<-v>] [B<-t>] [B<-u>] PageName|ModuleName|ProgramName
+B<perldoc> [B<-h>] [B<-v>] [B<-t>] [B<-u>] [B<-m>] [B<-l>] PageName|ModuleName|ProgramName
=head1 DESCRIPTION
@@ -338,6 +341,10 @@ This may be useful if the docs don't explain a function in the detail
you need, and you'd like to inspect the code directly; perldoc will find
the file for you and simply hand it off for display.
+=item B<-l> file name only
+
+Display the file name of the module found.
+
=item B<PageName|ModuleName|ProgramName>
The item you want to look up. Nested modules (such as C<File::Basename>)
@@ -364,10 +371,6 @@ Kenneth Albanowski <kjahds@kjahds.com>
Minor updates by Andy Dougherty <doughera@lafcol.lafayette.edu>
-=head1 SEE ALSO
-
-=head1 DIAGNOSTICS
-
=cut
#
diff --git a/utils/pl2pm.PL b/utils/pl2pm.PL
index 8d47481341..7c187ade35 100644
--- a/utils/pl2pm.PL
+++ b/utils/pl2pm.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/utils/splain.PL b/utils/splain.PL
index 53954db65a..ef7c457dda 100644
--- a/utils/splain.PL
+++ b/utils/splain.PL
@@ -13,10 +13,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
# Open input file before creating output file.
$IN = '../lib/diagnostics.pm';
diff --git a/vms/Makefile b/vms/Makefile
index aa69afb214..bf6a428d8b 100644
--- a/vms/Makefile
+++ b/vms/Makefile
@@ -18,33 +18,21 @@
#### Start of system configuration section. ####
-#> .ifdef AXE
# File type to use for object files
-#> O = .abj
# File type to use for object libraries
-#> OLB = .alb
# File type to use for executable images
-#> E = .axe
-#> .else
# File type to use for object files
O = .obj
# File type to use for object libraries
OLB = .olb
# File type to use for executable images
E = .exe
-#> .endif
-#> .ifdef __AXP__
-#> DECC = 1
-#> ARCH = VMS_AXP
-#> OBJVAL = $(O)
-#> .else
ARCH = VMS_VAX
OBJVAL = $@
-#> .endif
# Updated by fndvers.com -- do not edit by hand
-PERL_VERSION = 5_00313#
+PERL_VERSION = 5_00321#
ARCHDIR = [.lib.$(ARCH).$(PERL_VERSION)]
@@ -52,51 +40,19 @@ ARCHCORE = [.lib.$(ARCH).$(PERL_VERSION).CORE]
ARCHAUTO = [.lib.$(ARCH).$(PERL_VERSION).auto]
-#> .ifdef DECC_PIPES_BROKEN
-#> PIPES_BROKEN = 1
-#> .endif
-#> .ifdef GNUC
-#> .first:
-#> @ $$@[.vms]fndvers.com "" "" "[.vms]Makefile"
-#> @ If f$$TrnLnm("Sys").eqs."" Then Define/NoLog SYS GNU_CC_Include:[VMS]
-#> CC = gcc
# -fno-builtin avoids bug in gcc up to version 2.6.2 which can destroy
# data when memcpy() is called on large (>64 kB) blocks of memory
# (fixed in gcc 2.6.3)
-#> XTRACCFLAGS = /Obj=$@/NoCase_Hack/Optimize=2/CC1="""""-fno-builtin"""""
-#> DBGSPECFLAGS =
-#> XTRADEF = ,GNUC_ATTRIBUTE_CHECK
-#> XTRAOBJS =
-#> LIBS1 = GNU_CC:[000000]GCCLIB.OLB/Library
-#> LIBS2 = sys$$Share:VAXCRTL/Shareable
-#> POSIX =
-#> .else
XTRAOBJS =
LIBS1 = $(XTRAOBJS)
DBGSPECFLAGS = /Show=(Source,Include,Expansion)
-#> .ifdef decc
# Some versions of DECCRTL on AXP have a bug in chdir() which causes the change
# to persist after the image exits, even when this was not requested, iff
# SYSNAM is enabled. This is fixed in CSC Patch # AXPACRT04_061, but turning
# off SYSNAM for the MM[SK] subprocess doesn't hurt anything, so we do it
# just in case.
-#> .first:
-#> @ Set Process/Privilege=(NoSYSNAM)
-#> @ $$@[.vms]fndvers.com "" "" "[.vms]Makefile"
-#> @ If f$$TrnLnm("Sys").eqs."" .and. f$$TrnLnm("DECC$System_Include").nes."" Then Define/NoLog SYS DECC$System_Include
-#> .ifdef __AXP__
-#> @ If f$$TrnLnm("Sys").eqs."" .and. f$$TrnLnm("DECC$System_Include").eqs."" Then Define/NoLog SYS sys$$Library
-#> .else
-#> @ If f$$TrnLnm("Sys").eqs."" .and. f$$TrnLnm("DECC$System_Include").eqs."" Then Define/NoLog SYS DECC$Library_Include
-#> .endif
-#>
-#> LIBS2 =
-#> XTRACCFLAGS = /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=$(OBJVAL)
-#> XTRADEF =
-#> POSIX = POSIX
-#> .else # VAXC
.first:
@ $$@[.vms]fndvers.com "" "" "[.vms]Makefile"
@ If f$$TrnLnm("Sys").eqs."" .and. f$$TrnLnm("VAXC$Include").eqs."" Then Define/NoLog SYS sys$$Library
@@ -106,33 +62,15 @@ XTRACCFLAGS = /Include=[]/Object=$(O)
XTRADEF =
LIBS2 = sys$$Share:VAXCRTL/Shareable
POSIX =
-#> .endif
-#> .endif
-#> .ifdef __DEBUG__
-#> DBGCCFLAGS = /List/Debug/NoOpt$(DBGSPECFLAGS)
-#> DBGLINKFLAGS = /Trace/Debug/Map/Full/Cross
-#> DBG = DBG
-#> .else
DBGCCFLAGS = /NoList
DBGLINKFLAGS = /NoMap
DBG =
-#> .endif
-#> .ifdef SOCKET
-#> SOCKDEF = ,VMS_DO_SOCKETS
-#> SOCKLIB = SocketShr/Share
# N.B. the targets for $(SOCKC) and $(SOCKH) assume that the permanent
# copies live in [.vms], and the `clean' target will delete copies of
# these files in the current default directory.
-#> SOCKC = sockadapt.c
-#> SOCKH = sockadapt.h
-#> SOCKCLIS = ,$(SOCKC)
-#> SOCKHLIS = ,$(SOCKH)
-#> SOCKOBJ = ,sockadapt$(O)
-#> SOCKPM = [.lib]Socket.pm
-#> .else
SOCKDEF =
SOCKLIB =
SOCKC =
@@ -141,7 +79,6 @@ SOCKCLIS =
SOCKHLIS =
SOCKOBJ =
SOCKPM =
-#> .endif
# C preprocessor manifest "DEBUGGING" ==> perl -D, not the VMS debugger
CFLAGS = /Define=(DEBUGGING$(SOCKDEF)$(XTRADEF))$(XTRACCFLAGS)$(DBGCCFLAGS)
@@ -168,13 +105,8 @@ MYEXT = DynaLoader
# there are any object files specified
# These must be built separately, or you must add rules below to build them
myextobj = [.ext.dynaloader]dl_vms$(O),
-#> .ifdef SOCKET
-#> EXT = $(MYEXT) Socket
-#> extobj = $(myextobj) [.ext.socket]socket$(O),
-#> .else
EXT = $(MYEXT)
extobj = $(myextobj)
-#> .endif
#### End of system configuration section. ####
@@ -207,19 +139,13 @@ ac6 = $(ARCHCORE)pp.h $(ARCHCORE)proto.h $(ARCHCORE)regcomp.h $(ARCHCORE)perlio.
ac7 = $(ARCHCORE)regexp.h $(ARCHCORE)scope.h $(ARCHCORE)sv.h $(ARCHCORE)util.h
ac8 = $(ARCHCORE)vmsish.h $(ARCHCORE)$(DBG)libperl$(OLB) $(ARCHCORE)perlshr_attr.opt
ac9 = $(ARCHCORE)$(DBG)perlshr_bld.opt
-#> .ifdef SOCKET
-#> acs = $(ARCHCORE)$(SOCKH)
-#> .else
acs =
-#> .endif
CRTL = []crtl.opt
CRTLOPTS =,$(CRTL)/Options
.suffixes:
-#> .ifdef LINK_ONLY
-#> .else
.suffixes: $(O) .c .xs
.xs.c :
@@ -232,7 +158,6 @@ CRTLOPTS =,$(CRTL)/Options
.xs$(O) :
$(XSUBPP) $< >$(MMS$SOURCE_NAME).c
$(CC) $(CFLAGS) $(MMS$SOURCE_NAME).c
-#> .endif
all : base extras libmods utils podxform archcorefiles preplibrary perlpods
@@ -284,11 +209,7 @@ perl : $(DBG)perl$(E)
@ Continue
$(DBG)perl$(E) : perlmain$(O), $(DBG)perlshr$(E), $(MINIPERL_EXE)
@ $$@[.vms]genopt "PerlShr.Opt/Write" "|" "''f$$Environment("Default")'$(DBG)PerlShr$(E)/Share"
-#> .ifdef gnuc
-#> Link $(LINKFLAGS)/Exe=$@ perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option, crtl.opt/Option
-#> .else
Link $(LINKFLAGS)/Exe=$@ perlmain$(O), perlshr.opt/Option, perlshr_attr.opt/Option
-#> .endif
$(DBG)perlshr$(E) : $(DBG)libperl$(OLB) $(extobj) $(DBG)perlshr_xtras.ts
Link /NoTrace$(LINKFLAGS)/Share=$@ $(extobj) []$(DBG)perlshr_bld.opt/Option, perlshr_attr.opt/Option
@@ -298,18 +219,8 @@ $(DBG)perlshr$(E) : $(DBG)libperl$(OLB) $(extobj) $(DBG)perlshr_xtras.ts
# perlshr_gbl*.mar, perlshr_gbl*$(O) - VAX only
# The song and dance with gen_shrfls.opt accomodates DCL's 255 character
# line length limit.
-#> .ifdef PIPES_BROKEN
# This is a backup target used only with older versions of the DECCRTL which
# can't deal with pipes properly. See ReadMe.VMS for details.
-#> $(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(MINIPERL_EXE) $(MAKEFILE) $(CRTL)
-#> $(CC) $(CFLAGS)/NoObject/NoList/PreProcess=perl.i perl.h
-#> @ $(MINIPERL) -e "print join('|',@ARGV),'|';" "~~NOCC~~perl.i~~$(CC)$(CFLAGS)" >gen_shrfls.opt
-#> @ $(MINIPERL) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
-#> $(MINIPERL) [.vms]gen_shrfls.pl -f gen_shrfls.opt
-#> @ Delete/NoLog/NoConfirm perl.i;, gen_shrfls.opt;
-#> @ If f$$Search("$(DBG)perlshr_xtras.ts").nes."" Then Delete/NoLog/NoConfirm $(DBG)perlshr_xtras.ts;*
-#> @ Copy _NLA0: $(DBG)perlshr_xtras.ts
-#> .else
$(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(MINIPERL_EXE) $(MAKEFILE) $(CRTL)
@ $(MINIPERL) -e "print join('|',@ARGV),'|';" "$(CC)$(CFLAGS)" >gen_shrfls.opt
@ $(MINIPERL) -e "print join('|',@ARGV);" "$(O)" "$(DBG)" "$(OLB)" "$(EXT)" "$(CRTL)" >>gen_shrfls.opt
@@ -317,7 +228,6 @@ $(DBG)perlshr_xtras.ts : perl.h config.h vmsish.h proto.h [.vms]gen_shrfls.pl $(
@ Delete/NoLog/NoConfirm gen_shrfls.opt;
@ If f$$Search("$(DBG)perlshr_xtras.ts").nes."" Then Delete/NoLog/NoConfirm $(DBG)perlshr_xtras.ts;*
@ Copy _NLA0: $(DBG)perlshr_xtras.ts
-#> .endif
$(ARCHDIR)config.pm : [.lib]config.pm
Create/Directory $(ARCHDIR)
@@ -657,30 +567,6 @@ printconfig :
@ $$@[.vms]make_command $(MMS) $(MMSQUALIFIERS) $(MMSTARGETS)
@ $$@[.vms]myconfig "$(CC)" "$(CFLAGS)" "$(LINKFLAGS)" "$(LIBS1)" "$(LIBS2)" "$(SOCKLIB)" "$(EXT)" "$(DBG)"
-#> .ifdef SOCKET
-#>
-#> .ifdef LINK_ONLY
-#> .else
-#> $(SOCKOBJ) : $(SOCKC) $(SOCKH)
-#>
-#> [.ext.Socket]Socket$(O) : [.ext.Socket]Socket.c
-#> $(CC) $(CFLAGS) /Object=$@ [.ext.Socket]Socket.c
-#>
-#> [.ext.Socket]Socket.c : [.ext.Socket]Socket.xs $(MINIPERL_EXE)
-#> $(XSUBPP) [.ext.Socket]Socket.xs >$@
-#> .endif # !LINK_ONLY
-#>
-#> vmsish.h : $(SOCKH)
-#>
-#> $(SOCKC) : [.vms]$(SOCKC)
-#> Copy/Log/NoConfirm [.vms]$(SOCKC) []$(SOCKC)
-#>
-#> $(SOCKH) : [.vms]$(SOCKH)
-#> Copy/Log/NoConfirm [.vms]$(SOCKH) []$(SOCKH)
-#>
-#> [.lib]Socket.pm : [.ext.Socket]Socket.pm
-#> Copy/Log/NoConfirm [.ext.Socket]Socket.pm $@
-#> .endif
# The following three header files are generated automatically
# keywords.h : keywords.pl
@@ -712,11 +598,8 @@ perly.h : [.vms]perly_h.vms
# rename y.tab.h perly.h
# $(INSTPERL) [.vms]vms_yfix.pl perly.c perly.h [.vms]perly_c.vms [.vms]perly_h.vms
-#> .ifdef LINK_ONLY
-#> .else
perly$(O) : perly.c, perly.h, $(h)
$(CC) $(CFLAGS) perly.c
-#> .endif
test : all
- @[.VMS]Test.Com "$(E)"
@@ -810,11 +693,6 @@ $(ARCHCORE)util.h : util.h
$(ARCHCORE)vmsish.h : vmsish.h
@ If f$$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
Copy/Log vmsish.h $@
-#> .ifdef SOCKET
-#> $(ARCHCORE)$(SOCKH) : $(SOCKH)
-#> @ If f$$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
-#> Copy/Log $(SOCKH) $@
-#> .endif
$(ARCHCORE)$(DBG)libperl$(OLB) : $(DBG)libperl$(OLB) $(DBG)perlshr_xtras.ts
@ If f$$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE)
Copy/Log $(DBG)libperl$(OLB) $@
@@ -828,8 +706,6 @@ $(ARCHAUTO)time.stamp :
@ If f$$Search("$(ARCHDIR)auto.dir").eqs."" Then Create/Directory $(ARCHAUTO)
@ If f$$Search("$@").eqs."" Then Copy/NoConfirm _NLA0: $(MMS$TARGET)
-#> .ifdef LINK_ONLY
-#> .else
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
av$(O) : EXTERN.h
av$(O) : av.c
@@ -1502,7 +1378,6 @@ globals$(O) : scope.h
globals$(O) : sv.h
globals$(O) : vmsish.h
globals$(O) : util.h
-#> .endif # !LINK_ONLY
config.h : [.vms]config.vms
Copy/Log/NoConfirm [.vms]config.vms []config.h
@@ -1566,11 +1441,6 @@ clean : tidy
Set Default [.ext.Opcode]
- $(MMS) clean
Set Default [--]
-#> .ifdef DECC
-#> Set Default [.ext.POSIX]
-#> - $(MMS) clean
-#> Set Default [--]
-#> .endif
- If f$$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*/Exclude=PerlShr_*.Opt
- If f$$Search("*$(O);*") .nes."" Then Delete/NoConfirm/Log *$(O);*
- If f$$Search("Config.H").nes."" Then Delete/NoConfirm/Log Config.H;*
@@ -1604,11 +1474,6 @@ realclean : clean
Set Default [.ext.Opcode]
- $(MMS) realclean
Set Default [--]
-#> .ifdef DECC
-#> Set Default [.ext.POSIX]
-#> - $(MMS) realclean
-#> Set Default [--]
-#> .endif
- If f$$Search("*$(OLB)").nes."" Then Delete/NoConfirm/Log *$(OLB);*
- If f$$Search("*.Opt").nes."" Then Delete/NoConfirm/Log *.Opt;*
- $(MINIPERL) -e "use File::Path; rmtree(['lib/auto','lib/VMS','lib/$(ARCH)'],1,0);"
diff --git a/vms/config.vms b/vms/config.vms
index 48aa6a5a57..a7460e5cf5 100644
--- a/vms/config.vms
+++ b/vms/config.vms
@@ -76,7 +76,7 @@
* when Perl is built. Please do not change it by hand; make
* any changes to FndVers.Com instead.
*/
-#define ARCHLIB_EXP "/perl_root/lib/VMS_VAX/5_00314" /**/
+#define ARCHLIB_EXP "/perl_root/lib/VMS_VAX/5_00321" /**/
#define ARCHLIB ARCHLIB_EXP /*config-skip*/
/* BINCOMPAT3:
diff --git a/vms/descrip.mms b/vms/descrip.mms
index 451ca3d722..32200a3dfa 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -65,7 +65,7 @@ OBJVAL = $(MMS$TARGET_NAME)$(O)
.endif
# Updated by fndvers.com -- do not edit by hand
-PERL_VERSION = 5_00314#
+PERL_VERSION = 5_00321#
ARCHDIR = [.lib.$(ARCH).$(PERL_VERSION)]
diff --git a/vms/genconfig.pl b/vms/genconfig.pl
index da295f72e9..97679d5e48 100644
--- a/vms/genconfig.pl
+++ b/vms/genconfig.pl
@@ -102,6 +102,10 @@ installprivlib='$installprivlib'
installarchlib='$installarchlib'
installsitelib='$installsitelib'
installsitearch='$installsitearch'
+startperl='\$ perl 'f\$env("procedure")' - ! q#
+ 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
+$ exit !#
+'
EndOfIntro
foreach (@ARGV) {
diff --git a/vms/perly_c.vms b/vms/perly_c.vms
index dfc096ca22..947d77311d 100644
--- a/vms/perly_c.vms
+++ b/vms/perly_c.vms
@@ -16,937 +16,912 @@ dep()
#line 16 "perly.c"
#define YYERRCODE 256
dEXT short yylhs[] = { -1,
- 40, 0, 7, 5, 8, 6, 9, 9, 9, 10,
- 10, 10, 10, 22, 22, 22, 22, 22, 22, 13,
- 13, 13, 12, 12, 37, 37, 11, 11, 11, 11,
- 11, 11, 11, 24, 24, 25, 25, 26, 27, 28,
- 29, 30, 39, 39, 1, 1, 1, 1, 3, 3,
- 41, 41, 36, 36, 4, 42, 42, 43, 14, 14,
- 14, 23, 23, 23, 34, 34, 34, 34, 34, 34,
- 34, 34, 35, 35, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
- 15, 15, 15, 15, 15, 15, 15, 15, 31, 31,
- 32, 32, 32, 2, 2, 38, 21, 16, 17, 18,
- 19, 20, 33, 33, 33, 33,
+ 45, 0, 9, 7, 10, 8, 11, 11, 11, 12,
+ 12, 12, 12, 24, 24, 24, 24, 24, 24, 15,
+ 15, 15, 14, 14, 42, 42, 13, 13, 13, 13,
+ 13, 13, 13, 26, 26, 27, 27, 28, 29, 30,
+ 31, 32, 44, 44, 1, 1, 1, 1, 3, 38,
+ 38, 46, 4, 5, 6, 39, 40, 40, 41, 41,
+ 47, 47, 49, 48, 16, 16, 16, 25, 25, 25,
+ 36, 36, 36, 36, 36, 36, 36, 50, 36, 37,
+ 37, 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, 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, 33, 33, 34, 34, 34,
+ 2, 2, 43, 23, 18, 19, 20, 21, 22, 35,
+ 35, 35, 35,
};
dEXT short yylen[] = { 2,
0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
1, 2, 3, 1, 1, 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, 4, 3,
- 5, 5, 0, 1, 0, 3, 2, 6, 3, 3,
- 1, 2, 3, 1, 3, 5, 6, 3, 5, 2,
- 4, 4, 1, 1, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 5, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
- 3, 2, 4, 3, 4, 1, 5, 1, 4, 5,
- 4, 1, 1, 1, 5, 6, 5, 6, 5, 4,
- 5, 1, 1, 3, 4, 3, 2, 2, 4, 5,
- 4, 5, 1, 2, 2, 1, 2, 2, 2, 1,
- 3, 1, 3, 4, 4, 6, 1, 1, 0, 1,
- 0, 1, 2, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1,
+ 1, 1, 0, 1, 1, 1, 1, 1, 4, 1,
+ 0, 5, 0, 0, 0, 1, 0, 1, 1, 1,
+ 3, 2, 0, 7, 3, 3, 1, 2, 3, 1,
+ 3, 5, 6, 3, 5, 2, 4, 0, 5, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 5, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 3, 2, 3, 2, 4,
+ 3, 4, 1, 5, 1, 4, 5, 4, 1, 1,
+ 1, 5, 6, 5, 6, 5, 4, 5, 1, 1,
+ 3, 4, 3, 2, 2, 4, 5, 4, 5, 1,
+ 2, 2, 1, 2, 2, 2, 1, 3, 1, 3,
+ 4, 4, 6, 1, 1, 0, 1, 0, 1, 2,
+ 1, 1, 1, 2, 2, 2, 2, 2, 2, 1,
+ 1, 1, 1,
};
dEXT short yydefred[] = { 1,
- 0, 7, 0, 44, 55, 55, 0, 55, 8, 45,
- 9, 11, 0, 46, 47, 48, 0, 0, 0, 57,
- 0, 14, 4, 147, 0, 0, 122, 0, 142, 0,
- 55, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 154, 155, 0,
+ 0, 7, 0, 44, 55, 53, 0, 53, 8, 45,
+ 9, 11, 0, 46, 47, 48, 0, 0, 0, 62,
+ 63, 14, 4, 154, 0, 0, 129, 0, 149, 0,
+ 54, 54, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 161, 162, 0,
0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 112, 114, 0, 0, 0, 0, 148, 0,
- 50, 0, 56, 0, 7, 163, 166, 165, 164, 0,
- 0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
- 4, 0, 0, 0, 0, 0, 137, 0, 0, 0,
- 0, 70, 0, 161, 0, 128, 0, 0, 0, 0,
- 0, 157, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 0, 158, 159, 160, 162, 0, 0,
- 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 119, 121, 0, 0, 0, 0, 155, 50,
+ 0, 56, 0, 61, 0, 7, 170, 173, 172, 171,
+ 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
+ 4, 4, 0, 0, 0, 0, 0, 144, 0, 0,
+ 0, 0, 76, 0, 168, 0, 135, 0, 0, 0,
+ 0, 0, 164, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 109, 0, 165, 166, 167, 169, 0,
+ 0, 33, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 94, 95, 0, 0, 0, 0, 0, 0,
- 0, 0, 13, 0, 49, 54, 0, 0, 0, 68,
+ 0, 0, 0, 101, 102, 0, 0, 0, 0, 0,
+ 0, 0, 0, 13, 0, 49, 58, 0, 0, 0,
+ 74, 0, 0, 78, 0, 0, 0, 0, 0, 0,
+ 0, 4, 148, 150, 0, 0, 0, 0, 0, 0,
+ 0, 111, 0, 133, 0, 0, 108, 26, 0, 0,
+ 19, 0, 0, 0, 65, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 141, 143, 0, 0, 0, 0, 0, 0, 0,
- 104, 0, 126, 0, 0, 101, 26, 0, 0, 19,
- 0, 0, 0, 59, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 73, 0, 74, 0, 0, 0, 0, 0, 0, 0,
- 124, 0, 0, 52, 51, 0, 3, 0, 145, 0,
- 72, 105, 0, 41, 0, 42, 0, 0, 0, 0,
- 156, 0, 0, 35, 40, 0, 0, 0, 144, 153,
- 71, 0, 129, 0, 131, 0, 103, 0, 0, 0,
- 0, 0, 0, 0, 111, 0, 109, 0, 120, 0,
- 125, 58, 69, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 66, 130, 132, 119, 0, 117, 0, 0,
- 110, 0, 115, 121, 107, 146, 6, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 116, 67, 7, 27,
- 28, 0, 0, 23, 24, 0, 31, 0, 0, 0,
- 21, 0, 0, 0, 30, 5, 0, 29, 0, 0,
- 32, 0, 22,
+ 0, 80, 0, 81, 0, 0, 0, 0, 0, 0,
+ 0, 131, 0, 0, 60, 59, 52, 0, 3, 0,
+ 152, 0, 0, 112, 0, 41, 0, 42, 0, 0,
+ 0, 0, 163, 0, 0, 35, 40, 0, 0, 0,
+ 151, 160, 77, 0, 136, 0, 138, 0, 110, 0,
+ 0, 0, 0, 0, 0, 0, 118, 0, 116, 0,
+ 127, 0, 132, 0, 75, 0, 79, 0, 0, 0,
+ 0, 0, 0, 0, 0, 72, 137, 139, 126, 0,
+ 124, 0, 0, 117, 0, 122, 128, 114, 64, 153,
+ 6, 0, 0, 0, 0, 0, 0, 0, 0, 125,
+ 123, 73, 7, 27, 28, 0, 0, 23, 24, 0,
+ 31, 0, 0, 0, 21, 0, 0, 0, 30, 5,
+ 0, 29, 0, 0, 32, 0, 22,
};
dEXT short yydgoto[] = { 1,
- 9, 66, 10, 17, 85, 329, 88, 318, 3, 11,
- 12, 68, 334, 258, 70, 71, 72, 73, 74, 75,
- 76, 264, 78, 265, 254, 256, 259, 267, 255, 257,
- 112, 196, 90, 79, 234, 177, 141, 262, 13, 2,
- 14, 15, 16,
+ 9, 66, 10, 18, 95, 17, 86, 333, 89, 322,
+ 3, 11, 12, 68, 338, 260, 70, 71, 72, 73,
+ 74, 75, 76, 266, 78, 267, 256, 258, 261, 269,
+ 257, 259, 113, 197, 91, 79, 235, 81, 83, 178,
+ 247, 142, 264, 13, 2, 14, 15, 16, 85, 253,
};
dEXT short yysindex[] = { 0,
- 0, 0, 236, 0, 0, 0, -45, 0, 0, 0,
- 0, 0, 557, 0, 0, 0, -106, -232, -20, 0,
- -216, 0, 0, 0, -8, -8, 0, 9, 0, 1840,
- 0, 0, 11, 15, 19, 22, -33, 1840, 38, 47,
- 51, 933, 877, -8, 996, 1260, -212, 0, 0, -8,
- 1840, 1840, 1840, 1840, 1840, 1840, 1316, 0, 1840, 1840,
- 1372, -8, -8, -8, -8, 1840, -193, 0, 273, 3713,
- -67, -55, 0, 0, -26, 72, 57, 59, 0, 3,
- 0, -137, 0, -130, 0, 0, 0, 0, 0, 1840,
- 96, 1840, 1871, 3, -137, 0, 0, 0, 0, 0,
- 0, 97, 3713, 99, 1431, 877, 0, 1871, 0, -67,
- 59, 0, 1840, 0, 106, 0, 1871, -25, 27, 52,
- 1840, 0, 59, 98, 98, 98, -85, -85, 74, -40,
- 98, 98, 0, -88, 0, 0, 0, 0, 1871, 3,
- 0, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840,
- 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840, 1840,
- 1840, 1840, 0, 0, -34, 1840, 1840, 1840, 1840, 1840,
- 1840, 1606, 0, 1840, 0, 0, -51, 1840, 242, 0,
- 1840, 1089, 1840, 3, 1840, 1840, 1840, 1840, 130, 1665,
- 0, 0, 0, -30, 44, 126, 1840, 59, 1721, 1777,
- 0, 53, 0, 1840, 79, 0, 0, -244, -244, 0,
- -244, -244, -127, 0, 54, 1027, 1871, 756, 360, 869,
- 3713, 3679, 3540, 3764, 1195, 340, 1054, 98, 98, 1840,
- 0, 1840, 0, 134, -83, 58, -75, 60, -71, 62,
- 0, -18, 3713, 0, 0, 117, 0, 138, 0, 1840,
- 0, 0, -244, 0, 139, 0, 140, -244, 141, 142,
- 0, 145, 273, 0, 0, 149, 136, 1840, 0, 0,
- 0, -15, 0, 40, 0, 42, 0, -59, 1840, 68,
- 1840, 85, 46, 1840, 0, 75, 0, 77, 0, 80,
- 0, 0, 0, 1143, 84, 84, 84, 84, 1840, 84,
- 1840, 167, 0, 0, 0, 0, 95, 0, 263, 86,
- 0, 172, 0, 0, 0, 0, 0, -193, -193, -177,
- -177, 175, -193, 159, 84, 0, 0, 0, 0, 0,
- 0, 84, 194, 0, 0, 84, 0, 1665, -193, 256,
- 0, 1840, -193, 191, 0, 0, 196, 0, 84, 84,
- 0, -177, 0,
+ 0, 0, -126, 0, 0, 0, -58, 0, 0, 0,
+ 0, 0, 827, 0, 0, 0, -242, -235, -21, 0,
+ 0, 0, 0, 0, -33, -33, 0, 11, 0, 1816,
+ 0, 0, 13, 15, 30, 45, -29, 1816, 67, 68,
+ 70, 1002, 939, -33, 1236, 1292, -227, 0, 0, -33,
+ 1816, 1816, 1816, 1816, 1816, 1816, 1173, 0, 1816, 1816,
+ 1348, -33, -33, -33, -33, 1816, -220, 0, -169, 3558,
+ -78, -59, 0, 0, -62, 73, 42, 65, 0, 0,
+ -5, 0, -149, 0, -134, 0, 0, 0, 0, 0,
+ 1816, 97, 1816, 1847, -5, -149, 0, 0, 0, 0,
+ 0, 0, 99, 3558, 105, 1407, 939, 0, 1847, 0,
+ -78, 65, 0, 1816, 0, 107, 0, 1847, -23, 36,
+ -51, 1816, 0, 65, -82, -82, -82, -54, -54, 57,
+ -27, -82, -82, 0, -87, 0, 0, 0, 0, 1847,
+ -5, 0, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
+ 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816, 1816,
+ 1816, 1816, 1816, 0, 0, -32, 1816, 1816, 1816, 1816,
+ 1816, 1816, 1582, 0, 1816, 0, 0, -36, -108, 665,
+ 0, 1816, 209, 0, -5, 1816, 1816, 1816, 1816, 114,
+ 1641, 0, 0, 0, -16, 6, 111, 1816, 65, 1697,
+ 1753, 0, 38, 0, 1816, 74, 0, 0, -251, -251,
+ 0, -251, -251, -131, 0, 18, 3516, 1847, 1089, 382,
+ 92, 3558, 3594, 3689, 369, 1060, 482, 285, -82, -82,
+ 1816, 0, 1816, 0, 128, 33, 23, 58, 25, 69,
+ 27, 0, -14, 3558, 0, 0, 0, 1816, 0, 131,
+ 0, 1816, 1816, 0, -251, 0, 134, 0, 136, -251,
+ 139, 141, 0, 144, -169, 0, 0, 156, 135, 1816,
+ 0, 0, 0, -12, 0, -10, 0, 1, 0, 71,
+ 1816, 75, 1816, 29, 86, 1816, 0, 76, 0, 78,
+ 0, 81, 0, 148, 0, 339, 0, 85, 85, 85,
+ 85, 1816, 85, 1816, 168, 0, 0, 0, 0, 88,
+ 0, 3653, 89, 0, 172, 0, 0, 0, 0, 0,
+ 0, -220, -220, -178, -178, 175, -220, 160, 85, 0,
+ 0, 0, 0, 0, 0, 85, 203, 0, 0, 85,
+ 0, 1641, -220, 688, 0, 1816, -220, 180, 0, 0,
+ 196, 0, 85, 85, 0, -178, 0,
};
dEXT short yyrindex[] = { 0,
- 0, 0, 161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 269, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2076, 1906, 0,
+ 0, 2716, 2784, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2100, 1930, 0,
- 0, 2740, 2808, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 79, 0, -7, 181,
+ 2827, 2871, 0, 0, 2142, 1965, 0, 21, 0, 0,
+ 0, 0, -31, 0, 0, 0, 0, 0, 0, 0,
+ 2201, 0, 0, 3299, 0, 129, 0, 0, 0, 0,
+ 0, 0, 0, 197, 0, 0, 213, 0, 3343, 444,
+ 545, 2312, 0, 0, 0, 2028, 0, 3386, 2827, 0,
+ 0, 2201, 0, 2437, 2914, 2952, 2990, 606, 723, 2480,
+ 0, 3063, 3107, 0, 0, 0, 0, 0, 0, 3424,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 0, -9, 3616,
- 2851, 2895, 0, 0, 2166, 1989, 0, 17, 0, 0,
- 0, -39, 0, 0, 0, 0, 0, 0, 0, 2225,
- 0, 0, 3367, 0, 112, 0, 0, 0, 0, 0,
- 0, 0, 3635, 0, 0, 215, 0, 3410, 437, 498,
- 2336, 0, 0, 0, 2052, 0, 3448, 2851, 0, 0,
- 2225, 0, 2461, 2938, 2976, 3014, -28, 600, 2504, 0,
- 3087, 3131, 0, 0, 0, 0, 0, 0, 3486, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2548, 0, 0, 0, 0, 883,
+ 0, 213, 0, 0, 0, 234, 0, 0, 0, 0,
+ 218, 0, 0, 0, 0, 239, 0, 0, 2591, 0,
+ 0, 0, 0, 0, 0, 2635, 0, 0, -2, 8,
+ 0, 22, 24, 525, 0, 0, 3579, 1448, 1504, 3226,
+ -39, 338, 0, 2490, 3535, 3498, 3462, 3262, 3150, 3188,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2572, 0, 0, 0, 205, 821, 0,
- 215, 0, 2225, 0, 245, 0, 0, 0, 0, 240,
- 0, 0, 0, 0, 272, 0, 0, 2615, 0, 0,
- 0, 0, 0, 0, 2659, 0, 0, 5, 45, 0,
- 49, 61, -32, 0, 0, 192, 1472, 1528, 3250, 3286,
- 3645, 0, 2514, 3603, 3559, 3522, 3323, 3174, 3212, 0,
+ 0, 0, 0, 1870, 0, 0, 0, 230, 0, 0,
+ 0, 0, 2201, 0, 37, 0, 0, 0, 0, 251,
+ 0, 0, 0, 0, 61, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3675, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 65, 0, 0, 0, 0, 277, 0, 0,
- 0, 0, 66, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 213, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 215, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 238, 0, 0, 0, 0, 0, 0,
+ 0, 718, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 79, 79, 153, 153, 0, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 265, 0, 0, 0, 0, 0, 0, 0, 1894, 0,
- 0, 0, 0, 0, 0, 0, 0, 37, 37, 105,
- 105, 0, 37, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 286, 37, 821,
- 0, 0, 37, 0, 0, 0, 0, 0, 0, 0,
- 0, 105, 0,
+ 0, 260, 79, 883, 0, 0, 79, 0, 0, 0,
+ 0, 0, 0, 0, 0, 153, 0,
};
dEXT short yygindex[] = { 0,
- 0, 0, 0, 63, 418, 0, 914, 335, -81, 0,
- 0, 0, -292, -13, 3885, 2516, 0, 0, 0, 0,
- 0, 321, 530, 0, 0, 203, -150, -3, 93, 165,
- -69, -162, 575, 0, 0, 300, -276, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 0, 300, 278, 0, -26, 0, 892, 1004,
+ -76, 0, 0, 0, -313, -13, 3871, 3724, 0, 0,
+ 0, 0, 0, 304, -25, 0, 0, 169, -175, -8,
+ 53, 152, 384, -161, 901, 0, 0, 0, 0, 281,
+ 0, -287, 0, 0, 0, 0, 0, 0, 0, 0,
};
-#define YYTABLESIZE 4166
+#define YYTABLESIZE 4154
dEXT short yytable[] = { 69,
- 205, 62, 62, 179, 206, 166, 101, 244, 60, 285,
- 269, 60, 96, 20, 200, 96, 23, 287, 248, 53,
- 180, 289, 291, 168, 82, 303, 60, 62, 335, 96,
- 96, 15, 120, 306, 96, 170, 25, 148, 83, 266,
- 84, 330, 331, 130, 121, 18, 337, 134, 92, 15,
- 96, 203, 146, 147, 97, 167, 232, 61, 98, 353,
- 60, 99, 345, 18, 96, 168, 348, 169, 18, 25,
- 21, 23, 25, 25, 25, 61, 25, 104, 25, 25,
- 304, 25, 305, 53, 140, 38, 105, 270, 230, 16,
- 106, 194, 195, 94, 95, 25, 171, 167, 332, 333,
- 25, 17, 174, 38, 20, 37, 39, 16, 246, 61,
- 202, 172, 280, 251, 23, 173, 286, 302, 288, 17,
- 290, 312, 176, 37, 15, 23, 178, 25, 208, 209,
- 211, 212, 213, 214, 215, 181, 191, 20, 311, 192,
- 20, 20, 20, 310, 20, 199, 20, 20, 322, 20,
- 80, 201, 235, 236, 237, 238, 239, 240, 242, 25,
- 2, 25, 25, 20, 204, 62, 271, 195, 20, 279,
- 147, 253, 209, 284, 209, 292, 263, 277, 293, 295,
- 296, 297, 298, 272, 299, 274, 276, 326, 166, 300,
- 278, 347, 308, 43, 301, 20, 43, 43, 43, 313,
- 43, 314, 43, 43, 315, 43, 317, 325, 146, 147,
- 327, 19, 328, 146, 147, 336, 282, 338, 283, 43,
- 148, 146, 147, 231, 43, 146, 147, 20, 165, 20,
- 20, 349, 84, 342, 53, 84, 350, 146, 147, 60,
- 60, 60, 60, 96, 96, 96, 96, 340, 86, 84,
- 84, 43, 96, 87, 84, 151, 146, 147, 96, 96,
- 96, 96, 100, 149, 60, 307, 146, 147, 96, 96,
- 195, 96, 96, 96, 96, 96, 96, 96, 146, 147,
- 96, 146, 147, 43, 84, 36, 43, 253, 61, 61,
- 61, 61, 25, 25, 25, 25, 25, 25, 34, 25,
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 152, 61, 61, 25, 25, 39, 25, 25,
- 25, 25, 25, 36, 69, 155, 34, 25, 25, 25,
- 25, 25, 25, 77, 344, 25, 146, 147, 146, 147,
- 146, 147, 146, 147, 25, 210, 25, 25, 146, 147,
- 146, 147, 260, 166, 146, 147, 146, 147, 146, 147,
- 20, 20, 20, 20, 20, 20, 247, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 346, 146, 147, 20, 20, 148, 20, 20, 20, 20,
- 20, 146, 147, 324, 184, 20, 20, 20, 20, 20,
- 20, 0, 0, 20, 0, 0, 162, 0, 0, 163,
- 164, 165, 20, 0, 20, 20, 43, 43, 43, 43,
- 43, 43, 0, 43, 43, 43, 0, 0, 0, 43,
- 166, 0, 43, 43, 43, 43, 0, 0, 0, 43,
- 43, 0, 43, 43, 43, 43, 43, 0, 0, 0,
- 166, 43, 43, 43, 43, 43, 43, 0, 0, 43,
- 0, 0, 148, 84, 84, 84, 84, 0, 43, 163,
- 43, 43, 163, 163, 163, 0, 163, 147, 163, 163,
- 147, 163, 148, 0, 0, 0, 0, 0, 84, 84,
- 0, 84, 0, 0, 147, 147, 0, 0, 0, 147,
- 163, 4, 5, 6, 0, 7, 8, 4, 5, 6,
- 0, 7, 8, 185, 186, 187, 188, 189, 190, 0,
- 0, 4, 5, 6, 0, 7, 8, 147, 0, 147,
- 164, 0, 0, 164, 164, 164, 0, 164, 106, 164,
- 164, 106, 164, 149, 142, 143, 144, 145, 0, 150,
- 151, 152, 153, 0, 0, 106, 106, 0, 0, 147,
- 106, 164, 163, 156, 157, 158, 159, 160, 161, 146,
- 147, 162, 111, 0, 163, 164, 165, 0, 0, 0,
- 123, 0, 0, 0, 0, 0, 0, 0, 0, 52,
- 106, 0, 62, 64, 50, 0, 57, 0, 65, 60,
- 91, 59, 0, 0, 0, 0, 0, 0, 268, 0,
- 0, 0, 0, 0, 0, 58, 0, 113, 114, 111,
- 63, 0, 0, 164, 122, 0, 150, 151, 152, 153,
- 319, 320, 321, 0, 323, 0, 135, 136, 137, 138,
- 97, 0, 198, 97, 160, 161, 0, 61, 162, 0,
- 111, 163, 164, 165, 0, 0, 0, 97, 97, 339,
- 0, 0, 97, 0, 0, 161, 341, 0, 162, 0,
- 343, 163, 164, 165, 0, 0, 0, 0, 0, 23,
- 197, 0, 53, 351, 352, 0, 0, 0, 0, 0,
- 0, 0, 97, 163, 163, 163, 163, 163, 0, 163,
- 163, 163, 0, 0, 0, 163, 0, 111, 147, 147,
- 147, 147, 111, 0, 0, 0, 163, 147, 163, 163,
- 163, 163, 163, 147, 147, 147, 147, 163, 163, 163,
- 163, 163, 163, 147, 147, 163, 147, 147, 147, 147,
- 147, 147, 147, 0, 163, 147, 163, 163, 147, 147,
- 147, 0, 0, 0, 164, 164, 164, 164, 164, 0,
- 164, 164, 164, 0, 0, 0, 164, 0, 0, 106,
- 106, 106, 106, 0, 0, 0, 0, 164, 106, 164,
- 164, 164, 164, 164, 106, 106, 106, 106, 164, 164,
- 164, 164, 164, 164, 106, 106, 164, 106, 106, 106,
- 106, 106, 106, 106, 0, 164, 106, 164, 164, 106,
- 106, 106, 22, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 0, 0, 0, 32, 0, 0, 33, 34,
- 35, 36, 0, 0, 0, 37, 38, 0, 39, 40,
- 41, 42, 43, 0, 0, 0, 166, 44, 45, 46,
- 47, 48, 49, 43, 0, 51, 43, 43, 43, 0,
- 43, 0, 43, 43, 54, 43, 55, 56, 0, 0,
- 0, 97, 97, 97, 97, 0, 0, 0, 148, 43,
- 97, 0, 0, 0, 43, 0, 97, 97, 97, 97,
- 0, 0, 0, 0, 0, 0, 97, 97, 0, 97,
- 97, 97, 97, 97, 97, 97, 0, 0, 97, 52,
- 0, 43, 62, 64, 50, 0, 57, 0, 65, 60,
- 0, 59, 0, 0, 0, 0, 67, 0, 0, 0,
- 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 43, 0, 0, 43, 0, 0, 0,
- 0, 0, 0, 0, 0, 107, 0, 0, 116, 166,
- 0, 0, 0, 0, 0, 52, 0, 61, 62, 64,
- 50, 0, 57, 0, 65, 60, 0, 59, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 148, 0, 175, 0, 0, 63, 0, 0, 23,
- 0, 0, 53, 0, 0, 0, 0, 183, 0, 0,
+ 20, 85, 62, 62, 85, 207, 62, 203, 167, 180,
+ 102, 339, 169, 206, 80, 268, 201, 112, 85, 85,
+ 250, 82, 245, 85, 271, 124, 293, 57, 306, 122,
+ 307, 171, 121, 15, 334, 335, 167, 84, 18, 341,
+ 149, 308, 357, 131, 168, 147, 148, 135, 38, 272,
+ 93, 15, 97, 85, 98, 349, 18, 141, 233, 352,
+ 172, 67, 16, 170, 17, 112, 38, 169, 149, 99,
+ 186, 187, 188, 189, 190, 191, 282, 37, 25, 67,
+ 16, 288, 17, 290, 100, 292, 23, 313, 199, 23,
+ 231, 57, 195, 196, 305, 37, 112, 336, 337, 168,
+ 174, 39, 143, 144, 145, 146, 105, 106, 175, 107,
+ 177, 25, 173, 67, 25, 25, 25, 23, 25, 15,
+ 25, 25, 179, 25, 315, 287, 326, 147, 148, 209,
+ 210, 212, 213, 214, 215, 216, 182, 25, 192, 4,
+ 5, 6, 25, 7, 8, 193, 200, 205, 248, 62,
+ 289, 273, 20, 236, 237, 238, 239, 240, 241, 243,
+ 202, 291, 279, 309, 281, 270, 148, 286, 196, 25,
+ 351, 295, 255, 210, 298, 210, 299, 265, 314, 300,
+ 330, 301, 167, 302, 274, 20, 276, 278, 20, 20,
+ 20, 280, 20, 304, 20, 20, 303, 20, 19, 311,
+ 316, 25, 317, 25, 25, 318, 319, 321, 329, 147,
+ 148, 20, 332, 331, 149, 340, 20, 284, 342, 285,
+ 353, 70, 112, 87, 70, 232, 163, 112, 88, 164,
+ 165, 166, 85, 85, 85, 85, 354, 141, 70, 70,
+ 141, 85, 346, 20, 51, 147, 148, 85, 85, 251,
+ 85, 57, 252, 158, 141, 141, 344, 85, 85, 166,
+ 85, 85, 85, 85, 85, 85, 101, 310, 2, 147,
+ 148, 156, 196, 70, 36, 20, 34, 20, 20, 159,
+ 147, 148, 147, 148, 147, 148, 147, 148, 156, 141,
+ 255, 39, 67, 67, 67, 67, 36, 147, 148, 167,
+ 34, 43, 147, 148, 43, 43, 43, 21, 43, 96,
+ 43, 43, 211, 43, 147, 148, 77, 67, 67, 147,
+ 148, 147, 148, 147, 148, 147, 148, 43, 69, 147,
+ 148, 149, 43, 348, 25, 25, 25, 25, 25, 25,
+ 262, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+ 25, 25, 25, 25, 147, 148, 328, 25, 25, 43,
+ 25, 25, 25, 25, 25, 147, 148, 147, 148, 25,
+ 25, 25, 25, 25, 25, 167, 185, 25, 82, 320,
+ 153, 82, 147, 148, 147, 148, 25, 0, 25, 25,
+ 0, 43, 0, 0, 43, 82, 82, 162, 0, 0,
+ 163, 156, 0, 164, 165, 166, 0, 149, 20, 20,
+ 20, 20, 20, 20, 0, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 0, 167,
+ 82, 20, 20, 0, 20, 20, 20, 20, 20, 0,
+ 0, 0, 0, 20, 20, 20, 20, 20, 20, 0,
+ 0, 20, 70, 70, 70, 70, 0, 0, 0, 167,
+ 20, 149, 20, 20, 0, 0, 0, 0, 141, 141,
+ 141, 141, 167, 0, 181, 0, 170, 70, 70, 170,
+ 170, 170, 0, 170, 154, 170, 170, 154, 170, 150,
+ 0, 149, 0, 141, 141, 151, 152, 153, 154, 0,
+ 0, 154, 154, 0, 149, 204, 154, 170, 155, 157,
+ 158, 159, 160, 161, 162, 0, 0, 163, 0, 0,
+ 164, 165, 166, 0, 43, 43, 43, 43, 43, 43,
+ 0, 43, 43, 43, 154, 0, 154, 43, 0, 0,
+ 43, 43, 43, 43, 0, 0, 0, 43, 43, 0,
+ 43, 43, 43, 43, 43, 0, 0, 0, 0, 43,
+ 43, 43, 43, 43, 43, 66, 154, 43, 66, 170,
+ 0, 0, 167, 153, 154, 0, 43, 171, 43, 43,
+ 171, 171, 171, 66, 171, 113, 171, 171, 113, 171,
+ 162, 0, 0, 163, 0, 0, 164, 165, 166, 0,
+ 0, 0, 113, 113, 149, 0, 0, 113, 171, 82,
+ 82, 82, 82, 0, 0, 0, 0, 66, 0, 150,
+ 0, 0, 0, 0, 0, 151, 152, 153, 154, 0,
+ 0, 294, 0, 0, 82, 82, 297, 113, 155, 157,
+ 158, 159, 160, 161, 162, 0, 103, 163, 0, 103,
+ 164, 165, 166, 0, 0, 151, 152, 153, 154, 0,
+ 0, 0, 0, 103, 103, 0, 0, 0, 103, 0,
+ 171, 159, 160, 161, 162, 0, 0, 163, 0, 0,
+ 164, 165, 166, 0, 0, 0, 0, 162, 0, 0,
+ 163, 0, 0, 164, 165, 166, 0, 0, 103, 0,
+ 170, 170, 170, 170, 170, 0, 170, 170, 170, 0,
+ 0, 0, 170, 0, 0, 154, 154, 154, 154, 0,
+ 0, 0, 0, 170, 154, 170, 170, 170, 170, 170,
+ 154, 154, 154, 154, 170, 170, 170, 170, 170, 170,
+ 154, 154, 170, 154, 154, 154, 154, 154, 154, 154,
+ 0, 170, 154, 170, 170, 154, 154, 154, 94, 0,
+ 0, 94, 0, 104, 0, 0, 104, 0, 151, 152,
+ 153, 154, 0, 0, 0, 94, 94, 0, 0, 0,
+ 104, 104, 0, 0, 0, 104, 161, 162, 0, 249,
+ 163, 0, 0, 164, 165, 166, 66, 66, 66, 66,
+ 0, 171, 171, 171, 171, 171, 0, 171, 171, 171,
+ 94, 0, 350, 171, 0, 104, 113, 113, 113, 113,
+ 0, 66, 0, 0, 171, 113, 171, 171, 171, 171,
+ 171, 113, 113, 113, 113, 171, 171, 171, 171, 171,
+ 171, 113, 113, 171, 113, 113, 113, 113, 113, 113,
+ 113, 0, 171, 113, 171, 171, 113, 113, 113, 52,
+ 0, 0, 62, 64, 50, 0, 57, 0, 65, 60,
+ 0, 59, 0, 0, 0, 0, 0, 103, 103, 103,
+ 103, 0, 0, 0, 0, 58, 103, 0, 0, 0,
+ 63, 0, 103, 103, 103, 103, 0, 0, 0, 0,
+ 0, 0, 103, 103, 67, 103, 103, 103, 103, 103,
+ 103, 103, 0, 0, 103, 43, 0, 61, 43, 43,
+ 43, 0, 43, 0, 43, 43, 92, 43, 0, 0,
+ 4, 5, 6, 108, 7, 8, 117, 0, 0, 0,
+ 0, 43, 0, 114, 115, 0, 43, 0, 0, 23,
+ 123, 0, 53, 4, 5, 6, 0, 7, 8, 0,
+ 0, 0, 136, 137, 138, 139, 0, 0, 0, 0,
+ 0, 52, 176, 43, 62, 64, 50, 0, 57, 0,
+ 65, 60, 0, 59, 0, 0, 184, 0, 0, 94,
+ 94, 94, 94, 0, 104, 104, 104, 104, 0, 0,
+ 0, 0, 63, 104, 0, 43, 0, 198, 43, 104,
+ 104, 104, 104, 0, 94, 94, 0, 94, 0, 104,
+ 104, 0, 104, 104, 104, 104, 104, 104, 104, 61,
+ 0, 104, 208, 0, 52, 0, 0, 62, 64, 50,
+ 0, 57, 0, 65, 60, 0, 59, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 61, 0, 0, 0, 0, 52, 0,
- 0, 62, 64, 50, 0, 57, 0, 65, 60, 0,
- 59, 0, 150, 0, 152, 153, 0, 0, 0, 0,
- 0, 0, 0, 207, 0, 23, 0, 0, 53, 63,
- 160, 161, 0, 0, 162, 0, 0, 163, 164, 165,
- 0, 0, 0, 0, 0, 0, 43, 43, 43, 43,
- 43, 43, 0, 43, 43, 43, 61, 0, 0, 43,
- 245, 0, 43, 43, 43, 43, 0, 252, 0, 43,
- 43, 0, 43, 43, 43, 43, 43, 0, 0, 0,
- 0, 43, 43, 43, 43, 43, 43, 166, 23, 43,
- 0, 53, 0, 0, 0, 0, 0, 0, 43, 249,
- 43, 43, 250, 109, 25, 26, 27, 28, 87, 29,
- 30, 31, 0, 0, 166, 32, 0, 0, 0, 148,
- 0, 155, 0, 0, 0, 0, 38, 152, 39, 40,
+ 0, 23, 0, 0, 53, 63, 0, 0, 0, 246,
+ 0, 0, 0, 0, 0, 0, 254, 0, 0, 0,
+ 0, 0, 22, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 61, 0, 0, 32, 0, 0, 33, 34,
+ 35, 36, 0, 0, 0, 37, 38, 0, 39, 40,
41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
- 47, 48, 49, 0, 161, 51, 148, 162, 0, 166,
- 163, 164, 165, 316, 54, 0, 55, 56, 0, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 0, 0, 0, 155, 0, 0, 0, 0,
- 0, 148, 38, 0, 39, 40, 41, 42, 43, 0,
+ 47, 48, 49, 0, 23, 51, 0, 53, 0, 0,
+ 0, 0, 0, 0, 54, 0, 55, 56, 43, 43,
+ 43, 43, 43, 43, 0, 43, 43, 43, 0, 0,
+ 167, 43, 0, 0, 43, 43, 43, 43, 0, 0,
+ 0, 43, 43, 0, 43, 43, 43, 43, 43, 0,
+ 0, 0, 0, 43, 43, 43, 43, 43, 43, 167,
+ 0, 43, 149, 0, 0, 0, 0, 0, 0, 0,
+ 43, 0, 43, 43, 0, 110, 25, 26, 27, 28,
+ 88, 29, 30, 31, 0, 52, 0, 32, 62, 64,
+ 50, 149, 57, 130, 65, 60, 0, 59, 38, 0,
+ 39, 40, 41, 42, 43, 0, 0, 0, 0, 44,
+ 45, 46, 47, 48, 49, 0, 63, 51, 0, 0,
+ 0, 0, 0, 0, 0, 0, 54, 0, 55, 56,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24, 25,
+ 26, 27, 28, 61, 29, 30, 31, 0, 52, 0,
+ 32, 62, 64, 50, 0, 57, 0, 65, 60, 0,
+ 59, 38, 0, 39, 40, 41, 42, 43, 0, 0,
+ 0, 0, 44, 45, 46, 47, 48, 49, 53, 63,
+ 51, 0, 323, 324, 325, 0, 327, 0, 0, 54,
+ 0, 55, 56, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 52, 0, 61, 62, 64, 50,
+ 0, 57, 343, 65, 60, 0, 59, 0, 0, 345,
+ 0, 0, 0, 347, 0, 0, 151, 152, 153, 154,
+ 120, 0, 0, 0, 0, 63, 355, 356, 23, 0,
+ 0, 53, 0, 160, 161, 162, 0, 0, 163, 0,
+ 0, 164, 165, 166, 0, 151, 0, 153, 154, 0,
+ 52, 0, 61, 62, 64, 50, 0, 57, 0, 65,
+ 60, 0, 59, 161, 162, 0, 0, 163, 0, 0,
+ 164, 165, 166, 0, 0, 0, 0, 0, 0, 0,
+ 0, 63, 0, 0, 0, 0, 0, 53, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 61, 52,
+ 134, 32, 62, 64, 50, 0, 57, 194, 65, 60,
+ 0, 59, 38, 0, 39, 40, 41, 42, 43, 0,
0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 0, 51, 0, 166, 0, 0, 0, 0, 0, 0,
- 54, 0, 55, 56, 0, 0, 0, 0, 0, 0,
- 0, 0, 115, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 148, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 38, 0, 39, 40, 41,
- 42, 43, 0, 0, 0, 166, 44, 45, 46, 47,
- 48, 49, 52, 0, 51, 62, 64, 50, 0, 57,
- 0, 65, 60, 54, 59, 55, 56, 0, 0, 0,
- 0, 0, 0, 150, 151, 152, 153, 148, 119, 0,
- 0, 0, 0, 63, 0, 0, 0, 156, 157, 158,
- 159, 160, 161, 0, 0, 162, 0, 0, 163, 164,
- 165, 0, 152, 153, 0, 0, 0, 0, 52, 0,
- 61, 62, 64, 50, 0, 57, 129, 65, 60, 161,
- 59, 0, 162, 0, 0, 163, 164, 165, 0, 149,
- 0, 0, 0, 0, 0, 150, 151, 152, 153, 63,
- 0, 0, 0, 0, 0, 53, 0, 0, 154, 156,
- 157, 158, 159, 160, 161, 0, 0, 162, 0, 0,
- 163, 164, 165, 0, 52, 0, 61, 62, 64, 50,
- 0, 57, 0, 65, 60, 0, 59, 0, 0, 0,
- 0, 0, 0, 149, 0, 0, 0, 0, 0, 150,
- 151, 152, 153, 0, 0, 63, 0, 0, 0, 0,
- 0, 53, 154, 156, 157, 158, 159, 160, 161, 0,
- 0, 162, 0, 0, 163, 164, 165, 0, 0, 0,
- 0, 0, 61, 52, 133, 0, 62, 64, 50, 0,
- 57, 193, 65, 60, 0, 59, 0, 0, 0, 0,
- 0, 150, 151, 152, 153, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 0, 0, 53, 159, 160,
- 161, 0, 0, 162, 0, 0, 163, 164, 165, 0,
- 0, 0, 80, 0, 0, 80, 24, 25, 26, 27,
- 28, 61, 29, 30, 31, 0, 0, 0, 32, 80,
- 80, 0, 0, 0, 80, 0, 0, 0, 0, 38,
- 0, 39, 40, 41, 42, 43, 0, 0, 0, 0,
- 44, 45, 46, 47, 48, 49, 53, 0, 51, 0,
- 0, 0, 0, 0, 80, 0, 0, 54, 81, 55,
- 56, 81, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 81, 81, 0, 0, 0,
- 81, 0, 0, 0, 0, 38, 0, 39, 40, 41,
+ 63, 51, 0, 53, 0, 0, 0, 0, 0, 0,
+ 54, 0, 55, 56, 0, 0, 0, 0, 87, 0,
+ 0, 87, 116, 25, 26, 27, 28, 61, 29, 30,
+ 31, 0, 0, 0, 32, 87, 87, 0, 0, 0,
+ 87, 0, 0, 0, 0, 38, 0, 39, 40, 41,
42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 0, 51, 0, 0, 0, 0, 0,
- 81, 0, 0, 54, 0, 55, 56, 0, 24, 25,
- 26, 27, 28, 0, 29, 30, 31, 0, 52, 0,
- 32, 62, 64, 50, 0, 57, 241, 65, 60, 0,
+ 48, 49, 53, 0, 51, 0, 0, 0, 0, 0,
+ 87, 0, 0, 54, 88, 55, 56, 88, 24, 25,
+ 26, 27, 28, 0, 29, 30, 31, 0, 0, 0,
+ 32, 88, 88, 0, 0, 0, 88, 0, 0, 0,
+ 0, 38, 0, 39, 40, 41, 42, 43, 0, 0,
+ 0, 0, 44, 45, 46, 47, 48, 49, 0, 0,
+ 51, 0, 0, 0, 0, 0, 88, 0, 0, 54,
+ 0, 55, 56, 0, 24, 25, 26, 27, 28, 0,
+ 29, 30, 31, 0, 52, 0, 32, 62, 64, 50,
+ 0, 57, 242, 65, 60, 0, 59, 38, 0, 39,
+ 40, 41, 42, 43, 0, 0, 0, 0, 44, 45,
+ 46, 47, 48, 49, 0, 63, 51, 0, 0, 0,
+ 0, 0, 0, 0, 0, 54, 0, 55, 56, 0,
+ 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 61, 52, 0, 32, 62, 64, 50, 0,
+ 57, 0, 65, 60, 0, 59, 38, 0, 39, 40,
+ 41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
+ 47, 48, 49, 0, 63, 51, 0, 53, 0, 0,
+ 0, 0, 0, 0, 54, 0, 55, 56, 0, 87,
+ 87, 87, 87, 0, 0, 0, 0, 0, 87, 52,
+ 0, 61, 62, 64, 50, 87, 57, 275, 65, 60,
+ 0, 59, 0, 0, 87, 87, 0, 87, 87, 87,
+ 87, 87, 0, 0, 0, 0, 0, 0, 0, 0,
+ 63, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+ 0, 0, 0, 0, 0, 88, 88, 88, 88, 0,
+ 0, 0, 0, 0, 88, 52, 0, 61, 62, 64,
+ 50, 0, 57, 277, 65, 60, 0, 59, 0, 0,
+ 88, 88, 0, 88, 88, 88, 88, 88, 0, 0,
+ 0, 0, 0, 0, 0, 0, 63, 0, 0, 0,
+ 0, 0, 53, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24, 25,
+ 26, 27, 28, 61, 29, 30, 31, 0, 52, 0,
+ 32, 62, 64, 50, 0, 57, 0, 65, 60, 0,
59, 38, 0, 39, 40, 41, 42, 43, 0, 0,
- 0, 0, 44, 45, 46, 47, 48, 49, 0, 63,
+ 0, 0, 44, 45, 46, 47, 48, 49, 53, 63,
51, 0, 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 55, 56, 0, 0, 0, 0, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 61, 52, 0, 32,
- 62, 64, 50, 0, 57, 0, 65, 60, 0, 59,
- 38, 0, 39, 40, 41, 42, 43, 0, 0, 0,
- 0, 44, 45, 46, 47, 48, 49, 0, 63, 51,
- 0, 53, 0, 0, 0, 0, 0, 0, 54, 0,
- 55, 56, 0, 80, 80, 80, 80, 0, 0, 0,
- 0, 0, 80, 52, 0, 61, 62, 64, 50, 80,
- 57, 273, 65, 60, 0, 59, 0, 0, 80, 80,
- 0, 80, 80, 80, 80, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 81,
- 81, 81, 81, 0, 0, 0, 0, 0, 81, 52,
- 0, 61, 62, 64, 50, 0, 57, 275, 65, 60,
- 0, 59, 0, 0, 81, 81, 0, 81, 81, 81,
- 81, 81, 0, 0, 0, 0, 0, 0, 0, 0,
- 63, 0, 0, 0, 0, 0, 53, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 24, 25, 26, 27, 28, 61, 29, 30,
- 31, 0, 52, 0, 32, 62, 64, 50, 0, 57,
- 0, 65, 60, 0, 59, 38, 0, 39, 40, 41,
- 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 53, 63, 51, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 55, 56, 0, 0, 0,
- 22, 24, 25, 26, 27, 28, 0, 29, 30, 31,
- 61, 0, 0, 32, 87, 0, 0, 87, 0, 0,
- 0, 0, 0, 0, 38, 0, 39, 40, 41, 42,
- 43, 87, 87, 0, 0, 44, 45, 46, 47, 48,
- 49, 166, 0, 51, 0, 53, 0, 0, 0, 0,
- 140, 0, 54, 140, 55, 56, 0, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 87, 140, 140, 32,
- 0, 0, 140, 148, 0, 0, 0, 0, 0, 0,
- 38, 0, 39, 40, 41, 42, 43, 0, 0, 0,
- 0, 44, 45, 46, 47, 48, 49, 0, 0, 51,
- 140, 0, 140, 0, 0, 0, 0, 0, 54, 123,
- 55, 56, 123, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 0, 0, 0, 32, 123, 123, 0, 0,
- 0, 123, 140, 0, 0, 0, 38, 0, 39, 40,
+ 0, 55, 56, 0, 0, 0, 22, 24, 25, 26,
+ 27, 28, 0, 29, 30, 31, 61, 0, 0, 32,
+ 69, 0, 0, 69, 0, 0, 0, 0, 0, 0,
+ 38, 0, 39, 40, 41, 42, 43, 69, 69, 0,
+ 0, 44, 45, 46, 47, 48, 49, 167, 0, 51,
+ 0, 53, 0, 0, 0, 0, 147, 0, 54, 147,
+ 55, 56, 0, 24, 25, 26, 27, 28, 0, 29,
+ 30, 31, 69, 147, 147, 32, 0, 0, 147, 149,
+ 0, 0, 0, 0, 0, 0, 38, 0, 39, 40,
41, 42, 43, 0, 0, 0, 0, 44, 45, 46,
- 47, 48, 49, 0, 0, 51, 0, 0, 0, 123,
- 0, 123, 0, 0, 54, 0, 55, 56, 0, 0,
- 0, 0, 147, 0, 0, 147, 24, 25, 26, 27,
- 28, 0, 29, 30, 31, 0, 0, 0, 32, 147,
- 147, 123, 0, 0, 147, 0, 0, 0, 0, 38,
- 0, 39, 40, 41, 42, 43, 0, 0, 0, 0,
- 44, 45, 46, 47, 48, 49, 0, 0, 51, 0,
- 133, 0, 147, 133, 147, 0, 0, 54, 0, 55,
- 56, 0, 0, 0, 0, 0, 0, 133, 133, 152,
- 153, 0, 133, 0, 0, 87, 87, 87, 87, 0,
- 0, 0, 0, 0, 147, 160, 161, 0, 0, 162,
- 0, 0, 163, 164, 165, 0, 0, 0, 0, 0,
- 87, 87, 133, 87, 0, 0, 0, 0, 0, 0,
- 0, 140, 140, 140, 140, 0, 108, 0, 0, 108,
- 140, 0, 0, 0, 0, 0, 140, 140, 140, 140,
- 0, 0, 133, 108, 108, 0, 140, 140, 108, 140,
- 140, 140, 140, 140, 140, 140, 0, 0, 140, 0,
- 0, 140, 140, 140, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 108, 0, 108, 0,
- 123, 123, 123, 123, 0, 149, 0, 0, 149, 123,
- 0, 0, 0, 0, 0, 123, 123, 123, 123, 0,
- 0, 0, 149, 149, 0, 123, 123, 149, 123, 123,
- 123, 123, 123, 123, 123, 0, 0, 123, 0, 0,
- 123, 123, 123, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 149, 0, 0,
- 0, 0, 0, 147, 147, 147, 147, 0, 0, 0,
- 0, 0, 147, 0, 0, 0, 0, 0, 147, 147,
- 147, 147, 0, 0, 0, 0, 0, 149, 147, 147,
- 0, 147, 147, 147, 147, 147, 147, 147, 0, 0,
- 147, 0, 0, 147, 147, 147, 0, 0, 0, 0,
- 0, 133, 133, 133, 133, 0, 150, 0, 0, 0,
- 133, 0, 0, 0, 0, 0, 133, 133, 133, 133,
- 0, 0, 0, 150, 150, 0, 133, 133, 150, 133,
- 133, 133, 133, 133, 133, 133, 0, 0, 133, 0,
- 0, 133, 133, 133, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 150, 0, 150, 0,
- 0, 0, 0, 0, 0, 0, 0, 108, 108, 108,
- 108, 0, 0, 0, 0, 0, 108, 0, 0, 0,
- 0, 0, 108, 108, 108, 108, 0, 0, 150, 0,
- 0, 0, 108, 108, 0, 108, 108, 108, 108, 108,
- 108, 108, 0, 0, 108, 0, 0, 108, 108, 108,
+ 47, 48, 49, 0, 0, 51, 147, 0, 147, 0,
+ 0, 0, 0, 0, 54, 130, 55, 56, 130, 24,
+ 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
+ 0, 32, 130, 130, 0, 0, 0, 130, 147, 0,
+ 0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
+ 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
+ 0, 51, 0, 0, 0, 130, 0, 130, 0, 0,
+ 54, 0, 55, 56, 0, 0, 0, 0, 154, 0,
+ 0, 154, 24, 25, 26, 27, 28, 0, 29, 30,
+ 31, 0, 0, 0, 32, 154, 154, 130, 0, 0,
+ 154, 0, 0, 0, 0, 38, 0, 39, 40, 41,
+ 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
+ 48, 49, 0, 0, 51, 0, 140, 0, 154, 140,
+ 154, 0, 0, 54, 0, 55, 56, 0, 0, 0,
+ 0, 0, 0, 140, 140, 153, 154, 0, 140, 0,
+ 0, 69, 69, 69, 69, 0, 0, 0, 0, 0,
+ 154, 161, 162, 0, 0, 163, 0, 0, 164, 165,
+ 166, 0, 0, 0, 0, 0, 69, 69, 140, 0,
+ 0, 0, 0, 0, 0, 0, 0, 147, 147, 147,
+ 147, 0, 115, 0, 0, 115, 147, 0, 0, 0,
+ 0, 0, 147, 147, 147, 147, 0, 0, 140, 115,
+ 115, 0, 147, 147, 115, 147, 147, 147, 147, 147,
+ 147, 147, 0, 0, 147, 0, 0, 147, 147, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 115, 0, 115, 0, 130, 130, 130, 130,
+ 0, 156, 0, 0, 156, 130, 0, 0, 0, 0,
+ 0, 130, 130, 130, 130, 0, 0, 0, 156, 156,
+ 0, 130, 130, 156, 130, 130, 130, 130, 130, 130,
+ 130, 0, 0, 130, 0, 0, 130, 130, 130, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 156, 0, 0, 0, 0, 0, 154,
+ 154, 154, 154, 0, 0, 0, 0, 0, 154, 0,
+ 0, 0, 0, 0, 154, 154, 154, 154, 0, 0,
+ 0, 0, 0, 156, 154, 154, 0, 154, 154, 154,
+ 154, 154, 154, 154, 0, 0, 154, 0, 0, 154,
+ 154, 154, 0, 0, 0, 0, 0, 140, 140, 140,
+ 140, 0, 157, 0, 0, 0, 140, 0, 0, 0,
+ 0, 0, 140, 140, 140, 140, 0, 0, 0, 157,
+ 157, 0, 140, 140, 157, 140, 140, 140, 140, 140,
+ 140, 140, 0, 0, 140, 0, 0, 140, 140, 140,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 149, 149, 149, 149,
- 0, 135, 0, 0, 0, 149, 0, 0, 0, 0,
- 0, 149, 149, 149, 149, 0, 0, 0, 135, 135,
- 0, 149, 149, 135, 149, 149, 149, 149, 149, 149,
- 149, 0, 0, 149, 0, 0, 149, 149, 149, 0,
- 89, 89, 0, 0, 100, 0, 0, 100, 0, 0,
- 0, 135, 102, 135, 86, 0, 0, 86, 110, 89,
- 118, 100, 100, 0, 0, 89, 100, 0, 0, 0,
- 0, 86, 86, 0, 0, 0, 86, 89, 89, 89,
- 89, 0, 0, 135, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 100, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 86, 150, 150, 150,
- 150, 0, 62, 0, 0, 62, 150, 0, 0, 0,
- 0, 110, 150, 150, 150, 150, 100, 0, 0, 62,
- 62, 0, 150, 150, 62, 150, 150, 150, 150, 150,
- 150, 150, 0, 0, 150, 0, 0, 150, 150, 150,
- 0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0, 0, 0, 0, 0,
- 0, 0, 65, 65, 0, 0, 0, 65, 0, 0,
- 233, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0, 0, 0, 0, 99,
- 0, 0, 99, 0, 261, 65, 0, 65, 0, 0,
- 0, 0, 0, 0, 0, 0, 99, 99, 0, 0,
- 0, 99, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 135, 135, 135, 135, 0, 65, 0, 0,
- 0, 135, 0, 0, 0, 0, 0, 135, 135, 135,
- 135, 99, 0, 0, 0, 0, 0, 135, 135, 0,
- 135, 135, 135, 135, 135, 135, 135, 0, 0, 135,
- 0, 0, 135, 135, 135, 100, 100, 100, 100, 0,
- 136, 99, 0, 136, 100, 86, 86, 86, 86, 0,
- 100, 100, 100, 100, 86, 0, 0, 136, 136, 0,
- 100, 100, 136, 100, 100, 100, 100, 100, 100, 100,
- 86, 86, 100, 86, 86, 100, 100, 100, 0, 0,
+ 0, 0, 157, 0, 157, 0, 0, 0, 0, 0,
+ 0, 0, 0, 115, 115, 115, 115, 0, 0, 0,
+ 0, 0, 115, 0, 0, 0, 0, 0, 115, 115,
+ 115, 115, 0, 0, 157, 0, 0, 0, 115, 115,
+ 0, 115, 115, 115, 115, 115, 115, 115, 0, 0,
+ 115, 0, 0, 115, 115, 115, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 136, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 62, 62, 62, 62, 0, 149, 0,
- 0, 149, 62, 0, 0, 0, 0, 0, 62, 62,
- 62, 62, 0, 0, 0, 149, 149, 0, 62, 62,
- 149, 62, 62, 62, 62, 62, 62, 62, 0, 0,
- 62, 0, 0, 62, 62, 62, 65, 65, 65, 65,
- 0, 106, 0, 0, 106, 65, 0, 0, 0, 0,
- 149, 65, 65, 65, 65, 0, 0, 0, 106, 106,
- 0, 65, 65, 106, 65, 65, 65, 65, 65, 65,
- 65, 0, 0, 65, 0, 0, 65, 65, 65, 0,
- 99, 99, 99, 99, 0, 113, 0, 0, 113, 99,
- 0, 0, 0, 106, 0, 99, 99, 99, 99, 0,
- 0, 0, 113, 113, 0, 99, 99, 113, 99, 99,
- 99, 99, 99, 99, 99, 0, 0, 99, 0, 0,
- 99, 99, 99, 0, 0, 0, 0, 0, 91, 0,
- 0, 91, 0, 0, 0, 0, 0, 113, 0, 0,
- 0, 0, 0, 0, 0, 91, 91, 0, 0, 0,
- 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 136, 136, 136, 136, 0, 92, 0, 0, 92,
- 136, 0, 0, 0, 0, 0, 136, 136, 136, 136,
- 91, 0, 0, 92, 92, 0, 136, 136, 92, 136,
- 136, 136, 136, 136, 136, 136, 0, 0, 136, 0,
- 0, 136, 136, 136, 93, 0, 0, 93, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 92, 0,
- 0, 93, 93, 0, 0, 0, 93, 0, 0, 149,
- 149, 149, 149, 0, 0, 0, 0, 0, 149, 0,
- 0, 0, 0, 0, 149, 149, 149, 149, 0, 0,
- 0, 0, 0, 0, 149, 149, 93, 149, 149, 149,
- 149, 149, 149, 149, 0, 0, 149, 0, 0, 149,
- 149, 149, 106, 106, 106, 106, 0, 89, 0, 0,
- 89, 106, 0, 0, 0, 0, 0, 106, 106, 106,
- 106, 0, 0, 0, 89, 89, 0, 106, 106, 89,
- 106, 106, 106, 106, 106, 106, 106, 0, 0, 106,
- 0, 0, 106, 106, 106, 0, 113, 113, 113, 113,
- 0, 90, 0, 0, 90, 113, 0, 0, 0, 89,
- 0, 113, 113, 113, 113, 0, 0, 0, 90, 90,
- 0, 113, 113, 90, 113, 113, 113, 113, 113, 113,
- 113, 0, 0, 113, 0, 0, 113, 113, 113, 91,
- 91, 91, 91, 0, 88, 0, 0, 88, 91, 0,
- 0, 0, 0, 90, 91, 91, 91, 91, 0, 0,
- 0, 88, 88, 0, 91, 91, 88, 91, 91, 91,
- 91, 91, 91, 91, 0, 0, 0, 92, 92, 92,
- 92, 0, 76, 0, 0, 76, 92, 0, 0, 0,
- 0, 0, 92, 92, 92, 92, 88, 0, 0, 76,
- 76, 0, 92, 92, 76, 92, 92, 92, 92, 92,
- 92, 92, 0, 0, 0, 93, 93, 93, 93, 0,
- 77, 0, 0, 77, 93, 0, 0, 0, 0, 0,
- 93, 93, 93, 93, 76, 0, 0, 77, 77, 0,
- 93, 93, 77, 93, 93, 93, 93, 93, 93, 93,
- 0, 0, 0, 0, 0, 0, 78, 0, 0, 78,
+ 0, 0, 156, 156, 156, 156, 0, 142, 0, 0,
+ 0, 156, 0, 0, 0, 0, 0, 156, 156, 156,
+ 156, 0, 0, 0, 142, 142, 0, 156, 156, 142,
+ 156, 156, 156, 156, 156, 156, 156, 0, 0, 156,
+ 0, 0, 156, 156, 156, 0, 0, 0, 0, 0,
+ 107, 0, 0, 107, 0, 0, 0, 142, 0, 142,
+ 93, 0, 0, 93, 0, 0, 0, 107, 107, 0,
+ 0, 0, 107, 0, 0, 0, 0, 93, 93, 0,
+ 0, 0, 93, 0, 0, 0, 0, 0, 0, 142,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 78, 78, 0, 0, 0, 78, 0,
+ 0, 0, 107, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 93, 157, 157, 157, 157, 0, 68, 0,
+ 0, 68, 157, 0, 0, 0, 0, 0, 157, 157,
+ 157, 157, 107, 0, 0, 68, 68, 0, 157, 157,
+ 68, 157, 157, 157, 157, 157, 157, 157, 0, 0,
+ 157, 0, 0, 157, 157, 157, 0, 0, 0, 0,
+ 0, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 0, 0, 0, 0, 71, 71,
+ 0, 0, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 68, 0, 0, 0, 0, 106, 0, 0, 106, 0,
+ 0, 71, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 0, 106, 106, 0, 0, 0, 106, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 142, 142,
+ 142, 142, 0, 71, 0, 0, 0, 142, 0, 0,
+ 0, 0, 0, 142, 142, 142, 142, 106, 0, 0,
+ 0, 0, 0, 142, 142, 0, 142, 142, 142, 142,
+ 142, 142, 142, 0, 0, 142, 0, 0, 142, 142,
+ 142, 107, 107, 107, 107, 0, 143, 106, 0, 143,
+ 107, 93, 93, 93, 93, 0, 107, 107, 107, 107,
+ 93, 0, 0, 143, 143, 0, 107, 107, 143, 107,
+ 107, 107, 107, 107, 107, 107, 93, 93, 107, 93,
+ 93, 107, 107, 107, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 143, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
+ 68, 68, 68, 0, 156, 0, 0, 156, 68, 0,
+ 0, 0, 0, 0, 68, 68, 68, 68, 0, 0,
+ 0, 156, 156, 0, 68, 68, 156, 68, 68, 68,
+ 68, 68, 68, 68, 0, 0, 68, 0, 0, 68,
+ 68, 68, 71, 71, 71, 71, 0, 113, 0, 0,
+ 113, 71, 0, 0, 0, 0, 156, 71, 71, 71,
+ 71, 0, 0, 0, 113, 113, 0, 71, 71, 113,
+ 71, 71, 71, 71, 71, 71, 71, 0, 0, 71,
+ 0, 0, 71, 71, 71, 0, 106, 106, 106, 106,
+ 0, 120, 0, 0, 120, 106, 0, 0, 0, 113,
+ 0, 106, 106, 106, 106, 0, 0, 0, 120, 120,
+ 0, 106, 106, 120, 106, 106, 106, 106, 106, 106,
+ 106, 0, 0, 106, 0, 0, 106, 106, 106, 0,
+ 0, 0, 0, 0, 98, 0, 0, 98, 0, 0,
+ 0, 0, 0, 120, 0, 0, 0, 0, 0, 0,
+ 0, 98, 98, 0, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 143, 143, 143,
+ 143, 0, 99, 0, 0, 99, 143, 0, 0, 0,
+ 0, 0, 143, 143, 143, 143, 98, 0, 0, 99,
+ 99, 0, 143, 143, 99, 143, 143, 143, 143, 143,
+ 143, 143, 0, 0, 143, 0, 0, 143, 143, 143,
+ 100, 0, 0, 100, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 99, 0, 0, 100, 100, 0,
+ 0, 0, 100, 0, 0, 156, 156, 156, 156, 0,
+ 0, 0, 0, 0, 156, 0, 0, 0, 0, 0,
+ 156, 156, 156, 156, 0, 0, 0, 0, 0, 0,
+ 156, 156, 100, 156, 156, 156, 156, 156, 156, 156,
+ 0, 0, 156, 0, 0, 156, 156, 156, 113, 113,
+ 113, 113, 0, 96, 0, 0, 96, 113, 0, 0,
+ 0, 0, 0, 113, 113, 113, 113, 0, 0, 0,
+ 96, 96, 0, 113, 113, 96, 113, 113, 113, 113,
+ 113, 113, 113, 0, 0, 113, 0, 0, 113, 113,
+ 113, 0, 120, 120, 120, 120, 0, 97, 0, 0,
+ 97, 120, 0, 0, 0, 96, 0, 120, 120, 120,
+ 120, 0, 0, 0, 97, 97, 0, 120, 120, 97,
+ 120, 120, 120, 120, 120, 120, 120, 0, 0, 120,
+ 0, 0, 120, 120, 120, 98, 98, 98, 98, 0,
+ 95, 0, 0, 95, 98, 0, 0, 0, 0, 97,
+ 98, 98, 98, 98, 0, 0, 0, 95, 95, 0,
+ 98, 98, 95, 98, 98, 98, 98, 98, 98, 98,
+ 0, 0, 0, 99, 99, 99, 99, 0, 83, 0,
+ 0, 83, 99, 0, 0, 0, 0, 0, 99, 99,
+ 99, 99, 95, 0, 0, 83, 83, 0, 99, 99,
+ 83, 99, 99, 99, 99, 99, 99, 99, 0, 0,
+ 0, 100, 100, 100, 100, 0, 84, 0, 0, 84,
+ 100, 0, 0, 0, 0, 0, 100, 100, 100, 100,
+ 83, 0, 0, 84, 84, 0, 100, 100, 84, 100,
+ 100, 100, 100, 100, 100, 100, 0, 0, 0, 0,
+ 0, 0, 86, 0, 0, 86, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 86,
+ 86, 0, 0, 0, 86, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 96, 96, 96, 96, 0, 146,
+ 0, 0, 146, 96, 0, 0, 0, 0, 0, 96,
+ 96, 96, 96, 0, 86, 0, 146, 146, 0, 96,
+ 96, 146, 96, 96, 96, 96, 96, 96, 96, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 97, 97,
+ 97, 97, 0, 145, 0, 0, 145, 97, 0, 0,
+ 0, 146, 0, 97, 97, 97, 97, 0, 0, 0,
+ 145, 145, 0, 97, 97, 145, 97, 97, 97, 97,
+ 97, 97, 97, 0, 0, 0, 0, 0, 0, 0,
+ 0, 95, 95, 95, 95, 0, 134, 0, 0, 134,
+ 95, 0, 0, 0, 0, 145, 95, 95, 95, 95,
+ 0, 0, 0, 134, 134, 0, 95, 95, 134, 95,
+ 95, 95, 95, 95, 95, 95, 0, 0, 0, 83,
+ 83, 83, 83, 0, 105, 0, 0, 105, 83, 0,
+ 0, 0, 0, 0, 83, 83, 83, 83, 134, 0,
+ 0, 105, 105, 0, 83, 83, 105, 83, 83, 83,
+ 83, 83, 83, 83, 0, 0, 0, 84, 84, 84,
+ 84, 0, 89, 0, 0, 89, 84, 0, 0, 0,
+ 0, 0, 84, 84, 84, 84, 105, 0, 0, 89,
+ 89, 0, 84, 84, 89, 84, 84, 84, 84, 84,
+ 84, 0, 0, 86, 86, 86, 86, 0, 90, 0,
+ 0, 90, 86, 0, 0, 0, 0, 0, 86, 86,
+ 0, 0, 0, 0, 89, 90, 90, 0, 86, 86,
+ 90, 86, 86, 86, 86, 86, 86, 0, 0, 0,
+ 146, 146, 146, 146, 0, 92, 0, 0, 92, 146,
+ 0, 0, 0, 0, 0, 146, 146, 0, 0, 0,
+ 90, 0, 92, 92, 0, 146, 146, 92, 146, 146,
+ 146, 146, 146, 0, 0, 0, 167, 0, 0, 0,
+ 0, 0, 0, 0, 145, 145, 145, 145, 0, 91,
+ 156, 0, 91, 145, 0, 0, 0, 92, 0, 145,
+ 145, 0, 0, 0, 0, 0, 91, 91, 149, 145,
+ 145, 91, 145, 145, 145, 145, 145, 0, 167, 0,
+ 0, 283, 0, 0, 0, 0, 156, 134, 134, 134,
+ 134, 0, 0, 0, 0, 0, 134, 0, 0, 0,
+ 0, 91, 134, 134, 0, 0, 0, 0, 0, 0,
+ 149, 0, 134, 134, 167, 134, 134, 134, 134, 134,
+ 0, 0, 0, 0, 0, 105, 105, 105, 105, 0,
+ 0, 0, 0, 0, 105, 0, 0, 0, 0, 0,
+ 105, 105, 0, 0, 0, 156, 149, 0, 0, 0,
+ 105, 105, 0, 105, 105, 105, 105, 105, 0, 0,
+ 0, 0, 0, 89, 89, 89, 89, 0, 0, 0,
+ 0, 0, 89, 167, 0, 0, 0, 0, 90, 90,
0, 0, 0, 0, 0, 0, 0, 0, 89, 89,
- 89, 89, 0, 79, 0, 0, 79, 89, 0, 0,
- 0, 0, 0, 89, 89, 89, 89, 0, 78, 0,
- 79, 79, 0, 89, 89, 79, 89, 89, 89, 89,
- 89, 89, 89, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 90, 90, 90, 90, 0, 139, 0, 0,
- 139, 90, 0, 0, 0, 79, 0, 90, 90, 90,
- 90, 0, 0, 0, 139, 139, 0, 90, 90, 139,
- 90, 90, 90, 90, 90, 90, 90, 0, 0, 0,
- 0, 0, 0, 0, 0, 88, 88, 88, 88, 0,
- 138, 0, 0, 138, 88, 0, 0, 0, 0, 139,
- 88, 88, 88, 88, 0, 0, 0, 138, 138, 0,
- 88, 88, 138, 88, 88, 88, 88, 88, 88, 88,
- 0, 0, 0, 76, 76, 76, 76, 0, 127, 0,
- 0, 127, 76, 0, 0, 0, 0, 0, 76, 76,
- 76, 76, 138, 0, 0, 127, 127, 0, 76, 76,
- 127, 76, 76, 76, 76, 76, 76, 76, 0, 0,
- 0, 77, 77, 77, 77, 0, 98, 0, 0, 98,
- 77, 0, 0, 0, 0, 0, 77, 77, 77, 77,
- 127, 0, 0, 98, 98, 0, 77, 77, 98, 77,
- 77, 77, 77, 77, 77, 0, 0, 78, 78, 78,
- 78, 0, 82, 0, 0, 82, 78, 0, 0, 0,
- 0, 0, 78, 78, 0, 78, 0, 0, 98, 82,
- 82, 0, 78, 78, 82, 78, 78, 78, 78, 78,
- 78, 0, 0, 0, 79, 79, 79, 79, 0, 83,
- 0, 0, 83, 79, 0, 0, 0, 0, 0, 79,
- 79, 0, 0, 0, 82, 0, 83, 83, 0, 79,
- 79, 83, 79, 79, 79, 79, 79, 79, 0, 0,
- 166, 0, 0, 0, 0, 0, 0, 0, 139, 139,
- 139, 139, 0, 85, 0, 0, 85, 139, 0, 0,
- 0, 83, 0, 139, 139, 0, 64, 0, 0, 64,
- 85, 85, 148, 139, 139, 85, 139, 139, 139, 139,
- 139, 0, 0, 64, 64, 134, 0, 0, 134, 0,
- 0, 138, 138, 138, 138, 75, 0, 0, 75, 0,
- 138, 0, 134, 134, 0, 85, 138, 138, 0, 0,
- 0, 0, 75, 75, 0, 0, 138, 138, 64, 138,
- 138, 138, 138, 138, 0, 63, 0, 0, 63, 127,
- 127, 127, 127, 0, 0, 0, 0, 134, 127, 0,
- 0, 0, 63, 63, 127, 127, 281, 75, 0, 0,
- 0, 155, 0, 0, 127, 127, 0, 127, 127, 127,
- 127, 127, 0, 0, 0, 0, 0, 98, 98, 98,
- 98, 0, 0, 0, 0, 0, 98, 63, 0, 166,
- 0, 0, 98, 98, 0, 155, 0, 0, 0, 0,
- 0, 0, 98, 98, 0, 98, 98, 98, 98, 98,
- 0, 0, 0, 82, 82, 82, 82, 0, 0, 0,
- 0, 148, 82, 166, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 82, 82,
- 0, 82, 82, 82, 82, 82, 150, 151, 152, 153,
- 83, 83, 83, 83, 0, 148, 0, 0, 0, 83,
- 0, 157, 158, 159, 160, 161, 0, 0, 162, 0,
- 0, 163, 164, 165, 166, 83, 83, 0, 83, 83,
- 83, 83, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 85, 85, 85, 85, 0, 0,
- 0, 0, 0, 85, 0, 0, 148, 64, 64, 64,
- 64, 0, 0, 0, 0, 0, 0, 0, 0, 85,
- 85, 0, 85, 85, 85, 0, 134, 134, 134, 134,
- 0, 0, 64, 64, 93, 0, 75, 75, 75, 75,
- 0, 0, 103, 0, 0, 0, 108, 0, 0, 117,
- 0, 134, 134, 0, 0, 0, 124, 125, 126, 127,
- 128, 75, 75, 131, 132, 0, 63, 63, 63, 63,
- 139, 0, 0, 0, 0, 0, 0, 0, 0, 149,
- 0, 0, 0, 0, 0, 150, 151, 152, 153, 0,
- 0, 63, 63, 0, 0, 0, 182, 0, 154, 156,
- 157, 158, 159, 160, 161, 0, 0, 162, 0, 0,
- 163, 164, 165, 149, 0, 0, 0, 0, 0, 150,
- 151, 152, 153, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 154, 156, 157, 158, 159, 160, 161, 0,
- 0, 162, 0, 0, 163, 164, 165, 0, 0, 0,
- 0, 0, 0, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 0, 0, 0,
- 150, 151, 152, 153, 0, 0, 0, 0, 243, 0,
- 0, 0, 0, 0, 0, 0, 158, 159, 160, 161,
- 0, 0, 162, 0, 0, 163, 164, 165, 0, 0,
+ 103, 89, 89, 89, 89, 89, 111, 90, 119, 90,
+ 90, 90, 90, 90, 0, 149, 0, 0, 90, 167,
+ 0, 0, 0, 0, 0, 90, 90, 90, 90, 0,
+ 0, 0, 0, 0, 90, 90, 0, 90, 90, 90,
+ 90, 0, 151, 152, 153, 154, 92, 92, 92, 92,
+ 0, 149, 0, 0, 0, 92, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 0, 0, 164, 165, 166,
+ 111, 92, 92, 0, 92, 92, 92, 0, 150, 0,
+ 0, 0, 0, 0, 151, 152, 153, 154, 0, 0,
+ 91, 91, 91, 91, 0, 0, 0, 155, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 0, 0, 164,
+ 165, 166, 0, 0, 150, 91, 91, 0, 91, 0,
+ 151, 152, 153, 154, 0, 0, 0, 0, 0, 234,
+ 0, 0, 0, 155, 157, 158, 159, 160, 161, 162,
+ 94, 0, 163, 0, 0, 164, 165, 166, 104, 0,
+ 0, 0, 109, 263, 0, 118, 0, 0, 0, 0,
+ 0, 0, 125, 126, 127, 128, 129, 0, 0, 132,
+ 133, 0, 0, 150, 0, 0, 140, 0, 0, 151,
+ 152, 153, 154, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 157, 158, 159, 160, 161, 162, 0,
+ 0, 163, 0, 183, 164, 165, 166, 0, 0, 0,
+ 0, 0, 0, 0, 0, 151, 152, 153, 154, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 158, 159, 160, 161, 162, 0, 0, 163, 0, 0,
+ 164, 165, 166, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 244, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 294, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 309,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 296, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 312,
};
dEXT short yycheck[] = { 13,
- 41, 36, 36, 85, 93, 91, 40, 59, 41, 93,
- 41, 44, 41, 59, 40, 44, 123, 93, 181, 59,
- 90, 93, 41, 91, 257, 41, 59, 36, 321, 58,
- 59, 41, 46, 93, 63, 91, 0, 123, 59, 190,
- 257, 318, 319, 57, 257, 41, 323, 61, 40, 59,
- 40, 121, 297, 298, 40, 123, 91, 41, 40, 352,
- 93, 40, 339, 59, 93, 91, 343, 123, 6, 33,
- 8, 123, 36, 37, 38, 59, 40, 40, 42, 43,
- 41, 45, 41, 123, 278, 41, 40, 44, 123, 41,
- 40, 105, 106, 31, 32, 59, 123, 123, 276, 277,
- 64, 41, 44, 59, 0, 41, 41, 59, 178, 93,
- 59, 40, 59, 183, 123, 59, 59, 268, 59, 59,
- 59, 284, 260, 59, 59, 123, 257, 91, 142, 143,
- 144, 145, 146, 147, 148, 40, 40, 33, 93, 41,
- 36, 37, 38, 59, 40, 40, 42, 43, 299, 45,
- 257, 125, 166, 167, 168, 169, 170, 171, 172, 123,
- 0, 125, 126, 59, 91, 36, 41, 181, 64, 91,
- 298, 185, 186, 40, 188, 59, 190, 125, 41, 41,
- 41, 41, 41, 197, 40, 199, 200, 93, 91, 41,
- 204, 342, 125, 33, 59, 91, 36, 37, 38, 125,
- 40, 125, 42, 43, 125, 45, 123, 41, 297, 298,
- 125, 257, 41, 297, 298, 41, 230, 59, 232, 59,
- 123, 297, 298, 258, 64, 297, 298, 123, 314, 125,
- 126, 41, 41, 40, 123, 44, 41, 297, 298, 272,
- 273, 274, 275, 272, 273, 274, 275, 329, 257, 58,
- 59, 91, 281, 262, 63, 41, 297, 298, 287, 288,
- 289, 290, 296, 59, 297, 279, 297, 298, 297, 298,
- 284, 300, 301, 302, 303, 304, 305, 306, 297, 298,
- 309, 297, 298, 123, 93, 41, 126, 301, 272, 273,
- 274, 275, 256, 257, 258, 259, 260, 261, 59, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 41, 297, 298, 279, 280, 41, 282, 283,
- 284, 285, 286, 59, 338, 63, 41, 291, 292, 293,
- 294, 295, 296, 13, 338, 299, 297, 298, 297, 298,
- 297, 298, 297, 298, 308, 143, 310, 311, 297, 298,
- 297, 298, 188, 91, 297, 298, 297, 298, 297, 298,
- 256, 257, 258, 259, 260, 261, 125, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 125, 297, 298, 279, 280, 123, 282, 283, 284, 285,
- 286, 297, 298, 301, 95, 291, 292, 293, 294, 295,
- 296, -1, -1, 299, -1, -1, 309, -1, -1, 312,
- 313, 314, 308, -1, 310, 311, 256, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
- 91, -1, 272, 273, 274, 275, -1, -1, -1, 279,
- 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
- 91, 291, 292, 293, 294, 295, 296, -1, -1, 299,
- -1, -1, 123, 272, 273, 274, 275, -1, 308, 33,
- 310, 311, 36, 37, 38, -1, 40, 41, 42, 43,
- 44, 45, 123, -1, -1, -1, -1, -1, 297, 298,
- -1, 300, -1, -1, 58, 59, -1, -1, -1, 63,
- 64, 266, 267, 268, -1, 270, 271, 266, 267, 268,
- -1, 270, 271, 96, 97, 98, 99, 100, 101, -1,
- -1, 266, 267, 268, -1, 270, 271, 91, -1, 93,
- 33, -1, -1, 36, 37, 38, -1, 40, 41, 42,
- 43, 44, 45, 281, 272, 273, 274, 275, -1, 287,
- 288, 289, 290, -1, -1, 58, 59, -1, -1, 123,
- 63, 64, 126, 301, 302, 303, 304, 305, 306, 297,
- 298, 309, 43, -1, 312, 313, 314, -1, -1, -1,
- 51, -1, -1, -1, -1, -1, -1, -1, -1, 33,
- 93, -1, 36, 37, 38, -1, 40, -1, 42, 43,
- 26, 45, -1, -1, -1, -1, -1, -1, 191, -1,
- -1, -1, -1, -1, -1, 59, -1, 43, 44, 90,
- 64, -1, -1, 126, 50, -1, 287, 288, 289, 290,
- 296, 297, 298, -1, 300, -1, 62, 63, 64, 65,
- 41, -1, 113, 44, 305, 306, -1, 91, 309, -1,
- 121, 312, 313, 314, -1, -1, -1, 58, 59, 325,
- -1, -1, 63, -1, -1, 306, 332, -1, 309, -1,
- 336, 312, 313, 314, -1, -1, -1, -1, -1, 123,
- 106, -1, 126, 349, 350, -1, -1, -1, -1, -1,
- -1, -1, 93, 257, 258, 259, 260, 261, -1, 263,
- 264, 265, -1, -1, -1, 269, -1, 178, 272, 273,
- 274, 275, 183, -1, -1, -1, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, -1, 308, 309, 310, 311, 312, 313,
- 314, -1, -1, -1, 257, 258, 259, 260, 261, -1,
- 263, 264, 265, -1, -1, -1, 269, -1, -1, 272,
- 273, 274, 275, -1, -1, -1, -1, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, -1, 308, 309, 310, 311, 312,
- 313, 314, 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, 91, 291, 292, 293,
- 294, 295, 296, 33, -1, 299, 36, 37, 38, -1,
- 40, -1, 42, 43, 308, 45, 310, 311, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 123, 59,
- 281, -1, -1, -1, 64, -1, 287, 288, 289, 290,
- -1, -1, -1, -1, -1, -1, 297, 298, -1, 300,
- 301, 302, 303, 304, 305, 306, -1, -1, 309, 33,
- -1, 91, 36, 37, 38, -1, 40, -1, 42, 43,
- -1, 45, -1, -1, -1, -1, 13, -1, -1, -1,
- 17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 64, -1, -1, 123, -1, -1, 126, -1, -1, -1,
- -1, -1, -1, -1, -1, 42, -1, -1, 45, 91,
- -1, -1, -1, -1, -1, 33, -1, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 123, -1, 80, -1, -1, 64, -1, -1, 123,
- -1, -1, 126, -1, -1, -1, -1, 94, -1, -1,
+ 59, 41, 36, 36, 44, 93, 36, 59, 91, 86,
+ 40, 325, 91, 41, 257, 191, 40, 43, 58, 59,
+ 182, 257, 59, 63, 41, 51, 41, 59, 41, 257,
+ 41, 91, 46, 41, 322, 323, 91, 59, 41, 327,
+ 123, 41, 356, 57, 123, 297, 298, 61, 41, 44,
+ 40, 59, 40, 93, 40, 343, 59, 278, 91, 347,
+ 123, 41, 41, 123, 41, 91, 59, 91, 123, 40,
+ 97, 98, 99, 100, 101, 102, 59, 41, 0, 59,
+ 59, 59, 59, 59, 40, 59, 123, 59, 114, 123,
+ 123, 123, 106, 107, 270, 59, 122, 276, 277, 123,
+ 59, 41, 272, 273, 274, 275, 40, 40, 44, 40,
+ 260, 33, 40, 93, 36, 37, 38, 123, 40, 59,
+ 42, 43, 257, 45, 286, 93, 302, 297, 298, 143,
+ 144, 145, 146, 147, 148, 149, 40, 59, 40, 266,
+ 267, 268, 64, 270, 271, 41, 40, 91, 257, 36,
+ 93, 41, 0, 167, 168, 169, 170, 171, 172, 173,
+ 125, 93, 125, 93, 91, 192, 298, 40, 182, 91,
+ 346, 41, 186, 187, 41, 189, 41, 191, 93, 41,
+ 93, 41, 91, 40, 198, 33, 200, 201, 36, 37,
+ 38, 205, 40, 59, 42, 43, 41, 45, 257, 125,
+ 125, 123, 125, 125, 126, 125, 59, 123, 41, 297,
+ 298, 59, 41, 125, 123, 41, 64, 231, 59, 233,
+ 41, 41, 248, 257, 44, 258, 309, 253, 262, 312,
+ 313, 314, 272, 273, 274, 275, 41, 41, 58, 59,
+ 44, 281, 40, 91, 123, 297, 298, 287, 288, 41,
+ 290, 123, 44, 41, 58, 59, 333, 297, 298, 314,
+ 300, 301, 302, 303, 304, 305, 296, 281, 0, 297,
+ 298, 63, 286, 93, 41, 123, 59, 125, 126, 41,
+ 297, 298, 297, 298, 297, 298, 297, 298, 59, 93,
+ 304, 41, 272, 273, 274, 275, 59, 297, 298, 91,
+ 41, 33, 297, 298, 36, 37, 38, 8, 40, 32,
+ 42, 43, 144, 45, 297, 298, 13, 297, 298, 297,
+ 298, 297, 298, 297, 298, 297, 298, 59, 342, 297,
+ 298, 123, 64, 342, 256, 257, 258, 259, 260, 261,
+ 189, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 297, 298, 304, 279, 280, 91,
+ 282, 283, 284, 285, 286, 297, 298, 297, 298, 291,
+ 292, 293, 294, 295, 296, 91, 96, 299, 41, 41,
+ 289, 44, 297, 298, 297, 298, 308, -1, 310, 311,
+ -1, 123, -1, -1, 126, 58, 59, 306, -1, -1,
+ 309, 63, -1, 312, 313, 314, -1, 123, 256, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, -1, 91,
+ 93, 279, 280, -1, 282, 283, 284, 285, 286, -1,
+ -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
+ -1, 299, 272, 273, 274, 275, -1, -1, -1, 91,
+ 308, 123, 310, 311, -1, -1, -1, -1, 272, 273,
+ 274, 275, 91, -1, 91, -1, 33, 297, 298, 36,
+ 37, 38, -1, 40, 41, 42, 43, 44, 45, 281,
+ -1, 123, -1, 297, 298, 287, 288, 289, 290, -1,
+ -1, 58, 59, -1, 123, 122, 63, 64, 300, 301,
+ 302, 303, 304, 305, 306, -1, -1, 309, -1, -1,
+ 312, 313, 314, -1, 256, 257, 258, 259, 260, 261,
+ -1, 263, 264, 265, 91, -1, 93, 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, 41, 123, 299, 44, 126,
+ -1, -1, 91, 289, 290, -1, 308, 33, 310, 311,
+ 36, 37, 38, 59, 40, 41, 42, 43, 44, 45,
+ 306, -1, -1, 309, -1, -1, 312, 313, 314, -1,
+ -1, -1, 58, 59, 123, -1, -1, 63, 64, 272,
+ 273, 274, 275, -1, -1, -1, -1, 93, -1, 281,
+ -1, -1, -1, -1, -1, 287, 288, 289, 290, -1,
+ -1, 248, -1, -1, 297, 298, 253, 93, 300, 301,
+ 302, 303, 304, 305, 306, -1, 41, 309, -1, 44,
+ 312, 313, 314, -1, -1, 287, 288, 289, 290, -1,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ 126, 303, 304, 305, 306, -1, -1, 309, -1, -1,
+ 312, 313, 314, -1, -1, -1, -1, 306, -1, -1,
+ 309, -1, -1, 312, 313, 314, -1, -1, 93, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, -1,
+ -1, -1, 269, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, -1, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ -1, 308, 309, 310, 311, 312, 313, 314, 41, -1,
+ -1, 44, -1, 41, -1, -1, 44, -1, 287, 288,
+ 289, 290, -1, -1, -1, 58, 59, -1, -1, -1,
+ 58, 59, -1, -1, -1, 63, 305, 306, -1, 125,
+ 309, -1, -1, 312, 313, 314, 272, 273, 274, 275,
+ -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
+ 93, -1, 125, 269, -1, 93, 272, 273, 274, 275,
+ -1, 297, -1, -1, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, -1, 308, 309, 310, 311, 312, 313, 314, 33,
+ -1, -1, 36, 37, 38, -1, 40, -1, 42, 43,
+ -1, 45, -1, -1, -1, -1, -1, 272, 273, 274,
+ 275, -1, -1, -1, -1, 59, 281, -1, -1, -1,
+ 64, -1, 287, 288, 289, 290, -1, -1, -1, -1,
+ -1, -1, 297, 298, 13, 300, 301, 302, 303, 304,
+ 305, 306, -1, -1, 309, 33, -1, 91, 36, 37,
+ 38, -1, 40, -1, 42, 43, 26, 45, -1, -1,
+ 266, 267, 268, 42, 270, 271, 45, -1, -1, -1,
+ -1, 59, -1, 43, 44, -1, 64, -1, -1, 123,
+ 50, -1, 126, 266, 267, 268, -1, 270, 271, -1,
+ -1, -1, 62, 63, 64, 65, -1, -1, -1, -1,
+ -1, 33, 81, 91, 36, 37, 38, -1, 40, -1,
+ 42, 43, -1, 45, -1, -1, 95, -1, -1, 272,
+ 273, 274, 275, -1, 272, 273, 274, 275, -1, -1,
+ -1, -1, 64, 281, -1, 123, -1, 107, 126, 287,
+ 288, 289, 290, -1, 297, 298, -1, 300, -1, 297,
+ 298, -1, 300, 301, 302, 303, 304, 305, 306, 91,
+ -1, 309, 141, -1, 33, -1, -1, 36, 37, 38,
+ -1, 40, -1, 42, 43, -1, 45, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 91, -1, -1, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, -1, 42, 43, -1,
- 45, -1, 287, -1, 289, 290, -1, -1, -1, -1,
- -1, -1, -1, 140, -1, 123, -1, -1, 126, 64,
- 305, 306, -1, -1, 309, -1, -1, 312, 313, 314,
- -1, -1, -1, -1, -1, -1, 256, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, 91, -1, -1, 269,
- 177, -1, 272, 273, 274, 275, -1, 184, -1, 279,
- 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, 91, 123, 299,
- -1, 126, -1, -1, -1, -1, -1, -1, 308, 41,
- 310, 311, 44, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, -1, -1, 91, 269, -1, -1, -1, 123,
- -1, 63, -1, -1, -1, -1, 280, 289, 282, 283,
+ -1, 123, -1, -1, 126, 64, -1, -1, -1, 178,
+ -1, -1, -1, -1, -1, -1, 185, -1, -1, -1,
+ -1, -1, 256, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 91, -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, 306, 299, 123, 309, -1, 91,
- 312, 313, 314, 41, 308, -1, 310, 311, -1, 257,
+ 294, 295, 296, -1, 123, 299, -1, 126, -1, -1,
+ -1, -1, -1, -1, 308, -1, 310, 311, 256, 257,
258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
- -1, 269, -1, -1, -1, 63, -1, -1, -1, -1,
- -1, 123, 280, -1, 282, 283, 284, 285, 286, -1,
+ 91, 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, 91,
+ -1, 299, 123, -1, -1, -1, -1, -1, -1, -1,
+ 308, -1, 310, 311, -1, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, -1, 33, -1, 269, 36, 37,
+ 38, 123, 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, 299, -1, -1,
+ -1, -1, -1, -1, -1, -1, 308, -1, 310, 311,
+ -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
+ 259, 260, 261, 91, 263, 264, 265, -1, 33, -1,
+ 269, 36, 37, 38, -1, 40, -1, 42, 43, -1,
+ 45, 280, -1, 282, 283, 284, 285, 286, -1, -1,
+ -1, -1, 291, 292, 293, 294, 295, 296, 126, 64,
+ 299, -1, 299, 300, 301, -1, 303, -1, -1, 308,
+ -1, 310, 311, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 33, -1, 91, 36, 37, 38,
+ -1, 40, 329, 42, 43, -1, 45, -1, -1, 336,
+ -1, -1, -1, 340, -1, -1, 287, 288, 289, 290,
+ 59, -1, -1, -1, -1, 64, 353, 354, 123, -1,
+ -1, 126, -1, 304, 305, 306, -1, -1, 309, -1,
+ -1, 312, 313, 314, -1, 287, -1, 289, 290, -1,
+ 33, -1, 91, 36, 37, 38, -1, 40, -1, 42,
+ 43, -1, 45, 305, 306, -1, -1, 309, -1, -1,
+ 312, 313, 314, -1, -1, -1, -1, -1, -1, -1,
+ -1, 64, -1, -1, -1, -1, -1, 126, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, 91, 33,
+ 93, 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,
- -1, 299, -1, 91, -1, -1, -1, -1, -1, -1,
- 308, -1, 310, 311, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, -1, -1, -1, 269, 123, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, 91, 291, 292, 293, 294,
- 295, 296, 33, -1, 299, 36, 37, 38, -1, 40,
- -1, 42, 43, 308, 45, 310, 311, -1, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, 123, 59, -1,
- -1, -1, -1, 64, -1, -1, -1, 301, 302, 303,
- 304, 305, 306, -1, -1, 309, -1, -1, 312, 313,
- 314, -1, 289, 290, -1, -1, -1, -1, 33, -1,
- 91, 36, 37, 38, -1, 40, 41, 42, 43, 306,
- 45, -1, 309, -1, -1, 312, 313, 314, -1, 281,
- -1, -1, -1, -1, -1, 287, 288, 289, 290, 64,
- -1, -1, -1, -1, -1, 126, -1, -1, 300, 301,
- 302, 303, 304, 305, 306, -1, -1, 309, -1, -1,
- 312, 313, 314, -1, 33, -1, 91, 36, 37, 38,
- -1, 40, -1, 42, 43, -1, 45, -1, -1, -1,
- -1, -1, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, 64, -1, -1, -1, -1,
- -1, 126, 300, 301, 302, 303, 304, 305, 306, -1,
- -1, 309, -1, -1, 312, 313, 314, -1, -1, -1,
- -1, -1, 91, 33, 93, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, 287, 288, 289, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 64, -1, -1, 126, 304, 305,
- 306, -1, -1, 309, -1, -1, 312, 313, 314, -1,
- -1, -1, 41, -1, -1, 44, 257, 258, 259, 260,
- 261, 91, 263, 264, 265, -1, -1, -1, 269, 58,
- 59, -1, -1, -1, 63, -1, -1, -1, -1, 280,
- -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, 295, 296, 126, -1, 299, -1,
- -1, -1, -1, -1, 93, -1, -1, 308, 41, 310,
- 311, 44, 257, 258, 259, 260, 261, -1, 263, 264,
+ 64, 299, -1, 126, -1, -1, -1, -1, -1, -1,
+ 308, -1, 310, 311, -1, -1, -1, -1, 41, -1,
+ -1, 44, 257, 258, 259, 260, 261, 91, 263, 264,
265, -1, -1, -1, 269, 58, 59, -1, -1, -1,
63, -1, -1, -1, -1, 280, -1, 282, 283, 284,
285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, -1, 299, -1, -1, -1, -1, -1,
- 93, -1, -1, 308, -1, 310, 311, -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, -1, -1,
- -1, -1, 291, 292, 293, 294, 295, 296, -1, 64,
- 299, -1, -1, -1, -1, -1, -1, -1, -1, 308,
- -1, 310, 311, -1, -1, -1, -1, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, 91, 33, -1, 269,
- 36, 37, 38, -1, 40, -1, 42, 43, -1, 45,
- 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, -1, 64, 299,
- -1, 126, -1, -1, -1, -1, -1, -1, 308, -1,
- 310, 311, -1, 272, 273, 274, 275, -1, -1, -1,
- -1, -1, 281, 33, -1, 91, 36, 37, 38, 288,
- 40, 41, 42, 43, -1, 45, -1, -1, 297, 298,
- -1, 300, 301, 302, 303, 304, -1, -1, -1, -1,
- -1, -1, -1, -1, 64, -1, -1, -1, -1, -1,
- 126, -1, -1, -1, -1, -1, -1, -1, -1, 272,
+ 295, 296, 126, -1, 299, -1, -1, -1, -1, -1,
+ 93, -1, -1, 308, 41, 310, 311, 44, 257, 258,
+ 259, 260, 261, -1, 263, 264, 265, -1, -1, -1,
+ 269, 58, 59, -1, -1, -1, 63, -1, -1, -1,
+ -1, 280, -1, 282, 283, 284, 285, 286, -1, -1,
+ -1, -1, 291, 292, 293, 294, 295, 296, -1, -1,
+ 299, -1, -1, -1, -1, -1, 93, -1, -1, 308,
+ -1, 310, 311, -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, -1, -1, -1, -1, 291, 292,
+ 293, 294, 295, 296, -1, 64, 299, -1, -1, -1,
+ -1, -1, -1, -1, -1, 308, -1, 310, 311, -1,
+ -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 91, 33, -1, 269, 36, 37, 38, -1,
+ 40, -1, 42, 43, -1, 45, 280, -1, 282, 283,
+ 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
+ 294, 295, 296, -1, 64, 299, -1, 126, -1, -1,
+ -1, -1, -1, -1, 308, -1, 310, 311, -1, 272,
273, 274, 275, -1, -1, -1, -1, -1, 281, 33,
- -1, 91, 36, 37, 38, -1, 40, 41, 42, 43,
+ -1, 91, 36, 37, 38, 288, 40, 41, 42, 43,
-1, 45, -1, -1, 297, 298, -1, 300, 301, 302,
303, 304, -1, -1, -1, -1, -1, -1, -1, -1,
64, -1, -1, -1, -1, -1, 126, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 257, 258, 259, 260, 261, 91, 263, 264,
- 265, -1, 33, -1, 269, 36, 37, 38, -1, 40,
- -1, 42, 43, -1, 45, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, 126, 64, 299, -1, -1, -1, -1, -1,
- -1, -1, -1, 308, -1, 310, 311, -1, -1, -1,
- 256, 257, 258, 259, 260, 261, -1, 263, 264, 265,
- 91, -1, -1, 269, 41, -1, -1, 44, -1, -1,
- -1, -1, -1, -1, 280, -1, 282, 283, 284, 285,
- 286, 58, 59, -1, -1, 291, 292, 293, 294, 295,
- 296, 91, -1, 299, -1, 126, -1, -1, -1, -1,
- 41, -1, 308, 44, 310, 311, -1, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, 93, 58, 59, 269,
- -1, -1, 63, 123, -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, 299,
- 91, -1, 93, -1, -1, -1, -1, -1, 308, 41,
- 310, 311, 44, 257, 258, 259, 260, 261, -1, 263,
- 264, 265, -1, -1, -1, 269, 58, 59, -1, -1,
- -1, 63, 123, -1, -1, -1, 280, -1, 282, 283,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, -1, -1, 281, 33, -1, 91, 36, 37,
+ 38, -1, 40, 41, 42, 43, -1, 45, -1, -1,
+ 297, 298, -1, 300, 301, 302, 303, 304, -1, -1,
+ -1, -1, -1, -1, -1, -1, 64, -1, -1, -1,
+ -1, -1, 126, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 257, 258,
+ 259, 260, 261, 91, 263, 264, 265, -1, 33, -1,
+ 269, 36, 37, 38, -1, 40, -1, 42, 43, -1,
+ 45, 280, -1, 282, 283, 284, 285, 286, -1, -1,
+ -1, -1, 291, 292, 293, 294, 295, 296, 126, 64,
+ 299, -1, -1, -1, -1, -1, -1, -1, -1, 308,
+ -1, 310, 311, -1, -1, -1, 256, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, 91, -1, -1, 269,
+ 41, -1, -1, 44, -1, -1, -1, -1, -1, -1,
+ 280, -1, 282, 283, 284, 285, 286, 58, 59, -1,
+ -1, 291, 292, 293, 294, 295, 296, 91, -1, 299,
+ -1, 126, -1, -1, -1, -1, 41, -1, 308, 44,
+ 310, 311, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 93, 58, 59, 269, -1, -1, 63, 123,
+ -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, 299, -1, -1, -1, 91,
- -1, 93, -1, -1, 308, -1, 310, 311, -1, -1,
- -1, -1, 41, -1, -1, 44, 257, 258, 259, 260,
- 261, -1, 263, 264, 265, -1, -1, -1, 269, 58,
- 59, 123, -1, -1, 63, -1, -1, -1, -1, 280,
- -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, 295, 296, -1, -1, 299, -1,
- 41, -1, 91, 44, 93, -1, -1, 308, -1, 310,
- 311, -1, -1, -1, -1, -1, -1, 58, 59, 289,
- 290, -1, 63, -1, -1, 272, 273, 274, 275, -1,
- -1, -1, -1, -1, 123, 305, 306, -1, -1, 309,
- -1, -1, 312, 313, 314, -1, -1, -1, -1, -1,
- 297, 298, 93, 300, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, 41, -1, -1, 44,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, 123, 58, 59, -1, 297, 298, 63, 300,
- 301, 302, 303, 304, 305, 306, -1, -1, 309, -1,
- -1, 312, 313, 314, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 91, -1, 93, -1,
- 272, 273, 274, 275, -1, 41, -1, -1, 44, 281,
- -1, -1, -1, -1, -1, 287, 288, 289, 290, -1,
- -1, -1, 58, 59, -1, 297, 298, 63, 300, 301,
- 302, 303, 304, 305, 306, -1, -1, 309, -1, -1,
- 312, 313, 314, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
- -1, -1, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, -1, -1, 123, 297, 298,
- -1, 300, 301, 302, 303, 304, 305, 306, -1, -1,
- 309, -1, -1, 312, 313, 314, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, 41, -1, -1, -1,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, 58, 59, -1, 297, 298, 63, 300,
- 301, 302, 303, 304, 305, 306, -1, -1, 309, -1,
- -1, 312, 313, 314, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 91, -1, 93, -1,
+ 294, 295, 296, -1, -1, 299, 91, -1, 93, -1,
+ -1, -1, -1, -1, 308, 41, 310, 311, 44, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
+ -1, 269, 58, 59, -1, -1, -1, 63, 123, -1,
+ -1, -1, 280, -1, 282, 283, 284, 285, 286, -1,
+ -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
+ -1, 299, -1, -1, -1, 91, -1, 93, -1, -1,
+ 308, -1, 310, 311, -1, -1, -1, -1, 41, -1,
+ -1, 44, 257, 258, 259, 260, 261, -1, 263, 264,
+ 265, -1, -1, -1, 269, 58, 59, 123, -1, -1,
+ 63, -1, -1, -1, -1, 280, -1, 282, 283, 284,
+ 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
+ 295, 296, -1, -1, 299, -1, 41, -1, 91, 44,
+ 93, -1, -1, 308, -1, 310, 311, -1, -1, -1,
+ -1, -1, -1, 58, 59, 289, 290, -1, 63, -1,
+ -1, 272, 273, 274, 275, -1, -1, -1, -1, -1,
+ 123, 305, 306, -1, -1, 309, -1, -1, 312, 313,
+ 314, -1, -1, -1, -1, -1, 297, 298, 93, -1,
-1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, -1, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, 123, -1,
- -1, -1, 297, 298, -1, 300, 301, 302, 303, 304,
+ 275, -1, 41, -1, -1, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, 289, 290, -1, -1, 123, 58,
+ 59, -1, 297, 298, 63, 300, 301, 302, 303, 304,
305, 306, -1, -1, 309, -1, -1, 312, 313, 314,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
- -1, 41, -1, -1, -1, 281, -1, -1, -1, -1,
+ -1, -1, 91, -1, 93, -1, 272, 273, 274, 275,
+ -1, 41, -1, -1, 44, 281, -1, -1, -1, -1,
-1, 287, 288, 289, 290, -1, -1, -1, 58, 59,
-1, 297, 298, 63, 300, 301, 302, 303, 304, 305,
306, -1, -1, 309, -1, -1, 312, 313, 314, -1,
- 25, 26, -1, -1, 41, -1, -1, 44, -1, -1,
- -1, 91, 37, 93, 41, -1, -1, 44, 43, 44,
- 45, 58, 59, -1, -1, 50, 63, -1, -1, -1,
- -1, 58, 59, -1, -1, -1, 63, 62, 63, 64,
- 65, -1, -1, 123, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, 272, 273, 274,
- 275, -1, 41, -1, -1, 44, 281, -1, -1, -1,
- -1, 106, 287, 288, 289, 290, 123, -1, -1, 58,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 93, -1, -1, -1, -1, -1, 272,
+ 273, 274, 275, -1, -1, -1, -1, -1, 281, -1,
+ -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, 123, 297, 298, -1, 300, 301, 302,
+ 303, 304, 305, 306, -1, -1, 309, -1, -1, 312,
+ 313, 314, -1, -1, -1, -1, -1, 272, 273, 274,
+ 275, -1, 41, -1, -1, -1, 281, -1, -1, -1,
+ -1, -1, 287, 288, 289, 290, -1, -1, -1, 58,
59, -1, 297, 298, 63, 300, 301, 302, 303, 304,
305, 306, -1, -1, 309, -1, -1, 312, 313, 314,
- -1, -1, -1, -1, -1, 41, -1, -1, -1, -1,
- -1, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, 58, 59, -1, -1, -1, 63, -1, -1,
- 165, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 123, -1, -1, -1, -1, 41,
- -1, -1, 44, -1, 189, 91, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
- -1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, 123, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 91, -1, 93, -1, -1, -1, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ -1, -1, 281, -1, -1, -1, -1, -1, 287, 288,
+ 289, 290, -1, -1, 123, -1, -1, -1, 297, 298,
+ -1, 300, 301, 302, 303, 304, 305, 306, -1, -1,
+ 309, -1, -1, 312, 313, 314, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, 41, -1, -1,
-1, 281, -1, -1, -1, -1, -1, 287, 288, 289,
- 290, 93, -1, -1, -1, -1, -1, 297, 298, -1,
+ 290, -1, -1, -1, 58, 59, -1, 297, 298, 63,
300, 301, 302, 303, 304, 305, 306, -1, -1, 309,
- -1, -1, 312, 313, 314, 272, 273, 274, 275, -1,
- 41, 123, -1, 44, 281, 272, 273, 274, 275, -1,
- 287, 288, 289, 290, 281, -1, -1, 58, 59, -1,
- 297, 298, 63, 300, 301, 302, 303, 304, 305, 306,
- 297, 298, 309, 300, 301, 312, 313, 314, -1, -1,
+ -1, -1, 312, 313, 314, -1, -1, -1, -1, -1,
+ 41, -1, -1, 44, -1, -1, -1, 91, -1, 93,
+ 41, -1, -1, 44, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, -1, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, -1, -1, -1, -1, -1, -1, 123,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 272, 273, 274, 275, -1, 41, -1,
+ -1, -1, 93, 272, 273, 274, 275, -1, 41, -1,
-1, 44, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, 58, 59, -1, 297, 298,
+ 289, 290, 123, -1, -1, 58, 59, -1, 297, 298,
63, 300, 301, 302, 303, 304, 305, 306, -1, -1,
- 309, -1, -1, 312, 313, 314, 272, 273, 274, 275,
- -1, 41, -1, -1, 44, 281, -1, -1, -1, -1,
- 93, 287, 288, 289, 290, -1, -1, -1, 58, 59,
- -1, 297, 298, 63, 300, 301, 302, 303, 304, 305,
- 306, -1, -1, 309, -1, -1, 312, 313, 314, -1,
- 272, 273, 274, 275, -1, 41, -1, -1, 44, 281,
- -1, -1, -1, 93, -1, 287, 288, 289, 290, -1,
- -1, -1, 58, 59, -1, 297, 298, 63, 300, 301,
- 302, 303, 304, 305, 306, -1, -1, 309, -1, -1,
- 312, 313, 314, -1, -1, -1, -1, -1, 41, -1,
- -1, 44, -1, -1, -1, -1, -1, 93, -1, -1,
- -1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, 41, -1, -1, 44,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- 93, -1, -1, 58, 59, -1, 297, 298, 63, 300,
- 301, 302, 303, 304, 305, 306, -1, -1, 309, -1,
- -1, 312, 313, 314, 41, -1, -1, 44, -1, -1,
+ 309, -1, -1, 312, 313, 314, -1, -1, -1, -1,
+ -1, 41, -1, -1, -1, -1, -1, -1, -1, -1,
+ 93, -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,
+ 123, -1, -1, -1, -1, 41, -1, -1, 44, -1,
+ -1, 91, -1, 93, -1, -1, -1, -1, -1, -1,
+ -1, -1, 58, 59, -1, -1, -1, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ 274, 275, -1, 123, -1, -1, -1, 281, -1, -1,
+ -1, -1, -1, 287, 288, 289, 290, 93, -1, -1,
+ -1, -1, -1, 297, 298, -1, 300, 301, 302, 303,
+ 304, 305, 306, -1, -1, 309, -1, -1, 312, 313,
+ 314, 272, 273, 274, 275, -1, 41, 123, -1, 44,
+ 281, 272, 273, 274, 275, -1, 287, 288, 289, 290,
+ 281, -1, -1, 58, 59, -1, 297, 298, 63, 300,
+ 301, 302, 303, 304, 305, 306, 297, 298, 309, 300,
+ 301, 312, 313, 314, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- -1, 58, 59, -1, -1, -1, 63, -1, -1, 272,
- 273, 274, 275, -1, -1, -1, -1, -1, 281, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 272,
+ 273, 274, 275, -1, 41, -1, -1, 44, 281, -1,
-1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
- -1, -1, -1, -1, 297, 298, 93, 300, 301, 302,
+ -1, 58, 59, -1, 297, 298, 63, 300, 301, 302,
303, 304, 305, 306, -1, -1, 309, -1, -1, 312,
313, 314, 272, 273, 274, 275, -1, 41, -1, -1,
- 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 44, 281, -1, -1, -1, -1, 93, 287, 288, 289,
290, -1, -1, -1, 58, 59, -1, 297, 298, 63,
300, 301, 302, 303, 304, 305, 306, -1, -1, 309,
-1, -1, 312, 313, 314, -1, 272, 273, 274, 275,
-1, 41, -1, -1, 44, 281, -1, -1, -1, 93,
-1, 287, 288, 289, 290, -1, -1, -1, 58, 59,
-1, 297, 298, 63, 300, 301, 302, 303, 304, 305,
- 306, -1, -1, 309, -1, -1, 312, 313, 314, 272,
- 273, 274, 275, -1, 41, -1, -1, 44, 281, -1,
- -1, -1, -1, 93, 287, 288, 289, 290, -1, -1,
- -1, 58, 59, -1, 297, 298, 63, 300, 301, 302,
- 303, 304, 305, 306, -1, -1, -1, 272, 273, 274,
+ 306, -1, -1, 309, -1, -1, 312, 313, 314, -1,
+ -1, -1, -1, -1, 41, -1, -1, 44, -1, -1,
+ -1, -1, -1, 93, -1, -1, -1, -1, -1, -1,
+ -1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
275, -1, 41, -1, -1, 44, 281, -1, -1, -1,
-1, -1, 287, 288, 289, 290, 93, -1, -1, 58,
59, -1, 297, 298, 63, 300, 301, 302, 303, 304,
- 305, 306, -1, -1, -1, 272, 273, 274, 275, -1,
- 41, -1, -1, 44, 281, -1, -1, -1, -1, -1,
- 287, 288, 289, 290, 93, -1, -1, 58, 59, -1,
- 297, 298, 63, 300, 301, 302, 303, 304, 305, 306,
- -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 93, 58, 59, -1, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ 305, 306, -1, -1, 309, -1, -1, 312, 313, 314,
+ 41, -1, -1, 44, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 93, -1, -1, 58, 59, -1,
+ -1, -1, 63, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, -1, -1, 281, -1, -1, -1, -1, -1,
+ 287, 288, 289, 290, -1, -1, -1, -1, -1, -1,
+ 297, 298, 93, 300, 301, 302, 303, 304, 305, 306,
+ -1, -1, 309, -1, -1, 312, 313, 314, 272, 273,
274, 275, -1, 41, -1, -1, 44, 281, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, -1, 93, -1,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
58, 59, -1, 297, 298, 63, 300, 301, 302, 303,
- 304, 305, 306, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, 41, -1, -1,
+ 304, 305, 306, -1, -1, 309, -1, -1, 312, 313,
+ 314, -1, 272, 273, 274, 275, -1, 41, -1, -1,
44, 281, -1, -1, -1, 93, -1, 287, 288, 289,
290, -1, -1, -1, 58, 59, -1, 297, 298, 63,
- 300, 301, 302, 303, 304, 305, 306, -1, -1, -1,
- -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ 300, 301, 302, 303, 304, 305, 306, -1, -1, 309,
+ -1, -1, 312, 313, 314, 272, 273, 274, 275, -1,
41, -1, -1, 44, 281, -1, -1, -1, -1, 93,
287, 288, 289, 290, -1, -1, -1, 58, 59, -1,
297, 298, 63, 300, 301, 302, 303, 304, 305, 306,
@@ -957,68 +932,93 @@ dEXT short yycheck[] = { 13,
-1, 272, 273, 274, 275, -1, 41, -1, -1, 44,
281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
93, -1, -1, 58, 59, -1, 297, 298, 63, 300,
- 301, 302, 303, 304, 305, -1, -1, 272, 273, 274,
- 275, -1, 41, -1, -1, 44, 281, -1, -1, -1,
- -1, -1, 287, 288, -1, 290, -1, -1, 93, 58,
- 59, -1, 297, 298, 63, 300, 301, 302, 303, 304,
- 305, -1, -1, -1, 272, 273, 274, 275, -1, 41,
+ 301, 302, 303, 304, 305, 306, -1, -1, -1, -1,
+ -1, -1, 41, -1, -1, 44, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 93, 58,
+ 59, -1, -1, -1, 63, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 272, 273, 274, 275, -1, 41,
-1, -1, 44, 281, -1, -1, -1, -1, -1, 287,
- 288, -1, -1, -1, 93, -1, 58, 59, -1, 297,
- 298, 63, 300, 301, 302, 303, 304, 305, -1, -1,
- 91, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ 288, 289, 290, -1, 93, -1, 58, 59, -1, 297,
+ 298, 63, 300, 301, 302, 303, 304, 305, 306, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
274, 275, -1, 41, -1, -1, 44, 281, -1, -1,
- -1, 93, -1, 287, 288, -1, 41, -1, -1, 44,
- 58, 59, 123, 297, 298, 63, 300, 301, 302, 303,
- 304, -1, -1, 58, 59, 41, -1, -1, 44, -1,
- -1, 272, 273, 274, 275, 41, -1, -1, 44, -1,
- 281, -1, 58, 59, -1, 93, 287, 288, -1, -1,
- -1, -1, 58, 59, -1, -1, 297, 298, 93, 300,
- 301, 302, 303, 304, -1, 41, -1, -1, 44, 272,
- 273, 274, 275, -1, -1, -1, -1, 93, 281, -1,
- -1, -1, 58, 59, 287, 288, 58, 93, -1, -1,
- -1, 63, -1, -1, 297, 298, -1, 300, 301, 302,
- 303, 304, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, -1, -1, 281, 93, -1, 91,
- -1, -1, 287, 288, -1, 63, -1, -1, -1, -1,
- -1, -1, 297, 298, -1, 300, 301, 302, 303, 304,
+ -1, 93, -1, 287, 288, 289, 290, -1, -1, -1,
+ 58, 59, -1, 297, 298, 63, 300, 301, 302, 303,
+ 304, 305, 306, -1, -1, -1, -1, -1, -1, -1,
+ -1, 272, 273, 274, 275, -1, 41, -1, -1, 44,
+ 281, -1, -1, -1, -1, 93, 287, 288, 289, 290,
+ -1, -1, -1, 58, 59, -1, 297, 298, 63, 300,
+ 301, 302, 303, 304, 305, 306, -1, -1, -1, 272,
+ 273, 274, 275, -1, 41, -1, -1, 44, 281, -1,
+ -1, -1, -1, -1, 287, 288, 289, 290, 93, -1,
+ -1, 58, 59, -1, 297, 298, 63, 300, 301, 302,
+ 303, 304, 305, 306, -1, -1, -1, 272, 273, 274,
+ 275, -1, 41, -1, -1, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, 289, 290, 93, -1, -1, 58,
+ 59, -1, 297, 298, 63, 300, 301, 302, 303, 304,
+ 305, -1, -1, 272, 273, 274, 275, -1, 41, -1,
+ -1, 44, 281, -1, -1, -1, -1, -1, 287, 288,
+ -1, -1, -1, -1, 93, 58, 59, -1, 297, 298,
+ 63, 300, 301, 302, 303, 304, 305, -1, -1, -1,
+ 272, 273, 274, 275, -1, 41, -1, -1, 44, 281,
+ -1, -1, -1, -1, -1, 287, 288, -1, -1, -1,
+ 93, -1, 58, 59, -1, 297, 298, 63, 300, 301,
+ 302, 303, 304, -1, -1, -1, 91, -1, -1, -1,
+ -1, -1, -1, -1, 272, 273, 274, 275, -1, 41,
+ 63, -1, 44, 281, -1, -1, -1, 93, -1, 287,
+ 288, -1, -1, -1, -1, -1, 58, 59, 123, 297,
+ 298, 63, 300, 301, 302, 303, 304, -1, 91, -1,
+ -1, 58, -1, -1, -1, -1, 63, 272, 273, 274,
+ 275, -1, -1, -1, -1, -1, 281, -1, -1, -1,
+ -1, 93, 287, 288, -1, -1, -1, -1, -1, -1,
+ 123, -1, 297, 298, 91, 300, 301, 302, 303, 304,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ -1, -1, -1, -1, 281, -1, -1, -1, -1, -1,
+ 287, 288, -1, -1, -1, 63, 123, -1, -1, -1,
+ 297, 298, -1, 300, 301, 302, 303, 304, -1, -1,
-1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
- -1, 123, 281, 91, -1, -1, -1, -1, -1, -1,
+ -1, -1, 281, 91, -1, -1, -1, -1, 25, 26,
-1, -1, -1, -1, -1, -1, -1, -1, 297, 298,
- -1, 300, 301, 302, 303, 304, 287, 288, 289, 290,
- 272, 273, 274, 275, -1, 123, -1, -1, -1, 281,
- -1, 302, 303, 304, 305, 306, -1, -1, 309, -1,
- -1, 312, 313, 314, 91, 297, 298, -1, 300, 301,
- 302, 303, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
- -1, -1, -1, 281, -1, -1, 123, 272, 273, 274,
- 275, -1, -1, -1, -1, -1, -1, -1, -1, 297,
- 298, -1, 300, 301, 302, -1, 272, 273, 274, 275,
- -1, -1, 297, 298, 30, -1, 272, 273, 274, 275,
- -1, -1, 38, -1, -1, -1, 42, -1, -1, 45,
- -1, 297, 298, -1, -1, -1, 52, 53, 54, 55,
- 56, 297, 298, 59, 60, -1, 272, 273, 274, 275,
- 66, -1, -1, -1, -1, -1, -1, -1, -1, 281,
+ 37, 300, 301, 302, 303, 304, 43, 44, 45, 272,
+ 273, 274, 275, 50, -1, 123, -1, -1, 281, 91,
+ -1, -1, -1, -1, -1, 62, 63, 64, 65, -1,
+ -1, -1, -1, -1, 297, 298, -1, 300, 301, 302,
+ 303, -1, 287, 288, 289, 290, 272, 273, 274, 275,
+ -1, 123, -1, -1, -1, 281, 301, 302, 303, 304,
+ 305, 306, -1, -1, 309, -1, -1, 312, 313, 314,
+ 107, 297, 298, -1, 300, 301, 302, -1, 281, -1,
+ -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
+ 272, 273, 274, 275, -1, -1, -1, 300, 301, 302,
+ 303, 304, 305, 306, -1, -1, 309, -1, -1, 312,
+ 313, 314, -1, -1, 281, 297, 298, -1, 300, -1,
+ 287, 288, 289, 290, -1, -1, -1, -1, -1, 166,
+ -1, -1, -1, 300, 301, 302, 303, 304, 305, 306,
+ 30, -1, 309, -1, -1, 312, 313, 314, 38, -1,
+ -1, -1, 42, 190, -1, 45, -1, -1, -1, -1,
+ -1, -1, 52, 53, 54, 55, 56, -1, -1, 59,
+ 60, -1, -1, 281, -1, -1, 66, -1, -1, 287,
+ 288, 289, 290, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 301, 302, 303, 304, 305, 306, -1,
+ -1, 309, -1, 93, 312, 313, 314, -1, -1, -1,
-1, -1, -1, -1, -1, 287, 288, 289, 290, -1,
- -1, 297, 298, -1, -1, -1, 92, -1, 300, 301,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
302, 303, 304, 305, 306, -1, -1, 309, -1, -1,
- 312, 313, 314, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 300, 301, 302, 303, 304, 305, 306, -1,
- -1, 309, -1, -1, 312, 313, 314, -1, -1, -1,
- -1, -1, -1, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, -1, -1, -1,
- 287, 288, 289, 290, -1, -1, -1, -1, 174, -1,
- -1, -1, -1, -1, -1, -1, 303, 304, 305, 306,
- -1, -1, 309, -1, -1, 312, 313, 314, -1, -1,
+ 312, 313, 314, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 175, -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, -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, -1, -1,
- -1, -1, -1, -1, 250, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 252, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 281,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 283,
};
#define YYFINAL 1
#ifndef YYDEBUG
@@ -1093,16 +1093,22 @@ dEXT char * yyrule[] = {
"decl : subrout",
"decl : package",
"decl : use",
-"format : FORMAT startsub WORD block",
-"format : FORMAT startsub block",
-"subrout : SUB startsub WORD proto block",
-"subrout : SUB startsub WORD proto ';'",
+"format : FORMAT startformsub formname block",
+"formname : WORD",
+"formname :",
+"subrout : SUB startsub subname proto subbody",
+"startsub :",
+"startanonsub :",
+"startformsub :",
+"subname : WORD",
"proto :",
"proto : THING",
-"startsub :",
+"subbody : block",
+"subbody : ';'",
"package : PACKAGE WORD ';'",
"package : PACKAGE ';'",
-"use : USE startsub WORD WORD listexpr ';'",
+"$$2 :",
+"use : USE startsub $$2 WORD WORD listexpr ';'",
"expr : expr ANDOP expr",
"expr : expr OROP expr",
"expr : argexpr",
@@ -1116,7 +1122,8 @@ dEXT char * yyrule[] = {
"listop : FUNCMETH indirob '(' listexprcom ')'",
"listop : LSTOP listexpr",
"listop : FUNC '(' listexprcom ')'",
-"listop : LSTOPSUB startsub block listexpr",
+"$$3 :",
+"listop : LSTOPSUB startanonsub block $$3 listexpr",
"method : METHOD",
"method : scalar",
"term : term ASSIGNOP term",
@@ -1149,7 +1156,7 @@ dEXT char * yyrule[] = {
"term : '[' ']'",
"term : HASHBRACK expr ';' '}'",
"term : HASHBRACK ';' '}'",
-"term : ANONSUB startsub proto block",
+"term : ANONSUB startanonsub proto block",
"term : scalar",
"term : star '{' expr ';' '}'",
"term : star",
@@ -1233,9 +1240,9 @@ dEXT int yyerrflag;
dEXT int yychar;
dEXT YYSTYPE yyval;
dEXT YYSTYPE yylval;
-#line 602 "perly.y"
+#line 626 "perly.y"
/* PROGRAM */
-#line 1308 "perly.c"
+#line 1315 "perly.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
@@ -1460,7 +1467,7 @@ yyreduce:
switch (yyn)
{
case 1:
-#line 85 "perly.y"
+#line 86 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
yydebug = (debug & 1);
@@ -1469,50 +1476,50 @@ case 1:
}
break;
case 2:
-#line 92 "perly.y"
+#line 93 "perly.y"
{ newPROG(yyvsp[0].opval); }
break;
case 3:
-#line 96 "perly.y"
+#line 97 "perly.y"
{ if (copline > (line_t)yyvsp[-3].ival)
copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 4:
-#line 102 "perly.y"
+#line 103 "perly.y"
{ yyval.ival = block_start(TRUE); }
break;
case 5:
-#line 106 "perly.y"
+#line 107 "perly.y"
{ if (copline > (line_t)yyvsp[-3].ival)
copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 6:
-#line 112 "perly.y"
+#line 113 "perly.y"
{ yyval.ival = block_start(FALSE); }
break;
case 7:
-#line 116 "perly.y"
+#line 117 "perly.y"
{ yyval.opval = Nullop; }
break;
case 8:
-#line 118 "perly.y"
+#line 119 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
case 9:
-#line 120 "perly.y"
+#line 121 "perly.y"
{ yyval.opval = append_list(OP_LINESEQ,
(LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
pad_reset_pending = TRUE;
if (yyvsp[-1].opval && yyvsp[0].opval) hints |= HINT_BLOCK_SCOPE; }
break;
case 10:
-#line 127 "perly.y"
+#line 128 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); }
break;
case 12:
-#line 130 "perly.y"
+#line 131 "perly.y"
{ if (yyvsp[-1].pval != Nullch) {
yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
}
@@ -1523,71 +1530,71 @@ case 12:
expect = XSTATE; }
break;
case 13:
-#line 139 "perly.y"
+#line 140 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
expect = XSTATE; }
break;
case 14:
-#line 144 "perly.y"
+#line 145 "perly.y"
{ yyval.opval = Nullop; }
break;
case 15:
-#line 146 "perly.y"
+#line 147 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 16:
-#line 148 "perly.y"
+#line 149 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 17:
-#line 150 "perly.y"
+#line 151 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 18:
-#line 152 "perly.y"
+#line 153 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); }
break;
case 19:
-#line 154 "perly.y"
+#line 155 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);}
break;
case 20:
-#line 158 "perly.y"
+#line 159 "perly.y"
{ yyval.opval = Nullop; }
break;
case 21:
-#line 160 "perly.y"
+#line 161 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 22:
-#line 162 "perly.y"
+#line 163 "perly.y"
{ copline = yyvsp[-5].ival;
yyval.opval = newSTATEOP(0, Nullch,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval));
hints |= HINT_BLOCK_SCOPE; }
break;
case 23:
-#line 169 "perly.y"
+#line 170 "perly.y"
{ copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval)); }
break;
case 24:
-#line 173 "perly.y"
+#line 174 "perly.y"
{ copline = 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 179 "perly.y"
+#line 180 "perly.y"
{ yyval.opval = Nullop; }
break;
case 26:
-#line 181 "perly.y"
+#line 182 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 27:
-#line 185 "perly.y"
+#line 186 "perly.y"
{ copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1595,7 +1602,7 @@ case 27:
yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 28:
-#line 191 "perly.y"
+#line 192 "perly.y"
{ copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1603,23 +1610,23 @@ case 28:
yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 29:
-#line 197 "perly.y"
+#line 198 "perly.y"
{ yyval.opval = block_end(yyvsp[-6].ival,
newFOROP(0, yyvsp[-9].pval, yyvsp[-8].ival, yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 30:
-#line 200 "perly.y"
+#line 201 "perly.y"
{ yyval.opval = block_end(yyvsp[-4].ival,
newFOROP(0, yyvsp[-8].pval, yyvsp[-7].ival, mod(yyvsp[-6].opval, OP_ENTERLOOP),
yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 31:
-#line 204 "perly.y"
+#line 205 "perly.y"
{ yyval.opval = block_end(yyvsp[-4].ival,
newFOROP(0, yyvsp[-7].pval, yyvsp[-6].ival, Nullop, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 32:
-#line 208 "perly.y"
+#line 209 "perly.y"
{ copline = yyvsp[-9].ival;
yyval.opval = block_end(yyvsp[-7].ival,
append_elem(OP_LINESEQ, scalar(yyvsp[-6].opval),
@@ -1629,364 +1636,396 @@ case 32:
yyvsp[0].opval, scalar(yyvsp[-2].opval))))); }
break;
case 33:
-#line 216 "perly.y"
+#line 217 "perly.y"
{ yyval.opval = newSTATEOP(0,
yyvsp[-2].pval, newWHILEOP(0, 1, (LOOP*)Nullop,
Nullop, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 34:
-#line 222 "perly.y"
+#line 223 "perly.y"
{ yyval.opval = Nullop; }
break;
case 36:
-#line 227 "perly.y"
+#line 228 "perly.y"
{ (void)scan_num("1"); yyval.opval = yylval.opval; }
break;
case 38:
-#line 232 "perly.y"
+#line 233 "perly.y"
{ yyval.opval = invert(scalar(yyvsp[0].opval)); }
break;
case 39:
-#line 236 "perly.y"
+#line 237 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 40:
-#line 240 "perly.y"
+#line 241 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 41:
-#line 244 "perly.y"
+#line 245 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 42:
-#line 248 "perly.y"
+#line 249 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 43:
-#line 252 "perly.y"
+#line 253 "perly.y"
{ yyval.pval = Nullch; }
break;
case 45:
-#line 257 "perly.y"
+#line 258 "perly.y"
{ yyval.ival = 0; }
break;
case 46:
-#line 259 "perly.y"
+#line 260 "perly.y"
{ yyval.ival = 0; }
break;
case 47:
-#line 261 "perly.y"
+#line 262 "perly.y"
{ yyval.ival = 0; }
break;
case 48:
-#line 263 "perly.y"
+#line 264 "perly.y"
{ yyval.ival = 0; }
break;
case 49:
-#line 267 "perly.y"
+#line 268 "perly.y"
{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 50:
-#line 269 "perly.y"
-{ newFORM(yyvsp[-1].ival, Nullop, yyvsp[0].opval); }
+#line 271 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 51:
-#line 273 "perly.y"
-{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 272 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 52:
-#line 275 "perly.y"
-{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, Nullop); expect = XSTATE; }
+#line 276 "perly.y"
+{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 53:
-#line 279 "perly.y"
-{ yyval.opval = Nullop; }
+#line 280 "perly.y"
+{ yyval.ival = start_subparse(); }
break;
-case 55:
+case 54:
#line 284 "perly.y"
-{ yyval.ival = start_subparse(); }
+{ yyval.ival = start_subparse();
+ CvANON_on(compcv); }
+break;
+case 55:
+#line 289 "perly.y"
+{ yyval.ival = start_subparse();
+ CvFORMAT_on(compcv); }
break;
case 56:
-#line 288 "perly.y"
-{ package(yyvsp[-1].opval); }
+#line 293 "perly.y"
+{ char *name = SvPVx(((SVOP*)yyvsp[0].opval)->op_sv, na);
+ if (strEQ(name, "BEGIN") || strEQ(name, "END"))
+ CvUNIQUE_on(compcv);
+ yyval.opval = yyvsp[0].opval; }
break;
case 57:
-#line 290 "perly.y"
+#line 300 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 59:
+#line 304 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 60:
+#line 305 "perly.y"
+{ yyval.opval = Nullop; expect = XSTATE; }
+break;
+case 61:
+#line 309 "perly.y"
+{ package(yyvsp[-1].opval); }
+break;
+case 62:
+#line 311 "perly.y"
{ package(Nullop); }
break;
-case 58:
-#line 294 "perly.y"
-{ utilize(yyvsp[-5].ival, yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); }
+case 63:
+#line 315 "perly.y"
+{ CvUNIQUE_on(compcv); /* It's a BEGIN {} */ }
+break;
+case 64:
+#line 317 "perly.y"
+{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); }
break;
-case 59:
-#line 298 "perly.y"
+case 65:
+#line 321 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 60:
-#line 300 "perly.y"
+case 66:
+#line 323 "perly.y"
{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 62:
-#line 305 "perly.y"
+case 68:
+#line 328 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 63:
-#line 307 "perly.y"
+case 69:
+#line 330 "perly.y"
{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 65:
-#line 312 "perly.y"
+case 71:
+#line 335 "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 66:
-#line 315 "perly.y"
+case 72:
+#line 338 "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 67:
-#line 318 "perly.y"
+case 73:
+#line 341 "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 68:
-#line 323 "perly.y"
+case 74:
+#line 346 "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 69:
-#line 328 "perly.y"
+case 75:
+#line 351 "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 70:
-#line 333 "perly.y"
+case 76:
+#line 356 "perly.y"
{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 71:
-#line 335 "perly.y"
+case 77:
+#line 358 "perly.y"
{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 72:
-#line 337 "perly.y"
+case 78:
+#line 360 "perly.y"
+{ yyvsp[0].opval = newANONSUB(yyvsp[-1].ival, 0, yyvsp[0].opval); }
+break;
+case 79:
+#line 362 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
- append_elem(OP_LIST,
- prepend_elem(OP_LIST, newANONSUB(yyvsp[-2].ival, 0, yyvsp[-1].opval), yyvsp[0].opval),
- yyvsp[-3].opval)); }
+ append_elem(OP_LIST,
+ prepend_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval), yyvsp[-4].opval)); }
break;
-case 75:
-#line 348 "perly.y"
+case 82:
+#line 372 "perly.y"
{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); }
break;
-case 76:
-#line 350 "perly.y"
+case 83:
+#line 374 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 77:
-#line 352 "perly.y"
+case 84:
+#line 376 "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 78:
-#line 356 "perly.y"
+case 85:
+#line 380 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 79:
-#line 358 "perly.y"
+case 86:
+#line 382 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 80:
-#line 360 "perly.y"
+case 87:
+#line 384 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 81:
-#line 362 "perly.y"
+case 88:
+#line 386 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 82:
-#line 364 "perly.y"
+case 89:
+#line 388 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 83:
-#line 366 "perly.y"
+case 90:
+#line 390 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 84:
-#line 368 "perly.y"
+case 91:
+#line 392 "perly.y"
{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
break;
-case 85:
-#line 370 "perly.y"
+case 92:
+#line 394 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 86:
-#line 372 "perly.y"
+case 93:
+#line 396 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 87:
-#line 374 "perly.y"
+case 94:
+#line 398 "perly.y"
{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 88:
-#line 376 "perly.y"
+case 95:
+#line 400 "perly.y"
{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 89:
-#line 379 "perly.y"
+case 96:
+#line 403 "perly.y"
{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
break;
-case 90:
-#line 381 "perly.y"
+case 97:
+#line 405 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 91:
-#line 383 "perly.y"
+case 98:
+#line 407 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 92:
-#line 385 "perly.y"
+case 99:
+#line 409 "perly.y"
{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
break;
-case 93:
-#line 387 "perly.y"
+case 100:
+#line 411 "perly.y"
{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
break;
-case 94:
-#line 389 "perly.y"
+case 101:
+#line 413 "perly.y"
{ yyval.opval = newUNOP(OP_POSTINC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTINC)); }
break;
-case 95:
-#line 392 "perly.y"
+case 102:
+#line 416 "perly.y"
{ yyval.opval = newUNOP(OP_POSTDEC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); }
break;
-case 96:
-#line 395 "perly.y"
+case 103:
+#line 419 "perly.y"
{ yyval.opval = newUNOP(OP_PREINC, 0,
mod(scalar(yyvsp[0].opval), OP_PREINC)); }
break;
-case 97:
-#line 398 "perly.y"
+case 104:
+#line 422 "perly.y"
{ yyval.opval = newUNOP(OP_PREDEC, 0,
mod(scalar(yyvsp[0].opval), OP_PREDEC)); }
break;
-case 98:
-#line 401 "perly.y"
+case 105:
+#line 425 "perly.y"
{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
break;
-case 99:
-#line 403 "perly.y"
+case 106:
+#line 427 "perly.y"
{ yyval.opval = sawparens(yyvsp[-1].opval); }
break;
-case 100:
-#line 405 "perly.y"
+case 107:
+#line 429 "perly.y"
{ yyval.opval = sawparens(newNULLLIST()); }
break;
-case 101:
-#line 407 "perly.y"
+case 108:
+#line 431 "perly.y"
{ yyval.opval = newANONLIST(yyvsp[-1].opval); }
break;
-case 102:
-#line 409 "perly.y"
+case 109:
+#line 433 "perly.y"
{ yyval.opval = newANONLIST(Nullop); }
break;
-case 103:
-#line 411 "perly.y"
+case 110:
+#line 435 "perly.y"
{ yyval.opval = newANONHASH(yyvsp[-2].opval); }
break;
-case 104:
-#line 413 "perly.y"
+case 111:
+#line 437 "perly.y"
{ yyval.opval = newANONHASH(Nullop); }
break;
-case 105:
-#line 415 "perly.y"
+case 112:
+#line 439 "perly.y"
{ yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
-case 106:
-#line 417 "perly.y"
+case 113:
+#line 441 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 107:
-#line 419 "perly.y"
+case 114:
+#line 443 "perly.y"
{ yyval.opval = newBINOP(OP_GELEM, 0, newGVREF(0,yyvsp[-4].opval), yyvsp[-2].opval); }
break;
-case 108:
-#line 421 "perly.y"
+case 115:
+#line 445 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 109:
-#line 423 "perly.y"
+case 116:
+#line 447 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); }
break;
-case 110:
-#line 425 "perly.y"
+case 117:
+#line 449 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 111:
-#line 429 "perly.y"
+case 118:
+#line 453 "perly.y"
{ assertref(yyvsp[-3].opval); yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 112:
-#line 433 "perly.y"
+case 119:
+#line 457 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 113:
-#line 435 "perly.y"
+case 120:
+#line 459 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 114:
-#line 437 "perly.y"
+case 121:
+#line 461 "perly.y"
{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));}
break;
-case 115:
-#line 439 "perly.y"
+case 122:
+#line 463 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 116:
-#line 442 "perly.y"
+case 123:
+#line 466 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 117:
-#line 447 "perly.y"
+case 124:
+#line 471 "perly.y"
{ assertref(yyvsp[-4].opval); yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
expect = XOPERATOR; }
break;
-case 118:
-#line 452 "perly.y"
+case 125:
+#line 476 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); }
break;
-case 119:
-#line 454 "perly.y"
+case 126:
+#line 478 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); }
break;
-case 120:
-#line 456 "perly.y"
+case 127:
+#line 480 "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 121:
-#line 462 "perly.y"
+case 128:
+#line 486 "perly.y"
{ yyval.opval = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -1994,38 +2033,38 @@ case 121:
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
expect = XOPERATOR; }
break;
-case 122:
-#line 469 "perly.y"
+case 129:
+#line 493 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 123:
-#line 471 "perly.y"
+case 130:
+#line 495 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); }
break;
-case 124:
-#line 473 "perly.y"
+case 131:
+#line 497 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); }
break;
-case 125:
-#line 475 "perly.y"
+case 132:
+#line 499 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); }
break;
-case 126:
-#line 478 "perly.y"
+case 133:
+#line 502 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 127:
-#line 481 "perly.y"
+case 134:
+#line 505 "perly.y"
{ yyval.opval = newUNOP(OP_DOFILE, 0, scalar(yyvsp[0].opval)); }
break;
-case 128:
-#line 483 "perly.y"
+case 135:
+#line 507 "perly.y"
{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); }
break;
-case 129:
-#line 485 "perly.y"
+case 136:
+#line 509 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
@@ -2034,8 +2073,8 @@ case 129:
scalar(yyvsp[-2].opval)
)),Nullop)); dep();}
break;
-case 130:
-#line 493 "perly.y"
+case 137:
+#line 517 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
@@ -2045,151 +2084,151 @@ case 130:
scalar(yyvsp[-3].opval)
)))); dep();}
break;
-case 131:
-#line 502 "perly.y"
+case 138:
+#line 526 "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 132:
-#line 506 "perly.y"
+case 139:
+#line 530 "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 133:
-#line 511 "perly.y"
+case 140:
+#line 535 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
hints |= HINT_BLOCK_SCOPE; }
break;
-case 134:
-#line 514 "perly.y"
+case 141:
+#line 538 "perly.y"
{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 135:
-#line 516 "perly.y"
+case 142:
+#line 540 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 136:
-#line 518 "perly.y"
+case 143:
+#line 542 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 137:
-#line 520 "perly.y"
+case 144:
+#line 544 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 138:
-#line 522 "perly.y"
+case 145:
+#line 546 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 139:
-#line 524 "perly.y"
+case 146:
+#line 548 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 140:
-#line 527 "perly.y"
+case 147:
+#line 551 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 141:
-#line 529 "perly.y"
+case 148:
+#line 553 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
break;
-case 142:
-#line 531 "perly.y"
-{ yyval.opval = newUNOP(OP_ENTERSUB, 0,
+case 149:
+#line 555 "perly.y"
+{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar(yyvsp[0].opval)); }
break;
-case 143:
-#line 534 "perly.y"
+case 150:
+#line 558 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
break;
-case 144:
-#line 536 "perly.y"
+case 151:
+#line 560 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 145:
-#line 538 "perly.y"
+case 152:
+#line 562 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
break;
-case 146:
-#line 540 "perly.y"
+case 153:
+#line 564 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
break;
-case 149:
-#line 546 "perly.y"
+case 156:
+#line 570 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 150:
-#line 548 "perly.y"
+case 157:
+#line 572 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 151:
-#line 552 "perly.y"
+case 158:
+#line 576 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 152:
-#line 554 "perly.y"
+case 159:
+#line 578 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 153:
-#line 556 "perly.y"
+case 160:
+#line 580 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 154:
-#line 559 "perly.y"
+case 161:
+#line 583 "perly.y"
{ yyval.ival = 0; }
break;
-case 155:
-#line 560 "perly.y"
+case 162:
+#line 584 "perly.y"
{ yyval.ival = 1; }
break;
-case 156:
-#line 564 "perly.y"
+case 163:
+#line 588 "perly.y"
{ in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
-case 157:
-#line 568 "perly.y"
+case 164:
+#line 592 "perly.y"
{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 158:
-#line 572 "perly.y"
+case 165:
+#line 596 "perly.y"
{ yyval.opval = newSVREF(yyvsp[0].opval); }
break;
-case 159:
-#line 576 "perly.y"
+case 166:
+#line 600 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 160:
-#line 580 "perly.y"
+case 167:
+#line 604 "perly.y"
{ yyval.opval = newHVREF(yyvsp[0].opval); }
break;
-case 161:
-#line 584 "perly.y"
+case 168:
+#line 608 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 162:
-#line 588 "perly.y"
+case 169:
+#line 612 "perly.y"
{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
break;
-case 163:
-#line 592 "perly.y"
+case 170:
+#line 616 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 164:
-#line 594 "perly.y"
+case 171:
+#line 618 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 165:
-#line 596 "perly.y"
+case 172:
+#line 620 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
-case 166:
-#line 599 "perly.y"
+case 173:
+#line 623 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-#line 2178 "perly.c"
+#line 2217 "perly.c"
}
yyssp -= yym;
yystate = *yyssp;
diff --git a/vms/test.com b/vms/test.com
index 6f521d2e1a..72354d2823 100644
--- a/vms/test.com
+++ b/vms/test.com
@@ -74,7 +74,7 @@ $
$! And do it
$ testdir = "Directory/NoHead/NoTrail/Column=1"
$ Define/User Perlshr Sys$Disk:[-]PerlShr'exe'
-$ MCR Sys$Disk:[]Perl. - "''p2'" "''p3'" "''p4'" "''p5'" "''p6'"
+$ MCR Sys$Disk:[]Perl. "-I[-.lib]" - "''p2'" "''p3'" "''p4'" "''p5'" "''p6'"
$ Deck/Dollar=$$END-OF-TEST$$
# $RCSfile: TEST,v $$Revision: 4.1 $$Date: 92/08/07 18:27:00 $
# Modified for VMS 30-Sep-1994 Charles Bailey bailey@genetics.upenn.edu
@@ -90,7 +90,7 @@ use Config;
@compexcl=('cpp.t','script.t');
@ioexcl=('argv.t','dup.t','fs.t','inplace.t','pipe.t');
@libexcl=('anydbm.t','db-btree.t','db-hash.t','db-recno.t',
- 'gdbm.t','io_dup.t', 'io_pipe.t', 'io_sock.t',
+ 'gdbm.t','io_dup.t', 'io_pipe.t', 'io_sel.t', 'io_sock.t',
'ndbm.t','odbm.t','open2.t','open3.t','posix.t',
'sdbm.t','soundex.t');
@@ -147,7 +147,7 @@ while ($test = shift) {
if (/#!..perl(.*)/) {
$switch = $1;
# Add "" to protect uppercase switches on command line
- $switch =~ s/-([A-Z]\S*)/"-$1"/g;
+ $switch =~ s/-(\S*[A-Z]\S*)/"-$1"/g;
} else {
$switch = '';
}
diff --git a/vms/vmsish.h b/vms/vmsish.h
index b2814ade8b..7fec438628 100644
--- a/vms/vmsish.h
+++ b/vms/vmsish.h
@@ -143,6 +143,18 @@
*/
#undef ACME_MESS /**/
+/* ALTERNATE_SHEBANG:
+ * This symbol, if defined, contains a "magic" string which may be used
+ * as the first line of a Perl program designed to be executed directly
+ * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
+ * begins with a character other then #, then Perl will only treat
+ * it as a command line if if finds the string "perl" in the first
+ * word; otherwise it's treated as the first line of code in the script.
+ * (IOW, Perl won't hand off to another interpreter via an alternate
+ * shebang sequence that might be legal Perl code.)
+ */
+#define ALTERNATE_SHEBANG "$"
+
/* Macros to set errno using the VAX thread-safe calls, if present */
#if (defined(__DECC) || defined(__DECCXX)) && !defined(__ALPHA)
# define set_errno(v) (cma$tis_errno_set_value(v))
@@ -413,6 +425,25 @@ typedef unsigned myino_t;
* <data type><TAB>name<WHITESPACE>_((<prototype args>));
*/
+#ifdef NO_PERL_TYPEDEFS
+ /* We don't have Perl typedefs available (e.g. when building a2p), so
+ we fake them here. N.B. There is *no* guarantee that the faked
+ prototypes will actually match the real routines. If you want to
+ call Perl routines, include perl.h to get the real typedefs. */
+# ifndef bool
+# define bool int
+# define __MY_BOOL_TYPE_FAKE
+# endif
+# ifndef I32
+# define I32 int
+# define __MY_I32_TYPE_FAKE
+# endif
+# ifndef SV
+# define SV void /* Since we only see SV * in prototypes */
+# define __MY_SV_TYPE_FAKE
+# endif
+#endif
+
void prime_env_iter _((void));
void getredirection _((int *, char ***));
void init_os_extras _(());
@@ -468,6 +499,21 @@ int rmscopy _((char *, char *, int));
typedef char __VMS_SEPYTOTORP__;
/* prototype section end marker; `typedef' passes through cpp */
+#ifdef NO_PERL_TYPEDEFS /* We'll try not to scramble later files */
+# ifdef __MY_BOOL_TYPE_FAKE
+# undef bool
+# undef __MY_BOOL_TYPE_FAKE
+# endif
+# ifdef __MY_I32_TYPE_FAKE
+# undef I32
+# undef __MY_I32_TYPE_FAKE
+# endif
+# ifdef __MY_SV_TYPE_FAKE
+# undef SV
+# undef __MY_SV_TYPE_FAKE
+# endif
+#endif
+
#ifndef VMS_DO_SOCKETS
/* This relies on tricks in perl.h to pick up that these manifest constants
* are undefined and set up conversion routines. It will then redefine
diff --git a/x2p/a2p.h b/x2p/a2p.h
index a6dfd1d2ad..ffd731e75a 100644
--- a/x2p/a2p.h
+++ b/x2p/a2p.h
@@ -100,7 +100,8 @@
# endif
#else
# if defined(VMS)
-# include "../vmsish.h"
+# define NO_PERL_TYPEDEFS
+# include "[-]vmsish.h"
# endif
#endif
diff --git a/x2p/find2perl.PL b/x2p/find2perl.PL
index c024faf9fd..2ffc338075 100644
--- a/x2p/find2perl.PL
+++ b/x2p/find2perl.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/x2p/s2p.PL b/x2p/s2p.PL
index e5c5bd6f01..7564d51d99 100644
--- a/x2p/s2p.PL
+++ b/x2p/s2p.PL
@@ -12,10 +12,8 @@ use File::Basename qw(&basename &dirname);
# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-chdir(dirname($0));
-($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving"
+chdir dirname($0);
+$file = basename($0, '.PL');
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/x2p/str.c b/x2p/str.c
index 953a811f50..45b40f7fb8 100644
--- a/x2p/str.c
+++ b/x2p/str.c
@@ -297,6 +297,16 @@ register FILE *fp;
int i;
int bpx;
+#if defined(VMS)
+ /* An ungetc()d char is handled separately from the regular
+ * buffer, so we getc() it back out and stuff it in the buffer.
+ */
+ i = getc(fp);
+ if (i == EOF) return Nullch;
+ *(--((*fp)->_ptr)) = (unsigned char) i;
+ (*fp)->_cnt++;
+#endif
+
cnt = FILE_cnt(fp); /* get count into register */
str->str_nok = 0; /* invalidate number */
str->str_pok = 1; /* validate pointer */
@@ -317,7 +327,7 @@ register FILE *fp;
FILE_cnt(fp) = cnt; /* deregisterize cnt and ptr */
FILE_ptr(fp) = ptr;
- i = FILE_filbuf(fp); /* get more characters */
+ i = getc(fp); /* get more characters */
cnt = FILE_cnt(fp);
ptr = FILE_ptr(fp); /* reregisterize cnt and ptr */