summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes298
-rwxr-xr-xConfigure4
-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.c136
-rw-r--r--gv.h4
-rw-r--r--hints/aux_3.sh22
-rw-r--r--hints/machten.sh28
-rw-r--r--hv.c32
-rw-r--r--interp.sym1
-rw-r--r--lib/File/Basename.pm29
-rw-r--r--lib/overload.pm2
-rw-r--r--op.c205
-rw-r--r--os2/os2ish.h12
-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/parsetoc66
-rw-r--r--pod/perldiag.pod49
-rw-r--r--pod/perlguts.pod18
-rw-r--r--pod/perlnews.pod2
-rw-r--r--pod/perlsub.pod4
-rw-r--r--pod/perltoc.pod43
-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/roffitall2
-rwxr-xr-xpod/rofftoc66
-rw-r--r--pp.c40
-rw-r--r--pp_ctl.c17
-rw-r--r--pp_hot.c69
-rw-r--r--pp_sys.c30
-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
-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.PL11
-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
78 files changed, 3201 insertions, 2501 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 2fd5c72b73..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
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 2e2bc193d5..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;
@@ -129,7 +128,7 @@ STRLEN len;
I32 level;
{
AV* av;
- GV* topgv = NULL;
+ GV* topgv;
GV* gv;
GV** gvp;
HV* lastchance;
@@ -140,31 +139,26 @@ I32 level;
if ((level > 100) || (level < -100))
croak("Recursive inheritance detected");
- gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
-
DEBUG_o( deb("Looking for method %s in package %s\n",name,HvNAME(stash)) );
- if (!gvp) goto recurse;
- 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. */
- recurse:
gvp = (GV**)hv_fetch(stash,"ISA",3,FALSE);
if (gvp && (gv = *gvp) != (GV*)&sv_undef && (av = GvAV(gv))) {
SV** svp = AvARRAY(av);
@@ -178,22 +172,25 @@ I32 level;
SvPVX(sv), HvNAME(stash));
continue;
}
- gv = gv_fetchmeth(basestash, name, len, level + (level >= 0 ? 1 : -1));
- if (gv && topgv) {
- GvCV(topgv) = GvCV(gv); /* cache the CV */
- GvCVGEN(topgv) = sub_generation; /* valid for now */
- SvREFCNT_inc(GvCV(gv));
- return gv;
- } else if (gv) return gv;
+ gv = gv_fetchmeth(basestash, name, len,
+ (level >= 0) ? level + 1 : level - 1);
+ if (gv)
+ goto gotcha;
}
}
- if ((level == 0) || (level == -1)) { /* topgv is present. */
+ if (level == 0 || level == -1) {
if (lastchance = gv_stashpvn("UNIVERSAL", 9, FALSE)) {
- if (gv = gv_fetchmeth(lastchance, name, len, level + (level >= 0 ? 1 : -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;
}
}
@@ -274,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;
}
@@ -799,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
@@ -816,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;
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/machten.sh b/hints/machten.sh
index c40d1e5cd1..55feadcfb7 100644
--- a/hints/machten.sh
+++ b/hints/machten.sh
@@ -13,7 +13,9 @@
# Martijn Koster <m.koster@webcrawler.com>
# Richard Yeh <rcyeh@cco.caltech.edu>
#
-# Warn about test failure due to old Berkeley db -- Dominc Dunlop 970105
+# 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
@@ -24,15 +26,15 @@
# know how to use it yet.
#
# Updated by Dominic Dunlop <domo@tcp.ip.lu>
-# Sun Jan 5 11:33:51 WET 1997
+# 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,8 +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/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 a07e91513e..049545995c 100644
--- a/lib/overload.pm
+++ b/lib/overload.pm
@@ -93,7 +93,7 @@ sub mycan { # Real can would leave stubs.
my ($package, $meth) = @_;
return \*{$package . "::$meth"} if defined &{$package . "::$meth"};
my $p;
- foreach $p (@{"${package}::ISA"}) {
+ foreach $p (@{$package . "::ISA"}) {
my $out = mycan($p, $meth);
return $out if $out;
}
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/os2ish.h b/os2/os2ish.h
index 44aee84152..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
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/parsetoc b/pod/parsetoc
deleted file mode 100644
index cbb80ee8cd..0000000000
--- a/pod/parsetoc
+++ /dev/null
@@ -1,66 +0,0 @@
-# feed this into perl
- eval 'exec perl -S $0 ${1+"$@"}'
- if $running_under_some_shell;
-
-# Usage: parsetoc 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/pod/perldiag.pod b/pod/perldiag.pod
index ba7308f289..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
@@ -2396,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/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 3ddb1e07c2..3cd71de7d1 100644
--- a/pod/perlnews.pod
+++ b/pod/perlnews.pod
@@ -663,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/perlsub.pod b/pod/perlsub.pod
index 2d3e666256..c83f2da336 100644
--- a/pod/perlsub.pod
+++ b/pod/perlsub.pod
@@ -758,7 +758,9 @@ to make the world a better place.
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 calls to the function.
+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.
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/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 abc71a6dfa..6bf47afad4 100755
--- a/pod/roffitall
+++ b/pod/roffitall
@@ -162,7 +162,7 @@ run="$cmd -rC1 -rD1 -rF1 >$tmp/PerlDoc.$ext 2>$tmp/PerlTOC.$ext.raw"
echo "$me: running $run"
eval $run $toroff
echo "$me: parsing TOC"
-./parsetoc $tmp/PerlTOC.$ext.raw > $tmp/PerlTOC.tmp.man
+./rofftoc $tmp/PerlTOC.$ext.raw > $tmp/PerlTOC.tmp.man
run="$cmd $tmp/PerlTOC.tmp.man >$tmp/PerlTOC.$ext"
echo "$me: running $run"
eval $run
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 8710b5418d..f5c2225f91 100644
--- a/pp.c
+++ b/pp.c
@@ -119,8 +119,6 @@ PP(pp_rv2gv)
GvIOp(gv) = (IO *)sv;
SvREFCNT_inc(sv);
sv = (SV*) gv;
- } else if (SvTYPE(sv) == SVt_PVCV) {
- sv = (SV*) CvGV(sv);
} else if (SvTYPE(sv) != SVt_PVGV)
DIE("Not a GLOB reference");
}
@@ -546,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);
@@ -570,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)
{
@@ -585,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)
@@ -604,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)
@@ -853,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;
}
@@ -3699,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;
@@ -3710,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)));
@@ -3795,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 13e11b5adb..11e11a5d48 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -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/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 3106cbc2bc..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: $!";
@@ -151,14 +149,11 @@ 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;
my $dir;
-
- if (-f $s and containspod $s) {
- return $s;
- }
for ($i=0;$i<@dirs;$i++) {
$dir = $dirs[$i];
($dir = VMS::Filespec::unixpath($dir)) =~ s!/$!! if $Is_VMS;
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 */