summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpider Boardman <spider@orb.nashua.nh.us>1999-08-28 23:02:11 -0400
committerJarkko Hietaniemi <jhi@iki.fi>1999-08-29 11:10:33 +0000
commit09bef84370e90d727656ea11ba5ee8be80e361d3 (patch)
treea3be55423863d0b8aa13316472ce65fd1007390f
parent34d1710f50a396dda66d4f7a7ffb73f6cc80cf01 (diff)
downloadperl-09bef84370e90d727656ea11ba5ee8be80e361d3.tar.gz
sub : attrlist
To: Mailing list Perl5 <perl5-porters@perl.org> Message-Id: <199908290702.DAA32191@Orb.Nashua.NH.US> p4raw-id: //depot/cfgperl@4043
-rw-r--r--MANIFEST4
-rw-r--r--Makefile.SH7
-rw-r--r--embed.h44
-rwxr-xr-xembed.pl14
-rw-r--r--global.sym5
-rw-r--r--gv.c4
-rw-r--r--lib/AutoSplit.pm14
-rw-r--r--lib/SelfLoader.pm10
-rw-r--r--lib/attributes.pm379
-rw-r--r--objXSUB.h22
-rw-r--r--op.c170
-rw-r--r--perl.c1
-rw-r--r--perl.h2
-rwxr-xr-xperlapi.c37
-rw-r--r--perly.c2821
-rwxr-xr-xperly.fixer23
-rw-r--r--perly.h40
-rw-r--r--perly.y98
-rw-r--r--perly_c.diff475
-rw-r--r--pod/perldelta.pod117
-rw-r--r--pod/perldiag.pod53
-rw-r--r--pod/perlfunc.pod10
-rw-r--r--pod/perlmodlib.pod6
-rw-r--r--pod/perlsub.pod77
-rw-r--r--proto.h13
-rw-r--r--t/lib/attrs.t125
-rw-r--r--t/op/attrs.t176
-rw-r--r--toke.c290
-rw-r--r--vms/perly_c.vms2823
-rw-r--r--vms/perly_h.vms39
-rw-r--r--xsutils.c298
31 files changed, 4812 insertions, 3385 deletions
diff --git a/MANIFEST b/MANIFEST
index 746c4a2634..f5ea95c967 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -640,6 +640,7 @@ lib/User/grent.pm By-name interface to Perl's builtin getgr*
lib/User/pwent.pm By-name interface to Perl's builtin getpw*
lib/abbrev.pl An abbreviation table builder
lib/assert.pl assertion and panic with stack trace
+lib/attributes.pm For "sub foo : attrlist"
lib/autouse.pm Load and call a function only when it's used
lib/base.pm Establish IS-A relationship at compile time
lib/bigfloat.pl An arbitrary precision floating point package
@@ -1117,6 +1118,7 @@ t/io/read.t See if read works
t/io/tell.t See if file seeking works
t/lib/abbrev.t See if Text::Abbrev works
t/lib/anydbm.t See if AnyDBM_File works
+t/lib/attrs.t See if attrs works with C<sub : attrs>
t/lib/autoloader.t See if AutoLoader works
t/lib/basename.t See if File::Basename works
t/lib/bigfloat.t See if bigfloat.pl works
@@ -1218,6 +1220,7 @@ t/op/append.t See if . works
t/op/arith.t See if arithmetic works
t/op/array.t See if array operations work
t/op/assignwarn.t See if OP= operators warn correctly for undef targets
+t/op/attrs.t See if attributes on declarations work
t/op/auto.t See if autoincrement et all work
t/op/avhv.t See if pseudo-hashes work
t/op/bop.t See if bitops work
@@ -1496,3 +1499,4 @@ x2p/str.h Public declarations for the above
x2p/util.c Utility routines
x2p/util.h Public declarations for the above
x2p/walk.c Parse tree walker
+xsutils.c Additional bundled package methods not in UNIVERSAL::
diff --git a/Makefile.SH b/Makefile.SH
index 73a9b6faea..e7fb039f33 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -231,13 +231,14 @@ h = $(h1) $(h2) $(h3) $(h4) $(h5)
c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c
c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c
-c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c globals.c perlio.c
+c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c
+c4 = globals.c perlio.c
-c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c
+c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c
obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT)
obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
-obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT)
+obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT)
obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
diff --git a/embed.h b/embed.h
index a8b80ecb69..1d33518e27 100644
--- a/embed.h
+++ b/embed.h
@@ -749,6 +749,11 @@
#define tmps_grow Perl_tmps_grow
#define sv_rvweaken Perl_sv_rvweaken
#define magic_killbackrefs Perl_magic_killbackrefs
+#define newANONATTRSUB Perl_newANONATTRSUB
+#define newATTRSUB Perl_newATTRSUB
+#define newMYSUB Perl_newMYSUB
+#define my_attrs Perl_my_attrs
+#define boot_core_xsutils Perl_boot_core_xsutils
#if defined(PERL_OBJECT)
#endif
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
@@ -803,6 +808,9 @@
#define gv_ename S_gv_ename
#define cv_clone2 S_cv_clone2
#define scalar_mod_type S_scalar_mod_type
+#define my_kid S_my_kid
+#define dup_attrlist S_dup_attrlist
+#define apply_attrs S_apply_attrs
# if defined(PL_OP_SLAB_ALLOC)
#define Slab_Alloc S_Slab_Alloc
# endif
@@ -991,6 +999,9 @@
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
#define isa_lookup S_isa_lookup
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+#define modify_SV_attributes S_modify_SV_attributes
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
#define mess_alloc S_mess_alloc
# if defined(LEAKTEST)
@@ -2065,6 +2076,11 @@
#define tmps_grow(a) Perl_tmps_grow(aTHX_ a)
#define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a)
#define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b)
+#define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d)
+#define newATTRSUB(a,b,c,d,e) Perl_newATTRSUB(aTHX_ a,b,c,d,e)
+#define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e)
+#define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b)
+#define boot_core_xsutils() Perl_boot_core_xsutils(aTHX)
#if defined(PERL_OBJECT)
#endif
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
@@ -2119,6 +2135,9 @@
#define gv_ename(a) S_gv_ename(aTHX_ a)
#define cv_clone2(a,b) S_cv_clone2(aTHX_ a,b)
#define scalar_mod_type(a,b) S_scalar_mod_type(aTHX_ a,b)
+#define my_kid(a,b) S_my_kid(aTHX_ a,b)
+#define dup_attrlist(a) S_dup_attrlist(aTHX_ a)
+#define apply_attrs(a,b,c) S_apply_attrs(aTHX_ a,b,c)
# if defined(PL_OP_SLAB_ALLOC)
#define Slab_Alloc(a,b) S_Slab_Alloc(aTHX_ a,b)
# endif
@@ -2272,7 +2291,7 @@
#define scan_ident(a,b,c,d,e) S_scan_ident(aTHX_ a,b,c,d,e)
#define scan_inputsymbol(a) S_scan_inputsymbol(aTHX_ a)
#define scan_pat(a,b) S_scan_pat(aTHX_ a,b)
-#define scan_str(a) S_scan_str(aTHX_ a)
+#define scan_str(a,b,c) S_scan_str(aTHX_ a,b,c)
#define scan_subst(a) S_scan_subst(aTHX_ a)
#define scan_trans(a) S_scan_trans(aTHX_ a)
#define scan_word(a,b,c,d,e) S_scan_word(aTHX_ a,b,c,d,e)
@@ -2306,6 +2325,9 @@
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
#define isa_lookup(a,b,c,d) S_isa_lookup(aTHX_ a,b,c,d)
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+#define modify_SV_attributes(a,b,c,d) S_modify_SV_attributes(aTHX_ a,b,c,d)
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
#define mess_alloc() S_mess_alloc(aTHX)
# if defined(LEAKTEST)
@@ -4072,6 +4094,16 @@
#define sv_rvweaken Perl_sv_rvweaken
#define Perl_magic_killbackrefs CPerlObj::Perl_magic_killbackrefs
#define magic_killbackrefs Perl_magic_killbackrefs
+#define Perl_newANONATTRSUB CPerlObj::Perl_newANONATTRSUB
+#define newANONATTRSUB Perl_newANONATTRSUB
+#define Perl_newATTRSUB CPerlObj::Perl_newATTRSUB
+#define newATTRSUB Perl_newATTRSUB
+#define Perl_newMYSUB CPerlObj::Perl_newMYSUB
+#define newMYSUB Perl_newMYSUB
+#define Perl_my_attrs CPerlObj::Perl_my_attrs
+#define my_attrs Perl_my_attrs
+#define Perl_boot_core_xsutils CPerlObj::Perl_boot_core_xsutils
+#define boot_core_xsutils Perl_boot_core_xsutils
#if defined(PERL_OBJECT)
#endif
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
@@ -4167,6 +4199,12 @@
#define cv_clone2 S_cv_clone2
#define S_scalar_mod_type CPerlObj::S_scalar_mod_type
#define scalar_mod_type S_scalar_mod_type
+#define S_my_kid CPerlObj::S_my_kid
+#define my_kid S_my_kid
+#define S_dup_attrlist CPerlObj::S_dup_attrlist
+#define dup_attrlist S_dup_attrlist
+#define S_apply_attrs CPerlObj::S_apply_attrs
+#define apply_attrs S_apply_attrs
# if defined(PL_OP_SLAB_ALLOC)
#define S_Slab_Alloc CPerlObj::S_Slab_Alloc
#define Slab_Alloc S_Slab_Alloc
@@ -4501,6 +4539,10 @@
#define S_isa_lookup CPerlObj::S_isa_lookup
#define isa_lookup S_isa_lookup
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+#define S_modify_SV_attributes CPerlObj::S_modify_SV_attributes
+#define modify_SV_attributes S_modify_SV_attributes
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
#define S_mess_alloc CPerlObj::S_mess_alloc
#define mess_alloc S_mess_alloc
diff --git a/embed.pl b/embed.pl
index ef8fc802d4..0543c0f32c 100755
--- a/embed.pl
+++ b/embed.pl
@@ -1753,6 +1753,11 @@ p |void |sv_force_normal|SV *sv
p |void |tmps_grow |I32 n
p |SV* |sv_rvweaken |SV *sv
p |int |magic_killbackrefs|SV *sv|MAGIC *mg
+p |OP* |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
+p |CV* |newATTRSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
+p |void |newMYSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
+p |OP * |my_attrs |OP *o|OP *attrs
+p |void |boot_core_xsutils
#if defined(PERL_OBJECT)
protected:
@@ -1816,6 +1821,9 @@ s |bool |is_handle_constructor |OP *o|I32 argnum
s |char* |gv_ename |GV *gv
s |CV* |cv_clone2 |CV *proto|CV *outside
s |bool |scalar_mod_type|OP *o|I32 type
+s |OP * |my_kid |OP *o|OP *attrs
+s |OP * |dup_attrlist |OP *o
+s |void |apply_attrs |HV *stash|SV *target|OP *attrs
# if defined(PL_OP_SLAB_ALLOC)
s |void* |Slab_Alloc |int m|size_t sz
# endif
@@ -1986,7 +1994,7 @@ s |char* |scan_ident |char *s|char *send|char *dest \
|STRLEN destlen|I32 ck_uni
s |char* |scan_inputsymbol|char *start
s |char* |scan_pat |char *start|I32 type
-s |char* |scan_str |char *start
+s |char* |scan_str |char *start|int keep_quoted|int keep_delims
s |char* |scan_subst |char *start
s |char* |scan_trans |char *start
s |char* |scan_word |char *s|char *dest|STRLEN destlen \
@@ -2024,6 +2032,10 @@ s |I32 |win32_textfilter |int idx|SV *sv|int maxlen
s |SV*|isa_lookup |HV *stash|const char *name|int len|int level
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+s |int|modify_SV_attributes|SV *sv|SV **retlist|SV **attrlist|int numattrs
+#endif
+
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
s |SV* |mess_alloc
# if defined(LEAKTEST)
diff --git a/global.sym b/global.sym
index 7379173182..5ee74d7477 100644
--- a/global.sym
+++ b/global.sym
@@ -666,3 +666,8 @@ Perl_sv_force_normal
Perl_tmps_grow
Perl_sv_rvweaken
Perl_magic_killbackrefs
+Perl_newANONATTRSUB
+Perl_newATTRSUB
+Perl_newMYSUB
+Perl_my_attrs
+Perl_boot_core_xsutils
diff --git a/gv.c b/gv.c
index 41a66b544e..ae76f82949 100644
--- a/gv.c
+++ b/gv.c
@@ -677,6 +677,10 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
}
}
break;
+ case 'V':
+ if (strEQ(name, "VERSION"))
+ GvMULTI_on(gv);
+ break;
case '&':
if (len > 1)
diff --git a/lib/AutoSplit.pm b/lib/AutoSplit.pm
index 33c0b9a03d..feecd58bf1 100644
--- a/lib/AutoSplit.pm
+++ b/lib/AutoSplit.pm
@@ -11,7 +11,7 @@ use vars qw(
$Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime
);
-$VERSION = "1.0303";
+$VERSION = "1.0304";
@ISA = qw(Exporter);
@EXPORT = qw(&autosplit &autosplit_lib_modules);
@EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime);
@@ -147,6 +147,13 @@ if (defined (&Dos::UseLFN)) {
}
my $Is_VMS = ($^O eq 'VMS');
+# allow checking for valid ': attrlist' attachments
+my $nested;
+$nested = qr{ \( (?: (?> [^()]+ ) | (?p{ $nested }) )* \) }x;
+my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) [\s,]* }x;
+my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
+
+
sub autosplit{
my($file, $autodir, $keep, $ckal, $ckmt) = @_;
@@ -289,7 +296,7 @@ sub autosplit_file {
if (/^package\s+([\w:]+)\s*;/) {
$this_package = $def_package = $1;
}
- if (/^sub\s+([\w:]+)(\s*\(.*?\))?/) {
+ if (/^sub\s+([\w:]+)(\s*(?:\(.*?\))?(?:$attr_list)?)/) {
print OUT "# end of $last_package\::$subname\n1;\n"
if $last_package;
$subname = $1;
@@ -459,3 +466,6 @@ sub test6 { return join ":", __FILE__,__LINE__; }
package Yet::Another::AutoSplit;
sub testtesttesttest4_1 ($) { "another test 4\n"; }
sub testtesttesttest4_2 ($$) { "another duplicate test 4\n"; }
+package Yet::More::Attributes;
+sub test_a1 ($) : locked { 1; }
+sub test_a2 : locked { 1; }
diff --git a/lib/SelfLoader.pm b/lib/SelfLoader.pm
index c4e9175a79..4672ac49da 100644
--- a/lib/SelfLoader.pm
+++ b/lib/SelfLoader.pm
@@ -3,12 +3,18 @@ package SelfLoader;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(AUTOLOAD);
-$VERSION = "1.08";
+$VERSION = "1.09";
sub Version {$VERSION}
$DEBUG = 0;
my %Cache; # private cache for all SelfLoader's client packages
+# allow checking for valid ': attrlist' attachments
+my $nested;
+$nested = qr{ \( (?: (?> [^()]+ ) | (?p{ $nested }) )* \) }x;
+my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) [\s,]* }x;
+my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x;
+
sub croak { require Carp; goto &Carp::croak }
AUTOLOAD {
@@ -50,7 +56,7 @@ sub _load_stubs {
local($/) = "\n";
while(defined($line = <$fh>) and $line !~ m/^__END__/) {
- if ($line =~ m/^sub\s+([\w:]+)\s*(\([\\\$\@\%\&\*\;]*\))?/) {
+ if ($line =~ m/^sub\s+([\w:]+)\s*((?:\([\\\$\@\%\&\*\;]*\))?(?:$attr_list)?)/) {
push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype));
$protoype = $2;
@lines = ($line);
diff --git a/lib/attributes.pm b/lib/attributes.pm
new file mode 100644
index 0000000000..e49204fc76
--- /dev/null
+++ b/lib/attributes.pm
@@ -0,0 +1,379 @@
+package attributes;
+
+$VERSION = 0.01;
+
+#@EXPORT_OK = qw(get reftype);
+#@EXPORT = ();
+
+use strict;
+
+sub croak {
+ require Carp;
+ goto &Carp::croak;
+}
+
+sub carp {
+ require Carp;
+ goto &Carp::carp;
+}
+
+## forward declaration(s) rather than wrapping the bootstrap call in BEGIN{}
+#sub reftype ($) ;
+#sub _fetch_attrs ($) ;
+#sub _guess_stash ($) ;
+#sub _modify_attrs ;
+#sub _warn_reserved () ;
+#
+# The extra trips through newATTRSUB in the interpreter wipe out any savings
+# from avoiding the BEGIN block. Just do the bootstrap now.
+BEGIN { bootstrap }
+
+sub import {
+ @_ > 2 && ref $_[2] or
+ croak 'Usage: use '.__PACKAGE__.' $home_stash, $ref, @attrlist';
+ my (undef,$home_stash,$svref,@attrs) = @_;
+
+ my $svtype = uc reftype($svref);
+ my $pkgmeth;
+ $pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES")
+ if defined $home_stash && $home_stash ne '';
+ my @badattrs;
+ if ($pkgmeth) {
+ my @pkgattrs = _modify_attrs($svref, @attrs);
+ @badattrs = $pkgmeth->($home_stash, $svref, @attrs);
+ if (!@badattrs && @pkgattrs) {
+ return unless _warn_reserved;
+ @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs;
+ if (@pkgattrs) {
+ for my $attr (@pkgattrs) {
+ $attr =~ s/\(.+\z//s;
+ }
+ my $s = ((@pkgattrs == 1) ? '' : 's');
+ carp "$svtype package attribute$s " .
+ "may clash with future reserved word$s: " .
+ join(' , ' , @pkgattrs);
+ }
+ }
+ }
+ else {
+ @badattrs = _modify_attrs($svref, @attrs);
+ }
+ if (@badattrs) {
+ croak "Invalid $svtype attribute" .
+ (( @badattrs == 1 ) ? '' : 's') .
+ ": " .
+ join(' , ', @badattrs);
+ }
+}
+
+sub get ($) {
+ @_ == 1 && ref $_[0] or
+ croak 'Usage: '.__PACKAGE__.'::get $ref';
+ my $svref = shift;
+ my $svtype = uc reftype $svref;
+ my $stash = _guess_stash $svref;
+ $stash = caller unless defined $stash;
+ my $pkgmeth;
+ $pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES")
+ if defined $stash && $stash ne '';
+ return $pkgmeth ?
+ (_fetch_attrs($svref), $pkgmeth->($stash, $svref)) :
+ (_fetch_attrs($svref))
+ ;
+}
+
+#sub export {
+# require Exporter;
+# goto &Exporter::import;
+#}
+#
+#sub require_version { goto &UNIVERSAL::VERSION }
+
+1;
+__END__
+#The POD goes here
+
+=head1 NAME
+
+attributes - get/set subroutine or variable attributes
+
+=head1 SYNOPSIS
+
+ sub foo : method ;
+ my ($x,@y,%z) : Bent ;
+ my $s = sub : method { ... };
+
+ use attributes (); # optional, to get subroutine declarations
+ my @attrlist = attributes::get(\&foo);
+
+=head1 DESCRIPTION
+
+Subroutine declarations and definitions may optionally have attribute lists
+associated with them. (Variable C<my> declarations also may, but see the
+warning below.) Perl handles these declarations by passing some information
+about the call site and the thing being declared along with the attribute
+list to this module. In particular, first example above is equivalent to
+the following:
+
+ use attributes __PACKAGE__, \&foo, 'method';
+
+The second example in the synopsis does something equivalent to this:
+
+ use attributes __PACKAGE__, \$x, 'Bent';
+ use attributes __PACKAGE__, \@y, 'Bent';
+ use attributes __PACKAGE__, \%z, 'Bent';
+
+Yes, that's three invocations.
+
+B<WARNING>: attribute declarations for variables are an I<experimental>
+feature. The semantics of such declarations could change or be removed
+in future versions. They are present for purposes of experimentation
+with what the semantics ought to be. Do not rely on the current
+implementation of this feature.
+
+There are only a few attributes currently handled by Perl itself (or
+directly by this module, depending on how you look at it.) However,
+package-specific attributes are allowed by an extension mechanism.
+(See L<"Package-specific Attribute Handling"> below.)
+
+The setting of attributes happens at compile time. An attempt to set
+an unrecognized attribute is a fatal error. (The error is trappable, but
+it still stops the compilation within that C<eval>.) Setting an attribute
+with a name that's all lowercase letters that's not a built-in attribute
+(such as "foo")
+will result in a warning with B<-w> or C<use warnings 'reserved'>.
+
+=head2 Built-in Attributes
+
+The following are the built-in attributes for subroutines:
+
+=over 4
+
+=item locked
+
+Setting this attribute is only meaningful when the subroutine or
+method is to be called by multiple threads. When set on a method
+subroutine (i.e., one marked with the B<method> attribute below),
+Perl ensures that any invocation of it implicitly locks its first
+argument before execution. When set on a non-method subroutine,
+Perl ensures that a lock is taken on the subroutine itself before
+execution. The semantics of the lock are exactly those of one
+explicitly taken with the C<lock> operator immediately after the
+subroutine is entered.
+
+=item method
+
+Indicates that the referenced subroutine is a method.
+This has a meaning when taken together with the B<locked> attribute,
+as described there. It also means that a subroutine so marked
+will not trigger the "Ambiguous call resolved as CORE::%s" warning.
+
+=back
+
+There are no built-in attributes for anything other than subroutines.
+
+=head2 Available Subroutines
+
+The following subroutines are available for general use once this module
+has been loaded:
+
+=over 4
+
+=item get
+
+This routine expects a single parameter--a reference to a
+subroutine or variable. It returns a list of attributes, which may be
+empty. If passed invalid arguments, it uses die() (via L<Carp::croak|Carp>)
+to raise a fatal exception. If it can find an appropriate package name
+for a class method lookup, it will include the results from a
+C<FETCH_I<type>_ATTRIBUTES> call in its return list, as described in
+L"Package-specific Attribute Handling"> below.
+Otherwise, only L<built-in attributes|"Built-in Attributes"> will be returned.
+
+=item reftype
+
+This routine expects a single parameter--a reference to a subroutine or
+variable. It returns the built-in type of the referenced variable,
+ignoring any package into which it might have been blessed.
+This can be useful for determining the I<type> value which forms part of
+the method names described in L"Package-specific Attribute Handling"> below.
+
+=back
+
+Note that these routines are I<not> exported. This is primarily because
+the C<use> mechanism which would normally import them is already in use
+by Perl itself to implement the C<sub : attributes> syntax.
+
+=head2 Package-specific Attribute Handling
+
+B<WARNING>: the mechanisms described here are still experimental. Do not
+rely on the current implementation. In particular, there is no provision
+for applying package attributes to 'cloned' copies of subroutines used as
+closures. (See L<perlref/"Making References"> for information on closures.)
+Package-specific attribute handling may change incompatibly in a future
+release.
+
+When an attribute list is present in a declaration, a check is made to see
+whether an attribute 'modify' handler is present in the appropriate package
+(or its @ISA inheritance tree). Similarly, when C<attributes::get> is
+called on a valid reference, a check is made for an appropriate attribute
+'fetch' handler. See L<"EXAMPLES"> to see how the "appropriate package"
+determination works.
+
+The handler names are based on the underlying type of the variable being
+declared or of the reference passed. Because these attributes are
+associated with subroutine or variable declarations, this deliberately
+ignores any possibility of being blessed into some package. Thus, a
+subroutine declaration uses "CODE" as its I<type>, and even a blessed
+hash reference uses "HASH" as its I<type>.
+
+The class methods invoked for modifying and fetching are these:
+
+=over 4
+
+=item FETCH_I<type>_ATTRIBUTES
+
+This method receives a single argument, which is a reference to the
+variable or subroutine for which package-defined attributes are desired.
+The expected return value is a list of associated attributes.
+This list may be empty.
+
+=item MODIFY_I<type>_ATTRIBUTES
+
+This method is called with two fixed arguments, followed by the list of
+attributes from the relevant declaration. The two fixed arguments are
+the relevant package name and a reference to the declared subroutine or
+variable. The expected return value as a list of attributes which were
+not recognized by this handler. Note that this allows for a derived class
+to delegate a call to its base class, and then only examine the attributes
+which the base class didn't already handle for it.
+
+The call to this method is currently made I<during> the processing of the
+declaration. In particular, this means that a subroutine reference will
+probably be for an undefined subroutine, even if this declaration is
+actually part of the definition.
+
+=back
+
+Calling C<attributes::get()> from within the scope of a null package
+declaration C<package ;> for an unblessed variable reference will
+not provide any starting package name for the 'fetch' method lookup.
+Thus, this circumstance will not result in a method call for package-defined
+attributes. A named subroutine knows to which symbol table entry it belongs
+(or originally belonged), and it will use the corresponding package.
+An anonymous subroutine knows the package name into which it was compiled
+(unless it was also compiled with a null package declaration), and so it
+will use that package name.
+
+=head2 Syntax of Attribute Lists
+
+An attribute list is a sequence of attribute specifications, separated by
+whitespace, commas, or both. Each attribute specification is a simple
+name, optionally followed by a parenthesised parameter list.
+If such a parameter list is present, it is scanned past as for the rules
+for the C<q()> operator. (See L<perlop/"Quote and Quote-like Operators">.)
+The parameter list is passed as it was found, however, and not as per C<q()>.
+
+Some examples of syntactically valid attribute lists:
+
+ switch(10,foo(7,3)) , , expensive
+ Ugly('\(") , Bad
+ _5x5
+ locked method
+
+Some examples of syntactically invalid attribute lists (with annotation):
+
+ switch(10,foo() # ()-string not balanced
+ Ugly('(') # ()-string not balanced
+ 5x5 # "5x5" not a valid identifier
+ Y2::north # "Y2::north" not a simple identifier
+ foo + bar # "+" neither a comma nor whitespace
+
+=head1 EXAMPLES
+
+Here are some samples of syntactically valid declarations, with annotation
+as to how they resolve internally into C<use attributes> invocations by
+perl. These examples are primarily useful to see how the "appropriate
+package" is found for the possible method lookups for package-defined
+attributes.
+
+=over 4
+
+=item 1.
+
+Code:
+
+ package Canine;
+ package Dog;
+ my Canine $spot : Watchful ;
+
+Effect:
+
+ use attributes Canine => \$spot, "Watchful";
+
+=item 2.
+
+Code:
+
+ package Felis;
+ my $cat : Nervous;
+
+Effect:
+
+ use attributes Felis => \$cat, "Nervous";
+
+=item 3.
+
+Code:
+
+ package X;
+ sub foo : locked ;
+
+Effect:
+
+ use attributes X => \&foo, "locked";
+
+=item 4.
+
+Code:
+
+ package X;
+ sub Y::x : locked { 1 }
+
+Effect:
+
+ use attributes Y => \&Y::x, "locked";
+
+=item 5.
+
+Code:
+
+ package X;
+ sub foo { 1 }
+
+ package Y;
+ BEGIN { *bar = \&X::foo; }
+
+ package Z;
+ sub Y::bar : locked ;
+
+Effect:
+
+ use attributes X => \&X::foo, "locked";
+
+=back
+
+This last example is purely for purposes of completeness. You should not
+be trying to mess with the attributes of something in a package that's
+not your own.
+
+=head1 SEE ALSO
+
+L<perlsub/"Private Variables via my()"> and
+L<perlsub/"Subroutine Attributes"> for details on the basic declarations;
+L<attrs> for the obsolescent form of subroutine attribute specification
+which this module replaces;
+L<perlfunc/use> for details on the normal invocation mechanism.
+
+=cut
+
diff --git a/objXSUB.h b/objXSUB.h
index 2423f58bcb..e7b34b1cfd 100644
--- a/objXSUB.h
+++ b/objXSUB.h
@@ -3509,6 +3509,26 @@
#define Perl_magic_killbackrefs pPerl->Perl_magic_killbackrefs
#undef magic_killbackrefs
#define magic_killbackrefs Perl_magic_killbackrefs
+#undef Perl_newANONATTRSUB
+#define Perl_newANONATTRSUB pPerl->Perl_newANONATTRSUB
+#undef newANONATTRSUB
+#define newANONATTRSUB Perl_newANONATTRSUB
+#undef Perl_newATTRSUB
+#define Perl_newATTRSUB pPerl->Perl_newATTRSUB
+#undef newATTRSUB
+#define newATTRSUB Perl_newATTRSUB
+#undef Perl_newMYSUB
+#define Perl_newMYSUB pPerl->Perl_newMYSUB
+#undef newMYSUB
+#define newMYSUB Perl_newMYSUB
+#undef Perl_my_attrs
+#define Perl_my_attrs pPerl->Perl_my_attrs
+#undef my_attrs
+#define my_attrs Perl_my_attrs
+#undef Perl_boot_core_xsutils
+#define Perl_boot_core_xsutils pPerl->Perl_boot_core_xsutils
+#undef boot_core_xsutils
+#define boot_core_xsutils Perl_boot_core_xsutils
#if defined(PERL_OBJECT)
#endif
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
@@ -3564,6 +3584,8 @@
#endif
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
# if defined(LEAKTEST)
# endif
diff --git a/op.c b/op.c
index e99ef60bc8..42ed8b201e 100644
--- a/op.c
+++ b/op.c
@@ -1576,8 +1576,60 @@ Perl_ref(pTHX_ OP *o, I32 type)
}
-OP *
-Perl_my(pTHX_ OP *o)
+STATIC OP *
+S_dup_attrlist(pTHX_ OP *o)
+{
+ OP *rop = Nullop;
+
+ /* An attrlist is either a simple OP_CONST or an OP_LIST with kids,
+ * where the first kid is OP_PUSHMARK and the remaining ones
+ * are OP_CONST. We need to push the OP_CONST values.
+ */
+ if (o->op_type == OP_CONST)
+ rop = newSVOP(OP_CONST, o->op_flags, SvREFCNT_inc(cSVOPo->op_sv));
+ else {
+ assert((o->op_type == OP_LIST) && (o->op_flags & OPf_KIDS));
+ for (o = cLISTOPo->op_first; o; o=o->op_sibling) {
+ if (o->op_type == OP_CONST)
+ rop = append_elem(OP_LIST, rop,
+ newSVOP(OP_CONST, o->op_flags,
+ SvREFCNT_inc(cSVOPo->op_sv)));
+ }
+ }
+ return rop;
+}
+
+STATIC void
+S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs)
+{
+ OP *modname; /* for 'use' */
+ SV *stashsv;
+
+ /* fake up C<use attributes $pkg,$rv,@attrs> */
+ ENTER; /* need to protect against side-effects of 'use' */
+ SAVEINT(PL_expect);
+ if (stash && HvNAME(stash))
+ stashsv = newSVpv(HvNAME(stash), 0);
+ else
+ stashsv = &PL_sv_no;
+#define ATTRSMODULE "attributes"
+ modname = newSVOP(OP_CONST, 0,
+ newSVpvn(ATTRSMODULE, sizeof(ATTRSMODULE)-1));
+ modname->op_private |= OPpCONST_BARE;
+ /* that flag is required to make 'use' work right */
+ utilize(1, start_subparse(FALSE, 0),
+ Nullop, /* version */
+ modname,
+ prepend_elem(OP_LIST,
+ newSVOP(OP_CONST, 0, stashsv),
+ prepend_elem(OP_LIST,
+ newSVOP(OP_CONST, 0, newRV(target)),
+ dup_attrlist(attrs))));
+ LEAVE;
+}
+
+STATIC OP *
+S_my_kid(pTHX_ OP *o, OP *attrs)
{
OP *kid;
I32 type;
@@ -1588,7 +1640,7 @@ Perl_my(pTHX_ OP *o)
type = o->op_type;
if (type == OP_LIST) {
for (kid = cLISTOPo->op_first; kid; kid = kid->op_sibling)
- my(kid);
+ my_kid(kid, attrs);
} else if (type == OP_UNDEF) {
return o;
} else if (type != OP_PADSV &&
@@ -1599,12 +1651,44 @@ Perl_my(pTHX_ OP *o)
yyerror(Perl_form(aTHX_ "Can't declare %s in my", PL_op_desc[o->op_type]));
return o;
}
+ else if (attrs && type != OP_PUSHMARK) {
+ HV *stash;
+ SV *padsv;
+ SV **namesvp;
+
+ /* check for C<my Dog $spot> when deciding package */
+ namesvp = av_fetch(PL_comppad_name, o->op_targ, FALSE);
+ if (namesvp && *namesvp && SvOBJECT(*namesvp) && HvNAME(SvSTASH(*namesvp)))
+ stash = SvSTASH(*namesvp);
+ else
+ stash = PL_curstash;
+ padsv = PAD_SV(o->op_targ);
+ apply_attrs(stash, padsv, attrs);
+ }
o->op_flags |= OPf_MOD;
o->op_private |= OPpLVAL_INTRO;
return o;
}
OP *
+Perl_my_attrs(pTHX_ OP *o, OP *attrs)
+{
+ if (o->op_flags & OPf_PARENS)
+ list(o);
+ PL_in_my = FALSE;
+ PL_in_my_stash = Nullhv;
+ if (attrs)
+ SAVEFREEOP(attrs);
+ return my_kid(o, attrs);
+}
+
+OP *
+Perl_my(pTHX_ OP *o)
+{
+ return my_kid(o, Nullop);
+}
+
+OP *
Perl_sawparens(pTHX_ OP *o)
{
if (o)
@@ -2807,9 +2891,10 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *id, OP *arg)
}
/* Fake up the BEGIN {}, which does its thing immediately. */
- newSUB(floor,
+ newATTRSUB(floor,
newSVOP(OP_CONST, 0, newSVpvn("BEGIN", 5)),
Nullop,
+ Nullop,
append_elem(OP_LINESEQ,
append_elem(OP_LINESEQ,
newSTATEOP(0, Nullch, rqop),
@@ -3896,14 +3981,35 @@ Perl_op_const_sv(pTHX_ OP *o, CV *cv)
return sv;
}
+void
+Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
+{
+ if (o)
+ SAVEFREEOP(o);
+ if (proto)
+ SAVEFREEOP(proto);
+ if (attrs)
+ SAVEFREEOP(attrs);
+ if (block)
+ SAVEFREEOP(block);
+ Perl_croak(aTHX_ "\"my sub\" not yet implemented");
+}
+
CV *
Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
{
+ return Perl_newATTRSUB(aTHX_ floor, o, proto, Nullop, block);
+}
+
+CV *
+Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
+{
dTHR;
STRLEN n_a;
char *name = o ? SvPVx(cSVOPo->op_sv, n_a) : Nullch;
GV *gv = gv_fetchpv(name ? name : "__ANON__",
- GV_ADDMULTI | (block ? 0 : GV_NOINIT), SVt_PVCV);
+ GV_ADDMULTI | ((block || attrs) ? 0 : GV_NOINIT),
+ SVt_PVCV);
char *ps = proto ? SvPVx(((SVOP*)proto)->op_sv, n_a) : Nullch;
register CV *cv=0;
I32 ix;
@@ -3912,8 +4018,10 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
SAVEFREEOP(o);
if (proto)
SAVEFREEOP(proto);
+ if (attrs)
+ SAVEFREEOP(attrs);
- if (SvTYPE(gv) != SVt_PVGV) { /* Prototype now, and had
+ if (SvTYPE(gv) != SVt_PVGV) { /* Maybe prototype now, and had at
maximum a prototype before. */
if (SvTYPE(gv) > SVt_NULL) {
if (!SvPOK((SV*)gv) && !(SvIOK((SV*)gv) && SvIVX((SV*)gv) == -1)
@@ -3941,7 +4049,7 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
SV* const_sv;
bool const_changed = TRUE;
- if (!block) {
+ if (!block && !attrs) {
/* just a "sub foo;" when &foo is already defined */
SAVEFREESV(PL_compcv);
goto done;
@@ -3949,6 +4057,8 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
/* ahem, death to those who redefine active sort subs */
if (PL_curstackinfo->si_type == PERLSI_SORT && PL_sortcop == CvSTART(cv))
Perl_croak(aTHX_ "Can't redefine active sort subroutine %s", name);
+ if (!block)
+ goto withattrs;
if(const_sv = cv_const_sv(cv))
const_changed = sv_cmp(const_sv, op_const_sv(block, Nullcv));
if ((const_sv && const_changed) || ckWARN(WARN_REDEFINE)
@@ -3960,14 +4070,46 @@ Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
PL_curcop->cop_line = PL_copline;
Perl_warner(aTHX_ WARN_REDEFINE,
const_sv ? "Constant subroutine %s redefined"
- : "Subroutine %s redefined", name);
+ : "Subroutine %s redefined", name);
PL_curcop->cop_line = oldline;
}
SvREFCNT_dec(cv);
cv = Nullcv;
}
}
+ withattrs:
+ if (attrs) {
+ HV *stash;
+ SV *rcv;
+
+ /* Need to do a C<use attributes $stash_of_cv,\&cv,@attrs>
+ * before we clobber PL_compcv.
+ */
+ if (cv && !block) {
+ rcv = (SV*)cv;
+ if (CvGV(cv) && GvSTASH(CvGV(cv)) && HvNAME(GvSTASH(CvGV(cv))))
+ stash = GvSTASH(CvGV(cv));
+ else if (CvSTASH(cv) && HvNAME(CvSTASH(cv)))
+ stash = CvSTASH(cv);
+ else
+ stash = PL_curstash;
+ }
+ else {
+ /* possibly about to re-define existing subr -- ignore old cv */
+ rcv = (SV*)PL_compcv;
+ if (name && GvSTASH(gv) && HvNAME(GvSTASH(gv)))
+ stash = GvSTASH(gv);
+ else
+ stash = PL_curstash;
+ }
+ apply_attrs(stash, rcv, attrs);
+ }
if (cv) { /* must reuse cv if autoloaded */
+ if (!block) {
+ /* got here with just attrs -- work done, so bug out */
+ SAVEFREESV(PL_compcv);
+ goto done;
+ }
cv_undef(cv);
CvFLAGS(cv) = CvFLAGS(PL_compcv);
CvOUTSIDE(cv) = CvOUTSIDE(PL_compcv);
@@ -4155,10 +4297,11 @@ Perl_newCONSTSUB(pTHX_ HV *stash, char *name, SV *sv)
if(stash)
PL_curstash = PL_curcop->cop_stash = stash;
- newSUB(
+ newATTRSUB(
start_subparse(FALSE, 0),
newSVOP(OP_CONST, 0, newSVpv(name,0)),
newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */
+ Nullop,
newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
);
@@ -4311,8 +4454,15 @@ Perl_newANONHASH(pTHX_ OP *o)
OP *
Perl_newANONSUB(pTHX_ I32 floor, OP *proto, OP *block)
{
+ return newANONATTRSUB(floor, proto, Nullop, block);
+}
+
+OP *
+Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block)
+{
return newUNOP(OP_REFGEN, 0,
- newSVOP(OP_ANONCODE, 0, (SV*)newSUB(floor, 0, proto, block)));
+ newSVOP(OP_ANONCODE, 0,
+ (SV*)newATTRSUB(floor, 0, proto, attrs, block)));
}
OP *
diff --git a/perl.c b/perl.c
index a5816a94b1..3c3a629055 100644
--- a/perl.c
+++ b/perl.c
@@ -926,6 +926,7 @@ print \" \\@INC:\\n @INC\\n\";");
CvPADLIST(PL_compcv) = comppadlist;
boot_core_UNIVERSAL();
+ boot_core_xsutils();
if (xsinit)
(*xsinit)(aTHXo); /* in case linked C routines want magical variables */
diff --git a/perl.h b/perl.h
index 678cef5a22..5d84aecf6a 100644
--- a/perl.h
+++ b/perl.h
@@ -2429,6 +2429,8 @@ typedef enum {
XREF,
XSTATE,
XBLOCK,
+ XATTRBLOCK,
+ XATTRTERM,
XTERMBLOCK
} expectation;
diff --git a/perlapi.c b/perlapi.c
index f409754310..1945146ff8 100755
--- a/perlapi.c
+++ b/perlapi.c
@@ -4779,6 +4779,41 @@ Perl_magic_killbackrefs(pTHXo_ SV *sv, MAGIC *mg)
{
return ((CPerlObj*)pPerl)->Perl_magic_killbackrefs(sv, mg);
}
+
+#undef Perl_newANONATTRSUB
+OP*
+Perl_newANONATTRSUB(pTHXo_ I32 floor, OP *proto, OP *attrs, OP *block)
+{
+ return ((CPerlObj*)pPerl)->Perl_newANONATTRSUB(floor, proto, attrs, block);
+}
+
+#undef Perl_newATTRSUB
+CV*
+Perl_newATTRSUB(pTHXo_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
+{
+ return ((CPerlObj*)pPerl)->Perl_newATTRSUB(floor, o, proto, attrs, block);
+}
+
+#undef Perl_newMYSUB
+void
+Perl_newMYSUB(pTHXo_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
+{
+ ((CPerlObj*)pPerl)->Perl_newMYSUB(floor, o, proto, attrs, block);
+}
+
+#undef Perl_my_attrs
+OP *
+Perl_my_attrs(pTHXo_ OP *o, OP *attrs)
+{
+ return ((CPerlObj*)pPerl)->Perl_my_attrs(o, attrs);
+}
+
+#undef Perl_boot_core_xsutils
+void
+Perl_boot_core_xsutils(pTHXo)
+{
+ ((CPerlObj*)pPerl)->Perl_boot_core_xsutils();
+}
#if defined(PERL_OBJECT)
#endif
#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
@@ -4834,6 +4869,8 @@ Perl_magic_killbackrefs(pTHXo_ SV *sv, MAGIC *mg)
#endif
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
# if defined(LEAKTEST)
# endif
diff --git a/perly.c b/perly.c
index 37af6dafa8..e1458d8ed3 100644
--- a/perly.c
+++ b/perly.c
@@ -7,6 +7,10 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
#define PERL_IN_PERLY_C
#include "perl.h"
+#define dep() deprecate("\"do\" to call subroutines")
+
+/* stuff included here to make perly_c.diff apply better */
+
#define yydebug PL_yydebug
#define yynerrs PL_yynerrs
#define yyerrflag PL_yyerrflag
@@ -14,1117 +18,1116 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
#define yyval PL_yyval
#define yylval PL_yylval
-#define dep() deprecate("\"do\" to call subroutines")
+struct ysv {
+ short* yyss;
+ YYSTYPE* yyvs;
+ int oldyydebug;
+ int oldyynerrs;
+ int oldyyerrflag;
+ int oldyychar;
+ YYSTYPE oldyyval;
+ YYSTYPE oldyylval;
+};
static void yydestruct(pTHXo_ void *ptr);
-#line 27 "perly.y"
+#line 49 "perly.y"
+#if 0 /* get this from perly.h instead */
+#line 52 "perly.y"
+typedef union {
+ I32 ival;
+ char *pval;
+ OP *opval;
+ GV *gvval;
+} YYSTYPE;
+#line 60 "perly.y"
+#endif /* 0 */
+
+#ifdef USE_PURE_BISON
+#define YYLEX_PARAM (&yychar)
+#endif
+
+#line 51 "perly.c"
#define YYERRCODE 256
-static short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
- 15, 15, 15, 14, 14, 43, 43, 13, 13, 13,
- 13, 13, 13, 13, 27, 27, 28, 28, 29, 30,
- 31, 32, 33, 45, 45, 1, 1, 1, 1, 3,
- 39, 39, 47, 4, 5, 6, 40, 41, 41, 42,
- 42, 48, 48, 50, 49, 16, 16, 16, 26, 26,
- 26, 37, 37, 37, 37, 37, 37, 37, 37, 51,
- 37, 38, 38, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+static short yylhs[] = { -1,
+ 50, 0, 8, 6, 9, 7, 10, 10, 10, 11,
+ 11, 11, 11, 24, 24, 24, 24, 24, 24, 24,
+ 14, 14, 14, 13, 13, 42, 42, 12, 12, 12,
+ 12, 12, 12, 12, 26, 26, 27, 27, 28, 29,
+ 30, 31, 32, 49, 49, 1, 1, 1, 1, 1,
+ 2, 38, 38, 46, 51, 3, 4, 5, 39, 40,
+ 40, 44, 44, 44, 45, 45, 41, 41, 52, 52,
+ 54, 53, 15, 15, 15, 25, 25, 25, 36, 36,
+ 36, 36, 36, 36, 36, 36, 55, 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, 34, 34, 35, 35, 35, 2, 2, 44,
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
+ 17, 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,
+ 47, 47, 48, 48, 48, 48, 48, 33, 33, 34,
+ 34, 34, 43, 23, 18, 19, 20, 21, 22, 35,
+ 35, 35, 35,
};
-static short yylen[] = { 2,
+static short yylen[] = { 2,
0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
0, 2, 6, 7, 7, 0, 2, 8, 8, 10,
9, 8, 11, 3, 0, 1, 0, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 1, 1, 1, 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, 3, 5, 2, 4, 0,
- 5, 1, 1, 5, 4, 5, 4, 5, 6, 5,
- 4, 5, 4, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 5, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
- 3, 2, 4, 3, 4, 1, 1, 1, 1, 1,
- 1, 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, 1, 0, 1, 1, 1, 1, 1, 1,
+ 4, 1, 0, 6, 6, 0, 0, 0, 1, 0,
+ 1, 0, 2, 1, 2, 1, 1, 1, 3, 2,
+ 0, 7, 3, 3, 1, 2, 3, 1, 3, 5,
+ 6, 3, 3, 5, 2, 4, 0, 5, 1, 1,
+ 5, 4, 5, 4, 5, 6, 5, 4, 5, 4,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 5, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 1, 2, 3, 2, 3, 2,
+ 4, 3, 5, 1, 1, 1, 1, 1, 1, 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,
+ 3, 2, 3, 2, 1, 1, 1, 0, 1, 0,
+ 1, 2, 1, 2, 2, 2, 2, 2, 2, 1,
+ 1, 1, 1,
};
-static short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
- 64, 14, 4, 161, 0, 0, 136, 0, 156, 0,
- 55, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 168, 169, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 0, 128, 130, 0, 0, 0, 0, 162,
- 51, 0, 57, 0, 62, 0, 7, 177, 180, 179,
- 178, 0, 0, 0, 0, 0, 0, 4, 4, 4,
- 4, 4, 4, 0, 0, 0, 0, 0, 151, 0,
- 0, 0, 0, 78, 0, 175, 0, 142, 0, 0,
- 0, 0, 0, 171, 0, 0, 0, 0, 0, 0,
- 0, 0, 122, 0, 0, 0, 172, 173, 174, 176,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
+static short yydefred[] = { 1,
+ 0, 7, 0, 45, 58, 56, 0, 56, 56, 8,
+ 46, 9, 11, 48, 0, 47, 49, 50, 0, 0,
+ 0, 70, 71, 0, 14, 4, 169, 0, 0, 144,
+ 0, 164, 0, 57, 57, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 114, 115, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 50, 59,
- 0, 0, 0, 76, 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 4, 155, 157, 0, 0, 0,
- 0, 0, 0, 0, 124, 0, 140, 0, 0, 121,
- 27, 0, 0, 19, 0, 0, 0, 0, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 0, 0, 83, 0, 0,
- 94, 0, 0, 0, 0, 0, 0, 0, 138, 0,
- 0, 61, 60, 53, 0, 3, 0, 0, 159, 0,
- 125, 0, 42, 0, 43, 0, 0, 0, 0, 170,
- 0, 0, 36, 41, 0, 0, 0, 158, 167, 79,
- 0, 143, 0, 145, 0, 123, 0, 0, 0, 0,
- 91, 0, 0, 0, 0, 93, 87, 0, 85, 0,
- 134, 0, 139, 0, 77, 0, 81, 0, 0, 0,
- 0, 0, 0, 0, 0, 73, 144, 146, 133, 0,
- 0, 0, 92, 86, 0, 90, 88, 135, 84, 65,
- 160, 6, 0, 0, 0, 0, 0, 0, 0, 0,
- 132, 89, 74, 7, 28, 29, 0, 0, 24, 25,
- 0, 32, 0, 0, 0, 22, 0, 0, 0, 31,
- 5, 0, 30, 0, 0, 33, 0, 23,
+ 0, 12, 0, 0, 0, 0, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 136, 138, 0, 0, 0,
+ 0, 170, 125, 52, 0, 59, 0, 69, 0, 0,
+ 7, 190, 193, 192, 191, 0, 0, 0, 0, 0,
+ 0, 4, 4, 4, 4, 4, 4, 0, 0, 0,
+ 0, 0, 159, 0, 0, 0, 0, 85, 0, 188,
+ 0, 150, 0, 0, 0, 0, 0, 0, 0, 175,
+ 177, 176, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 130, 0, 0, 0, 185, 186, 187, 189,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 51, 61, 0,
+ 0, 0, 0, 83, 0, 0, 87, 0, 0, 0,
+ 0, 0, 0, 0, 4, 163, 165, 0, 0, 0,
+ 0, 0, 0, 0, 132, 0, 148, 174, 0, 0,
+ 171, 0, 0, 129, 27, 0, 0, 19, 0, 0,
+ 0, 0, 73, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 89, 0,
+ 0, 90, 0, 0, 101, 0, 0, 0, 0, 0,
+ 0, 0, 146, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 167, 0, 0, 0, 42, 0, 43, 0,
+ 0, 0, 0, 183, 0, 0, 36, 41, 0, 0,
+ 0, 166, 182, 86, 0, 151, 0, 153, 0, 131,
+ 173, 65, 0, 0, 0, 0, 98, 0, 0, 0,
+ 0, 100, 94, 0, 92, 0, 142, 0, 147, 63,
+ 68, 67, 55, 0, 54, 84, 0, 88, 133, 0,
+ 0, 0, 0, 0, 0, 0, 0, 80, 152, 154,
+ 141, 0, 0, 0, 99, 93, 0, 97, 95, 143,
+ 91, 72, 168, 6, 0, 0, 0, 0, 0, 0,
+ 0, 0, 140, 96, 81, 7, 28, 29, 0, 0,
+ 24, 25, 0, 32, 0, 0, 0, 22, 0, 0,
+ 0, 31, 5, 0, 30, 0, 0, 33, 0, 23,
};
-static short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
- 74, 75, 76, 77, 273, 79, 274, 263, 265, 268,
- 276, 264, 266, 114, 200, 92, 80, 239, 82, 84,
- 181, 254, 143, 271, 13, 2, 14, 15, 16, 86,
- 260,
+static short yydgoto[] = { 1,
+ 10, 11, 20, 100, 19, 91, 366, 94, 355, 3,
+ 12, 13, 70, 371, 281, 72, 73, 74, 75, 76,
+ 77, 78, 79, 287, 81, 288, 277, 279, 282, 290,
+ 278, 280, 118, 210, 96, 82, 253, 85, 87, 190,
+ 323, 152, 285, 267, 221, 14, 83, 133, 15, 2,
+ 16, 17, 18, 89, 274,
};
-static short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
- 0, 0, 0, 0, -24, -24, 0, -5, 0, 2126,
- 0, 0, 6, 28, 44, 57, -32, 2126, 68, 69,
- 72, 999, 943, -24, 1062, 1327, -198, 0, 0, -24,
- 2126, 2126, 2126, 2126, 2126, 2126, 1233, 1383, 0, 2126,
- 2126, -24, -24, -24, -24, 2126, -217, 0, 342, 827,
- -20, -80, -70, 0, 0, -60, 73, 61, 75, 0,
- 0, -1, 0, -137, 0, -130, 0, 0, 0, 0,
- 0, 2126, 88, 2126, -189, -1, -137, 0, 0, 0,
- 0, 0, 0, 89, 827, 99, 1444, 943, 0, -189,
- 0, -80, 75, 0, 2126, 0, 90, 0, -189, -16,
- 27, -58, 2126, 0, 75, 218, 218, 218, -169, -169,
- 63, -22, 0, -63, 218, 218, 0, 0, 0, 0,
- -189, -1, 0, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 0, 0, 74, 2126, 1535, 2126,
- 2126, 2126, 2126, 2126, 2126, 1725, 0, 2126, 0, 0,
- -44, -91, 256, 0, 2126, 428, 0, -1, 2126, 2126,
- 2126, 2126, 131, 1800, 0, 0, 0, -12, 36, 130,
- 2126, 75, 1861, 1936, 0, 48, 0, 2126, 87, 0,
- 0, -272, -272, 0, -272, -272, -272, -119, 0, 1565,
- -189, 1088, 375, 160, 827, 715, 389, 771, 684, 1026,
- 1242, 218, 218, 2126, 0, 2006, 2126, 0, 143, -56,
- 0, 1, 51, -49, 56, 43, 58, 45, 0, 7,
- 827, 0, 0, 0, 2126, 0, 141, 2126, 0, 2126,
- 0, -272, 0, 144, 0, 145, -272, 151, 158, 0,
- 162, 342, 0, 0, 166, 150, 2126, 0, 0, 0,
- 9, 0, 16, 0, 19, 0, 60, 2126, 2126, 47,
- 0, 21, 94, 2126, 78, 0, 0, 91, 0, 95,
- 0, 101, 0, 153, 0, 268, 0, 92, 92, 92,
- 92, 2126, 92, 2126, 188, 0, 0, 0, 0, 96,
- 1152, 109, 0, 0, 196, 0, 0, 0, 0, 0,
- 0, 0, -217, -217, -204, -204, 198, -217, 185, 92,
- 0, 0, 0, 0, 0, 0, 92, 211, 0, 0,
- 92, 0, 1800, -217, 319, 0, 2126, -217, 216, 0,
- 0, 228, 0, 92, 92, 0, -204, 0,
+static short yysindex[] = { 0,
+ 0, 0, -199, 0, 0, 0, -53, 0, 0, 0,
+ 0, 0, 0, 0, 646, 0, 0, 0, -217, -207,
+ 44, 0, 0, -207, 0, 0, 0, -32, -32, 0,
+ 66, 0, 2177, 0, 0, 69, 83, 93, 110, -35,
+ 2177, 119, 121, 136, 1013, 973, -32, 1077, 1344, -146,
+ 2177, 68, -32, 2177, 2177, 2177, 2177, 2177, 2177, 1384,
+ 1424, 0, 2177, 2177, -32, -32, -32, -32, -152, 0,
+ 470, 845, -13, -65, -63, 0, 0, 55, 137, 122,
+ 138, 0, 0, 0, 60, 0, -70, 0, -66, -70,
+ 0, 0, 0, 0, 0, 2177, 146, 2177, 1085, 60,
+ -70, 0, 0, 0, 0, 0, 0, 152, 845, 153,
+ 1464, 973, 0, 1085, 0, -65, 138, 0, 2177, 0,
+ 160, 0, 1085, 2, 76, -52, 2177, 1085, 1524, 0,
+ 0, 0, -96, 0, 138, -181, -181, -181, -112, -112,
+ 123, -38, 0, -74, -181, -181, 0, 0, 0, 0,
+ 60, 0, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 0, 0, -16, 2177, 1731, 2177, 2177,
+ 2177, 2177, 2177, 2177, 1791, 0, 2177, 0, 0, -88,
+ -34, -88, 339, 0, 2177, 287, 0, -88, 2177, 2177,
+ 2177, 2177, 173, 1850, 0, 0, 0, -33, 46, 180,
+ 2177, 138, 1910, 2025, 0, 97, 0, 0, -31, -29,
+ 0, 2177, 133, 0, 0, -237, -237, 0, -237, -237,
+ -237, -69, 0, 1614, 1085, 684, 167, 107, 845, 3800,
+ 1125, 405, 1164, 778, -228, -181, -181, 2177, 0, 2117,
+ 2177, 0, 197, -48, 0, -9, -72, -45, -7, -42,
+ 56, -36, 0, -4, 845, -10, -47, 2177, -47, 0,
+ 216, 2177, 0, 2177, 60, -237, 0, 219, 0, 230,
+ -237, 233, 237, 0, 242, 470, 0, 0, 246, 225,
+ 2177, 0, 0, 0, 13, 0, 18, 0, 29, 0,
+ 0, 0, 61, 2177, 2177, 54, 0, 32, 63, 2177,
+ 165, 0, 0, 174, 0, 178, 0, 191, 0, 0,
+ 0, 0, 0, 261, 0, 0, 350, 0, 0, 182,
+ 182, 182, 182, 2177, 182, 2177, 281, 0, 0, 0,
+ 0, 102, 1237, 202, 0, 0, 294, 0, 0, 0,
+ 0, 0, 0, 0, -152, -152, -130, -130, 297, -152,
+ 290, 182, 0, 0, 0, 0, 0, 0, 182, 318,
+ 0, 0, 182, 0, 1850, -152, 407, 0, 2177, -152,
+ 324, 0, 0, 326, 0, 182, 182, 0, -130, 0,
};
-static short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
+static short yyrindex[] = { 0,
+ 0, 0, 243, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 23, 2214, 0,
- 0, 2264, 2308, 0, 0, 0, 0, 0, 0, 0,
+ 36, 451, 0, 0, 2208, 2271, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 105, 0, -18, 1030,
- 2383, 2433, 2561, 0, 0, 2636, 2686, 0, 918, 0,
- 0, 0, 0, -25, 0, 0, 0, 0, 0, 0,
- 0, 2308, 0, 0, 3879, 0, 165, 0, 0, 0,
- 0, 0, 0, 0, 1356, 0, 0, 232, 0, 3936,
- 502, 561, 3047, 0, 0, 0, 2730, 0, 3987, 2433,
- 0, 0, 2308, 0, 3096, 3236, 3300, 3436, 1656, 3186,
- 2780, 0, 0, 0, 3487, 3550, 0, 0, 0, 0,
- 4025, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 115, 0,
+ -12, 939, 2325, 2385, 2463, 0, 0, 2510, 2561, 0,
+ 1220, 0, 0, 0, 0, 0, -44, 0, 0, -44,
+ 0, 0, 0, 0, 0, 2271, 0, 0, 3846, 0,
+ -105, 0, 0, 0, 0, 0, 0, 0, 2612, 0,
+ 0, 327, 0, 3883, 522, 583, 3032, 0, 0, 0,
+ 2621, 0, 3893, 2385, 0, 0, 2271, 3930, 0, 0,
+ 0, 0, 2667, 0, 3092, 3374, 3418, 3458, 3219, 3331,
+ 2746, 0, 0, 0, 3496, 3567, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2828, 0, 0,
- 0, 0, 887, 0, 232, 0, 0, 0, 242, 0,
- 0, 0, 0, 226, 0, 0, 0, 0, 249, 0,
- 0, 3142, 0, 0, 0, 0, 0, 0, 2889, 0,
- 0, -4, 10, 0, 11, 17, 24, 363, 0, -27,
- 664, 3890, 3686, 3737, 1507, 0, 4291, 4188, 4155, 4035,
- 3842, 3586, 3623, 0, 0, 0, 0, 0, 2983, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1640, 0, 0, 0, 233, 0, 0, 0, 0, 2308,
- 0, 37, 0, 0, 0, 0, 262, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2797, 0, 0, -23,
+ 0, -23, 913, 0, 327, 0, 0, 247, 336, 0,
+ 0, 0, 0, 333, 0, 0, 0, 0, 352, 0,
+ 0, 3138, 0, 0, 0, 0, 0, 0, 0, 2857,
+ 0, 0, 2903, 0, 0, -8, -2, 0, 7, 33,
+ 42, 2255, 0, -28, 3968, 1822, 3732, 3769, 3023, 0,
+ 4119, 4082, 4021, 4005, 1044, 3610, 3694, 0, 0, 0,
+ 0, 0, 2949, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3657, -21, 0, 345, 0, 0,
+ 0, 0, 0, 2271, 0, 71, 0, 0, 0, 0,
+ 364, 0, 0, 0, 0, 86, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 232, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 327,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 264, 0, 0, 0, 0, 0, 0,
- -19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 105, 105, 168, 168, 0, 105, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 298, 105, 887, 0, 0, 105, 0, 0,
- 0, 0, 0, 0, 0, 0, 168, 0,
+ 0, 0, 0, 0, 0, 355, 0, 0, 0, 0,
+ 0, 0, 2972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 115, 115, 175, 175, 0, 115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 374, 115, 913, 0, 0, 115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 175, 0,
};
-static short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
- 0, 0, 0, 0, 340, -38, 0, 0, 215, -138,
- 14, 97, 190, -85, -179, 583, 0, 0, 0, 0,
- 286, 0, -140, 0, 0, 0, 0, 0, 0, 0,
- 0,
+static short yygindex[] = { 0,
+ 0, 0, 164, 383, 0, 14, 0, 37, 655, -89,
+ 0, 0, 0, -336, -15, 3415, 0, 2211, 368, 369,
+ 0, 0, 0, 410, 916, 0, 0, 273, -163, 62,
+ 94, 249, -71, -186, 634, 0, 0, 0, 428, -46,
+ 184, 118, 0, -149, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
};
-#define YYTABLESIZE 4610
-static short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
- 174, 107, 15, 204, 107, 149, 150, 83, 278, 210,
- 104, 104, 122, 58, 94, 104, 18, 207, 107, 107,
- 15, 296, 171, 132, 134, 98, 368, 303, 85, 316,
- 39, 16, 173, 113, 18, 275, 317, 17, 123, 318,
- 142, 323, 175, 147, 20, 104, 147, 99, 39, 16,
- 170, 347, 348, 107, 172, 17, 202, 38, 23, 279,
- 147, 147, 20, 100, 113, 147, 189, 190, 191, 192,
- 193, 194, 40, 198, 199, 38, 101, 58, 23, 154,
- 155, 300, 168, 302, 26, 322, 171, 106, 107, 62,
- 15, 108, 176, 236, 325, 147, 162, 163, 178, 177,
- 164, 23, 180, 165, 166, 167, 182, 185, 195, 203,
- 212, 213, 215, 216, 217, 218, 219, 26, 315, 196,
- 26, 26, 26, 297, 26, 167, 26, 26, 299, 26,
- 301, 205, 319, 208, 240, 242, 243, 244, 245, 246,
- 247, 248, 250, 26, 237, 255, 62, 21, 26, 304,
- 280, 199, 286, 337, 307, 262, 213, 288, 213, 150,
- 272, 305, 294, 277, 308, 309, 324, 281, 341, 283,
- 285, 310, 345, 346, 287, 26, 234, 352, 311, 19,
- 21, 312, 326, 21, 21, 21, 313, 21, 314, 21,
- 21, 330, 21, 360, 332, 327, 113, 363, 362, 328,
- 290, 113, 292, 293, 2, 329, 21, 26, 340, 26,
- 26, 21, 88, 342, 149, 150, 343, 89, 351, 149,
- 150, 149, 150, 353, 104, 104, 104, 104, 149, 150,
- 357, 104, 107, 107, 107, 107, 364, 44, 21, 107,
- 44, 44, 44, 102, 44, 355, 44, 44, 365, 44,
- 104, 104, 165, 104, 320, 149, 150, 52, 107, 107,
- 199, 107, 37, 44, 35, 149, 150, 58, 44, 166,
- 21, 163, 21, 21, 147, 147, 147, 147, 149, 150,
- 262, 147, 40, 147, 149, 150, 149, 150, 331, 147,
- 147, 147, 147, 149, 150, 44, 149, 150, 149, 150,
- 147, 147, 37, 147, 147, 147, 147, 147, 147, 147,
- 157, 235, 147, 149, 150, 147, 147, 147, 35, 69,
- 149, 150, 149, 150, 149, 150, 21, 44, 149, 150,
- 44, 97, 78, 149, 150, 149, 150, 149, 150, 214,
- 26, 26, 26, 26, 26, 26, 359, 26, 26, 26,
+#define YYTABLESIZE 4423
+static short yytable[] = { 71,
+ 65, 193, 223, 65, 107, 22, 216, 292, 271, 301,
+ 311, 321, 111, 314, 60, 111, 316, 60, 224, 65,
+ 313, 372, 318, 250, 194, 181, 178, 183, 15, 111,
+ 111, 312, 18, 126, 111, 62, 319, 64, 39, 84,
+ 289, 214, 269, 192, 142, 144, 15, 16, 275, 86,
+ 18, 69, 390, 338, 198, 217, 39, 180, 339, 182,
+ 163, 164, 158, 159, 111, 16, 4, 5, 6, 340,
+ 7, 8, 345, 17, 251, 26, 155, 179, 60, 155,
+ 172, 113, 20, 173, 122, 315, 174, 175, 176, 293,
+ 26, 17, 181, 155, 155, 208, 209, 9, 155, 62,
+ 20, 64, 88, 65, 67, 98, 248, 129, 102, 177,
+ 127, 38, 344, 219, 26, 199, 200, 201, 202, 203,
+ 204, 188, 103, 347, 180, 151, 40, 337, 155, 38,
+ 173, 66, 104, 174, 175, 176, 197, 226, 227, 229,
+ 230, 231, 232, 233, 15, 369, 370, 26, 317, 105,
+ 26, 26, 26, 341, 26, 346, 26, 26, 110, 26,
+ 111, 254, 256, 257, 258, 259, 260, 261, 262, 264,
+ 359, 23, 24, 26, 21, 112, 185, 184, 26, 209,
+ 186, 187, 26, 276, 227, 195, 227, 225, 286, 189,
+ 191, 205, 60, 206, 363, 295, 324, 297, 299, 213,
+ 215, 220, 328, 21, 176, 26, 303, 21, 65, 266,
+ 21, 21, 21, 222, 21, 384, 21, 21, 291, 21,
+ 294, 300, 268, 304, 92, 158, 159, 158, 159, 93,
+ 302, 159, 306, 21, 308, 309, 310, 26, 21, 26,
+ 26, 249, 2, 111, 111, 111, 111, 158, 159, 320,
+ 111, 158, 159, 60, 158, 159, 326, 158, 159, 330,
+ 106, 158, 159, 158, 159, 21, 158, 159, 158, 159,
+ 331, 111, 111, 332, 111, 44, 377, 333, 44, 44,
+ 44, 334, 44, 336, 44, 44, 335, 44, 342, 348,
+ 158, 159, 158, 159, 209, 158, 159, 21, 349, 21,
+ 21, 44, 350, 322, 354, 322, 44, 155, 155, 155,
+ 155, 329, 158, 159, 155, 351, 155, 158, 159, 352,
+ 276, 362, 155, 155, 155, 155, 364, 273, 158, 159,
+ 272, 158, 159, 44, 365, 155, 155, 373, 155, 155,
+ 155, 155, 155, 155, 155, 158, 159, 155, 375, 166,
+ 155, 155, 155, 158, 159, 158, 159, 379, 53, 71,
+ 158, 159, 158, 159, 386, 44, 387, 180, 44, 62,
+ 26, 26, 26, 26, 26, 26, 37, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 256, 269, 188, 26, 26, 0, 26, 26, 26, 26,
- 26, 149, 150, 149, 150, 26, 26, 26, 26, 26,
- 26, 0, 0, 67, 26, 0, 67, 4, 5, 6,
- 339, 7, 8, 26, 0, 26, 26, 0, 0, 0,
- 0, 67, 0, 21, 21, 21, 21, 21, 21, 0,
+ 353, 35, 181, 26, 26, 163, 26, 26, 26, 26,
+ 26, 158, 159, 178, 40, 26, 26, 26, 26, 26,
+ 26, 26, 166, 37, 35, 172, 26, 101, 173, 131,
+ 132, 174, 175, 176, 80, 26, 228, 26, 26, 361,
+ 21, 21, 21, 21, 21, 21, 381, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 361, 0, 0, 21, 21, 154, 21,
- 21, 21, 21, 21, 0, 67, 0, 0, 21, 21,
- 21, 21, 21, 21, 0, 0, 163, 21, 259, 164,
- 0, 258, 165, 166, 167, 0, 21, 0, 21, 21,
- 44, 44, 44, 44, 44, 44, 0, 44, 44, 44,
- 157, 0, 0, 44, 0, 0, 44, 44, 44, 44,
- 0, 0, 0, 44, 44, 0, 44, 44, 44, 44,
- 44, 0, 0, 0, 0, 44, 44, 44, 44, 44,
- 44, 4, 5, 6, 44, 7, 8, 164, 0, 0,
- 165, 166, 167, 44, 177, 44, 44, 177, 177, 177,
- 0, 177, 161, 177, 177, 161, 177, 0, 151, 0,
- 0, 0, 0, 0, 152, 153, 154, 155, 0, 161,
- 161, 0, 0, 0, 161, 177, 0, 0, 156, 158,
- 159, 160, 161, 162, 163, 0, 0, 164, 0, 0,
- 165, 166, 167, 0, 4, 5, 6, 0, 7, 8,
- 0, 0, 177, 178, 161, 0, 178, 178, 178, 0,
- 178, 126, 178, 178, 126, 178, 0, 0, 93, 0,
- 0, 0, 0, 144, 145, 146, 147, 0, 126, 126,
- 148, 0, 0, 126, 178, 115, 116, 177, 0, 0,
- 0, 0, 124, 0, 67, 67, 67, 67, 0, 149,
- 150, 67, 0, 0, 137, 138, 139, 140, 0, 0,
- 0, 0, 0, 126, 52, 0, 0, 62, 64, 50,
- 67, 57, 0, 65, 61, 0, 60, 0, 334, 335,
- 336, 0, 338, 0, 0, 152, 153, 154, 155, 0,
- 59, 163, 0, 0, 164, 63, 178, 165, 166, 167,
- 201, 159, 160, 161, 162, 163, 0, 0, 164, 354,
- 0, 165, 166, 167, 100, 0, 356, 100, 151, 0,
- 358, 0, 58, 0, 152, 153, 154, 155, 0, 0,
- 0, 100, 100, 366, 367, 0, 100, 0, 156, 158,
- 159, 160, 161, 162, 163, 0, 0, 164, 0, 0,
- 165, 166, 167, 0, 23, 0, 0, 53, 0, 0,
- 0, 0, 0, 0, 0, 0, 100, 0, 177, 177,
- 177, 177, 177, 0, 177, 177, 177, 0, 0, 0,
- 177, 0, 289, 161, 161, 161, 161, 157, 0, 0,
- 161, 177, 161, 177, 177, 177, 177, 177, 161, 161,
- 161, 161, 177, 177, 177, 177, 177, 177, 0, 161,
- 161, 177, 161, 161, 161, 161, 161, 161, 161, 0,
- 177, 161, 177, 177, 161, 161, 161, 178, 178, 178,
- 178, 178, 0, 178, 178, 178, 0, 0, 0, 178,
- 0, 0, 126, 126, 126, 126, 0, 0, 0, 126,
- 178, 126, 178, 178, 178, 178, 178, 126, 126, 126,
- 126, 178, 178, 178, 178, 178, 178, 0, 126, 126,
- 178, 126, 126, 126, 126, 126, 126, 126, 0, 178,
- 126, 178, 178, 126, 126, 126, 0, 22, 24, 25,
- 26, 27, 28, 0, 29, 30, 31, 0, 0, 157,
- 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, 44,
- 0, 51, 44, 44, 44, 67, 44, 0, 44, 44,
- 54, 44, 55, 56, 0, 100, 100, 100, 100, 0,
- 0, 0, 100, 0, 100, 44, 0, 0, 0, 0,
- 44, 100, 0, 0, 109, 0, 0, 118, 68, 0,
- 0, 100, 100, 0, 100, 100, 100, 100, 100, 0,
- 152, 153, 154, 155, 0, 52, 68, 44, 62, 64,
- 50, 0, 57, 0, 65, 61, 0, 60, 161, 162,
- 163, 0, 0, 164, 179, 151, 165, 166, 167, 0,
- 0, 152, 153, 154, 155, 0, 63, 0, 187, 44,
- 68, 0, 44, 0, 0, 156, 158, 159, 160, 161,
- 162, 163, 0, 0, 164, 0, 0, 165, 166, 167,
- 0, 52, 0, 58, 62, 64, 50, 0, 57, 0,
- 65, 61, 0, 60, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 211, 0, 0, 152, 153, 154,
- 155, 0, 63, 0, 0, 23, 0, 0, 53, 0,
- 71, 0, 0, 71, 160, 161, 162, 163, 0, 0,
- 164, 0, 0, 165, 166, 167, 0, 71, 71, 58,
- 0, 0, 0, 253, 52, 0, 0, 62, 64, 50,
- 261, 57, 0, 65, 61, 0, 60, 151, 0, 0,
- 0, 0, 0, 152, 153, 154, 155, 0, 0, 0,
- 0, 23, 71, 0, 53, 63, 0, 156, 158, 159,
- 160, 161, 162, 163, 0, 0, 164, 0, 0, 165,
- 166, 167, 44, 44, 44, 44, 44, 44, 0, 44,
- 44, 44, 58, 0, 0, 44, 0, 0, 44, 44,
- 44, 44, 0, 0, 0, 44, 44, 0, 44, 44,
- 44, 44, 44, 0, 0, 0, 0, 44, 44, 44,
- 44, 44, 44, 0, 23, 0, 44, 53, 0, 68,
- 68, 68, 68, 0, 0, 44, 68, 44, 44, 111,
- 25, 26, 27, 28, 89, 29, 30, 31, 0, 0,
- 0, 32, 0, 0, 157, 68, 68, 0, 0, 0,
- 0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 0, 0, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 0, 52, 0, 32, 62, 64,
- 50, 0, 57, 131, 65, 61, 0, 60, 38, 0,
- 39, 40, 41, 42, 43, 0, 0, 0, 0, 44,
- 45, 46, 47, 48, 49, 0, 63, 0, 51, 0,
- 0, 71, 71, 71, 71, 0, 0, 54, 71, 55,
- 56, 0, 152, 153, 154, 155, 0, 0, 117, 25,
- 26, 27, 28, 58, 29, 30, 31, 71, 71, 0,
- 32, 162, 163, 0, 0, 164, 0, 0, 165, 166,
- 167, 38, 0, 39, 40, 41, 42, 43, 0, 0,
- 0, 0, 44, 45, 46, 47, 48, 49, 53, 52,
- 0, 51, 62, 64, 50, 0, 57, 0, 65, 61,
- 54, 60, 55, 56, 152, 0, 154, 155, 0, 0,
- 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
- 63, 91, 91, 162, 163, 0, 148, 164, 0, 148,
- 165, 166, 167, 104, 0, 0, 0, 0, 0, 112,
- 91, 120, 0, 148, 148, 52, 91, 58, 62, 64,
- 50, 0, 57, 0, 65, 61, 0, 60, 91, 91,
- 91, 91, 151, 0, 0, 0, 0, 0, 152, 153,
- 154, 155, 0, 0, 0, 0, 63, 0, 148, 0,
- 0, 0, 53, 158, 159, 160, 161, 162, 163, 0,
- 0, 164, 0, 0, 165, 166, 167, 0, 0, 0,
- 0, 0, 0, 58, 112, 133, 52, 0, 0, 62,
- 64, 50, 0, 57, 197, 65, 61, 0, 60, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 0, 0, 0, 0, 0, 63, 53, 0,
- 0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 154, 155, 51, 238, 58, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 0, 0, 95, 163, 0,
- 95, 164, 0, 0, 165, 166, 167, 0, 0, 270,
- 0, 0, 0, 0, 95, 95, 0, 52, 0, 53,
- 62, 64, 50, 0, 57, 241, 65, 61, 0, 60,
- 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 0, 0, 0, 32, 0, 0, 63, 95,
- 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, 58, 51, 148, 148, 148,
- 148, 0, 0, 0, 148, 54, 0, 55, 56, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 0, 148, 148, 0, 0, 0, 0, 0,
- 53, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 70, 0, 51, 70, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 0, 116, 70, 70, 116,
- 24, 25, 26, 27, 28, 0, 29, 30, 31, 0,
- 0, 0, 32, 116, 116, 0, 0, 0, 116, 0,
- 0, 0, 0, 38, 0, 39, 40, 41, 42, 43,
- 0, 0, 70, 0, 44, 45, 46, 47, 48, 49,
- 0, 0, 0, 51, 0, 0, 0, 0, 116, 0,
- 0, 0, 54, 0, 55, 56, 0, 52, 0, 0,
- 62, 64, 50, 0, 57, 249, 65, 61, 0, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,
- 95, 95, 0, 0, 0, 95, 0, 0, 63, 0,
- 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
- 0, 0, 0, 32, 95, 95, 0, 0, 0, 0,
- 0, 0, 0, 0, 38, 58, 39, 40, 41, 42,
- 43, 0, 0, 0, 0, 44, 45, 46, 47, 48,
- 49, 0, 52, 0, 51, 62, 64, 50, 0, 57,
- 0, 65, 61, 54, 60, 55, 56, 0, 0, 0,
- 53, 152, 153, 154, 155, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 158, 159, 160, 161,
- 162, 163, 0, 0, 164, 0, 0, 165, 166, 167,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 58, 0, 0, 52, 0, 0, 62, 64, 50, 0,
- 57, 282, 65, 61, 0, 60, 0, 0, 0, 0,
- 0, 70, 70, 70, 70, 0, 0, 0, 70, 0,
- 0, 0, 0, 0, 63, 53, 0, 116, 116, 116,
- 116, 0, 0, 0, 116, 0, 116, 70, 70, 0,
- 0, 0, 116, 116, 116, 116, 0, 0, 0, 0,
- 0, 58, 0, 116, 116, 0, 116, 116, 116, 116,
- 116, 116, 116, 0, 0, 116, 0, 0, 52, 0,
- 0, 62, 64, 50, 0, 57, 284, 65, 61, 0,
- 60, 24, 25, 26, 27, 28, 53, 29, 30, 31,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 63,
- 0, 0, 0, 0, 38, 0, 39, 40, 41, 42,
- 43, 0, 0, 0, 0, 44, 45, 46, 47, 48,
- 49, 0, 0, 0, 51, 0, 58, 0, 0, 0,
- 0, 0, 0, 54, 0, 55, 56, 0, 52, 0,
- 0, 62, 64, 50, 0, 57, 291, 65, 61, 0,
- 60, 0, 0, 0, 0, 22, 24, 25, 26, 27,
- 28, 53, 29, 30, 31, 0, 0, 0, 32, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
- 0, 39, 40, 41, 42, 43, 0, 0, 0, 0,
- 44, 45, 46, 47, 48, 49, 58, 0, 0, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 0,
- 55, 56, 0, 0, 0, 0, 0, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 0, 0, 0, 32,
- 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 38, 0, 39, 40, 41, 42, 43, 0, 0, 0,
- 0, 44, 45, 46, 47, 48, 49, 0, 52, 0,
- 51, 62, 64, 50, 0, 57, 0, 65, 61, 54,
- 60, 55, 56, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 38, 58, 39, 40, 41,
- 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 0, 0, 51, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 0, 53, 0, 0, 154, 0, 0, 154, 0, 0,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 154, 154, 0, 32, 0, 154, 0, 0, 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, 150, 51, 154, 150, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 0, 150, 150, 0, 0, 0, 150, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 163, 0,
- 0, 163, 0, 0, 0, 0, 150, 0, 0, 0,
- 0, 0, 0, 0, 0, 163, 163, 0, 0, 0,
- 163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 163, 0, 0, 0, 0, 38, 0, 39, 40, 41,
- 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 131, 0, 51, 131, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 131, 131, 0, 0, 0, 131, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 126, 0, 131, 126, 0, 0, 0,
- 0, 0, 0, 0, 0, 154, 154, 154, 154, 0,
- 126, 126, 154, 0, 154, 126, 0, 0, 0, 0,
- 154, 154, 154, 154, 0, 0, 0, 0, 0, 0,
- 0, 154, 154, 0, 154, 154, 154, 154, 154, 154,
- 154, 0, 0, 154, 0, 126, 154, 154, 154, 0,
- 0, 0, 0, 0, 0, 150, 150, 150, 150, 0,
- 0, 0, 150, 0, 150, 0, 0, 0, 0, 0,
- 150, 150, 150, 150, 0, 0, 0, 0, 0, 0,
- 0, 150, 150, 0, 150, 150, 150, 150, 150, 150,
- 150, 0, 0, 150, 0, 0, 150, 150, 150, 163,
- 163, 163, 163, 0, 0, 0, 163, 0, 163, 0,
- 0, 0, 0, 0, 163, 163, 163, 163, 0, 0,
- 0, 129, 0, 0, 129, 163, 163, 0, 163, 163,
- 163, 163, 163, 163, 163, 0, 0, 163, 129, 129,
- 163, 163, 163, 129, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 129, 131, 131, 131, 131, 0, 0,
- 0, 131, 0, 131, 0, 0, 0, 0, 0, 131,
- 131, 131, 131, 0, 0, 0, 127, 0, 0, 127,
- 131, 131, 0, 131, 131, 131, 131, 131, 131, 131,
- 0, 0, 131, 127, 127, 131, 131, 131, 127, 0,
- 0, 0, 0, 0, 126, 126, 126, 126, 0, 0,
- 0, 126, 0, 126, 0, 0, 0, 0, 0, 126,
- 126, 126, 126, 0, 0, 0, 137, 0, 127, 137,
- 126, 126, 0, 126, 126, 126, 126, 126, 126, 126,
- 0, 0, 126, 137, 137, 126, 126, 126, 137, 0,
+ 283, 90, 325, 21, 21, 0, 21, 21, 21, 21,
+ 21, 0, 0, 270, 0, 21, 21, 21, 21, 21,
+ 21, 21, 367, 368, 0, 172, 21, 374, 173, 0,
+ 0, 174, 175, 176, 0, 21, 0, 21, 21, 0,
+ 0, 162, 0, 382, 162, 0, 0, 385, 44, 44,
+ 44, 44, 44, 44, 0, 44, 44, 44, 162, 162,
+ 0, 44, 0, 162, 44, 44, 44, 44, 0, 0,
+ 0, 44, 44, 0, 44, 44, 44, 44, 44, 0,
+ 0, 383, 0, 44, 44, 44, 44, 44, 44, 0,
+ 0, 0, 0, 162, 44, 0, 0, 0, 0, 0,
+ 0, 0, 0, 44, 190, 44, 44, 190, 190, 190,
+ 0, 190, 169, 190, 190, 169, 190, 160, 0, 0,
+ 0, 0, 0, 161, 162, 163, 164, 0, 0, 169,
+ 169, 0, 0, 0, 169, 190, 0, 0, 0, 165,
+ 167, 168, 169, 170, 171, 172, 0, 0, 173, 0,
+ 0, 174, 175, 176, 4, 5, 6, 0, 7, 8,
+ 0, 0, 190, 0, 169, 191, 0, 0, 191, 191,
+ 191, 0, 191, 134, 191, 191, 134, 191, 0, 0,
+ 160, 0, 0, 0, 0, 9, 161, 162, 163, 164,
+ 134, 134, 0, 0, 0, 134, 191, 190, 0, 0,
+ 0, 0, 165, 167, 168, 169, 170, 171, 172, 0,
+ 0, 173, 97, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 4, 5, 6, 134, 7, 8, 55, 119,
+ 120, 65, 67, 53, 0, 60, 134, 68, 64, 0,
+ 63, 161, 162, 163, 164, 0, 0, 0, 147, 148,
+ 149, 150, 0, 9, 62, 0, 0, 0, 191, 66,
+ 169, 170, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 162, 162, 162, 162, 0, 0, 0, 162,
+ 0, 162, 0, 0, 0, 0, 61, 162, 162, 162,
+ 162, 153, 154, 155, 156, 211, 0, 0, 157, 0,
+ 162, 162, 0, 162, 162, 162, 162, 162, 162, 162,
+ 0, 0, 162, 0, 0, 162, 162, 162, 26, 158,
+ 159, 56, 0, 0, 0, 0, 0, 0, 190, 190,
+ 190, 190, 190, 0, 190, 190, 190, 0, 0, 0,
+ 190, 0, 0, 169, 169, 169, 169, 0, 0, 0,
+ 169, 190, 169, 190, 190, 190, 190, 190, 169, 169,
+ 169, 169, 190, 190, 190, 190, 190, 190, 0, 0,
+ 0, 169, 169, 190, 169, 169, 169, 169, 169, 169,
+ 169, 0, 190, 169, 190, 190, 169, 169, 169, 191,
+ 191, 191, 191, 191, 0, 191, 191, 191, 0, 0,
+ 0, 191, 0, 0, 134, 134, 134, 134, 0, 0,
+ 0, 134, 191, 134, 191, 191, 191, 191, 191, 134,
+ 134, 134, 134, 191, 191, 191, 191, 191, 191, 0,
+ 0, 0, 134, 134, 191, 134, 134, 134, 134, 134,
+ 134, 134, 0, 191, 134, 191, 191, 134, 134, 134,
+ 0, 25, 27, 28, 29, 30, 31, 166, 32, 33,
+ 34, 0, 0, 0, 35, 0, 0, 36, 37, 38,
+ 39, 0, 0, 0, 40, 41, 0, 42, 43, 44,
+ 45, 46, 0, 0, 0, 0, 47, 48, 49, 50,
+ 51, 52, 0, 0, 0, 44, 0, 54, 44, 44,
+ 44, 0, 44, 0, 44, 44, 57, 44, 58, 59,
+ 0, 117, 0, 0, 0, 0, 0, 0, 0, 135,
+ 161, 44, 163, 164, 0, 0, 44, 0, 0, 78,
+ 0, 0, 78, 0, 0, 356, 357, 358, 0, 360,
+ 0, 171, 172, 0, 0, 173, 78, 78, 174, 175,
+ 176, 0, 0, 44, 0, 55, 0, 0, 65, 67,
+ 53, 117, 60, 0, 68, 64, 376, 63, 0, 0,
+ 0, 0, 0, 378, 0, 0, 0, 380, 0, 0,
+ 0, 78, 0, 0, 212, 44, 66, 0, 44, 0,
+ 388, 389, 117, 0, 0, 55, 0, 0, 65, 67,
+ 53, 0, 60, 0, 68, 64, 0, 63, 0, 0,
+ 0, 0, 0, 61, 161, 162, 163, 164, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 0, 0,
+ 0, 0, 0, 0, 106, 171, 172, 106, 0, 173,
+ 0, 0, 174, 175, 176, 26, 0, 0, 56, 0,
+ 0, 106, 106, 61, 0, 0, 106, 0, 0, 55,
+ 0, 0, 65, 67, 53, 0, 60, 0, 68, 64,
+ 0, 63, 0, 0, 0, 160, 0, 0, 0, 0,
+ 0, 161, 162, 163, 164, 26, 106, 0, 56, 0,
+ 66, 0, 0, 0, 0, 0, 0, 165, 167, 168,
+ 169, 170, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 61, 44, 44,
+ 44, 44, 44, 44, 0, 44, 44, 44, 0, 0,
+ 0, 44, 0, 117, 44, 44, 44, 44, 0, 117,
+ 0, 44, 44, 0, 44, 44, 44, 44, 44, 26,
+ 0, 0, 56, 44, 44, 44, 44, 44, 44, 0,
+ 78, 78, 78, 78, 44, 0, 0, 78, 0, 0,
+ 0, 0, 0, 44, 0, 44, 44, 0, 0, 115,
+ 28, 29, 30, 31, 93, 32, 33, 34, 78, 78,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 41, 0, 42, 43, 44, 45, 46, 0,
+ 75, 0, 0, 47, 48, 49, 50, 51, 52, 27,
+ 28, 29, 30, 31, 54, 32, 33, 34, 75, 0,
+ 0, 35, 0, 57, 0, 58, 59, 0, 0, 0,
+ 0, 0, 41, 0, 42, 43, 44, 45, 46, 166,
+ 0, 0, 0, 47, 48, 49, 50, 51, 52, 0,
+ 0, 0, 75, 0, 54, 106, 106, 106, 106, 0,
+ 0, 0, 106, 57, 106, 58, 59, 0, 0, 0,
+ 106, 106, 0, 121, 28, 29, 30, 31, 0, 32,
+ 33, 34, 0, 106, 106, 35, 106, 106, 106, 106,
+ 106, 106, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 163, 164, 0, 55, 0, 54, 65,
+ 67, 53, 0, 60, 0, 68, 64, 57, 63, 58,
+ 59, 0, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 125, 0, 0, 0, 0, 66, 0, 0,
+ 0, 161, 162, 163, 164, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 141, 68, 64, 0, 63, 168,
+ 169, 170, 171, 172, 61, 0, 173, 0, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 66, 0, 0,
+ 161, 162, 163, 164, 0, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 0, 68, 64, 0, 63, 56,
+ 170, 171, 172, 0, 61, 173, 0, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 66, 0, 0,
+ 0, 75, 75, 75, 75, 0, 55, 0, 75, 65,
+ 67, 53, 0, 60, 207, 68, 64, 0, 63, 56,
+ 0, 0, 0, 0, 61, 0, 143, 160, 0, 75,
+ 75, 0, 0, 161, 162, 163, 164, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 167, 168, 169, 170, 171, 172, 0, 0, 173, 56,
+ 0, 174, 175, 176, 61, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 218, 68, 64, 0, 63, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 161, 0, 0, 161, 0, 0, 0, 0, 137, 0,
- 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
- 0, 0, 161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 56,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 28, 29, 30, 31, 0, 32, 33, 34, 0,
+ 0, 0, 35, 0, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 56,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 0,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 0,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 0, 0, 0, 55, 0, 54, 65, 67, 53, 0,
+ 60, 255, 68, 64, 57, 63, 58, 59, 0, 0,
+ 27, 28, 29, 30, 31, 0, 32, 33, 34, 0,
+ 0, 0, 35, 0, 66, 0, 0, 0, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 0, 61, 0, 55, 0, 54, 65, 67, 53, 0,
+ 60, 263, 68, 64, 57, 63, 58, 59, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 0, 161, 120, 0, 0, 0, 0, 0, 0,
- 0, 0, 129, 129, 129, 129, 0, 120, 120, 129,
- 0, 129, 120, 0, 0, 0, 0, 129, 129, 129,
- 129, 0, 0, 0, 0, 0, 0, 0, 129, 129,
- 0, 129, 129, 129, 129, 129, 129, 129, 69, 0,
- 129, 69, 120, 129, 129, 129, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 69, 69, 0, 0, 0,
- 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 127, 127, 127,
- 127, 0, 0, 0, 127, 0, 127, 0, 0, 0,
- 69, 0, 127, 127, 127, 127, 0, 0, 0, 119,
- 0, 0, 119, 127, 127, 0, 127, 127, 127, 127,
- 127, 127, 127, 0, 0, 127, 119, 119, 127, 127,
- 127, 119, 0, 0, 0, 0, 0, 137, 137, 137,
- 137, 0, 0, 0, 137, 0, 137, 0, 0, 0,
- 0, 0, 137, 137, 137, 137, 0, 0, 0, 0,
- 0, 119, 0, 137, 137, 0, 137, 137, 137, 137,
- 137, 137, 137, 0, 0, 137, 0, 0, 137, 137,
- 137, 161, 161, 161, 161, 0, 0, 0, 161, 0,
- 161, 0, 0, 0, 0, 0, 161, 161, 161, 161,
- 0, 0, 0, 75, 0, 0, 75, 161, 161, 0,
- 161, 161, 161, 161, 161, 161, 161, 0, 0, 161,
- 75, 75, 161, 161, 161, 75, 0, 0, 0, 0,
- 0, 120, 120, 120, 120, 0, 0, 0, 120, 0,
- 120, 0, 0, 0, 0, 0, 120, 120, 120, 120,
- 0, 0, 0, 0, 0, 75, 0, 120, 120, 0,
- 120, 120, 120, 120, 120, 120, 120, 164, 0, 120,
- 0, 0, 120, 120, 120, 0, 0, 0, 0, 69,
- 69, 69, 69, 0, 164, 164, 69, 0, 69, 164,
- 0, 0, 0, 0, 69, 69, 69, 69, 0, 0,
- 0, 0, 0, 0, 0, 69, 69, 0, 69, 69,
- 69, 69, 69, 69, 69, 0, 149, 69, 0, 164,
- 69, 69, 69, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 149, 149, 0, 0, 0, 149, 0,
- 119, 119, 119, 119, 0, 0, 0, 119, 0, 119,
- 0, 0, 0, 0, 0, 119, 119, 119, 119, 0,
- 0, 0, 72, 0, 0, 0, 119, 119, 149, 119,
- 119, 119, 119, 119, 119, 119, 0, 0, 119, 72,
- 72, 119, 119, 119, 72, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 56, 0, 0, 0,
+ 0, 0, 108, 0, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
+ 108, 61, 55, 0, 108, 65, 67, 53, 0, 60,
+ 0, 68, 64, 0, 63, 0, 0, 0, 0, 0,
+ 161, 162, 163, 164, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 108, 0, 56, 167, 168, 169,
+ 170, 171, 172, 0, 0, 173, 0, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 61, 0, 55, 0, 0, 65, 67, 53, 0, 60,
+ 296, 68, 64, 0, 63, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 117, 0, 0, 117,
- 0, 0, 0, 0, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 117, 117, 0, 0, 0, 117, 0,
- 0, 0, 0, 0, 75, 75, 75, 75, 0, 0,
- 0, 75, 0, 75, 0, 0, 0, 0, 0, 75,
- 75, 75, 75, 0, 0, 0, 111, 0, 117, 111,
- 75, 75, 0, 75, 75, 75, 75, 75, 75, 75,
- 0, 0, 75, 111, 111, 75, 75, 75, 111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 164, 164,
- 164, 164, 0, 0, 0, 164, 0, 164, 111, 0,
- 0, 0, 0, 164, 164, 164, 164, 0, 0, 0,
- 112, 0, 0, 112, 164, 164, 0, 164, 164, 164,
- 164, 164, 164, 164, 0, 0, 164, 112, 112, 164,
- 164, 164, 112, 0, 0, 0, 0, 149, 149, 149,
- 149, 0, 0, 0, 149, 0, 149, 0, 0, 0,
- 0, 0, 149, 149, 149, 149, 0, 0, 0, 0,
- 0, 0, 112, 149, 149, 0, 149, 149, 149, 149,
- 149, 149, 149, 0, 0, 149, 0, 0, 149, 149,
- 149, 0, 0, 72, 72, 72, 72, 0, 0, 0,
- 72, 0, 72, 0, 0, 0, 0, 0, 72, 72,
- 72, 72, 0, 0, 0, 0, 0, 0, 0, 72,
- 72, 0, 72, 72, 72, 72, 72, 72, 72, 0,
- 0, 72, 0, 0, 72, 72, 72, 117, 117, 117,
- 117, 0, 0, 0, 117, 0, 117, 0, 0, 0,
- 0, 0, 117, 117, 117, 117, 113, 0, 0, 113,
- 0, 0, 0, 117, 117, 0, 117, 117, 117, 117,
- 117, 117, 117, 113, 113, 117, 0, 0, 113, 0,
- 0, 0, 0, 0, 0, 0, 0, 111, 111, 111,
- 111, 0, 0, 0, 111, 0, 111, 0, 0, 0,
- 0, 0, 111, 111, 111, 111, 0, 109, 113, 0,
- 109, 0, 0, 111, 111, 0, 111, 111, 111, 111,
- 111, 111, 111, 0, 109, 109, 0, 0, 0, 109,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 112, 112, 112, 112, 0, 0, 0, 112, 109,
- 112, 0, 0, 0, 0, 0, 112, 112, 112, 112,
- 110, 0, 0, 110, 0, 0, 0, 112, 112, 0,
- 112, 112, 112, 112, 112, 112, 112, 110, 110, 0,
- 0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 108, 0, 0, 108,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 110, 108, 108, 0, 0, 0, 108, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 96, 0, 0, 96, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
- 96, 96, 0, 0, 0, 96, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 113, 113, 113,
- 113, 0, 0, 0, 113, 96, 113, 0, 0, 0,
- 0, 0, 113, 113, 113, 113, 97, 0, 0, 97,
- 0, 0, 0, 113, 113, 0, 113, 113, 113, 113,
- 113, 113, 113, 97, 97, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 109, 109,
- 109, 109, 0, 0, 0, 109, 0, 109, 0, 0,
- 0, 0, 0, 109, 109, 109, 109, 98, 97, 0,
- 98, 0, 0, 0, 109, 109, 0, 109, 109, 109,
- 109, 109, 109, 109, 98, 98, 0, 0, 0, 98,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 110, 110, 110, 110, 0, 0, 0, 110, 98,
- 110, 0, 0, 0, 0, 0, 110, 110, 110, 110,
- 0, 0, 0, 0, 0, 0, 0, 110, 110, 0,
- 110, 110, 110, 110, 110, 110, 110, 108, 108, 108,
- 108, 0, 0, 0, 108, 0, 108, 0, 0, 0,
- 0, 0, 108, 108, 108, 108, 0, 0, 0, 0,
- 0, 0, 99, 108, 108, 99, 108, 108, 108, 108,
- 108, 108, 108, 0, 96, 96, 96, 96, 0, 99,
- 99, 96, 0, 96, 99, 0, 0, 0, 0, 96,
- 96, 96, 96, 0, 0, 0, 0, 0, 0, 153,
- 96, 96, 153, 96, 96, 96, 96, 96, 96, 96,
- 101, 0, 0, 101, 99, 0, 153, 153, 0, 0,
- 0, 153, 0, 0, 0, 0, 0, 101, 101, 0,
- 0, 0, 101, 0, 0, 0, 0, 97, 97, 97,
- 97, 0, 0, 0, 97, 0, 97, 0, 0, 0,
- 0, 153, 97, 97, 97, 97, 152, 0, 0, 152,
- 0, 0, 101, 97, 97, 0, 97, 97, 97, 97,
- 97, 97, 0, 152, 152, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 98, 98,
- 98, 98, 0, 0, 0, 98, 0, 98, 0, 0,
- 0, 0, 0, 98, 98, 0, 98, 141, 152, 0,
- 141, 0, 0, 0, 98, 98, 0, 98, 98, 98,
- 98, 98, 98, 0, 141, 141, 0, 0, 0, 141,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 0, 0, 118, 0,
- 0, 0, 0, 0, 0, 102, 0, 0, 102, 141,
- 0, 0, 118, 118, 0, 0, 0, 118, 0, 0,
- 0, 0, 102, 102, 0, 0, 0, 102, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 99, 99, 99, 118, 0, 0,
- 99, 0, 99, 0, 0, 0, 0, 102, 99, 99,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
- 99, 0, 99, 99, 99, 99, 99, 99, 0, 0,
- 153, 153, 153, 153, 0, 0, 0, 153, 0, 153,
- 0, 101, 101, 101, 101, 153, 153, 0, 101, 0,
- 101, 0, 0, 0, 0, 0, 153, 153, 0, 153,
- 153, 153, 153, 153, 0, 0, 0, 101, 101, 0,
- 101, 101, 101, 101, 101, 103, 0, 0, 103, 0,
- 0, 0, 0, 0, 0, 0, 0, 152, 152, 152,
- 152, 0, 103, 103, 152, 0, 152, 103, 0, 0,
- 0, 0, 152, 152, 0, 0, 0, 0, 105, 0,
- 0, 105, 0, 152, 152, 0, 152, 152, 152, 152,
- 152, 0, 0, 0, 0, 105, 105, 103, 0, 0,
- 105, 0, 0, 0, 0, 0, 0, 0, 141, 141,
- 141, 141, 0, 0, 0, 141, 0, 141, 0, 0,
- 0, 0, 0, 141, 141, 0, 0, 0, 0, 0,
- 105, 0, 0, 0, 141, 141, 0, 141, 141, 141,
- 141, 141, 0, 0, 0, 0, 118, 118, 118, 118,
- 0, 0, 0, 118, 0, 118, 102, 102, 102, 102,
- 0, 118, 118, 102, 0, 102, 0, 0, 0, 0,
- 0, 0, 118, 118, 0, 118, 118, 118, 118, 118,
- 0, 106, 102, 102, 106, 102, 102, 102, 102, 102,
- 0, 0, 0, 0, 0, 0, 0, 0, 106, 106,
- 95, 0, 0, 106, 0, 0, 0, 0, 105, 0,
- 0, 0, 110, 0, 0, 119, 0, 0, 0, 0,
- 0, 0, 126, 127, 128, 129, 130, 0, 0, 0,
- 135, 136, 0, 106, 0, 0, 141, 0, 0, 0,
+ 0, 0, 0, 66, 0, 56, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 27, 28, 29,
+ 30, 31, 0, 32, 33, 34, 0, 0, 0, 35,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 41, 0, 42, 43, 44, 45, 46, 0, 0, 0,
+ 0, 47, 48, 49, 50, 51, 52, 0, 0, 0,
+ 0, 0, 54, 0, 0, 56, 0, 0, 0, 0,
+ 0, 57, 0, 58, 59, 0, 0, 27, 28, 29,
+ 30, 31, 0, 32, 33, 34, 0, 55, 0, 35,
+ 65, 67, 53, 0, 60, 298, 68, 64, 0, 63,
+ 41, 0, 42, 43, 44, 45, 46, 0, 0, 0,
+ 0, 47, 48, 49, 50, 51, 52, 0, 66, 0,
+ 0, 0, 54, 108, 108, 108, 108, 0, 0, 0,
+ 108, 57, 108, 58, 59, 25, 27, 28, 29, 30,
+ 31, 0, 32, 33, 34, 61, 0, 0, 35, 0,
+ 0, 108, 108, 0, 108, 108, 108, 108, 108, 41,
+ 0, 42, 43, 44, 45, 46, 0, 0, 0, 0,
+ 47, 48, 49, 50, 51, 52, 0, 0, 0, 55,
+ 56, 54, 65, 67, 53, 0, 60, 307, 68, 64,
+ 57, 63, 58, 59, 0, 0, 27, 28, 29, 30,
+ 31, 0, 32, 33, 34, 0, 0, 0, 35, 0,
+ 66, 0, 0, 0, 0, 0, 0, 0, 0, 41,
+ 0, 42, 43, 44, 45, 46, 0, 0, 0, 0,
+ 47, 48, 49, 50, 51, 52, 0, 61, 0, 55,
+ 0, 54, 65, 67, 53, 0, 60, 0, 68, 64,
+ 57, 63, 58, 59, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,
+ 66, 0, 56, 0, 0, 0, 0, 0, 158, 0,
+ 108, 158, 0, 0, 0, 0, 116, 95, 124, 0,
+ 0, 0, 130, 95, 0, 158, 158, 61, 0, 0,
+ 158, 0, 0, 0, 0, 95, 95, 95, 95, 0,
+ 0, 27, 28, 29, 30, 31, 0, 32, 33, 34,
+ 0, 0, 0, 35, 0, 74, 0, 0, 74, 0,
+ 158, 0, 56, 0, 41, 0, 42, 43, 44, 45,
+ 46, 178, 0, 74, 178, 47, 48, 49, 50, 51,
+ 52, 0, 116, 0, 0, 0, 54, 0, 178, 178,
+ 0, 0, 0, 178, 0, 57, 0, 58, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 74, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 178, 0, 139, 0, 0, 139, 0,
+ 0, 0, 0, 27, 28, 29, 30, 31, 0, 32,
+ 33, 34, 139, 139, 0, 35, 252, 139, 0, 0,
+ 0, 0, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 284, 0, 0, 0, 139, 54, 0,
+ 0, 0, 0, 0, 0, 134, 0, 57, 134, 58,
+ 59, 0, 0, 27, 28, 29, 30, 31, 0, 32,
+ 33, 34, 134, 134, 0, 35, 0, 134, 0, 0,
+ 0, 0, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 0, 0, 0, 0, 134, 54, 158,
+ 158, 158, 158, 0, 0, 0, 158, 57, 158, 58,
+ 59, 0, 0, 0, 158, 158, 158, 158, 0, 0,
+ 0, 0, 0, 137, 0, 0, 137, 158, 158, 0,
+ 158, 158, 158, 158, 158, 158, 158, 0, 0, 158,
+ 137, 137, 158, 158, 158, 137, 74, 74, 74, 74,
+ 0, 0, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 178, 178, 178, 0, 0, 0, 178,
+ 135, 178, 0, 135, 74, 137, 0, 178, 178, 178,
+ 178, 0, 0, 0, 0, 0, 0, 135, 135, 0,
+ 178, 178, 135, 178, 178, 178, 178, 178, 178, 178,
+ 0, 0, 178, 0, 0, 178, 178, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 139, 139, 139, 139,
+ 0, 145, 135, 139, 145, 139, 0, 0, 0, 0,
+ 0, 139, 139, 139, 139, 0, 0, 0, 145, 145,
+ 0, 0, 0, 145, 139, 139, 0, 139, 139, 139,
+ 139, 139, 139, 139, 0, 0, 139, 0, 0, 139,
+ 139, 139, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 156, 145, 0, 156, 134, 134, 134, 134,
+ 0, 169, 0, 134, 169, 134, 0, 0, 0, 156,
+ 156, 134, 134, 134, 134, 0, 0, 0, 169, 169,
+ 0, 0, 0, 169, 134, 134, 0, 134, 134, 134,
+ 134, 134, 134, 134, 0, 0, 134, 0, 0, 134,
+ 134, 134, 0, 0, 156, 0, 0, 172, 0, 0,
+ 172, 0, 0, 169, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 172, 172, 0, 0, 0, 172,
+ 0, 0, 0, 0, 137, 137, 137, 137, 0, 0,
+ 0, 137, 0, 137, 0, 0, 0, 0, 0, 137,
+ 137, 137, 137, 0, 0, 0, 0, 0, 0, 172,
+ 0, 0, 137, 137, 0, 137, 137, 137, 137, 137,
+ 137, 137, 0, 0, 137, 0, 0, 137, 137, 137,
+ 0, 135, 135, 135, 135, 0, 128, 0, 135, 128,
+ 135, 0, 0, 0, 0, 0, 135, 135, 135, 135,
+ 0, 0, 0, 128, 128, 0, 0, 0, 128, 135,
+ 135, 0, 135, 135, 135, 135, 135, 135, 135, 0,
+ 0, 135, 0, 0, 135, 135, 135, 0, 0, 0,
+ 0, 0, 145, 145, 145, 145, 0, 76, 128, 145,
+ 76, 145, 0, 0, 0, 0, 0, 145, 145, 145,
+ 145, 0, 0, 0, 76, 76, 0, 0, 0, 76,
+ 145, 145, 0, 145, 145, 145, 145, 145, 145, 145,
+ 0, 0, 145, 0, 0, 145, 145, 145, 0, 0,
+ 0, 0, 0, 156, 156, 156, 156, 0, 0, 76,
+ 156, 0, 169, 169, 169, 169, 0, 66, 0, 169,
+ 66, 169, 0, 0, 0, 0, 0, 169, 169, 169,
+ 169, 156, 156, 0, 66, 66, 0, 0, 0, 66,
+ 169, 169, 0, 169, 169, 169, 169, 169, 169, 169,
+ 0, 0, 169, 0, 0, 169, 169, 169, 172, 172,
+ 172, 172, 0, 127, 0, 172, 127, 172, 0, 66,
+ 0, 0, 0, 172, 172, 172, 172, 0, 0, 0,
+ 127, 127, 0, 0, 0, 127, 172, 172, 0, 172,
+ 172, 172, 172, 172, 172, 172, 0, 0, 172, 0,
+ 0, 172, 172, 172, 0, 0, 0, 0, 0, 82,
+ 0, 0, 82, 0, 0, 127, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 82, 82, 0, 0,
+ 0, 82, 114, 0, 0, 114, 0, 128, 128, 128,
+ 128, 0, 0, 0, 128, 0, 128, 0, 0, 114,
+ 114, 0, 128, 128, 128, 128, 0, 0, 0, 0,
+ 0, 82, 0, 0, 0, 128, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 0, 0, 128, 0, 0,
+ 128, 128, 128, 102, 114, 0, 102, 0, 76, 76,
+ 76, 76, 179, 0, 0, 76, 0, 76, 0, 0,
+ 102, 102, 0, 76, 76, 76, 76, 0, 0, 179,
+ 179, 0, 0, 0, 179, 0, 76, 76, 0, 76,
+ 76, 76, 76, 76, 76, 76, 0, 0, 76, 0,
+ 0, 76, 76, 76, 0, 102, 0, 0, 0, 0,
+ 0, 0, 0, 0, 179, 0, 0, 0, 66, 66,
+ 66, 66, 157, 0, 0, 66, 0, 66, 0, 0,
+ 0, 0, 0, 66, 66, 66, 66, 0, 0, 157,
+ 157, 0, 0, 0, 157, 0, 66, 66, 0, 66,
+ 66, 66, 66, 66, 66, 66, 0, 0, 66, 0,
+ 0, 66, 66, 66, 127, 127, 127, 127, 79, 0,
+ 0, 127, 0, 127, 157, 0, 0, 0, 0, 127,
+ 127, 127, 127, 0, 0, 79, 79, 0, 0, 0,
+ 79, 0, 127, 127, 0, 127, 127, 127, 127, 127,
+ 127, 127, 0, 0, 127, 0, 0, 127, 127, 127,
+ 82, 82, 82, 82, 0, 0, 0, 82, 0, 82,
+ 79, 0, 0, 0, 0, 82, 82, 82, 82, 0,
+ 0, 0, 0, 114, 114, 114, 114, 0, 82, 82,
+ 114, 82, 82, 82, 82, 82, 82, 82, 0, 123,
+ 82, 0, 123, 82, 82, 82, 0, 0, 0, 0,
+ 0, 114, 114, 0, 114, 0, 123, 123, 0, 0,
+ 0, 123, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 102, 102, 102, 102, 0, 0,
+ 0, 102, 0, 179, 179, 179, 179, 0, 0, 0,
+ 179, 123, 179, 0, 0, 0, 0, 0, 179, 179,
+ 179, 179, 102, 102, 0, 0, 0, 0, 0, 0,
+ 0, 179, 179, 0, 179, 179, 179, 179, 179, 179,
+ 179, 0, 0, 179, 0, 0, 179, 179, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 186, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 103, 103, 103, 103,
- 0, 0, 0, 103, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 157, 157, 157, 157, 0, 0, 0,
+ 157, 124, 157, 0, 124, 0, 0, 0, 157, 157,
+ 157, 157, 0, 0, 0, 0, 0, 0, 124, 124,
+ 0, 157, 157, 124, 157, 157, 157, 157, 157, 157,
+ 157, 0, 0, 157, 0, 0, 157, 157, 157, 79,
+ 79, 79, 79, 0, 118, 0, 79, 118, 79, 0,
+ 0, 0, 0, 124, 79, 79, 79, 79, 0, 0,
+ 0, 118, 118, 0, 0, 0, 118, 79, 79, 0,
+ 79, 79, 79, 79, 79, 79, 79, 99, 0, 79,
+ 0, 0, 79, 79, 79, 109, 0, 0, 119, 114,
+ 0, 119, 123, 0, 0, 128, 118, 0, 0, 136,
+ 137, 138, 139, 140, 0, 119, 119, 145, 146, 0,
+ 119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 123, 123, 123, 123, 0, 0, 0, 123, 120, 123,
+ 0, 120, 0, 0, 0, 123, 123, 123, 123, 0,
+ 119, 0, 196, 0, 0, 120, 120, 0, 123, 123,
+ 120, 123, 123, 123, 123, 123, 123, 123, 0, 0,
+ 123, 0, 0, 0, 0, 0, 116, 0, 0, 116,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 103, 103, 0, 103, 103, 103, 103, 105,
- 105, 105, 105, 0, 0, 0, 105, 0, 105, 0,
- 0, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 105, 105, 0, 105, 105,
- 105, 0, 0, 0, 0, 0, 0, 0, 251, 0,
+ 120, 0, 0, 116, 116, 0, 0, 0, 116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 265, 124, 124, 124, 124, 0, 117, 0, 124,
+ 117, 124, 0, 0, 0, 0, 0, 124, 124, 124,
+ 124, 0, 0, 0, 117, 117, 0, 0, 0, 117,
+ 124, 124, 0, 124, 124, 124, 124, 124, 124, 124,
+ 0, 0, 124, 0, 0, 118, 118, 118, 118, 0,
+ 115, 0, 118, 115, 118, 0, 0, 0, 0, 117,
+ 118, 118, 118, 118, 0, 0, 0, 115, 115, 0,
+ 0, 0, 115, 118, 118, 0, 118, 118, 118, 118,
+ 118, 118, 118, 0, 0, 0, 327, 0, 0, 119,
+ 119, 119, 119, 0, 0, 0, 119, 77, 119, 0,
+ 77, 0, 115, 0, 119, 119, 119, 119, 0, 0,
+ 0, 0, 0, 0, 77, 77, 0, 119, 119, 343,
+ 119, 119, 119, 119, 119, 119, 119, 0, 0, 120,
+ 120, 120, 120, 0, 103, 0, 120, 103, 120, 0,
+ 0, 0, 0, 0, 120, 120, 120, 120, 0, 77,
+ 0, 103, 103, 0, 0, 0, 103, 120, 120, 0,
+ 120, 120, 120, 120, 120, 120, 120, 116, 116, 116,
+ 116, 0, 104, 0, 116, 104, 116, 0, 0, 0,
+ 0, 0, 116, 116, 116, 116, 103, 0, 0, 104,
+ 104, 0, 0, 0, 104, 116, 116, 0, 116, 116,
+ 116, 116, 116, 116, 116, 0, 0, 0, 0, 105,
+ 0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 104, 0, 105, 105, 0, 0,
+ 0, 105, 0, 0, 0, 0, 0, 0, 117, 117,
+ 117, 117, 0, 0, 0, 117, 0, 117, 0, 0,
+ 0, 0, 0, 117, 117, 117, 117, 305, 0, 0,
+ 0, 105, 166, 0, 0, 0, 117, 117, 0, 117,
+ 117, 117, 117, 117, 117, 117, 0, 0, 0, 0,
+ 0, 115, 115, 115, 115, 0, 161, 0, 115, 161,
+ 115, 0, 0, 0, 0, 0, 115, 115, 115, 115,
+ 0, 0, 0, 161, 161, 0, 0, 0, 161, 115,
+ 115, 0, 115, 115, 115, 115, 115, 115, 115, 0,
+ 0, 0, 0, 160, 0, 0, 160, 0, 77, 77,
+ 77, 77, 0, 149, 0, 77, 149, 0, 161, 0,
+ 160, 160, 0, 0, 0, 160, 0, 0, 0, 0,
+ 149, 149, 0, 0, 0, 149, 77, 77, 0, 0,
+ 0, 0, 0, 0, 0, 103, 103, 103, 103, 0,
+ 126, 0, 103, 126, 103, 160, 0, 0, 0, 0,
+ 103, 103, 103, 103, 0, 149, 0, 126, 126, 0,
+ 0, 0, 126, 103, 103, 0, 103, 103, 103, 103,
+ 103, 103, 103, 104, 104, 104, 104, 0, 107, 0,
+ 104, 107, 104, 0, 0, 0, 0, 0, 104, 104,
+ 104, 104, 126, 0, 0, 107, 107, 0, 0, 0,
+ 107, 104, 104, 0, 104, 104, 104, 104, 104, 104,
+ 105, 105, 105, 105, 0, 109, 0, 105, 109, 105,
+ 0, 0, 0, 0, 0, 105, 105, 0, 105, 0,
+ 107, 110, 109, 109, 110, 0, 0, 109, 105, 105,
+ 0, 105, 105, 105, 105, 105, 105, 0, 110, 110,
+ 160, 0, 0, 110, 0, 0, 161, 162, 163, 164,
+ 0, 0, 0, 0, 0, 0, 0, 109, 0, 0,
+ 0, 0, 165, 167, 168, 169, 170, 171, 172, 0,
+ 0, 173, 0, 110, 174, 175, 176, 161, 161, 161,
+ 161, 0, 112, 0, 161, 112, 161, 0, 0, 0,
+ 0, 0, 161, 161, 0, 0, 0, 0, 0, 112,
+ 112, 0, 0, 0, 112, 161, 161, 0, 161, 161,
+ 161, 161, 161, 0, 160, 160, 160, 160, 0, 113,
+ 0, 160, 113, 160, 149, 149, 149, 149, 0, 160,
+ 160, 149, 0, 149, 112, 0, 113, 113, 0, 149,
+ 149, 113, 160, 160, 0, 160, 160, 160, 160, 160,
+ 0, 0, 149, 149, 0, 149, 149, 149, 149, 149,
+ 0, 126, 126, 126, 126, 0, 0, 0, 126, 0,
+ 126, 113, 0, 0, 0, 0, 126, 126, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
+ 126, 0, 126, 126, 126, 126, 126, 0, 0, 107,
+ 107, 107, 107, 0, 0, 0, 107, 0, 107, 0,
+ 0, 0, 0, 0, 0, 107, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 107, 0,
+ 107, 107, 107, 107, 107, 0, 109, 109, 109, 109,
+ 0, 0, 0, 109, 0, 109, 0, 0, 0, 0,
+ 0, 0, 110, 110, 110, 110, 0, 0, 0, 110,
+ 0, 110, 0, 0, 109, 109, 0, 109, 109, 109,
+ 109, 109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 110, 110, 0, 110, 110, 110, 110, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 112, 112, 112, 112, 0, 0, 0,
+ 112, 0, 112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 112, 112, 0, 112, 112, 112, 0, 0, 0,
+ 113, 113, 113, 113, 0, 0, 0, 113, 0, 113,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 106, 106, 106, 106, 0, 0, 0, 106,
- 0, 106, 0, 0, 0, 0, 0, 0, 306, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 106, 106,
- 0, 106, 106, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
+ 0, 0, 0, 0, 0, 0, 0, 0, 113, 113,
+ 0, 113, 113,
};
-static short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
- 91, 41, 41, 40, 44, 298, 299, 257, 41, 93,
- 58, 59, 46, 59, 40, 63, 41, 123, 58, 59,
- 59, 41, 123, 57, 58, 40, 367, 41, 59, 41,
- 41, 41, 123, 92, 59, 194, 41, 41, 257, 41,
- 278, 41, 123, 41, 41, 93, 44, 40, 59, 59,
- 91, 276, 277, 93, 91, 59, 115, 41, 123, 44,
- 58, 59, 59, 40, 123, 63, 98, 99, 100, 101,
- 102, 103, 41, 107, 108, 59, 40, 123, 123, 289,
- 290, 59, 123, 59, 0, 59, 123, 40, 40, 36,
- 59, 40, 40, 40, 294, 93, 306, 307, 44, 59,
- 310, 123, 260, 313, 314, 315, 257, 40, 40, 40,
- 144, 145, 146, 147, 148, 149, 150, 33, 277, 41,
- 36, 37, 38, 93, 40, 315, 42, 43, 93, 45,
- 93, 125, 93, 91, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 59, 91, 257, 36, 0, 64, 255,
- 41, 185, 125, 312, 260, 189, 190, 91, 192, 299,
- 194, 41, 40, 195, 41, 41, 93, 201, 93, 203,
- 204, 41, 333, 334, 208, 91, 123, 338, 41, 257,
- 33, 40, 125, 36, 37, 38, 41, 40, 59, 42,
- 43, 59, 45, 354, 123, 125, 255, 358, 357, 125,
- 234, 260, 236, 237, 0, 125, 59, 123, 41, 125,
- 126, 64, 257, 125, 298, 299, 41, 262, 41, 298,
- 299, 298, 299, 59, 272, 273, 274, 275, 298, 299,
- 40, 279, 272, 273, 274, 275, 41, 33, 91, 279,
- 36, 37, 38, 296, 40, 344, 42, 43, 41, 45,
- 298, 299, 41, 301, 288, 298, 299, 123, 298, 299,
- 294, 301, 41, 59, 59, 298, 299, 123, 64, 41,
- 123, 59, 125, 126, 272, 273, 274, 275, 298, 299,
- 314, 279, 41, 281, 298, 299, 298, 299, 41, 287,
- 288, 289, 290, 298, 299, 91, 298, 299, 298, 299,
- 298, 299, 59, 301, 302, 303, 304, 305, 306, 307,
- 63, 258, 310, 298, 299, 313, 314, 315, 41, 353,
- 298, 299, 298, 299, 298, 299, 8, 123, 298, 299,
- 126, 32, 13, 298, 299, 298, 299, 298, 299, 145,
- 256, 257, 258, 259, 260, 261, 353, 263, 264, 265,
+static short yycheck[] = { 15,
+ 36, 91, 41, 36, 40, 59, 59, 41, 195, 41,
+ 59, 59, 41, 59, 59, 44, 59, 123, 93, 36,
+ 93, 358, 59, 40, 96, 91, 40, 91, 41, 58,
+ 59, 41, 41, 49, 63, 59, 41, 59, 41, 257,
+ 204, 40, 192, 90, 60, 61, 59, 41, 198, 257,
+ 59, 15, 389, 41, 101, 127, 59, 123, 41, 123,
+ 289, 290, 300, 301, 93, 59, 266, 267, 268, 41,
+ 270, 271, 41, 41, 91, 123, 41, 91, 123, 44,
+ 309, 45, 41, 312, 48, 93, 315, 316, 317, 44,
+ 123, 59, 91, 58, 59, 111, 112, 297, 63, 123,
+ 59, 123, 59, 36, 37, 40, 123, 40, 40, 123,
+ 257, 41, 59, 129, 0, 102, 103, 104, 105, 106,
+ 107, 85, 40, 310, 123, 278, 41, 291, 93, 59,
+ 312, 64, 40, 315, 316, 317, 100, 153, 154, 155,
+ 156, 157, 158, 159, 59, 276, 277, 33, 93, 40,
+ 36, 37, 38, 93, 40, 93, 42, 43, 40, 45,
+ 40, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 334, 8, 9, 59, 0, 40, 40, 123, 64, 195,
+ 59, 44, 123, 199, 200, 40, 202, 151, 204, 260,
+ 257, 40, 298, 41, 93, 211, 268, 213, 214, 40,
+ 125, 298, 274, 257, 317, 91, 222, 33, 36, 298,
+ 36, 37, 38, 91, 40, 379, 42, 43, 205, 45,
+ 41, 125, 257, 91, 257, 300, 301, 300, 301, 262,
+ 260, 301, 248, 59, 250, 251, 40, 123, 64, 125,
+ 126, 258, 0, 272, 273, 274, 275, 300, 301, 260,
+ 279, 300, 301, 298, 300, 301, 41, 300, 301, 41,
+ 296, 300, 301, 300, 301, 91, 300, 301, 300, 301,
+ 41, 300, 301, 41, 303, 33, 366, 41, 36, 37,
+ 38, 40, 40, 59, 42, 43, 41, 45, 304, 125,
+ 300, 301, 300, 301, 310, 300, 301, 123, 125, 125,
+ 126, 59, 125, 267, 123, 269, 64, 272, 273, 274,
+ 275, 275, 300, 301, 279, 125, 281, 300, 301, 59,
+ 336, 41, 287, 288, 289, 290, 125, 41, 300, 301,
+ 44, 300, 301, 91, 41, 300, 301, 41, 303, 304,
+ 305, 306, 307, 308, 309, 300, 301, 312, 59, 63,
+ 315, 316, 317, 300, 301, 300, 301, 40, 123, 375,
+ 300, 301, 300, 301, 41, 123, 41, 41, 126, 123,
+ 256, 257, 258, 259, 260, 261, 41, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 41, 59, 41, 279, 280, 289, 282, 283, 284, 285,
+ 286, 300, 301, 59, 41, 291, 292, 293, 294, 295,
+ 296, 297, 63, 59, 41, 309, 302, 35, 312, 52,
+ 52, 315, 316, 317, 15, 311, 154, 313, 314, 336,
+ 256, 257, 258, 259, 260, 261, 375, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 125, 192, 97, 279, 280, -1, 282, 283, 284, 285,
- 286, 298, 299, 298, 299, 291, 292, 293, 294, 295,
- 296, -1, -1, 41, 300, -1, 44, 266, 267, 268,
- 314, 270, 271, 309, -1, 311, 312, -1, -1, -1,
- -1, 59, -1, 256, 257, 258, 259, 260, 261, -1,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 125, -1, -1, 279, 280, 289, 282,
- 283, 284, 285, 286, -1, 93, -1, -1, 291, 292,
- 293, 294, 295, 296, -1, -1, 307, 300, 41, 310,
- -1, 44, 313, 314, 315, -1, 309, -1, 311, 312,
- 256, 257, 258, 259, 260, 261, -1, 263, 264, 265,
- 63, -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, 266, 267, 268, 300, 270, 271, 310, -1, -1,
- 313, 314, 315, 309, 33, 311, 312, 36, 37, 38,
- -1, 40, 41, 42, 43, 44, 45, -1, 281, -1,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, 58,
- 59, -1, -1, -1, 63, 64, -1, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, -1, -1,
- 313, 314, 315, -1, 266, 267, 268, -1, 270, 271,
- -1, -1, 91, 33, 93, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, 44, 45, -1, -1, 26, -1,
- -1, -1, -1, 272, 273, 274, 275, -1, 58, 59,
- 279, -1, -1, 63, 64, 43, 44, 126, -1, -1,
- -1, -1, 50, -1, 272, 273, 274, 275, -1, 298,
- 299, 279, -1, -1, 62, 63, 64, 65, -1, -1,
- -1, -1, -1, 93, 33, -1, -1, 36, 37, 38,
- 298, 40, -1, 42, 43, -1, 45, -1, 309, 310,
- 311, -1, 313, -1, -1, 287, 288, 289, 290, -1,
- 59, 307, -1, -1, 310, 64, 126, 313, 314, 315,
- 108, 303, 304, 305, 306, 307, -1, -1, 310, 340,
- -1, 313, 314, 315, 41, -1, 347, 44, 281, -1,
- 351, -1, 91, -1, 287, 288, 289, 290, -1, -1,
- -1, 58, 59, 364, 365, -1, 63, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, -1, -1,
- 313, 314, 315, -1, 123, -1, -1, 126, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, -1, 257, 258,
+ 202, 24, 269, 279, 280, -1, 282, 283, 284, 285,
+ 286, -1, -1, 125, -1, 291, 292, 293, 294, 295,
+ 296, 297, 355, 356, -1, 309, 302, 360, 312, -1,
+ -1, 315, 316, 317, -1, 311, -1, 313, 314, -1,
+ -1, 41, -1, 376, 44, -1, -1, 380, 256, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, 58, 59,
+ -1, 269, -1, 63, 272, 273, 274, 275, -1, -1,
+ -1, 279, 280, -1, 282, 283, 284, 285, 286, -1,
+ -1, 125, -1, 291, 292, 293, 294, 295, 296, -1,
+ -1, -1, -1, 93, 302, -1, -1, -1, -1, -1,
+ -1, -1, -1, 311, 33, 313, 314, 36, 37, 38,
+ -1, 40, 41, 42, 43, 44, 45, 281, -1, -1,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, 64, -1, -1, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 266, 267, 268, -1, 270, 271,
+ -1, -1, 91, -1, 93, 33, -1, -1, 36, 37,
+ 38, -1, 40, 41, 42, 43, 44, 45, -1, -1,
+ 281, -1, -1, -1, -1, 297, 287, 288, 289, 290,
+ 58, 59, -1, -1, -1, 63, 64, 126, -1, -1,
+ -1, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, 29, -1, 315, 316, 317, -1, -1, -1,
+ -1, -1, 266, 267, 268, 93, 270, 271, 33, 46,
+ 47, 36, 37, 38, -1, 40, 53, 42, 43, -1,
+ 45, 287, 288, 289, 290, -1, -1, -1, 65, 66,
+ 67, 68, -1, 297, 59, -1, -1, -1, 126, 64,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 272, 273, 274, 275, -1, -1, -1, 279,
+ -1, 281, -1, -1, -1, -1, 91, 287, 288, 289,
+ 290, 272, 273, 274, 275, 112, -1, -1, 279, -1,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 123, 300,
+ 301, 126, -1, -1, -1, -1, -1, -1, 257, 258,
259, 260, 261, -1, 263, 264, 265, -1, -1, -1,
- 269, -1, 58, 272, 273, 274, 275, 63, -1, -1,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, -1, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, -1,
- 309, 310, 311, 312, 313, 314, 315, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
- -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, -1, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, -1, 309,
- 310, 311, 312, 313, 314, 315, -1, 256, 257, 258,
- 259, 260, 261, -1, 263, 264, 265, -1, -1, 63,
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, 33,
- -1, 300, 36, 37, 38, 13, 40, -1, 42, 43,
- 309, 45, 311, 312, -1, 272, 273, 274, 275, -1,
- -1, -1, 279, -1, 281, 59, -1, -1, -1, -1,
- 64, 288, -1, -1, 42, -1, -1, 45, 41, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, -1,
- 287, 288, 289, 290, -1, 33, 59, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, 305, 306,
- 307, -1, -1, 310, 82, 281, 313, 314, 315, -1,
- -1, 287, 288, 289, 290, -1, 64, -1, 96, 123,
- 93, -1, 126, -1, -1, 301, 302, 303, 304, 305,
- 306, 307, -1, -1, 310, -1, -1, 313, 314, 315,
- -1, 33, -1, 91, 36, 37, 38, -1, 40, -1,
- 42, 43, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 142, -1, -1, 287, 288, 289,
- 290, -1, 64, -1, -1, 123, -1, -1, 126, -1,
- 41, -1, -1, 44, 304, 305, 306, 307, -1, -1,
- 310, -1, -1, 313, 314, 315, -1, 58, 59, 91,
- -1, -1, -1, 181, 33, -1, -1, 36, 37, 38,
- 188, 40, -1, 42, 43, -1, 45, 281, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
- -1, 123, 93, -1, 126, 64, -1, 301, 302, 303,
- 304, 305, 306, 307, -1, -1, 310, -1, -1, 313,
- 314, 315, 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, 123, -1, 300, 126, -1, 272,
- 273, 274, 275, -1, -1, 309, 279, 311, 312, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, -1, -1,
- -1, 269, -1, -1, 63, 298, 299, -1, -1, -1,
- -1, -1, 280, -1, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- -1, -1, 300, -1, -1, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, 257, 258, 259, 260, 261,
- -1, 263, 264, 265, -1, 33, -1, 269, 36, 37,
- 38, -1, 40, 41, 42, 43, -1, 45, 280, -1,
- 282, 283, 284, 285, 286, -1, -1, -1, -1, 291,
- 292, 293, 294, 295, 296, -1, 64, -1, 300, -1,
- -1, 272, 273, 274, 275, -1, -1, 309, 279, 311,
- 312, -1, 287, 288, 289, 290, -1, -1, 257, 258,
- 259, 260, 261, 91, 263, 264, 265, 298, 299, -1,
- 269, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, 280, -1, 282, 283, 284, 285, 286, -1, -1,
- -1, -1, 291, 292, 293, 294, 295, 296, 126, 33,
- -1, 300, 36, 37, 38, -1, 40, -1, 42, 43,
- 309, 45, 311, 312, 287, -1, 289, 290, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- 64, 25, 26, 306, 307, -1, 41, 310, -1, 44,
- 313, 314, 315, 37, -1, -1, -1, -1, -1, 43,
- 44, 45, -1, 58, 59, 33, 50, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, 62, 63,
- 64, 65, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, -1, 64, -1, 93, -1,
- -1, -1, 126, 302, 303, 304, 305, 306, 307, -1,
- -1, 310, -1, -1, 313, 314, 315, -1, -1, -1,
- -1, -1, -1, 91, 108, 93, 33, -1, -1, 36,
- 37, 38, -1, 40, 41, 42, 43, -1, 45, 257,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, -1, -1,
+ -1, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, -1, 311, 312, 313, 314, 315, 316, 317, 257,
258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
- -1, 269, -1, -1, -1, -1, -1, 64, 126, -1,
+ -1, 269, -1, -1, 272, 273, 274, 275, -1, -1,
+ -1, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, -1,
+ -1, -1, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, -1, 311, 312, 313, 314, 315, 316, 317,
+ -1, 256, 257, 258, 259, 260, 261, 63, 263, 264,
+ 265, -1, -1, -1, 269, -1, -1, 272, 273, 274,
+ 275, -1, -1, -1, 279, 280, -1, 282, 283, 284,
+ 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
+ 295, 296, -1, -1, -1, 33, -1, 302, 36, 37,
+ 38, -1, 40, -1, 42, 43, 311, 45, 313, 314,
+ -1, 46, -1, -1, -1, -1, -1, -1, -1, 54,
+ 287, 59, 289, 290, -1, -1, 64, -1, -1, 41,
+ -1, -1, 44, -1, -1, 331, 332, 333, -1, 335,
+ -1, 308, 309, -1, -1, 312, 58, 59, 315, 316,
+ 317, -1, -1, 91, -1, 33, -1, -1, 36, 37,
+ 38, 96, 40, -1, 42, 43, 362, 45, -1, -1,
+ -1, -1, -1, 369, -1, -1, -1, 373, -1, -1,
+ -1, 93, -1, -1, 119, 123, 64, -1, 126, -1,
+ 386, 387, 127, -1, -1, 33, -1, -1, 36, 37,
+ 38, -1, 40, -1, 42, 43, -1, 45, -1, -1,
+ -1, -1, -1, 91, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, -1, -1, -1, 64, -1, -1, -1,
+ -1, -1, -1, -1, 41, 308, 309, 44, -1, 312,
+ -1, -1, 315, 316, 317, 123, -1, -1, 126, -1,
+ -1, 58, 59, 91, -1, -1, 63, -1, -1, 33,
+ -1, -1, 36, 37, 38, -1, 40, -1, 42, 43,
+ -1, 45, -1, -1, -1, 281, -1, -1, -1, -1,
+ -1, 287, 288, 289, 290, 123, 93, -1, 126, -1,
+ 64, -1, -1, -1, -1, -1, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, 91, 256, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
+ -1, 269, -1, 268, 272, 273, 274, 275, -1, 274,
+ -1, 279, 280, -1, 282, 283, 284, 285, 286, 123,
+ -1, -1, 126, 291, 292, 293, 294, 295, 296, -1,
+ 272, 273, 274, 275, 302, -1, -1, 279, -1, -1,
+ -1, -1, -1, 311, -1, 313, 314, -1, -1, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 300, 301,
+ -1, 269, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, -1, 282, 283, 284, 285, 286, -1,
+ 41, -1, -1, 291, 292, 293, 294, 295, 296, 257,
+ 258, 259, 260, 261, 302, 263, 264, 265, 59, -1,
+ -1, 269, -1, 311, -1, 313, 314, -1, -1, -1,
+ -1, -1, 280, -1, 282, 283, 284, 285, 286, 63,
-1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- 289, 290, 300, 167, 91, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, -1, -1, 41, 307, -1,
- 44, 310, -1, -1, 313, 314, 315, -1, -1, 193,
- -1, -1, -1, -1, 58, 59, -1, 33, -1, 126,
- 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
- -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
- 264, 265, -1, -1, -1, 269, -1, -1, 64, 93,
- -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ -1, -1, 93, -1, 302, 272, 273, 274, 275, -1,
+ -1, -1, 279, 311, 281, 313, 314, -1, -1, -1,
+ 287, 288, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, -1, 300, 301, 269, 303, 304, 305, 306,
+ 307, 308, -1, -1, -1, -1, 280, -1, 282, 283,
284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, 295, 296, -1, -1, 91, 300, 272, 273, 274,
- 275, -1, -1, -1, 279, 309, -1, 311, 312, 257,
- 258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
- -1, 269, -1, 298, 299, -1, -1, -1, -1, -1,
- 126, -1, 280, -1, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- 41, -1, 300, 44, -1, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, -1, 41, 58, 59, 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, 93, -1, 291, 292, 293, 294, 295, 296,
- -1, -1, -1, 300, -1, -1, -1, -1, 93, -1,
- -1, -1, 309, -1, 311, 312, -1, 33, -1, -1,
- 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, -1, 64, -1,
- -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
- -1, -1, -1, 269, 298, 299, -1, -1, -1, -1,
- -1, -1, -1, -1, 280, 91, 282, 283, 284, 285,
- 286, -1, -1, -1, -1, 291, 292, 293, 294, 295,
- 296, -1, 33, -1, 300, 36, 37, 38, -1, 40,
- -1, 42, 43, 309, 45, 311, 312, -1, -1, -1,
- 126, 287, 288, 289, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, 64, -1, -1, 302, 303, 304, 305,
- 306, 307, -1, -1, 310, -1, -1, 313, 314, 315,
+ 294, 295, 296, 289, 290, -1, 33, -1, 302, 36,
+ 37, 38, -1, 40, -1, 42, 43, 311, 45, 313,
+ 314, -1, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 59, -1, -1, -1, -1, 64, -1, -1,
+ -1, 287, 288, 289, 290, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, 305,
+ 306, 307, 308, 309, 91, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, 64, -1, -1,
+ 287, 288, 289, 290, -1, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, -1, 42, 43, -1, 45, 126,
+ 307, 308, 309, -1, 91, 312, -1, -1, 315, 316,
+ 317, -1, -1, -1, -1, -1, -1, 64, -1, -1,
+ -1, 272, 273, 274, 275, -1, 33, -1, 279, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, 126,
+ -1, -1, -1, -1, 91, -1, 93, 281, -1, 300,
+ 301, -1, -1, 287, 288, 289, 290, 64, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 91, -1, -1, 33, -1, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, 64, 126, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, 298, 299, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, 91, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, 41, 42, 43, -1,
- 45, 257, 258, 259, 260, 261, 126, 263, 264, 265,
- -1, -1, -1, 269, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, 280, -1, 282, 283, 284, 285,
- 286, -1, -1, -1, -1, 291, 292, 293, 294, 295,
- 296, -1, -1, -1, 300, -1, 91, -1, -1, -1,
- -1, -1, -1, 309, -1, 311, 312, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, 41, 42, 43, -1,
- 45, -1, -1, -1, -1, 256, 257, 258, 259, 260,
- 261, 126, 263, 264, 265, -1, -1, -1, 269, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 280,
- -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, 295, 296, 91, -1, -1, 300,
- -1, -1, -1, -1, -1, -1, -1, -1, 309, -1,
- 311, 312, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
- -1, 126, -1, -1, -1, -1, -1, -1, -1, -1,
- 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, -1, 33, -1,
- 300, 36, 37, 38, -1, 40, -1, 42, 43, 309,
- 45, 311, 312, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, -1, -1, -1, 269, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 280, 91, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, -1, -1, 300, -1, -1, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- -1, 126, -1, -1, 41, -1, -1, 44, -1, -1,
- -1, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, 58, 59, -1, 269, -1, 63, -1, -1, -1,
- -1, -1, -1, -1, -1, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, -1, 41, 300, 93, 44, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- -1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, 126,
+ -1, 315, 316, 317, 91, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
- -1, 44, -1, -1, -1, -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, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, -1, -1, -1, 269, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, -1, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, 41, -1, 300, 44, -1, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 64, -1, 126,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, -1,
+ -1, -1, 269, -1, 91, -1, -1, -1, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, 126,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, -1,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, -1,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ -1, -1, -1, 33, -1, 302, 36, 37, 38, -1,
+ 40, 41, 42, 43, 311, 45, 313, 314, -1, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, -1,
+ -1, -1, 269, -1, 64, -1, -1, -1, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ -1, 91, -1, 33, -1, 302, 36, 37, 38, -1,
+ 40, 41, 42, 43, 311, 45, 313, 314, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 41, -1, 93, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
- 58, 59, 279, -1, 281, 63, -1, -1, -1, -1,
- 287, 288, 289, 290, -1, -1, -1, -1, -1, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, 306,
- 307, -1, -1, 310, -1, 93, 313, 314, 315, -1,
- -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
- -1, -1, 279, -1, 281, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 64, -1, 126, -1, -1, -1,
+ -1, -1, 41, -1, -1, 44, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
+ 59, 91, 33, -1, 63, 36, 37, 38, -1, 40,
+ -1, 42, 43, -1, 45, -1, -1, -1, -1, -1,
287, 288, 289, 290, -1, -1, -1, -1, -1, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, 306,
- 307, -1, -1, 310, -1, -1, 313, 314, 315, 272,
- 273, 274, 275, -1, -1, -1, 279, -1, 281, -1,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
- -1, 41, -1, -1, 44, 298, 299, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, 58, 59,
- 313, 314, 315, 63, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 64, 93, -1, 126, 304, 305, 306,
+ 307, 308, 309, -1, -1, 312, -1, -1, 315, 316,
+ 317, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 91, -1, 33, -1, -1, 36, 37, 38, -1, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 64, -1, 126, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
+ 91, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
+ -1, 291, 292, 293, 294, 295, 296, -1, -1, -1,
+ -1, -1, 302, -1, -1, 126, -1, -1, -1, -1,
+ -1, 311, -1, 313, 314, -1, -1, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, -1, 33, -1, 269,
+ 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
+ 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
+ -1, 291, 292, 293, 294, 295, 296, -1, 64, -1,
+ -1, -1, 302, 272, 273, 274, 275, -1, -1, -1,
+ 279, 311, 281, 313, 314, 256, 257, 258, 259, 260,
+ 261, -1, 263, 264, 265, 91, -1, -1, 269, -1,
+ -1, 300, 301, -1, 303, 304, 305, 306, 307, 280,
+ -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
+ 291, 292, 293, 294, 295, 296, -1, -1, -1, 33,
+ 126, 302, 36, 37, 38, -1, 40, 41, 42, 43,
+ 311, 45, 313, 314, -1, -1, 257, 258, 259, 260,
+ 261, -1, 263, 264, 265, -1, -1, -1, 269, -1,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, 280,
+ -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
+ 291, 292, 293, 294, 295, 296, -1, 91, -1, 33,
+ -1, 302, 36, 37, 38, -1, 40, -1, 42, 43,
+ 311, 45, 313, 314, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, 29,
+ 64, -1, 126, -1, -1, -1, -1, -1, 41, -1,
+ 40, 44, -1, -1, -1, -1, 46, 47, 48, -1,
+ -1, -1, 52, 53, -1, 58, 59, 91, -1, -1,
+ 63, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
+ -1, -1, -1, 269, -1, 41, -1, -1, 44, -1,
+ 93, -1, 126, -1, 280, -1, 282, 283, 284, 285,
+ 286, 41, -1, 59, 44, 291, 292, 293, 294, 295,
+ 296, -1, 112, -1, -1, -1, 302, -1, 58, 59,
+ -1, -1, -1, 63, -1, 311, -1, 313, 314, -1,
+ -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, 272, 273, 274, 275, -1, -1,
- -1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, -1, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
+ -1, -1, -1, 93, -1, 41, -1, -1, 44, -1,
+ -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, 176, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
+ 294, 295, 296, 203, -1, -1, -1, 93, 302, -1,
+ -1, -1, -1, -1, -1, 41, -1, 311, 44, 313,
+ 314, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, -1, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
+ 294, 295, 296, -1, -1, -1, -1, 93, 302, 272,
+ 273, 274, 275, -1, -1, -1, 279, 311, 281, 313,
+ 314, -1, -1, -1, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, 41, -1, -1, 44, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, -1, -1, 312,
+ 58, 59, 315, 316, 317, 63, 272, 273, 274, 275,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
+ 41, 281, -1, 44, 300, 93, -1, 287, 288, 289,
+ 290, -1, -1, -1, -1, -1, -1, 58, 59, -1,
+ 300, 301, 63, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, -1, -1,
+ -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
+ -1, 41, 93, 279, 44, 281, -1, -1, -1, -1,
+ -1, 287, 288, 289, 290, -1, -1, -1, 58, 59,
+ -1, -1, -1, 63, 300, 301, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 41, 93, -1, 44, 272, 273, 274, 275,
+ -1, 41, -1, 279, 44, 281, -1, -1, -1, 58,
+ 59, 287, 288, 289, 290, -1, -1, -1, 58, 59,
+ -1, -1, -1, 63, 300, 301, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, 93, -1, -1, 41, -1, -1,
+ 44, -1, -1, 93, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
-1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
-1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, 93, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 41, -1, -1, 44, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 41, -1, 93, 44, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, 58, 59, 279,
- -1, 281, 63, -1, -1, -1, -1, 287, 288, 289,
- 290, -1, -1, -1, -1, -1, -1, -1, 298, 299,
- -1, 301, 302, 303, 304, 305, 306, 307, 41, -1,
- 310, 44, 93, 313, 314, 315, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- 93, -1, 287, 288, 289, 290, -1, -1, -1, 41,
- -1, -1, 44, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, 58, 59, 313, 314,
- 315, 63, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, 93, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, 272, 273, 274, 275, -1, -1, -1, 279, -1,
+ 288, 289, 290, -1, -1, -1, -1, -1, -1, 93,
+ -1, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ 308, 309, -1, -1, 312, -1, -1, 315, 316, 317,
+ -1, 272, 273, 274, 275, -1, 41, -1, 279, 44,
281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, 41, -1, -1, 44, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, -1, -1, 310,
- 58, 59, 313, 314, 315, 63, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, -1, -1, 93, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 41, -1, 310,
- -1, -1, 313, 314, 315, -1, -1, -1, -1, 272,
- 273, 274, 275, -1, 58, 59, 279, -1, 281, 63,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
- -1, -1, -1, -1, -1, 298, 299, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, 41, 310, -1, 93,
- 313, 314, 315, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, 300,
+ 301, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, -1, -1, 315, 316, 317, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, 41, 93, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, 93,
+ 279, -1, 272, 273, 274, 275, -1, 41, -1, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, 300, 301, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 272, 273,
+ 274, 275, -1, 41, -1, 279, 44, 281, -1, 93,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
+ 58, 59, -1, -1, -1, 63, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, -1, -1, -1, -1, -1, 41,
+ -1, -1, 44, -1, -1, 93, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
+ -1, 63, 41, -1, -1, 44, -1, 272, 273, 274,
+ 275, -1, -1, -1, 279, -1, 281, -1, -1, 58,
+ 59, -1, 287, 288, 289, 290, -1, -1, -1, -1,
+ -1, 93, -1, -1, -1, 300, 301, -1, 303, 304,
+ 305, 306, 307, 308, 309, -1, -1, 312, -1, -1,
+ 315, 316, 317, 41, 93, -1, 44, -1, 272, 273,
+ 274, 275, 41, -1, -1, 279, -1, 281, -1, -1,
+ 58, 59, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, -1, 93, -1, -1, -1, -1,
+ -1, -1, -1, -1, 93, -1, -1, -1, 272, 273,
+ 274, 275, 41, -1, -1, 279, -1, 281, -1, -1,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 272, 273, 274, 275, 41, -1,
+ -1, 279, -1, 281, 93, -1, -1, -1, -1, 287,
+ 288, 289, 290, -1, -1, 58, 59, -1, -1, -1,
+ 63, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ 308, 309, -1, -1, 312, -1, -1, 315, 316, 317,
272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
- -1, -1, -1, -1, -1, 287, 288, 289, 290, -1,
- -1, -1, 41, -1, -1, -1, 298, 299, 93, 301,
- 302, 303, 304, 305, 306, 307, -1, -1, 310, 58,
- 59, 313, 314, 315, 63, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
- -1, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ 93, -1, -1, -1, -1, 287, 288, 289, 290, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, 300, 301,
+ 279, 303, 304, 305, 306, 307, 308, 309, -1, 41,
+ 312, -1, 44, 315, 316, 317, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, -1, 58, 59, -1, -1,
+ -1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
- -1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, 93, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, 93, -1,
- -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
- 41, -1, -1, 44, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, 307, -1, -1, 310, 58, 59, 313,
- 314, 315, 63, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, -1, 93, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, -1, -1, 272, 273, 274, 275, -1, -1, -1,
- 279, -1, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, -1, -1, -1, -1, 298,
- 299, -1, 301, 302, 303, 304, 305, 306, 307, -1,
- -1, 310, -1, -1, 313, 314, 315, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, 58, 59, 310, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, 41, 93, -1,
- 44, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, 93, 281, -1, -1, -1, -1, -1, 287, 288,
+ 289, 290, 300, 301, -1, -1, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, 304, 305, 306, 307, 308,
+ 309, -1, -1, 312, -1, -1, 315, 316, 317, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, 93,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- 41, -1, -1, 44, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 58, 59, -1,
- -1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, 41, 281, -1, 44, -1, -1, -1, 287, 288,
+ 289, 290, -1, -1, -1, -1, -1, -1, 58, 59,
+ -1, 300, 301, 63, 303, 304, 305, 306, 307, 308,
+ 309, -1, -1, 312, -1, -1, 315, 316, 317, 272,
+ 273, 274, 275, -1, 41, -1, 279, 44, 281, -1,
+ -1, -1, -1, 93, 287, 288, 289, 290, -1, -1,
+ -1, 58, 59, -1, -1, -1, 63, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, 33, -1, 312,
+ -1, -1, 315, 316, 317, 41, -1, -1, 41, 45,
+ -1, 44, 48, -1, -1, 51, 93, -1, -1, 55,
+ 56, 57, 58, 59, -1, 58, 59, 63, 64, -1,
+ 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 272, 273, 274, 275, -1, -1, -1, 279, 41, 281,
+ -1, 44, -1, -1, -1, 287, 288, 289, 290, -1,
+ 93, -1, 98, -1, -1, 58, 59, -1, 300, 301,
+ 63, 303, 304, 305, 306, 307, 308, 309, -1, -1,
+ 312, -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,
+ 93, -1, -1, 58, 59, -1, -1, -1, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ -1, -1, -1, -1, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 93, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, 93, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, 58, 59, -1, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ -1, 187, 272, 273, 274, 275, -1, 41, -1, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 272, 273, 274, 275, -1,
+ 41, -1, 279, 44, 281, -1, -1, -1, -1, 93,
+ 287, 288, 289, 290, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, 300, 301, -1, 303, 304, 305, 306,
+ 307, 308, 309, -1, -1, -1, 272, -1, -1, 272,
+ 273, 274, 275, -1, -1, -1, 279, 41, 281, -1,
+ 44, -1, 93, -1, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, 300, 301, 305,
+ 303, 304, 305, 306, 307, 308, 309, -1, -1, 272,
+ 273, 274, 275, -1, 41, -1, 279, 44, 281, -1,
+ -1, -1, -1, -1, 287, 288, 289, 290, -1, 93,
+ -1, 58, 59, -1, -1, -1, 63, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, 272, 273, 274,
+ 275, -1, 41, -1, 279, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, 289, 290, 93, -1, -1, 58,
+ 59, -1, -1, -1, 63, 300, 301, -1, 303, 304,
+ 305, 306, 307, 308, 309, -1, -1, -1, -1, 41,
+ -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 93, -1, 58, 59, -1, -1,
+ -1, 63, -1, -1, -1, -1, -1, -1, 272, 273,
274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, 41, 93, -1,
- 44, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, 307, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, 93,
+ -1, -1, -1, 287, 288, 289, 290, 58, -1, -1,
+ -1, 93, 63, -1, -1, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, -1, -1,
+ -1, 272, 273, 274, 275, -1, 41, -1, 279, 44,
281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, -1, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, -1, 41, 298, 299, 44, 301, 302, 303, 304,
- 305, 306, 307, -1, 272, 273, 274, 275, -1, 58,
- 59, 279, -1, 281, 63, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, -1, -1, -1, 41,
- 298, 299, 44, 301, 302, 303, 304, 305, 306, 307,
- 41, -1, -1, 44, 93, -1, 58, 59, -1, -1,
- -1, 63, -1, -1, -1, -1, -1, 58, 59, -1,
- -1, -1, 63, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, 93, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, 93, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, -1, 58, 59, -1, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, -1, 290, 41, 93, -1,
- 44, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, -1, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 41, -1, -1, 44, -1,
- -1, -1, -1, -1, -1, 41, -1, -1, 44, 93,
- -1, -1, 58, 59, -1, -1, -1, 63, -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, 272, 273, 274, 275, 93, -1, -1,
- 279, -1, 281, -1, -1, -1, -1, 93, 287, 288,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 298,
- 299, -1, 301, 302, 303, 304, 305, 306, -1, -1,
- 272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
- -1, 272, 273, 274, 275, 287, 288, -1, 279, -1,
- 281, -1, -1, -1, -1, -1, 298, 299, -1, 301,
- 302, 303, 304, 305, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 41, -1, -1, 44, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, 58, 59, 279, -1, 281, 63, -1, -1,
- -1, -1, 287, 288, -1, -1, -1, -1, 41, -1,
- -1, 44, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, -1, -1, -1, -1, 58, 59, 93, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, -1, -1, -1, -1, 272, 273, 274, 275,
- -1, -1, -1, 279, -1, 281, 272, 273, 274, 275,
- -1, 287, 288, 279, -1, 281, -1, -1, -1, -1,
- -1, -1, 298, 299, -1, 301, 302, 303, 304, 305,
- -1, 41, 298, 299, 44, 301, 302, 303, 304, 305,
- -1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
- 30, -1, -1, 63, -1, -1, -1, -1, 38, -1,
- -1, -1, 42, -1, -1, 45, -1, -1, -1, -1,
- -1, -1, 52, 53, 54, 55, 56, -1, -1, -1,
- 60, 61, -1, 93, -1, -1, 66, -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, 94, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
- -1, -1, -1, 279, -1, 281, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 298, 299, -1, 301, 302, 303, 304, 272,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, 300,
+ 301, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, -1, -1, 41, -1, -1, 44, -1, 272, 273,
+ 274, 275, -1, 41, -1, 279, 44, -1, 93, -1,
+ 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ 58, 59, -1, -1, -1, 63, 300, 301, -1, -1,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ 41, -1, 279, 44, 281, 93, -1, -1, -1, -1,
+ 287, 288, 289, 290, -1, 93, -1, 58, 59, -1,
+ -1, -1, 63, 300, 301, -1, 303, 304, 305, 306,
+ 307, 308, 309, 272, 273, 274, 275, -1, 41, -1,
+ 279, 44, 281, -1, -1, -1, -1, -1, 287, 288,
+ 289, 290, 93, -1, -1, 58, 59, -1, -1, -1,
+ 63, 300, 301, -1, 303, 304, 305, 306, 307, 308,
+ 272, 273, 274, 275, -1, 41, -1, 279, 44, 281,
+ -1, -1, -1, -1, -1, 287, 288, -1, 290, -1,
+ 93, 41, 58, 59, 44, -1, -1, 63, 300, 301,
+ -1, 303, 304, 305, 306, 307, 308, -1, 58, 59,
+ 281, -1, -1, 63, -1, -1, 287, 288, 289, 290,
+ -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
+ -1, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, -1, 93, 315, 316, 317, 272, 273, 274,
+ 275, -1, 41, -1, 279, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, -1, -1, -1, -1, -1, 58,
+ 59, -1, -1, -1, 63, 300, 301, -1, 303, 304,
+ 305, 306, 307, -1, 272, 273, 274, 275, -1, 41,
+ -1, 279, 44, 281, 272, 273, 274, 275, -1, 287,
+ 288, 279, -1, 281, 93, -1, 58, 59, -1, 287,
+ 288, 63, 300, 301, -1, 303, 304, 305, 306, 307,
+ -1, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
+ 281, 93, -1, -1, -1, -1, 287, 288, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
+ 301, -1, 303, 304, 305, 306, 307, -1, -1, 272,
273, 274, 275, -1, -1, -1, 279, -1, 281, -1,
- -1, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 298, 299, -1, 301, 302,
- 303, -1, -1, -1, -1, -1, -1, -1, 178, -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, 288, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 300, 301, -1,
+ 303, 304, 305, 306, 307, -1, 272, 273, 274, 275,
+ -1, -1, -1, 279, -1, 281, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
+ -1, 281, -1, -1, 300, 301, -1, 303, 304, 305,
+ 306, 307, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, -1, 303, 304, 305, 306, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, -1, 281, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, 304, 305, -1, -1, -1,
+ 272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
- -1, 281, -1, -1, -1, -1, -1, -1, 258, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 298, 299,
- -1, 301, 302, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 289,
+ -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
+ -1, 303, 304,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
-#define YYMAXTOKEN 315
+#define YYMAXTOKEN 317
#if YYDEBUG
static char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1139,9 +1142,9 @@ static char *yyname[] = {
"ANONSUB","PACKAGE","USE","WHILE","UNTIL","IF","UNLESS","ELSE","ELSIF",
"CONTINUE","FOR","LOOPEX","DOTDOT","FUNC0","FUNC1","FUNC","UNIOP","LSTOP",
"RELOP","EQOP","MULOP","ADDOP","DOLSHARP","DO","HASHBRACK","NOAMP","LOCAL","MY",
-"PREC_LOW","OROP","ANDOP","NOTOP","ASSIGNOP","OROR","ANDAND","BITOROP",
-"BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP","PREINC","PREDEC",
-"POSTINC","POSTDEC","ARROW",
+"MYSUB","COLONATTR","PREC_LOW","OROP","ANDOP","NOTOP","ASSIGNOP","OROR",
+"ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+"PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
};
static char *yyrule[] = {
"$accept : prog",
@@ -1192,18 +1195,25 @@ static char *yyrule[] = {
"label : LABEL",
"decl : format",
"decl : subrout",
+"decl : mysubrout",
"decl : package",
"decl : use",
"format : FORMAT startformsub formname block",
"formname : WORD",
"formname :",
-"subrout : SUB startsub subname proto subbody",
+"mysubrout : MYSUB startsub subname proto subattrlist subbody",
+"subrout : SUB startsub subname proto subattrlist subbody",
"startsub :",
"startanonsub :",
"startformsub :",
"subname : WORD",
"proto :",
"proto : THING",
+"subattrlist :",
+"subattrlist : COLONATTR THING",
+"subattrlist : COLONATTR",
+"myattrlist : COLONATTR THING",
+"myattrlist : COLONATTR",
"subbody : block",
"subbody : ';'",
"package : PACKAGE WORD ';'",
@@ -1262,14 +1272,15 @@ static char *yyrule[] = {
"term : term POSTDEC",
"term : PREINC term",
"term : PREDEC term",
-"term : local term",
+"term : myattrterm",
+"term : LOCAL term",
"term : '(' expr ')'",
"term : '(' ')'",
"term : '[' expr ']'",
"term : '[' ']'",
"term : HASHBRACK expr ';' '}'",
"term : HASHBRACK ';' '}'",
-"term : ANONSUB startanonsub proto block",
+"term : ANONSUB startanonsub proto subattrlist block",
"term : scalar",
"term : star",
"term : hsh",
@@ -1307,13 +1318,18 @@ static char *yyrule[] = {
"term : PMFUNC '(' term ',' term ')'",
"term : WORD",
"term : listop",
+"myattrterm : MY myterm myattrlist",
+"myattrterm : MY myterm",
+"myterm : '(' expr ')'",
+"myterm : '(' ')'",
+"myterm : scalar",
+"myterm : hsh",
+"myterm : ary",
"listexpr :",
"listexpr : argexpr",
"listexprcom :",
"listexprcom : expr",
"listexprcom : expr ','",
-"local : LOCAL",
-"local : MY",
"my_scalar : scalar",
"amper : '&' indirob",
"scalar : '$' indirob",
@@ -1341,26 +1357,22 @@ static char *yyrule[] = {
#define YYMAXDEPTH 500
#endif
#endif
-#line 666 "perly.y"
+#line 726 "perly.y"
/* PROGRAM */
-#line 1427 "perly.c"
+
+/* more stuff added to make perly_c.diff easier to apply */
+
+#ifdef yyparse
+#undef yyparse
+#endif
+#define yyparse() Perl_yyparse(pTHX)
+
+#line 1371 "perly.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
-
-struct ysv {
- short* yyss;
- YYSTYPE* yyvs;
- int oldyydebug;
- int oldyynerrs;
- int oldyyerrflag;
- int oldyychar;
- YYSTYPE oldyyval;
- YYSTYPE oldyylval;
-};
-
int
-Perl_yyparse(pTHX)
+yyparse()
{
register int yym, yyn, yystate;
register short *yyssp;
@@ -1371,9 +1383,6 @@ Perl_yyparse(pTHX)
int retval = 0;
#if YYDEBUG
register char *yys;
-#ifndef __cplusplus
- extern char *getenv();
-#endif
#endif
struct ysv *ysave;
@@ -1385,7 +1394,7 @@ Perl_yyparse(pTHX)
ysave->oldyychar = yychar;
ysave->oldyyval = yyval;
ysave->oldyylval = yylval;
-
+
#if YYDEBUG
if (yys = getenv("YYDEBUG"))
{
@@ -1424,7 +1433,7 @@ yyloop:
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
- printf("yydebug: state %d, reading %d (%s)\n", yystate,
+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
#endif
@@ -1446,10 +1455,8 @@ yyloop:
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs =
- (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss =
- (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
@@ -1490,8 +1497,8 @@ yyinrecovery:
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: state %d, error recovery shifting to state %d\n",
- *yyssp, yytable[yyn]);
+ "yydebug: state %d, error recovery shifting to state %d\n",
+ *yyssp, yytable[yyn]);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -1502,10 +1509,8 @@ yyinrecovery:
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs = (YYSTYPE*)PerlMem_realloc((char*)yyvs,
- yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss = (short*)PerlMem_realloc((char*)yyss,
- yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
@@ -1519,9 +1524,8 @@ yyinrecovery:
{
#if YYDEBUG
if (yydebug)
- PerlIO_printf(Perl_debug_log,
- "yydebug: error recovery discarding state %d\n",
- *yyssp);
+ PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
+ *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
@@ -1538,9 +1542,8 @@ yyinrecovery:
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
- PerlIO_printf(Perl_debug_log,
- "yydebug: state %d, error recovery discards token %d (%s)\n",
- yystate, yychar, yys);
+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
+ yystate, yychar, yys);
}
#endif
yychar = (-1);
@@ -1557,7 +1560,7 @@ yyreduce:
switch (yyn)
{
case 1:
-#line 101 "perly.y"
+#line 125 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
yydebug = (PL_debug & 1);
@@ -1566,50 +1569,50 @@ case 1:
}
break;
case 2:
-#line 108 "perly.y"
+#line 132 "perly.y"
{ newPROG(yyvsp[0].opval); }
break;
case 3:
-#line 112 "perly.y"
+#line 136 "perly.y"
{ if (PL_copline > (line_t)yyvsp[-3].ival)
PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 4:
-#line 118 "perly.y"
+#line 142 "perly.y"
{ yyval.ival = block_start(TRUE); }
break;
case 5:
-#line 122 "perly.y"
+#line 146 "perly.y"
{ if (PL_copline > (line_t)yyvsp[-3].ival)
PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 6:
-#line 128 "perly.y"
+#line 152 "perly.y"
{ yyval.ival = block_start(FALSE); }
break;
case 7:
-#line 132 "perly.y"
+#line 156 "perly.y"
{ yyval.opval = Nullop; }
break;
case 8:
-#line 134 "perly.y"
+#line 158 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
case 9:
-#line 136 "perly.y"
+#line 160 "perly.y"
{ yyval.opval = append_list(OP_LINESEQ,
(LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
PL_pad_reset_pending = TRUE;
if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 10:
-#line 143 "perly.y"
+#line 167 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); }
break;
case 12:
-#line 146 "perly.y"
+#line 170 "perly.y"
{ if (yyvsp[-1].pval != Nullch) {
yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
}
@@ -1620,75 +1623,75 @@ case 12:
PL_expect = XSTATE; }
break;
case 13:
-#line 155 "perly.y"
+#line 179 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
PL_expect = XSTATE; }
break;
case 14:
-#line 160 "perly.y"
+#line 184 "perly.y"
{ yyval.opval = Nullop; }
break;
case 15:
-#line 162 "perly.y"
+#line 186 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 16:
-#line 164 "perly.y"
+#line 188 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 17:
-#line 166 "perly.y"
+#line 190 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 18:
-#line 168 "perly.y"
+#line 192 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); }
break;
case 19:
-#line 170 "perly.y"
+#line 194 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);}
break;
case 20:
-#line 172 "perly.y"
+#line 196 "perly.y"
{ yyval.opval = newFOROP(0, Nullch, yyvsp[-1].ival,
Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); }
break;
case 21:
-#line 177 "perly.y"
+#line 201 "perly.y"
{ yyval.opval = Nullop; }
break;
case 22:
-#line 179 "perly.y"
+#line 203 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 23:
-#line 181 "perly.y"
+#line 205 "perly.y"
{ PL_copline = yyvsp[-5].ival;
yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 24:
-#line 187 "perly.y"
+#line 211 "perly.y"
{ PL_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 191 "perly.y"
+#line 215 "perly.y"
{ PL_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 26:
-#line 197 "perly.y"
+#line 221 "perly.y"
{ yyval.opval = Nullop; }
break;
case 27:
-#line 199 "perly.y"
+#line 223 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 28:
-#line 203 "perly.y"
+#line 227 "perly.y"
{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1696,7 +1699,7 @@ case 28:
yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 29:
-#line 209 "perly.y"
+#line 233 "perly.y"
{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1704,23 +1707,23 @@ case 29:
yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 30:
-#line 215 "perly.y"
+#line 239 "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 31:
-#line 218 "perly.y"
+#line 242 "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 32:
-#line 222 "perly.y"
+#line 246 "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 33:
-#line 226 "perly.y"
+#line 250 "perly.y"
{ OP *forop = append_elem(OP_LINESEQ,
scalar(yyvsp[-6].opval),
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1730,427 +1733,459 @@ case 33:
yyval.opval = block_end(yyvsp[-7].ival, newSTATEOP(0, yyvsp[-10].pval, forop)); }
break;
case 34:
-#line 234 "perly.y"
+#line 258 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 35:
-#line 240 "perly.y"
+#line 264 "perly.y"
{ yyval.opval = Nullop; }
break;
case 37:
-#line 245 "perly.y"
+#line 269 "perly.y"
{ (void)scan_num("1"); yyval.opval = yylval.opval; }
break;
case 39:
-#line 250 "perly.y"
+#line 274 "perly.y"
{ yyval.opval = invert(scalar(yyvsp[0].opval)); }
break;
case 40:
-#line 254 "perly.y"
+#line 278 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 41:
-#line 258 "perly.y"
+#line 282 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 42:
-#line 262 "perly.y"
+#line 286 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 43:
-#line 266 "perly.y"
+#line 290 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 44:
-#line 270 "perly.y"
+#line 294 "perly.y"
{ yyval.pval = Nullch; }
break;
case 46:
-#line 275 "perly.y"
+#line 299 "perly.y"
{ yyval.ival = 0; }
break;
case 47:
-#line 277 "perly.y"
+#line 301 "perly.y"
{ yyval.ival = 0; }
break;
case 48:
-#line 279 "perly.y"
+#line 303 "perly.y"
{ yyval.ival = 0; }
break;
case 49:
-#line 281 "perly.y"
+#line 305 "perly.y"
{ yyval.ival = 0; }
break;
case 50:
-#line 285 "perly.y"
-{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 307 "perly.y"
+{ yyval.ival = 0; }
break;
case 51:
-#line 288 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
+#line 311 "perly.y"
+{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 52:
-#line 289 "perly.y"
-{ yyval.opval = Nullop; }
+#line 314 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 53:
-#line 293 "perly.y"
-{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 315 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 54:
-#line 297 "perly.y"
-{ yyval.ival = start_subparse(FALSE, 0); }
+#line 319 "perly.y"
+{ newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 55:
-#line 301 "perly.y"
-{ yyval.ival = start_subparse(FALSE, CVf_ANON); }
+#line 323 "perly.y"
+{ newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 56:
-#line 305 "perly.y"
-{ yyval.ival = start_subparse(TRUE, 0); }
+#line 327 "perly.y"
+{ yyval.ival = start_subparse(FALSE, 0); }
break;
case 57:
-#line 308 "perly.y"
+#line 331 "perly.y"
+{ yyval.ival = start_subparse(FALSE, CVf_ANON); }
+break;
+case 58:
+#line 335 "perly.y"
+{ yyval.ival = start_subparse(TRUE, 0); }
+break;
+case 59:
+#line 338 "perly.y"
{ STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT"))
CvSPECIAL_on(PL_compcv);
yyval.opval = yyvsp[0].opval; }
break;
-case 58:
-#line 316 "perly.y"
+case 60:
+#line 346 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 60:
-#line 320 "perly.y"
+case 62:
+#line 351 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 63:
+#line 353 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 64:
+#line 355 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 65:
+#line 359 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 61:
-#line 321 "perly.y"
+case 66:
+#line 361 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 67:
+#line 364 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 68:
+#line 365 "perly.y"
{ yyval.opval = Nullop; PL_expect = XSTATE; }
break;
-case 62:
-#line 325 "perly.y"
+case 69:
+#line 369 "perly.y"
{ package(yyvsp[-1].opval); }
break;
-case 63:
-#line 327 "perly.y"
+case 70:
+#line 371 "perly.y"
{ package(Nullop); }
break;
-case 64:
-#line 331 "perly.y"
+case 71:
+#line 375 "perly.y"
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
-case 65:
-#line 333 "perly.y"
+case 72:
+#line 377 "perly.y"
{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); }
break;
-case 66:
-#line 337 "perly.y"
+case 73:
+#line 381 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 67:
-#line 339 "perly.y"
+case 74:
+#line 383 "perly.y"
{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 69:
-#line 344 "perly.y"
+case 76:
+#line 388 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 70:
-#line 346 "perly.y"
+case 77:
+#line 390 "perly.y"
{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 72:
-#line 351 "perly.y"
+case 79:
+#line 395 "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 73:
-#line 354 "perly.y"
+case 80:
+#line 398 "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 74:
-#line 357 "perly.y"
+case 81:
+#line 401 "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 75:
-#line 362 "perly.y"
+case 82:
+#line 406 "perly.y"
{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, scalar(yyvsp[-2].opval),
newUNOP(OP_METHOD, 0, yyvsp[0].opval))); }
break;
-case 76:
-#line 366 "perly.y"
+case 83:
+#line 410 "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 77:
-#line 371 "perly.y"
+case 84:
+#line 415 "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 78:
-#line 376 "perly.y"
+case 85:
+#line 420 "perly.y"
{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 79:
-#line 378 "perly.y"
+case 86:
+#line 422 "perly.y"
{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 80:
-#line 380 "perly.y"
-{ yyvsp[0].opval = newANONSUB(yyvsp[-1].ival, 0, yyvsp[0].opval); }
+case 87:
+#line 424 "perly.y"
+{ yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); }
break;
-case 81:
-#line 382 "perly.y"
+case 88:
+#line 426 "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 84:
-#line 392 "perly.y"
+case 91:
+#line 436 "perly.y"
{ yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); }
break;
-case 85:
-#line 394 "perly.y"
+case 92:
+#line 438 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); }
break;
-case 86:
-#line 396 "perly.y"
+case 93:
+#line 440 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 87:
-#line 400 "perly.y"
+case 94:
+#line 444 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 88:
-#line 404 "perly.y"
+case 95:
+#line 448 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 89:
-#line 407 "perly.y"
+case 96:
+#line 451 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 90:
-#line 412 "perly.y"
+case 97:
+#line 456 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 91:
-#line 417 "perly.y"
+case 98:
+#line 461 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar(yyvsp[-3].opval))); }
break;
-case 92:
-#line 420 "perly.y"
+case 99:
+#line 464 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval,
newCVREF(0, scalar(yyvsp[-4].opval)))); }
break;
-case 93:
-#line 425 "perly.y"
+case 100:
+#line 469 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval,
newCVREF(0, scalar(yyvsp[-3].opval)))); }
break;
-case 94:
-#line 429 "perly.y"
+case 101:
+#line 473 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar(yyvsp[-2].opval))); }
break;
-case 95:
-#line 435 "perly.y"
+case 102:
+#line 479 "perly.y"
{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); }
break;
-case 96:
-#line 437 "perly.y"
+case 103:
+#line 481 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 97:
-#line 439 "perly.y"
+case 104:
+#line 483 "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 98:
-#line 443 "perly.y"
+case 105:
+#line 487 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 99:
-#line 445 "perly.y"
+case 106:
+#line 489 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 100:
-#line 447 "perly.y"
+case 107:
+#line 491 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 101:
-#line 449 "perly.y"
+case 108:
+#line 493 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 102:
-#line 451 "perly.y"
+case 109:
+#line 495 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 103:
-#line 453 "perly.y"
+case 110:
+#line 497 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 104:
-#line 455 "perly.y"
+case 111:
+#line 499 "perly.y"
{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
break;
-case 105:
-#line 457 "perly.y"
+case 112:
+#line 501 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 106:
-#line 459 "perly.y"
+case 113:
+#line 503 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 107:
-#line 461 "perly.y"
+case 114:
+#line 505 "perly.y"
{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 108:
-#line 463 "perly.y"
+case 115:
+#line 507 "perly.y"
{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 109:
-#line 466 "perly.y"
+case 116:
+#line 510 "perly.y"
{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
break;
-case 110:
-#line 468 "perly.y"
+case 117:
+#line 512 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 111:
-#line 470 "perly.y"
+case 118:
+#line 514 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 112:
-#line 472 "perly.y"
+case 119:
+#line 516 "perly.y"
{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
break;
-case 113:
-#line 474 "perly.y"
+case 120:
+#line 518 "perly.y"
{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
break;
-case 114:
-#line 476 "perly.y"
+case 121:
+#line 520 "perly.y"
{ yyval.opval = newUNOP(OP_POSTINC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTINC)); }
break;
-case 115:
-#line 479 "perly.y"
+case 122:
+#line 523 "perly.y"
{ yyval.opval = newUNOP(OP_POSTDEC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); }
break;
-case 116:
-#line 482 "perly.y"
+case 123:
+#line 526 "perly.y"
{ yyval.opval = newUNOP(OP_PREINC, 0,
mod(scalar(yyvsp[0].opval), OP_PREINC)); }
break;
-case 117:
-#line 485 "perly.y"
+case 124:
+#line 529 "perly.y"
{ yyval.opval = newUNOP(OP_PREDEC, 0,
mod(scalar(yyvsp[0].opval), OP_PREDEC)); }
break;
-case 118:
-#line 488 "perly.y"
+case 125:
+#line 532 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 126:
+#line 534 "perly.y"
{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
break;
-case 119:
-#line 490 "perly.y"
+case 127:
+#line 536 "perly.y"
{ yyval.opval = sawparens(yyvsp[-1].opval); }
break;
-case 120:
-#line 492 "perly.y"
+case 128:
+#line 538 "perly.y"
{ yyval.opval = sawparens(newNULLLIST()); }
break;
-case 121:
-#line 494 "perly.y"
+case 129:
+#line 540 "perly.y"
{ yyval.opval = newANONLIST(yyvsp[-1].opval); }
break;
-case 122:
-#line 496 "perly.y"
+case 130:
+#line 542 "perly.y"
{ yyval.opval = newANONLIST(Nullop); }
break;
-case 123:
-#line 498 "perly.y"
+case 131:
+#line 544 "perly.y"
{ yyval.opval = newANONHASH(yyvsp[-2].opval); }
break;
-case 124:
-#line 500 "perly.y"
+case 132:
+#line 546 "perly.y"
{ yyval.opval = newANONHASH(Nullop); }
break;
-case 125:
-#line 502 "perly.y"
-{ yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
+case 133:
+#line 548 "perly.y"
+{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
-case 126:
-#line 504 "perly.y"
+case 134:
+#line 550 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 127:
-#line 506 "perly.y"
+case 135:
+#line 552 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 128:
-#line 508 "perly.y"
+case 136:
+#line 554 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 129:
-#line 510 "perly.y"
+case 137:
+#line 556 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 130:
-#line 512 "perly.y"
+case 138:
+#line 558 "perly.y"
{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));}
break;
-case 131:
-#line 514 "perly.y"
+case 139:
+#line 560 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 132:
-#line 516 "perly.y"
+case 140:
+#line 562 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); }
break;
-case 133:
-#line 518 "perly.y"
+case 141:
+#line 564 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); }
break;
-case 134:
-#line 520 "perly.y"
+case 142:
+#line 566 "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 135:
-#line 526 "perly.y"
+case 143:
+#line 572 "perly.y"
{ yyval.opval = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -2158,38 +2193,38 @@ case 135:
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
PL_expect = XOPERATOR; }
break;
-case 136:
-#line 533 "perly.y"
+case 144:
+#line 579 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 137:
-#line 535 "perly.y"
+case 145:
+#line 581 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); }
break;
-case 138:
-#line 537 "perly.y"
+case 146:
+#line 583 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); }
break;
-case 139:
-#line 539 "perly.y"
+case 147:
+#line 585 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); }
break;
-case 140:
-#line 542 "perly.y"
+case 148:
+#line 588 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 141:
-#line 545 "perly.y"
+case 149:
+#line 591 "perly.y"
{ yyval.opval = dofile(yyvsp[0].opval); }
break;
-case 142:
-#line 547 "perly.y"
+case 150:
+#line 593 "perly.y"
{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); }
break;
-case 143:
-#line 549 "perly.y"
+case 151:
+#line 595 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
@@ -2198,8 +2233,8 @@ case 143:
scalar(yyvsp[-2].opval)
)),Nullop)); dep();}
break;
-case 144:
-#line 557 "perly.y"
+case 152:
+#line 603 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
@@ -2209,151 +2244,171 @@ case 144:
scalar(yyvsp[-3].opval)
)))); dep();}
break;
-case 145:
-#line 566 "perly.y"
+case 153:
+#line 612 "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 146:
-#line 570 "perly.y"
+case 154:
+#line 616 "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 147:
-#line 575 "perly.y"
+case 155:
+#line 621 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
-case 148:
-#line 578 "perly.y"
+case 156:
+#line 624 "perly.y"
{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 149:
-#line 580 "perly.y"
+case 157:
+#line 626 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 150:
-#line 582 "perly.y"
+case 158:
+#line 628 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 151:
-#line 584 "perly.y"
+case 159:
+#line 630 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 152:
-#line 586 "perly.y"
+case 160:
+#line 632 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 153:
-#line 588 "perly.y"
+case 161:
+#line 634 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 154:
-#line 591 "perly.y"
+case 162:
+#line 637 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 155:
-#line 593 "perly.y"
+case 163:
+#line 639 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
break;
-case 156:
-#line 595 "perly.y"
+case 164:
+#line 641 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar(yyvsp[0].opval)); }
break;
-case 157:
-#line 598 "perly.y"
+case 165:
+#line 644 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
break;
-case 158:
-#line 600 "perly.y"
+case 166:
+#line 646 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 159:
-#line 602 "perly.y"
+case 167:
+#line 648 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
break;
-case 160:
-#line 604 "perly.y"
+case 168:
+#line 650 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
break;
-case 163:
-#line 610 "perly.y"
-{ yyval.opval = Nullop; }
+case 171:
+#line 656 "perly.y"
+{ yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); }
break;
-case 164:
-#line 612 "perly.y"
+case 172:
+#line 658 "perly.y"
+{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
+break;
+case 173:
+#line 662 "perly.y"
+{ yyval.opval = sawparens(yyvsp[-1].opval); }
+break;
+case 174:
+#line 664 "perly.y"
+{ yyval.opval = sawparens(newNULLLIST()); }
+break;
+case 175:
+#line 666 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 165:
-#line 616 "perly.y"
+case 176:
+#line 668 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 177:
+#line 670 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 178:
+#line 674 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 166:
-#line 618 "perly.y"
+case 179:
+#line 676 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 167:
-#line 620 "perly.y"
-{ yyval.opval = yyvsp[-1].opval; }
+case 180:
+#line 680 "perly.y"
+{ yyval.opval = Nullop; }
break;
-case 168:
-#line 623 "perly.y"
-{ yyval.ival = 0; }
+case 181:
+#line 682 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
-case 169:
-#line 624 "perly.y"
-{ yyval.ival = 1; }
+case 182:
+#line 684 "perly.y"
+{ yyval.opval = yyvsp[-1].opval; }
break;
-case 170:
-#line 628 "perly.y"
+case 183:
+#line 688 "perly.y"
{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
-case 171:
-#line 632 "perly.y"
+case 184:
+#line 692 "perly.y"
{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 172:
-#line 636 "perly.y"
+case 185:
+#line 696 "perly.y"
{ yyval.opval = newSVREF(yyvsp[0].opval); }
break;
-case 173:
-#line 640 "perly.y"
+case 186:
+#line 700 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 174:
-#line 644 "perly.y"
+case 187:
+#line 704 "perly.y"
{ yyval.opval = newHVREF(yyvsp[0].opval); }
break;
-case 175:
-#line 648 "perly.y"
+case 188:
+#line 708 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 176:
-#line 652 "perly.y"
+case 189:
+#line 712 "perly.y"
{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
break;
-case 177:
-#line 656 "perly.y"
+case 190:
+#line 716 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 178:
-#line 658 "perly.y"
+case 191:
+#line 718 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 179:
-#line 660 "perly.y"
+case 192:
+#line 720 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
-case 180:
-#line 663 "perly.y"
+case 193:
+#line 723 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-#line 2365 "perly.c"
+#line 2412 "perly.c"
}
yyssp -= yym;
yystate = *yyssp;
@@ -2364,8 +2419,8 @@ break;
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: after reduction, shifting from state 0 to state %d\n",
- YYFINAL);
+ "yydebug: after reduction, shifting from state 0 to state %d\n",
+ YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
@@ -2395,8 +2450,8 @@ break;
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: after reduction, shifting from state %d to state %d\n",
- *yyssp, yystate);
+ "yydebug: after reduction, shifting from state %d to state %d\n",
+ *yyssp, yystate);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -2407,10 +2462,8 @@ break;
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs =
- (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss =
- (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
diff --git a/perly.fixer b/perly.fixer
index afe1a383cf..daa558e84e 100755
--- a/perly.fixer
+++ b/perly.fixer
@@ -21,15 +21,34 @@ tmp=/tmp/f$$
if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then
cp $input $output
+ # Don't expect the diff to do everything -- do some by hand
if test -f perly_c.diff; then
patch -F3 $output <perly_c.diff
+ sed -e '/^[ ]*printf("yydebug:/s/printf(/PerlIO_printf(Perl_debug_log, /' \
+ -e '/^#line /s/"y[.]tab[.]c"/"perly.c"/' \
+ -e '/\[\] *= *[{]/s/^/static /' \
+ -e '/^static static/s/^static //' \
+ -e '/^#define.WORD/,/^#define.ARROW/d' \
+ -e '/^int.yydebug/,/^#define.yystacksize/d' \
+ < $output > $tmp && mv -f $tmp $output || exit 1
rm -rf $input
+ echo "If you need to debug perly.c, you need to fix up the #line"
+ echo "directives yourself."
fi
exit
elif grep 'yaccpar 1.9 (Berkeley)' $input >/dev/null 2>&1; then
if test -f perly.c.dif9; then
patch -F3 $output <perly.c.dif9
+ sed -e '/^[ ]*printf("yydebug:/s/printf(/PerlIO_printf(Perl_debug_log, /' \
+ -e '/^#line /s/"y[.]tab[.]c"/"perly.c"/' \
+ -e '/\[\] *= *[{]/s/^/static /' \
+ -e '/^static static/s/^static //' \
+ -e '/^#define.WORD/,/^#define.ARROW/d' \
+ -e '/^int.yydebug/,/^#define.yystacksize/d' \
+ < $output > $tmp && mv -f $tmp $output || exit 1
rm -rf $input
+ echo "If you need to debug perly.c, you need to fix up the #line"
+ echo "directives yourself."
exit 0
else
echo "Diffs from byacc-1.9 are not available."
@@ -90,7 +109,7 @@ case "$plan" in
# Also added are out of memory checks (makes porting the generated
# code easier) For most systems, it can't hurt. -- TD
"bsd43")
- echo "Attempting to path perly.c to allow dynamic yacc stack allocation"
+ echo "Attempting to patch perly.c to allow dynamic yacc stack allocation"
echo "Assuming bsd4.3 yaccpar"
cat >$tmp <<'END'
/YYSTYPE[ ]*yyv\[ *YYMAXDEPTH *\];/c\
@@ -145,7 +164,7 @@ END
#######################################################
"isc") # Interactive Systems 2.2 version
- echo "Attempting to path perly.c to allow dynamic yacc stack allocation"
+ echo "Attempting to patch perly.c to allow dynamic yacc stack allocation"
echo "Assuming Interactive SysVr3 2.2 yaccpar"
# Easier to simply put whole script here than to modify the
# bsd script with sed.
diff --git a/perly.h b/perly.h
index 14f5e924fe..15dfa0c5f3 100644
--- a/perly.h
+++ b/perly.h
@@ -39,25 +39,27 @@
#define NOAMP 294
#define LOCAL 295
#define MY 296
-#define PREC_LOW 297
-#define OROP 298
-#define ANDOP 299
-#define NOTOP 300
-#define ASSIGNOP 301
-#define OROR 302
-#define ANDAND 303
-#define BITOROP 304
-#define BITANDOP 305
-#define SHIFTOP 306
-#define MATCHOP 307
-#define UMINUS 308
-#define REFGEN 309
-#define POWOP 310
-#define PREINC 311
-#define PREDEC 312
-#define POSTINC 313
-#define POSTDEC 314
-#define ARROW 315
+#define MYSUB 297
+#define COLONATTR 298
+#define PREC_LOW 299
+#define OROP 300
+#define ANDOP 301
+#define NOTOP 302
+#define ASSIGNOP 303
+#define OROR 304
+#define ANDAND 305
+#define BITOROP 306
+#define BITANDOP 307
+#define SHIFTOP 308
+#define MATCHOP 309
+#define UMINUS 310
+#define REFGEN 311
+#define POWOP 312
+#define PREINC 313
+#define PREDEC 314
+#define POSTINC 315
+#define POSTDEC 316
+#define ARROW 317
#endif /* PERL_CORE */
typedef union {
diff --git a/perly.y b/perly.y
index 9df012c3aa..ddc0efcb6d 100644
--- a/perly.y
+++ b/perly.y
@@ -19,13 +19,34 @@
#define dep() deprecate("\"do\" to call subroutines")
+/* stuff included here to make perly_c.diff apply better */
+
+#define yydebug PL_yydebug
+#define yynerrs PL_yynerrs
+#define yyerrflag PL_yyerrflag
+#define yychar PL_yychar
+#define yyval PL_yyval
+#define yylval PL_yylval
+
+struct ysv {
+ short* yyss;
+ YYSTYPE* yyvs;
+ int oldyydebug;
+ int oldyynerrs;
+ int oldyyerrflag;
+ int oldyychar;
+ YYSTYPE oldyyval;
+ YYSTYPE oldyylval;
+};
+
+static void yydestruct(pTHXo_ void *ptr);
+
%}
%start prog
%{
-/* I sense a Big Blue pattern here... */
-#if !defined(OEMVS) && !defined(__OPEN_VM) && !defined(POSIX_BC)
+#if 0 /* get this from perly.h instead */
%}
%union {
@@ -36,11 +57,12 @@
}
%{
-#endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
+#endif /* 0 */
#ifdef USE_PURE_BISON
#define YYLEX_PARAM (&yychar)
#endif
+
%}
%token <ival> '{'
@@ -54,15 +76,17 @@
%token <ival> FUNC0 FUNC1 FUNC UNIOP LSTOP
%token <ival> RELOP EQOP MULOP ADDOP
%token <ival> DOLSHARP DO HASHBRACK NOAMP
-%token LOCAL MY
+%token <ival> LOCAL MY MYSUB
+%token COLONATTR
-%type <ival> prog decl local format startsub startanonsub startformsub
+%type <ival> prog decl format startsub startanonsub startformsub
%type <ival> remember mremember '&'
%type <opval> block mblock lineseq line loop cond else
%type <opval> expr term subscripted scalar ary hsh arylen star amper sideff
%type <opval> argexpr nexpr texpr iexpr mexpr mnexpr mtexpr miexpr
%type <opval> listexpr listexprcom indirob listop method
%type <opval> formname subname proto subbody cont my_scalar
+%type <opval> subattrlist myattrlist mysubrout myattrterm myterm
%type <pval> label
%nonassoc PREC_LOW
@@ -275,6 +299,8 @@ decl : format
{ $$ = 0; }
| subrout
{ $$ = 0; }
+ | mysubrout
+ { $$ = 0; }
| package
{ $$ = 0; }
| use
@@ -289,8 +315,12 @@ formname: WORD { $$ = $1; }
| /* NULL */ { $$ = Nullop; }
;
-subrout : SUB startsub subname proto subbody
- { newSUB($2, $3, $4, $5); }
+mysubrout: MYSUB startsub subname proto subattrlist subbody
+ { newMYSUB($2, $3, $4, $5, $6); }
+ ;
+
+subrout : SUB startsub subname proto subattrlist subbody
+ { newATTRSUB($2, $3, $4, $5, $6); }
;
startsub: /* NULL */ /* start a regular subroutine scope */
@@ -317,6 +347,20 @@ proto : /* NULL */
| THING
;
+subattrlist: /* NULL */
+ { $$ = Nullop; }
+ | COLONATTR THING
+ { $$ = $2; }
+ | COLONATTR
+ { $$ = Nullop; }
+ ;
+
+myattrlist: COLONATTR THING
+ { $$ = $2; }
+ | COLONATTR
+ { $$ = Nullop; }
+ ;
+
subbody : block { $$ = $1; }
| ';' { $$ = Nullop; PL_expect = XSTATE; }
;
@@ -377,7 +421,7 @@ listop : LSTOP indirob argexpr
| FUNC '(' listexprcom ')'
{ $$ = convert($1, 0, $3); }
| LSTOPSUB startanonsub block
- { $3 = newANONSUB($2, 0, $3); }
+ { $3 = newANONATTRSUB($2, 0, Nullop, $3); }
listexpr %prec LSTOP
{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST,
@@ -484,7 +528,9 @@ term : term ASSIGNOP term
| PREDEC term
{ $$ = newUNOP(OP_PREDEC, 0,
mod(scalar($2), OP_PREDEC)); }
- | local term %prec UNIOP
+ | myattrterm %prec UNIOP
+ { $$ = $1; }
+ | LOCAL term %prec UNIOP
{ $$ = localize($2,$1); }
| '(' expr ')'
{ $$ = sawparens($2); }
@@ -498,8 +544,8 @@ term : term ASSIGNOP term
{ $$ = newANONHASH($2); }
| HASHBRACK ';' '}' %prec '('
{ $$ = newANONHASH(Nullop); }
- | ANONSUB startanonsub proto block %prec '('
- { $$ = newANONSUB($2, $3, $4); }
+ | ANONSUB startanonsub proto subattrlist block %prec '('
+ { $$ = newANONATTRSUB($2, $3, $4, $5); }
| scalar %prec '('
{ $$ = $1; }
| star %prec '('
@@ -606,6 +652,24 @@ term : term ASSIGNOP term
| listop
;
+myattrterm: MY myterm myattrlist
+ { $$ = my_attrs($2,$3); }
+ | MY myterm
+ { $$ = localize($2,$1); }
+ ;
+
+myterm : '(' expr ')'
+ { $$ = sawparens($2); }
+ | '(' ')'
+ { $$ = sawparens(newNULLLIST()); }
+ | scalar %prec '('
+ { $$ = $1; }
+ | hsh %prec '('
+ { $$ = $1; }
+ | ary %prec '('
+ { $$ = $1; }
+ ;
+
listexpr: /* NULL */ %prec PREC_LOW
{ $$ = Nullop; }
| argexpr %prec PREC_LOW
@@ -620,10 +684,6 @@ listexprcom: /* NULL */
{ $$ = $1; }
;
-local : LOCAL { $$ = 0; }
- | MY { $$ = 1; }
- ;
-
my_scalar: scalar
{ PL_in_my = 0; $$ = my($1); }
;
@@ -664,3 +724,11 @@ indirob : WORD
;
%% /* PROGRAM */
+
+/* more stuff added to make perly_c.diff easier to apply */
+
+#ifdef yyparse
+#undef yyparse
+#endif
+#define yyparse() Perl_yyparse(pTHX)
+
diff --git a/perly_c.diff b/perly_c.diff
index 463df80076..7ade2f3b01 100644
--- a/perly_c.diff
+++ b/perly_c.diff
@@ -1,294 +1,19 @@
-*** perly.c.orig Mon Jul 26 03:27:57 1999
---- perly.c Mon Jul 26 02:47:03 1999
+*** y.tab.c.orig Thu Aug 26 22:31:26 1999
+--- y.tab.c Thu Aug 26 22:32:22 1999
***************
-*** 8,91 ****
- #include "perl.h"
-
- #define dep() deprecate("\"do\" to call subroutines")
-
-! #line 27 "perly.y"
-! /* I sense a Big Blue pattern here... */
-! #if !defined(OEMVS) && !defined(__OPEN_VM) && !defined(POSIX_BC)
-! #line 31 "perly.y"
-! typedef union {
-! I32 ival;
-! char *pval;
-! OP *opval;
-! GV *gvval;
-! } YYSTYPE;
-! #line 39 "perly.y"
-! #endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
-
-! #ifdef USE_PURE_BISON
-! #define YYLEX_PARAM (&yychar)
-! #endif
-! #line 29 "y.tab.c"
-! #define WORD 257
-! #define METHOD 258
-! #define FUNCMETH 259
-! #define THING 260
-! #define PMFUNC 261
-! #define PRIVATEREF 262
-! #define FUNC0SUB 263
-! #define UNIOPSUB 264
-! #define LSTOPSUB 265
-! #define LABEL 266
-! #define FORMAT 267
-! #define SUB 268
-! #define ANONSUB 269
-! #define PACKAGE 270
-! #define USE 271
-! #define WHILE 272
-! #define UNTIL 273
-! #define IF 274
-! #define UNLESS 275
-! #define ELSE 276
-! #define ELSIF 277
-! #define CONTINUE 278
-! #define FOR 279
-! #define LOOPEX 280
-! #define DOTDOT 281
-! #define FUNC0 282
-! #define FUNC1 283
-! #define FUNC 284
-! #define UNIOP 285
-! #define LSTOP 286
-! #define RELOP 287
-! #define EQOP 288
-! #define MULOP 289
-! #define ADDOP 290
-! #define DOLSHARP 291
-! #define DO 292
-! #define HASHBRACK 293
-! #define NOAMP 294
-! #define LOCAL 295
-! #define MY 296
-! #define PREC_LOW 297
-! #define OROP 298
-! #define ANDOP 299
-! #define NOTOP 300
-! #define ASSIGNOP 301
-! #define OROR 302
-! #define ANDAND 303
-! #define BITOROP 304
-! #define BITANDOP 305
-! #define SHIFTOP 306
-! #define MATCHOP 307
-! #define UMINUS 308
-! #define REFGEN 309
-! #define POWOP 310
-! #define PREINC 311
-! #define PREDEC 312
-! #define POSTINC 313
-! #define POSTDEC 314
-! #define ARROW 315
- #define YYERRCODE 256
-! short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
---- 8,25 ----
- #include "perl.h"
-
-+ #define yydebug PL_yydebug
-+ #define yynerrs PL_yynerrs
-+ #define yyerrflag PL_yyerrflag
-+ #define yychar PL_yychar
-+ #define yyval PL_yyval
-+ #define yylval PL_yylval
-+
- #define dep() deprecate("\"do\" to call subroutines")
-
-! static void yydestruct(pTHXo_ void *ptr);
-
-! #line 27 "perly.y"
- #define YYERRCODE 256
-! static short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
-***************
-*** 107,111 ****
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
- };
-! short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
---- 41,45 ----
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
- };
-! static short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
-***************
-*** 127,131 ****
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
- };
-! short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
---- 61,65 ----
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
- };
-! static short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
-***************
-*** 166,170 ****
- 5, 0, 30, 0, 0, 33, 0, 23,
- };
-! short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
---- 100,104 ----
- 5, 0, 30, 0, 0, 33, 0, 23,
- };
-! static short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
-***************
-*** 174,178 ****
- 260,
- };
-! short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
---- 108,112 ----
- 260,
- };
-! static short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
-***************
-*** 213,217 ****
- 0, 228, 0, 92, 92, 0, -204, 0,
- };
-! short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
---- 147,151 ----
- 0, 228, 0, 92, 92, 0, -204, 0,
- };
-! static short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
-***************
-*** 252,256 ****
- 0, 0, 0, 0, 0, 0, 168, 0,
- };
-! short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
---- 186,190 ----
- 0, 0, 0, 0, 0, 0, 168, 0,
- };
-! static short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
-***************
-*** 261,265 ****
- };
- #define YYTABLESIZE 4610
-! short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
---- 195,199 ----
- };
- #define YYTABLESIZE 4610
-! static short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
-***************
-*** 724,728 ****
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
- };
-! short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
---- 658,662 ----
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
- };
-! static short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
-***************
-*** 1193,1197 ****
- #define YYMAXTOKEN 315
- #if YYDEBUG
-! char *yyname[] = {
- "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0,
---- 1127,1131 ----
- #define YYMAXTOKEN 315
- #if YYDEBUG
-! static char *yyname[] = {
- "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0,
-***************
-*** 1210,1214 ****
- "POSTINC","POSTDEC","ARROW",
- };
-! char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
---- 1144,1148 ----
- "POSTINC","POSTDEC","ARROW",
- };
-! static char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
-***************
-*** 1408,1436 ****
- #endif
- #endif
-- int yydebug;
-- int yynerrs;
-- int yyerrflag;
-- int yychar;
-- short *yyssp;
-- YYSTYPE *yyvsp;
-- YYSTYPE yyval;
-- YYSTYPE yylval;
-- short yyss[YYSTACKSIZE];
-- YYSTYPE yyvs[YYSTACKSIZE];
-- #define yystacksize YYSTACKSIZE
- #line 666 "perly.y"
- /* PROGRAM */
-! #line 1424 "y.tab.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
- int
-! yyparse()
+*** 1447,1456 ****
+ yyparse()
{
register int yym, yyn, yystate;
#if YYDEBUG
register char *yys;
- extern char *getenv();
+! extern char *getenv();
if (yys = getenv("YYDEBUG"))
{
---- 1342,1391 ----
- #endif
- #endif
- #line 666 "perly.y"
- /* PROGRAM */
-! #line 1427 "perly.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
-+
-+ struct ysv {
-+ short* yyss;
-+ YYSTYPE* yyvs;
-+ int oldyydebug;
-+ int oldyynerrs;
-+ int oldyyerrflag;
-+ int oldyychar;
-+ YYSTYPE oldyyval;
-+ YYSTYPE oldyylval;
-+ };
-+
- int
-! Perl_yyparse(pTHX)
+ yyn = *yys;
+--- 1447,1473 ----
+ yyparse()
{
register int yym, yyn, yystate;
+ register short *yyssp;
@@ -299,11 +24,8 @@
+ int retval = 0;
#if YYDEBUG
register char *yys;
-+ #ifndef __cplusplus
- extern char *getenv();
-+ #endif
-+ #endif
-+
+! #endif
+
+ struct ysv *ysave;
+ New(73, ysave, 1, struct ysv);
+ SAVEDESTRUCTOR(yydestruct, ysave);
@@ -313,13 +35,15 @@
+ ysave->oldyychar = yychar;
+ ysave->oldyyval = yyval;
+ ysave->oldyylval = yylval;
-
++
+ #if YYDEBUG
if (yys = getenv("YYDEBUG"))
{
+ yyn = *yys;
***************
-*** 1445,1448 ****
---- 1400,1413 ----
+*** 1463,1468 ****
+--- 1480,1495 ----
+ yyerrflag = 0;
yychar = (-1);
+ /*
@@ -334,23 +58,17 @@
+
yyssp = yyss;
yyvsp = yyvs;
+ *yyssp = yystate = 0;
***************
-*** 1470,1479 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, shifting to state %d\n",
- yystate, yytable[yyn]);
+*** 1493,1499 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1435,1458 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
- yystate, yytable[yyn]);
+ *++yyvsp = yylval;
+--- 1520,1538 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -361,34 +79,25 @@
! int yyps_index = (yyssp - yyss);
! int yypv_index = (yyvsp - yyvs);
! yystacksize += YYSTACKSIZE;
-! ysave->yyvs = yyvs =
-! (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss =
-! (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+! ysave->yyss = Renew(yyss, yystacksize, short);
! if (!yyvs || !yyss)
! goto yyoverflow;
! yyssp = yyss + yyps_index;
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
***************
-*** 1511,1520 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, error recovery shifting\
-! to state %d\n", *yyssp, yytable[yyn]);
+*** 1534,1540 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1490,1514 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: state %d, error recovery shifting to state %d\n",
-! *yyssp, yytable[yyn]);
+ *++yyvsp = yylval;
+--- 1573,1591 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -399,121 +108,33 @@
! int yyps_index = (yyssp - yyss);
! int yypv_index = (yyvsp - yyvs);
! yystacksize += YYSTACKSIZE;
-! ysave->yyvs = yyvs = (YYSTYPE*)PerlMem_realloc((char*)yyvs,
-! yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss = (short*)PerlMem_realloc((char*)yyss,
-! yystacksize * sizeof(short));
+! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+! ysave->yyss = Renew(yyss, yystacksize, short);
! if (!yyvs || !yyss)
! goto yyoverflow;
! yyssp = yyss + yyps_index;
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
+ *++yyvsp = yylval;
***************
-*** 1526,1531 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
---- 1520,1526 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
-***************
-*** 1544,1549 ****
- 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
---- 1539,1545 ----
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: state %d, error recovery discards token %d (%s)\n",
-! yystate, yychar, yys);
- }
- #endif
-***************
-*** 1554,1558 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
---- 1550,1554 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
-***************
-*** 2358,2362 ****
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2361 "y.tab.c"
- }
- yyssp -= yym;
---- 2354,2358 ----
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2365 "perly.c"
- }
- yyssp -= yym;
-***************
-*** 2368,2373 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: after reduction, shifting from state 0 to\
-! state %d\n", YYFINAL);
- #endif
- yystate = YYFINAL;
---- 2364,2370 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: after reduction, shifting from state 0 to state %d\n",
-! YYFINAL);
- #endif
- yystate = YYFINAL;
-***************
-*** 2383,2387 ****
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-! printf("yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
---- 2380,2384 ----
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
-***************
-*** 2398,2407 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: after reduction, shifting from state %d \
-! to state %d\n", *yyssp, yystate);
+*** 2473,2487 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate;
---- 2395,2419 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: after reduction, shifting from state %d to state %d\n",
-! *yyssp, yystate);
+ *++yyvsp = yyval;
+ goto yyloop;
+ yyoverflow:
+! yyerror("yacc stack overflow");
+ yyabort:
+! return (1);
+ yyaccept:
+! return (0);
+ }
+--- 2524,2570 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -524,27 +145,15 @@
! int yyps_index = (yyssp - yyss);
! int yypv_index = (yyvsp - yyvs);
! yystacksize += YYSTACKSIZE;
-! ysave->yyvs = yyvs =
-! (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss =
-! (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+! ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+! ysave->yyss = Renew(yyss, yystacksize, short);
! if (!yyvs || !yyss)
! goto yyoverflow;
! yyssp = yyss + yyps_index;
! yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate;
-***************
-*** 2409,2416 ****
- goto yyloop;
- yyoverflow:
-! yyerror("yacc stack overflow");
- yyabort:
-! return (1);
- yyaccept:
-! return (0);
- }
---- 2421,2448 ----
+ *++yyvsp = yyval;
goto yyloop;
yyoverflow:
! yyerror("Out of memory for yacc stack");
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 0cb375a3e7..353c62d55f 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -193,7 +193,7 @@ extension (not included with the standard Perl distribution) may also
be of use.
(Large file support is also related to 64-bit support, for obvious reasons)
-
+
=head2 Better syntax checks on parenthesized unary operators
Expressions such as:
@@ -269,9 +269,25 @@ As before, lexical variables may not have names beginning with control
characters. As before, variables whose names begin with a control
character are always forced to be in package `main'. All such variables
are reserved for future extensions, except those that begin with
-C<^_>, which may be used by user programs and is guaranteed not to
+C<^_>, which may be used by user programs and are guaranteed not to
acquire special meaning in any future version of Perl.
+=head2 C<use attrs> implicit in subroutine attributes
+
+Formerly, if you wanted to mark a subroutine as being a method call or
+as requiring an automatic lock() when it is entered, you had to declare
+that with a C<use attrs> pragma in the body of the subroutine.
+That can now be accomplished with a declaration syntax, like this:
+
+ sub mymethod : locked, method ;
+ ...
+ sub mymethod : locked, method {
+ ...
+ }
+
+F<AutoSplit.pm> and F<SelfLoader.pm> have been updated to keep the attributes
+with the stubs they provide. See L<attributes>.
+
=head1 Significant bug fixes
=head2 E<lt>HANDLEE<gt> on empty files
@@ -364,26 +380,34 @@ EPOC is is now supported (on Psion 5).
=over 4
-=item op/io_const
+=item lib/attrs
+
+Compatibility tests for C<sub : attrs> vs the older C<use attrs>.
+
+=item lib/io_const
IO constants (SEEK_*, _IO*).
-=item op/io_dir
+=item lib/io_dir
Directory-related IO methods (new, read, close, rewind, tied delete).
-=item op/io_multihomed
+=item lib/io_multihomed
INET sockets with multi-homed hosts.
-=item op/io_poll
+=item lib/io_poll
IO poll().
-=item op/io_unix
+=item lib/io_unix
UNIX sockets.
+=item op/attrs
+
+Regression tests for C<my ($x,@y,%z) : attrs> and <sub : attrs>.
+
=item op/filetest
File test operators.
@@ -400,6 +424,12 @@ Verify operations that access pad objects (lexicals and temporaries).
=over 4
+=item attributes
+
+While used internally by Perl as a pragma, this module also
+provides a way to fetch subroutine and variable attributes.
+See L<attributes>.
+
=item ByteLoader
The ByteLoader is a dedication extension to generate and run
@@ -540,6 +570,10 @@ See L<perldbmfilter> for further information.
=head2 Pragmata
+C<use attrs> is now obsolescent, and is only provided for
+backward-compatibility. It's been replaced by the C<sub : attributes>
+syntax. See L<perlsub/"Subroutine Attributes"> and L<attributes>.
+
C<use utf8> to enable UTF-8 and Unicode support.
C<use caller 'encoding'> allows modules to inherit pragmatic attributes
@@ -579,6 +613,18 @@ A tutorial on managing class data for object modules.
=head1 New Diagnostics
+=item "my sub" not yet implemented
+
+(F) Lexically scoped subroutines are not yet implemented. Don't try that
+yet.
+
+=item %s package attribute may clash with future reserved word: %s
+
+(W) A lowercase attribute name was used that had a package-specific handler.
+That name might have a meaning to Perl itself some day, even though it
+doesn't yet. Perhaps you should use a mixed-case attribute name, instead.
+See L<attributes>.
+
=item /%s/: Unrecognized escape \\%c passed through
(W) You used a backslash-character combination which is not recognized
@@ -593,16 +639,52 @@ intended it to be a read-write filehandle, you needed to open it with
you intended only to read from the file, use "E<lt>". See
L<perlfunc/open>.
+=item Invalid %s attribute: %s
+
+The indicated attribute for a subroutine or variable was not recognized
+by Perl or by a user-supplied handler. See L<attributes>.
+
+=item Invalid %s attributes: %s
+
+The indicated attributes for a subroutine or variable were not recognized
+by Perl or by a user-supplied handler. See L<attributes>.
+
+=item Invalid separator character %s in attribute list
+
+(F) Something other than a comma or whitespace was seen between the
+elements of an attribute list. If the previous attribute
+had a parenthesised parameter list, perhaps that list was terminated
+too soon. See L<attributes>.
+
=item Missing command in piped open
(W) You used the C<open(FH, "| command")> or C<open(FH, "command |")>
construction, but the command was missing or blank.
+=item Missing name in "my sub"
+
+(F) The reserved syntax for lexically scoped subroutines requires that they
+have a name with which they can be found.
+
=item Unrecognized escape \\%c passed through
(W) You used a backslash-character combination which is not recognized
by Perl.
+=item Unterminated attribute parameter in attribute list
+
+(F) The lexer saw an opening (left) parenthesis character while parsing an
+attribute list, but the matching closing (right) parenthesis
+character was not found. You may need to add (or remove) a backslash
+character to get your parentheses to balance. See L<attributes>.
+
+=item Unterminated attribute list
+
+(F) The lexer found something other than a simple identifier at the start
+of an attribute, and it wasn't a semicolon or the start of a
+block. Perhaps you terminated the parameter list of the previous attribute
+too soon. See L<attributes>.
+
=item defined(@array) is deprecated
(D) defined() is not usually useful on arrays because it checks for an
@@ -615,6 +697,27 @@ just use C<if (@array) { # not empty }> for example.
undefined I<scalar> value. If you want to see if the hash is empty,
just use C<if (%hash) { # not empty }> for example.
+=item Invalid separator character %s in subroutine attribute list
+
+(F) Something other than a comma or whitespace was seen between the
+elements of a subroutine attribute list. If the previous attribute
+had a parenthesised parameter list, perhaps that list was terminated
+too soon.
+
+=item Unterminated attribute parameter in subroutine attribute list
+
+(F) The lexer saw an opening (left) parenthesis character while parsing a
+subroutine attribute list, but the matching closing (right) parenthesis
+character was not found. You may need to add (or remove) a backslash
+character to get your parentheses to balance.
+
+=item Unterminated subroutine attribute list
+
+(F) The lexer found something other than a simple identifier at the start
+of a subroutine attribute, and it wasn't a semicolon or the start of a
+block. Perhaps you terminated the parameter list of the previous attribute
+too soon.
+
=head1 Obsolete Diagnostics
Todo.
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 7077088b3c..cd9583bc87 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -30,6 +30,11 @@ The symbols C<"%(-?@> sort before the letters, while C<[> and C<\> sort after.
=over 4
+=item "my sub" not yet implemented
+
+(F) Lexically scoped subroutines are not yet implemented. Don't try that
+yet.
+
=item "my" variable %s can't be in a package
(F) Lexically scoped variables aren't in a package, so it doesn't make sense
@@ -174,6 +179,13 @@ regular expression engine didn't specifically check for that. See L<perlre>.
(S) The symbol in question was declared but somehow went out of scope
before it could possibly have been used.
+=item %s package attribute may clash with future reserved word: %s
+
+(W) A lowercase attribute name was used that had a package-specific handler.
+That name might have a meaning to Perl itself some day, even though it
+doesn't yet. Perhaps you should use a mixed-case attribute name, instead.
+See L<attributes>.
+
=item %s syntax OK
(F) The final summary message when a C<perl -c> succeeds.
@@ -297,7 +309,8 @@ imported with the C<use subs> pragma).
To silently interpret it as the Perl operator, use the C<CORE::> prefix
on the operator (e.g. C<CORE::log($x)>) or by declaring the subroutine
-to be an object method (see L<attrs>).
+to be an object method (see L<perlsub/"Subroutine Attributes">
+or L<attributes>).
=item Args must match #! line
@@ -1530,7 +1543,7 @@ before the illegal character.
(F) The number of bits in vec() (the third argument) must be a power of
two from 1 to 32 (or 64, if your platform supports that).
-
+
=item Illegal switch in PERL5OPT: %s
(X) The PERL5OPT environment variable may only be used to set the
@@ -1614,6 +1627,16 @@ rebuild Perl.
(P) Something went badly awry in the regular expression parser.
+=item Invalid %s attribute: %s
+
+The indicated attribute for a subroutine or variable was not recognized
+by Perl or by a user-supplied handler. See L<attributes>.
+
+=item Invalid %s attributes: %s
+
+The indicated attributes for a subroutine or variable were not recognized
+by Perl or by a user-supplied handler. See L<attributes>.
+
=item invalid [] range in regexp
(F) The range specified in a character class had a minimum character
@@ -1625,6 +1648,13 @@ a literal character. See L<perlre>.
(W) Perl does not understand the given format conversion.
See L<perlfunc/sprintf>.
+=item Invalid separator character %s in attribute list
+
+(F) Something other than a comma or whitespace was seen between the
+elements of an attribute list. If the previous attribute
+had a parenthesised parameter list, perhaps that list was terminated
+too soon. See L<attributes>.
+
=item Invalid type in pack: '%s'
(F) The given character is not a valid pack type. See L<perlfunc/pack>.
@@ -1756,6 +1786,11 @@ be created for some peculiar reason.
(W) Multidimensional arrays aren't written like C<$foo[1,2,3]>. They're written
like C<$foo[1][2][3]>, as in C.
+=item Missing name in "my sub"
+
+(F) The reserved syntax for lexically scoped subroutines requires that they
+have a name with which they can be found.
+
=item Name "%s::%s" used only once: possible typo
(W) Typographical errors often show up as unique variable names.
@@ -3048,6 +3083,20 @@ a term, so it's looking for the corresponding right angle bracket, and not
finding it. Chances are you left some needed parentheses out earlier in
the line, and you really meant a "less than".
+=item Unterminated attribute parameter in attribute list
+
+(F) The lexer saw an opening (left) parenthesis character while parsing an
+attribute list, but the matching closing (right) parenthesis
+character was not found. You may need to add (or remove) a backslash
+character to get your parentheses to balance. See L<attributes>.
+
+=item Unterminated attribute list
+
+(F) The lexer found something other than a simple identifier at the start
+of an attribute, and it wasn't a semicolon or the start of a
+block. Perhaps you terminated the parameter list of the previous attribute
+too soon. See L<attributes>.
+
=item Use of $# is deprecated
(D) This was an ill-advised attempt to emulate a poorly defined B<awk> feature.
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index 004c0f47cc..d420059d4c 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -2366,6 +2366,8 @@ there is an error. See also C<IPC::SysV> and C<IPC::SysV::Msg> documentation.
=item my EXPR
+=item my EXPR : ATTRIBUTES
+
A C<my> declares the listed variables to be local (lexically) to the
enclosing block, file, or C<eval>. If
more than one value is listed, the list must be placed in parentheses. See
@@ -4338,10 +4340,10 @@ out the names of those files that contain a match:
=item sub NAME BLOCK
This is subroutine definition, not a real function I<per se>. With just a
-NAME (and possibly prototypes), it's just a forward declaration. Without
-a NAME, it's an anonymous function declaration, and does actually return a
-value: the CODE ref of the closure you just created. See L<perlsub> and
-L<perlref> for details.
+NAME (and possibly prototypes or attributes), it's just a forward declaration.
+Without a NAME, it's an anonymous function declaration, and does actually
+return a value: the CODE ref of the closure you just created. See L<perlsub>
+and L<perlref> for details.
=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
diff --git a/pod/perlmodlib.pod b/pod/perlmodlib.pod
index abfa657f61..bfc5223819 100644
--- a/pod/perlmodlib.pod
+++ b/pod/perlmodlib.pod
@@ -46,9 +46,13 @@ The following pragmas are defined (and have their own documentation).
=over 12
+=item attributes
+
+set/get the attributes of a subroutine or variable
+
=item attrs
-set/get attributes of a subroutine
+set/get attributes of a subroutine (obsolescent)
=item autouse
diff --git a/pod/perlsub.pod b/pod/perlsub.pod
index 2bd1cfd1ee..47f507f28d 100644
--- a/pod/perlsub.pod
+++ b/pod/perlsub.pod
@@ -6,16 +6,22 @@ perlsub - Perl subroutines
To declare subroutines:
- sub NAME; # A "forward" declaration.
- sub NAME(PROTO); # ditto, but with prototypes
+ sub NAME; # A "forward" declaration.
+ sub NAME(PROTO); # ditto, but with prototypes
+ sub NAME : ATTRS; # with attributes
+ sub NAME(PROTO) : ATTRS; # with attributes and prototypes
- sub NAME BLOCK # A declaration and a definition.
- sub NAME(PROTO) BLOCK # ditto, but with prototypes
+ sub NAME BLOCK # A declaration and a definition.
+ sub NAME(PROTO) BLOCK # ditto, but with prototypes
+ sub NAME : ATTRS BLOCK # with attributes
+ sub NAME(PROTO) : ATTRS BLOCK # with prototypes and attributes
To define an anonymous subroutine at runtime:
- $subref = sub BLOCK; # no proto
- $subref = sub (PROTO) BLOCK; # with proto
+ $subref = sub BLOCK; # no proto
+ $subref = sub (PROTO) BLOCK; # with proto
+ $subref = sub : ATTRS BLOCK; # with attributes
+ $subref = sub (PROTO) : ATTRS BLOCK; # with proto and attributes
To import subroutines:
@@ -112,7 +118,7 @@ Example:
...
}
-Asisng to a list of private variables to name your arguments:
+Assigning to a list of private variables to name your arguments:
sub maybeset {
my($key, $value) = @_;
@@ -196,7 +202,7 @@ disables any prototype checking on arguments you do provide. This
is partly for historical reasons, and partly for having a convenient way
to cheat if you know what you're doing. See L<Prototypes> below.
-Function whose names are in all upper case are reserved to the Perl
+Functions whose names are in all upper case are reserved to the Perl
core, as are modules whose names are in all lower case. A
function in all capitals is a loosely-held convention meaning it
will be called indirectly by the run-time system itself, usually
@@ -213,6 +219,11 @@ Synopsis:
my (@wid, %get); # declare list of variables local
my $foo = "flurp"; # declare $foo lexical, and init it
my @oof = @bar; # declare @oof lexical, and init it
+ my $x : Foo = $y; # similar, with an attribute applied
+
+B<WARNING>: The use of attribute lists on C<my> declarations is
+experimental. This feature should not be relied upon. It may
+change or disappear in future releases of Perl. See L<attributes>.
The C<my> operator declares the listed variables to be lexically
confined to the enclosing block, conditional (C<if/unless/elsif/else>),
@@ -220,7 +231,7 @@ loop (C<for/foreach/while/until/continue>), subroutine, C<eval>,
or C<do/require/use>'d file. If more than one value is listed, the
list must be placed in parentheses. All listed elements must be
legal lvalues. Only alphanumeric identifiers may be lexically
-scoped--magical built-in like C<$/> must currently be C<local>ize
+scoped--magical built-ins like C<$/> must currently be C<local>ize
with C<local> instead.
Unlike dynamic variables created by the C<local> operator, lexical
@@ -669,8 +680,8 @@ to it. Look out for implicit assignments in C<while> conditionals.
=item 2. You need to create a local file or directory handle or a local function.
-A function that needs a filehandle of its own must use C<local()> uses
-C<local()> on complete typeglob. This can be used to create new symbol
+A function that needs a filehandle of its own must use
+C<local()> on a complete typeglob. This can be used to create new symbol
table entries:
sub ioqueue {
@@ -798,7 +809,7 @@ It turns out that you can actually do this also:
Here we're using the typeglobs to do symbol table aliasing. It's
a tad subtle, though, and also won't work if you're using C<my>
-variables, because only globals (even in disguised as C<local>s)
+variables, because only globals (even in disguise as C<local>s)
are in the symbol table.
If you're passing around filehandles, you could usually just use the bare
@@ -1043,7 +1054,7 @@ built-in name with the special package qualifier C<CORE::>. For example,
saying C<CORE::open()> always refers to the built-in C<open()>, even
if the current package has imported some other subroutine called
C<&open()> from elsewhere. Even though it looks like a regular
-function calls, it isn't: you can't take a reference to it, such as
+function call, it isn't: you can't take a reference to it, such as
the incorrect C<\&CORE::open> might appear to produce.
Library modules should not in general export built-in names like C<open>
@@ -1167,6 +1178,46 @@ described in L<AutoLoader> and in L<AutoSplit>, the standard
SelfLoader modules in L<SelfLoader>, and the document on adding C
functions to Perl code in L<perlxs>.
+=head2 Subroutine Attributes
+
+A subroutine declaration or definition may have a list of attributes
+associated with it. If such an attribute list is present, it is
+broken up at space or comma boundaries and treated as though a
+C<use attributes> had been seen. See L<attributes> for details
+about what attributes are currently supported.
+Unlike the limitation with the obsolescent C<use attrs>, the
+C<sub : ATTRLIST> syntax works to associate the attributes with
+a pre-declaration, and not just with a subroutine definition.
+
+The attributes must be valid as simple identifier names (without any
+punctuation other than the '_' character). They may have a parameter
+list appended, which is only checked for whether its parentheses ('(',')')
+nest properly.
+
+Examples of valid syntax (even though the attributes are unknown):
+
+ sub fnord (&\%) : switch(10,foo(7,3)) , , expensive ;
+ sub plugh () : Ugly('\(") , Bad ;
+ sub xyzzy : _5x5 { ... }
+
+Examples of invalid syntax:
+
+ sub fnord : switch(10,foo() ; # ()-string not balanced
+ sub snoid : Ugly('(') ; # ()-string not balanced
+ sub xyzzy : 5x5 ; # "5x5" not a valid identifier
+ sub plugh : Y2::north ; # "Y2::north" not a simple identifier
+ sub snurt : foo + bar ; # "+" not a comma or space
+
+The attribute list is passed as a list of constant strings to the code
+which associates them with the subroutine. In particular, the second example
+of valid syntax above currently looks like this in terms of how it's
+parsed and invoked:
+
+ use attributes __PACKAGE__, \&plugh, q[Ugly('\(")], 'Bad';
+
+For further details on attribute lists and their manipulation,
+see L<attributes>.
+
=head1 SEE ALSO
See L<perlref/"Function Templates"> for more about references and closures.
diff --git a/proto.h b/proto.h
index 5584aa4304..5ae0636d4d 100644
--- a/proto.h
+++ b/proto.h
@@ -729,6 +729,11 @@ VIRTUAL void Perl_sv_force_normal(pTHX_ SV *sv);
VIRTUAL void Perl_tmps_grow(pTHX_ I32 n);
VIRTUAL SV* Perl_sv_rvweaken(pTHX_ SV *sv);
VIRTUAL int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
+VIRTUAL OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
+VIRTUAL CV* Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+VIRTUAL void Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+VIRTUAL OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs);
+VIRTUAL void Perl_boot_core_xsutils(pTHX);
#if defined(PERL_OBJECT)
protected:
#endif
@@ -784,6 +789,9 @@ STATIC bool S_is_handle_constructor(pTHX_ OP *o, I32 argnum);
STATIC char* S_gv_ename(pTHX_ GV *gv);
STATIC CV* S_cv_clone2(pTHX_ CV *proto, CV *outside);
STATIC bool S_scalar_mod_type(pTHX_ OP *o, I32 type);
+STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs);
+STATIC OP * S_dup_attrlist(pTHX_ OP *o);
+STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
# if defined(PL_OP_SLAB_ALLOC)
STATIC void* S_Slab_Alloc(pTHX_ int m, size_t sz);
# endif
@@ -938,7 +946,7 @@ STATIC char* S_scan_heredoc(pTHX_ char *s);
STATIC char* S_scan_ident(pTHX_ char *s, char *send, char *dest, STRLEN destlen, I32 ck_uni);
STATIC char* S_scan_inputsymbol(pTHX_ char *start);
STATIC char* S_scan_pat(pTHX_ char *start, I32 type);
-STATIC char* S_scan_str(pTHX_ char *start);
+STATIC char* S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims);
STATIC char* S_scan_subst(pTHX_ char *start);
STATIC char* S_scan_trans(pTHX_ char *start);
STATIC char* S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
@@ -972,6 +980,9 @@ STATIC I32 S_win32_textfilter(pTHX_ int idx, SV *sv, int maxlen);
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
STATIC SV* S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level);
#endif
+#if defined(PERL_IN_XSUTILS_C) || defined(PERL_DECL_PROT)
+STATIC int S_modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs);
+#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
STATIC SV* S_mess_alloc(pTHX);
# if defined(LEAKTEST)
diff --git a/t/lib/attrs.t b/t/lib/attrs.t
new file mode 100644
index 0000000000..d8afbf635a
--- /dev/null
+++ b/t/lib/attrs.t
@@ -0,0 +1,125 @@
+#!./perl
+
+# Regression tests for attrs.pm and the C<sub x : attrs> syntax.
+
+BEGIN {
+ chdir 't' if -d 't';
+ unshift @INC, '../lib';
+ eval 'require attrs; 1' or do {
+ print "1..0\n";
+ exit 0;
+ }
+}
+
+sub NTESTS () ;
+
+my $test, $ntests;
+BEGIN {$ntests=0}
+$test=0;
+my $failed = 0;
+
+print "1..".NTESTS."\n";
+
+eval 'sub t1 ($) { use attrs "locked"; $_[0]++ }';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub t2 { use attrs "locked"; $_[0]++ }';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub t3 ($) : locked ;';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub t4 : locked ;';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+my $anon1;
+eval '$anon1 = sub ($) { use attrs qw(locked method); $_[0]++ }';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+my $anon2;
+eval '$anon2 = sub { use attrs qw(locked method); $_[0]++ }';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+my $anon3;
+eval '$anon3 = sub { use attrs "method"; $_[0]->[1] }';
+(print "not "), $failed=1 if $@;
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+my @attrs = attrs::get($anon3 ? $anon3 : \&ns);
+(print "not "), $failed=1 unless "@attrs" eq "method";
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+@attrs = sort +attrs::get($anon2 ? $anon2 : \&ns);
+(print "not "), $failed=1 unless "@attrs" eq "locked method";
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+@attrs = sort +attrs::get($anon1 ? $anon1 : \&ns);
+(print "not "), $failed=1 unless "@attrs" eq "locked method";
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub e1 ($) : plugh ;';
+unless ($@ && $@ =~ m/^Invalid CODE attribute: ["']?plugh["']? at/) {
+ my $x = $@;
+ $x =~ s/\n.*\z//s;
+ print "# $x\n";
+ print "not ";
+ $failed = 1;
+}
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub e2 ($) : plugh(0,0) xyzzy ;';
+unless ($@ && $@ =~ m/^Invalid CODE attributes: ["']?plugh\(0,0\)["']? /) {
+ my $x = $@;
+ $x =~ s/\n.*\z//s;
+ print "# $x\n";
+ print "not ";
+ $failed = 1;
+}
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub e3 ($) : plugh(0,0 xyzzy ;';
+unless ($@ && $@ =~ m/Unterminated attribute parameter in attribute list at/) {
+ my $x = $@;
+ $x =~ s/\n.*\z//s;
+ print "# $x\n";
+ print "not ";
+ $failed = 1;
+}
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+eval 'sub e4 ($) : plugh + xyzzy ;';
+unless ($@ && $@ =~ m/Invalid separator character '[+]' in attribute list at/) {
+ my $x = $@;
+ $x =~ s/\n.*\z//s;
+ print "# $x\n";
+ print "not ";
+ $failed = 1;
+}
+print "ok ",++$test,"\n";
+BEGIN {++$ntests}
+
+
+# Other tests should be added above this line
+
+sub NTESTS () { $ntests }
+
+exit $failed;
diff --git a/t/op/attrs.t b/t/op/attrs.t
new file mode 100644
index 0000000000..e89c2cb816
--- /dev/null
+++ b/t/op/attrs.t
@@ -0,0 +1,176 @@
+#!./perl -w
+
+# Regression tests for attributes.pm and the C< : attrs> syntax.
+
+BEGIN {
+ chdir 't' if -d 't';
+ unshift @INC, '../lib';
+}
+
+sub NTESTS () ;
+
+my ($test, $ntests);
+BEGIN {$ntests=0}
+$test=0;
+my $failed = 0;
+
+print "1..".NTESTS."\n";
+
+$SIG{__WARN__} = sub { die @_ };
+
+sub mytest {
+ if (!$@ ne !$_[0] || $_[0] && $@ !~ $_[0]) {
+ if ($@) {
+ my $x = $@;
+ $x =~ s/\n.*\z//s;
+ print "# Got: $x\n"
+ }
+ else {
+ print "# Got unexpected success\n";
+ }
+ if ($_[0]) {
+ print "# Expected: $_[0]\n";
+ }
+ else {
+ print "# Expected success\n";
+ }
+ $failed = 1;
+ print "not ";
+ }
+ elsif (@_ == 3 && $_[1] ne $_[2]) {
+ print "# Got: $_[1]\n";
+ print "# Expected: $_[2]\n";
+ $failed = 1;
+ print "not ";
+ }
+ print "ok ",++$test,"\n";
+}
+
+eval 'sub t1 ($) : locked { $_[0]++ }';
+mytest;
+BEGIN {++$ntests}
+
+eval 'sub t2 : locked { $_[0]++ }';
+mytest;
+BEGIN {++$ntests}
+
+eval 'sub t3 ($) : locked ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'sub t4 : locked ;';
+mytest;
+BEGIN {++$ntests}
+
+my $anon1;
+eval '$anon1 = sub ($) : locked,,method { $_[0]++ }';
+mytest;
+BEGIN {++$ntests}
+
+my $anon2;
+eval '$anon2 = sub : locked , method { $_[0]++ }';
+mytest;
+BEGIN {++$ntests}
+
+my $anon3;
+eval '$anon3 = sub : method { $_[0]->[1] }';
+mytest;
+BEGIN {++$ntests}
+
+eval 'sub e1 ($) : plugh ;';
+mytest qr/^Invalid CODE attributes?: ["']?plugh["']? at/;
+BEGIN {++$ntests}
+
+eval 'sub e2 ($) : plugh(0,0) xyzzy ;';
+mytest qr/^Invalid CODE attributes: ["']?plugh\(0,0\)["']? /;
+BEGIN {++$ntests}
+
+eval 'sub e3 ($) : plugh(0,0 xyzzy ;';
+mytest qr/Unterminated attribute parameter in attribute list at/;
+BEGIN {++$ntests}
+
+eval 'sub e4 ($) : plugh + xyzzy ;';
+mytest qr/Invalid separator character '[+]' in attribute list at/;
+BEGIN {++$ntests}
+
+eval 'my main $x : = 0;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my $x : = 0;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my $x ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x) : = 0;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x) ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x) : ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x,$y) : = 0;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x,$y) ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x,$y) : ;';
+mytest;
+BEGIN {++$ntests}
+
+eval 'my ($x,$y) : plugh;';
+mytest qr/^Invalid SCALAR attribute: ["']?plugh["']? at/;
+BEGIN {++$ntests}
+
+sub A::MODIFY_SCALAR_ATTRIBUTES { return }
+eval 'my A $x : plugh;';
+mytest qr/^SCALAR package attribute may clash with future reserved word: ["']?plugh["']? at/;
+BEGIN {++$ntests}
+
+eval 'my A $x : plugh plover;';
+mytest qr/^SCALAR package attributes may clash with future reserved words: ["']?plugh["']? /;
+BEGIN {++$ntests}
+
+sub X::MODIFY_CODE_ATTRIBUTES { die "$_[0]" }
+sub X::foo { 1 }
+*Y::bar = \&X::foo;
+*Y::bar = \&X::foo; # second time for -w
+eval 'package Z; sub Y::bar : locked';
+mytest qr/^X at /;
+BEGIN {++$ntests}
+
+my @attrs = eval 'attributes::get \&Y::bar';
+mytest '', "@attrs", "locked";
+BEGIN {++$ntests}
+
+@attrs = eval 'attributes::get $anon1';
+mytest '', "@attrs", "locked method";
+BEGIN {++$ntests}
+
+sub Z::DESTROY { }
+sub Z::FETCH_CODE_ATTRIBUTES { return 'Z' }
+my $thunk = eval 'bless +sub : method locked { 1 }, "Z"';
+mytest '', ref($thunk), "Z";
+BEGIN {++$ntests}
+
+@attrs = eval 'attributes::get $thunk';
+mytest '', "@attrs", "locked method Z";
+BEGIN {++$ntests}
+
+
+# Other tests should be added above this line
+
+sub NTESTS () { $ntests }
+
+exit $failed;
diff --git a/toke.c b/toke.c
index 83086042b5..326c284ff5 100644
--- a/toke.c
+++ b/toke.c
@@ -374,6 +374,7 @@ Perl_lex_start(pTHX_ SV *line)
SAVEDESTRUCTOR(restore_rsfp, PL_rsfp);
SAVESPTR(PL_lex_stuff);
SAVEI32(PL_lex_defer);
+ SAVEI32(PL_sublex_info.sub_inwhat);
SAVESPTR(PL_lex_repl);
SAVEDESTRUCTOR(restore_expect, PL_tokenbuf + PL_expect); /* encode as pointer */
SAVEDESTRUCTOR(restore_lex_expect, PL_tokenbuf + PL_expect);
@@ -395,6 +396,7 @@ Perl_lex_start(pTHX_ SV *line)
PL_lex_repl = Nullsv;
PL_lex_inpat = 0;
PL_lex_inwhat = 0;
+ PL_sublex_info.sub_inwhat = 0;
PL_linestr = line;
if (SvREADONLY(PL_linestr))
PL_linestr = sv_2mortal(newSVsv(PL_linestr));
@@ -492,6 +494,8 @@ S_skipspace(pTHX_ register char *s)
}
for (;;) {
STRLEN prevlen;
+ SSize_t oldprevlen, oldoldprevlen;
+ SSize_t oldloplen, oldunilen;
while (s < PL_bufend && isSPACE(*s)) {
if (*s++ == '\n' && PL_in_eval && !PL_rsfp)
incline(s);
@@ -514,7 +518,8 @@ S_skipspace(pTHX_ register char *s)
* of the buffer, we're not reading from a source filter, and
* we're in normal lexing mode
*/
- if (s < PL_bufend || !PL_rsfp || PL_lex_state != LEX_NORMAL)
+ if (s < PL_bufend || !PL_rsfp || PL_sublex_info.sub_inwhat ||
+ PL_lex_state == LEX_FORMLINE)
return s;
/* try to recharge the buffer */
@@ -555,9 +560,22 @@ S_skipspace(pTHX_ register char *s)
}
/* not at end of file, so we only read another line */
+ /* make corresponding updates to old pointers, for yyerror() */
+ oldprevlen = PL_oldbufptr - PL_bufend;
+ oldoldprevlen = PL_oldoldbufptr - PL_bufend;
+ if (PL_last_uni)
+ oldunilen = PL_last_uni - PL_bufend;
+ if (PL_last_lop)
+ oldloplen = PL_last_lop - PL_bufend;
PL_linestart = PL_bufptr = s + prevlen;
PL_bufend = s + SvCUR(PL_linestr);
s = PL_bufptr;
+ PL_oldbufptr = s + oldprevlen;
+ PL_oldoldbufptr = s + oldoldprevlen;
+ if (PL_last_uni)
+ PL_last_uni = s + oldunilen;
+ if (PL_last_lop)
+ PL_last_lop = s + oldloplen;
incline(s);
/* debugger active and we're not compiling the debugger code,
@@ -1037,6 +1055,7 @@ S_sublex_done(pTHX)
PL_bufend = SvPVX(PL_linestr);
PL_bufend += SvCUR(PL_linestr);
PL_expect = XOPERATOR;
+ PL_sublex_info.sub_inwhat = 0;
return ')';
}
}
@@ -1885,7 +1904,9 @@ S_filter_gets(pTHX_ register SV *sv, register PerlIO *fp, STRLEN append)
#ifdef DEBUGGING
static char* exp_name[] =
- { "OPERATOR", "TERM", "REF", "STATE", "BLOCK", "TERMBLOCK" };
+ { "OPERATOR", "TERM", "REF", "STATE", "BLOCK", "ATTRBLOCK",
+ "ATTRTERM", "TERMBLOCK"
+ };
#endif
/*
@@ -2033,7 +2054,7 @@ Perl_yylex(pTHX)
break;
#endif
- /* when we're already built the next token, just pull it out the queue */
+ /* when we've already built the next token, just pull it out of the queue */
case LEX_KNOWNEXT:
PL_nexttoke--;
yylval = PL_nextval[PL_nexttoke];
@@ -2659,6 +2680,84 @@ Perl_yylex(pTHX)
goto just_a_word;
}
s++;
+ switch (PL_expect) {
+ OP *attrs;
+ case XOPERATOR:
+ if (!PL_in_my || PL_lex_state != LEX_NORMAL)
+ break;
+ PL_bufptr = s; /* update in case we back off */
+ goto grabattrs;
+ case XATTRBLOCK:
+ PL_expect = XBLOCK;
+ goto grabattrs;
+ case XATTRTERM:
+ PL_expect = XTERMBLOCK;
+ grabattrs:
+ s = skipspace(s);
+ attrs = Nullop;
+ while (isIDFIRST_lazy(s)) {
+ d = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, FALSE, &len);
+ if (*d == '(') {
+ d = scan_str(d,TRUE,TRUE);
+ if (!d) {
+ if (PL_lex_stuff) {
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ }
+ /* MUST advance bufptr here to avoid bogus
+ "at end of line" context messages from yyerror().
+ */
+ PL_bufptr = s + len;
+ yyerror("Unterminated attribute parameter in attribute list");
+ if (attrs)
+ op_free(attrs);
+ return 0; /* EOF indicator */
+ }
+ }
+ if (PL_lex_stuff) {
+ SV *sv = newSVpvn(s, len);
+ sv_catsv(sv, PL_lex_stuff);
+ attrs = append_elem(OP_LIST, attrs,
+ newSVOP(OP_CONST, 0, sv));
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ }
+ else {
+ attrs = append_elem(OP_LIST, attrs,
+ newSVOP(OP_CONST, 0,
+ newSVpvn(s, len)));
+ }
+ s = skipspace(d);
+ while (*s == ',')
+ s = skipspace(s+1);
+ }
+ tmp = (PL_expect == XOPERATOR ? '=' : '{'); /*'}' for vi */
+ if (*s != ';' && *s != tmp) {
+ char q = ((*s == '\'') ? '"' : '\'');
+ /* If here for an expression, and parsed no attrs, back off. */
+ if (tmp == '=' && !attrs) {
+ s = PL_bufptr;
+ break;
+ }
+ /* MUST advance bufptr here to avoid bogus "at end of line"
+ context messages from yyerror().
+ */
+ PL_bufptr = s;
+ if (!*s)
+ yyerror("Unterminated attribute list");
+ else
+ yyerror(Perl_form(aTHX_ "Invalid separator character %c%c%c in attribute list",
+ q, *s, q));
+ if (attrs)
+ op_free(attrs);
+ OPERATOR(':');
+ }
+ if (attrs) {
+ PL_nextval[PL_nexttoke].opval = attrs;
+ force_next(THING);
+ }
+ TOKEN(COLONATTR);
+ }
OPERATOR(':');
case '(':
s++;
@@ -2736,10 +2835,12 @@ Perl_yylex(pTHX)
}
}
/* FALL THROUGH */
+ case XATTRBLOCK:
case XBLOCK:
PL_lex_brackstack[PL_lex_brackets++] = XSTATE;
PL_expect = XSTATE;
break;
+ case XATTRTERM:
case XTERMBLOCK:
PL_lex_brackstack[PL_lex_brackets++] = XOPERATOR;
PL_expect = XSTATE;
@@ -3210,7 +3311,7 @@ Perl_yylex(pTHX)
TERM(THING);
case '\'':
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (PL_expect == XOPERATOR) {
if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
PL_expect = XTERM;
@@ -3226,7 +3327,7 @@ Perl_yylex(pTHX)
TERM(sublex_start());
case '"':
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (PL_expect == XOPERATOR) {
if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
PL_expect = XTERM;
@@ -3248,7 +3349,7 @@ Perl_yylex(pTHX)
TERM(sublex_start());
case '`':
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (PL_expect == XOPERATOR)
no_op("Backticks",s);
if (!s)
@@ -3993,6 +4094,7 @@ Perl_yylex(pTHX)
UNI(OP_LCFIRST);
case KEY_local:
+ yylval.ival = 0;
OPERATOR(LOCAL);
case KEY_length:
@@ -4049,6 +4151,8 @@ Perl_yylex(pTHX)
s = skipspace(s);
if (isIDFIRST_lazy(s)) {
s = scan_word(s, PL_tokenbuf, sizeof PL_tokenbuf, TRUE, &len);
+ if (len == 3 && strnEQ(PL_tokenbuf, "sub", 3))
+ goto really_sub;
PL_in_my_stash = gv_stashpv(PL_tokenbuf, FALSE);
if (!PL_in_my_stash) {
char tmpbuf[1024];
@@ -4057,6 +4161,7 @@ Perl_yylex(pTHX)
yyerror(tmpbuf);
}
}
+ yylval.ival = 1;
OPERATOR(MY);
case KEY_next:
@@ -4134,7 +4239,7 @@ Perl_yylex(pTHX)
LOP(OP_PIPE_OP,XTERM);
case KEY_q:
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s)
missingterm((char*)0);
yylval.ival = OP_CONST;
@@ -4144,7 +4249,7 @@ Perl_yylex(pTHX)
UNI(OP_QUOTEMETA);
case KEY_qw:
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s)
missingterm((char*)0);
force_next(')');
@@ -4189,7 +4294,7 @@ Perl_yylex(pTHX)
TOKEN('(');
case KEY_qq:
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s)
missingterm((char*)0);
yylval.ival = OP_STRINGIFY;
@@ -4202,7 +4307,7 @@ Perl_yylex(pTHX)
TERM(sublex_start());
case KEY_qx:
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s)
missingterm((char*)0);
yylval.ival = OP_BACKTICK;
@@ -4397,73 +4502,91 @@ Perl_yylex(pTHX)
case KEY_format:
case KEY_sub:
really_sub:
- s = skipspace(s);
-
- if (isIDFIRST_lazy(s) || *s == '\'' || *s == ':') {
+ {
char tmpbuf[sizeof PL_tokenbuf];
- PL_expect = XBLOCK;
- d = scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
- if (strchr(tmpbuf, ':'))
- sv_setpv(PL_subname, tmpbuf);
+ expectation attrful;
+ bool have_name, have_proto;
+ int key = tmp;
+
+ s = skipspace(s);
+
+ if (isIDFIRST_lazy(s) || *s == '\'' ||
+ (*s == ':' && s[1] == ':'))
+ {
+ PL_expect = XBLOCK;
+ attrful = XATTRBLOCK;
+ d = scan_word(s, tmpbuf, sizeof tmpbuf, TRUE, &len);
+ if (strchr(tmpbuf, ':'))
+ sv_setpv(PL_subname, tmpbuf);
+ else {
+ sv_setsv(PL_subname,PL_curstname);
+ sv_catpvn(PL_subname,"::",2);
+ sv_catpvn(PL_subname,tmpbuf,len);
+ }
+ s = skipspace(d);
+ have_name = TRUE;
+ }
else {
- sv_setsv(PL_subname,PL_curstname);
- sv_catpvn(PL_subname,"::",2);
- sv_catpvn(PL_subname,tmpbuf,len);
+ if (key == KEY_my)
+ Perl_croak(aTHX_ "Missing name in \"my sub\"");
+ PL_expect = XTERMBLOCK;
+ attrful = XATTRTERM;
+ sv_setpv(PL_subname,"?");
+ have_name = FALSE;
}
- s = force_word(s,WORD,FALSE,TRUE,TRUE);
- s = skipspace(s);
- }
- else {
- PL_expect = XTERMBLOCK;
- sv_setpv(PL_subname,"?");
- }
- if (tmp == KEY_format) {
- s = skipspace(s);
- if (*s == '=')
- PL_lex_formbrack = PL_lex_brackets + 1;
- OPERATOR(FORMAT);
- }
+ if (key == KEY_format) {
+ if (*s == '=')
+ PL_lex_formbrack = PL_lex_brackets + 1;
+ if (have_name)
+ (void) force_word(tmpbuf, WORD, FALSE, TRUE, TRUE);
+ OPERATOR(FORMAT);
+ }
- /* Look for a prototype */
- if (*s == '(') {
- char *p;
+ /* Look for a prototype */
+ if (*s == '(') {
+ char *p;
+
+ s = scan_str(s,FALSE,FALSE);
+ if (!s) {
+ if (PL_lex_stuff)
+ SvREFCNT_dec(PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ Perl_croak(aTHX_ "Prototype not terminated");
+ }
+ /* strip spaces */
+ d = SvPVX(PL_lex_stuff);
+ tmp = 0;
+ for (p = d; *p; ++p) {
+ if (!isSPACE(*p))
+ d[tmp++] = *p;
+ }
+ d[tmp] = '\0';
+ SvCUR(PL_lex_stuff) = tmp;
+ have_proto = TRUE;
- s = scan_str(s);
- if (!s) {
- if (PL_lex_stuff)
- SvREFCNT_dec(PL_lex_stuff);
- PL_lex_stuff = Nullsv;
- Perl_croak(aTHX_ "Prototype not terminated");
+ s = skipspace(s);
}
- /* strip spaces */
- d = SvPVX(PL_lex_stuff);
- tmp = 0;
- for (p = d; *p; ++p) {
- if (!isSPACE(*p))
- d[tmp++] = *p;
+ else
+ have_proto = FALSE;
+
+ if (*s == ':' && s[1] != ':')
+ PL_expect = attrful;
+
+ if (have_proto) {
+ PL_nextval[PL_nexttoke].opval = (OP*)newSVOP(OP_CONST, 0, PL_lex_stuff);
+ PL_lex_stuff = Nullsv;
+ force_next(THING);
}
- d[tmp] = '\0';
- SvCUR(PL_lex_stuff) = tmp;
-
- PL_nexttoke++;
- PL_nextval[1] = PL_nextval[0];
- PL_nexttype[1] = PL_nexttype[0];
- PL_nextval[0].opval = (OP*)newSVOP(OP_CONST, 0, PL_lex_stuff);
- PL_nexttype[0] = THING;
- if (PL_nexttoke == 1) {
- PL_lex_defer = PL_lex_state;
- PL_lex_expect = PL_expect;
- PL_lex_state = LEX_KNOWNEXT;
+ if (!have_name) {
+ sv_setpv(PL_subname,"__ANON__");
+ TOKEN(ANONSUB);
}
- PL_lex_stuff = Nullsv;
- }
-
- if (*SvPV(PL_subname,n_a) == '?') {
- sv_setpv(PL_subname,"__ANON__");
- TOKEN(ANONSUB);
+ (void) force_word(tmpbuf, WORD, FALSE, TRUE, TRUE);
+ if (key == KEY_my)
+ TOKEN(MYSUB);
+ TOKEN(SUB);
}
- PREBLOCK(SUB);
case KEY_system:
set_csh();
@@ -5607,7 +5730,7 @@ S_scan_pat(pTHX_ char *start, I32 type)
PMOP *pm;
char *s;
- s = scan_str(start);
+ s = scan_str(start,FALSE,FALSE);
if (!s) {
if (PL_lex_stuff)
SvREFCNT_dec(PL_lex_stuff);
@@ -5643,7 +5766,7 @@ S_scan_subst(pTHX_ char *start)
yylval.ival = OP_NULL;
- s = scan_str(start);
+ s = scan_str(start,FALSE,FALSE);
if (!s) {
if (PL_lex_stuff)
@@ -5656,7 +5779,7 @@ S_scan_subst(pTHX_ char *start)
s--;
first_start = PL_multi_start;
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s) {
if (PL_lex_stuff)
SvREFCNT_dec(PL_lex_stuff);
@@ -5717,7 +5840,7 @@ S_scan_trans(pTHX_ char *start)
yylval.ival = OP_NULL;
- s = scan_str(start);
+ s = scan_str(start,FALSE,FALSE);
if (!s) {
if (PL_lex_stuff)
SvREFCNT_dec(PL_lex_stuff);
@@ -5727,7 +5850,7 @@ S_scan_trans(pTHX_ char *start)
if (s[-1] == PL_multi_open)
s--;
- s = scan_str(s);
+ s = scan_str(s,FALSE,FALSE);
if (!s) {
if (PL_lex_stuff)
SvREFCNT_dec(PL_lex_stuff);
@@ -6042,7 +6165,7 @@ S_scan_inputsymbol(pTHX_ char *start)
if (d - PL_tokenbuf != len) {
yylval.ival = OP_GLOB;
set_csh();
- s = scan_str(start);
+ s = scan_str(start,FALSE,FALSE);
if (!s)
Perl_croak(aTHX_ "Glob not terminated");
return s;
@@ -6095,6 +6218,8 @@ S_scan_inputsymbol(pTHX_ char *start)
/* scan_str
takes: start position in buffer
+ keep_quoted preserve \ on the embedded delimiter(s)
+ keep_delims preserve the delimiters around the string
returns: position to continue reading from buffer
side-effects: multi_start, multi_close, lex_repl or lex_stuff, and
updates the read buffer.
@@ -6112,6 +6237,7 @@ S_scan_inputsymbol(pTHX_ char *start)
tr/// string transliterate tr/this/that/
y/// string transliterate y/this/that/
($*@) sub prototypes sub foo ($)
+ (stuff) sub attr parameters sub foo : attr(stuff)
<> readline or globs <FOO>, <>, <$fh>, or <*.c>
In most of these cases (all but <>, patterns and transliterate)
@@ -6134,7 +6260,7 @@ S_scan_inputsymbol(pTHX_ char *start)
*/
STATIC char *
-S_scan_str(pTHX_ char *start)
+S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims)
{
dTHR;
SV *sv; /* scalar value: string */
@@ -6170,13 +6296,15 @@ S_scan_str(pTHX_ char *start)
(void)SvPOK_only(sv); /* validate pointer */
/* move past delimiter and try to read a complete string */
+ if (keep_delims)
+ sv_catpvn(sv, s, 1);
s++;
for (;;) {
/* extend sv if need be */
SvGROW(sv, SvCUR(sv) + (PL_bufend - s) + 1);
/* set 'to' to the next character in the sv's string */
to = SvPVX(sv)+SvCUR(sv);
-
+
/* if open delimiter is the close delimiter read unbridle */
if (PL_multi_open == PL_multi_close) {
for (; s < PL_bufend; s++,to++) {
@@ -6185,7 +6313,7 @@ S_scan_str(pTHX_ char *start)
PL_curcop->cop_line++;
/* handle quoted delimiters */
if (*s == '\\' && s+1 < PL_bufend && term != '\\') {
- if (s[1] == term)
+ if (!keep_quoted && s[1] == term)
s++;
/* any other quotes are simply copied straight through */
else
@@ -6211,7 +6339,8 @@ S_scan_str(pTHX_ char *start)
PL_curcop->cop_line++;
/* backslashes can escape the open or closing characters */
if (*s == '\\' && s+1 < PL_bufend) {
- if ((s[1] == PL_multi_open) || (s[1] == PL_multi_close))
+ if (!keep_quoted &&
+ ((s[1] == PL_multi_open) || (s[1] == PL_multi_close)))
s++;
else
*to++ = *s++;
@@ -6278,6 +6407,8 @@ S_scan_str(pTHX_ char *start)
/* at this point, we have successfully read the delimited string */
+ if (keep_delims)
+ sv_catpvn(sv, s, 1);
PL_multi_end = PL_curcop->cop_line;
s++;
@@ -6380,7 +6511,7 @@ Perl_scan_num(pTHX_ char *start)
s += 2;
}
/* check for a decimal in disguise */
- else if (s[1] == '.')
+ else if (strchr(".Ee", s[1]))
goto decimal;
/* so it must be octal */
else
@@ -6411,9 +6542,6 @@ Perl_scan_num(pTHX_ char *start)
case '8': case '9':
if (shift == 3)
yyerror(Perl_form(aTHX_ "Illegal octal digit '%c'", *s));
- else
- if (shift == 1)
- yyerror(Perl_form(aTHX_ "Illegal binary digit '%c'", *s));
/* FALL THROUGH */
/* octal digits */
diff --git a/vms/perly_c.vms b/vms/perly_c.vms
index fc79a269b0..ad94f1e3ee 100644
--- a/vms/perly_c.vms
+++ b/vms/perly_c.vms
@@ -8,6 +8,10 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
#define PERL_IN_PERLY_C
#include "perl.h"
+#define dep() deprecate("\"do\" to call subroutines")
+
+/* stuff included here to make perly_c.diff apply better */
+
#define yydebug PL_yydebug
#define yynerrs PL_yynerrs
#define yyerrflag PL_yyerrflag
@@ -15,1117 +19,1116 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
#define yyval PL_yyval
#define yylval PL_yylval
-#define dep() deprecate("\"do\" to call subroutines")
+struct ysv {
+ short* yyss;
+ YYSTYPE* yyvs;
+ int oldyydebug;
+ int oldyynerrs;
+ int oldyyerrflag;
+ int oldyychar;
+ YYSTYPE oldyyval;
+ YYSTYPE oldyylval;
+};
static void yydestruct(pTHXo_ void *ptr);
-#line 27 "perly.y"
+#line 49 "perly.y"
+#if 0 /* get this from perly.h instead */
+#line 52 "perly.y"
+typedef union {
+ I32 ival;
+ char *pval;
+ OP *opval;
+ GV *gvval;
+} YYSTYPE;
+#line 60 "perly.y"
+#endif /* 0 */
+
+#ifdef USE_PURE_BISON
+#define YYLEX_PARAM (&yychar)
+#endif
+
+#line 52 "perly.c"
#define YYERRCODE 256
-static short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
- 15, 15, 15, 14, 14, 43, 43, 13, 13, 13,
- 13, 13, 13, 13, 27, 27, 28, 28, 29, 30,
- 31, 32, 33, 45, 45, 1, 1, 1, 1, 3,
- 39, 39, 47, 4, 5, 6, 40, 41, 41, 42,
- 42, 48, 48, 50, 49, 16, 16, 16, 26, 26,
- 26, 37, 37, 37, 37, 37, 37, 37, 37, 51,
- 37, 38, 38, 18, 18, 18, 18, 18, 18, 18,
- 18, 18, 18, 18, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+static short yylhs[] = { -1,
+ 50, 0, 8, 6, 9, 7, 10, 10, 10, 11,
+ 11, 11, 11, 24, 24, 24, 24, 24, 24, 24,
+ 14, 14, 14, 13, 13, 42, 42, 12, 12, 12,
+ 12, 12, 12, 12, 26, 26, 27, 27, 28, 29,
+ 30, 31, 32, 49, 49, 1, 1, 1, 1, 1,
+ 2, 38, 38, 46, 51, 3, 4, 5, 39, 40,
+ 40, 44, 44, 44, 45, 45, 41, 41, 52, 52,
+ 54, 53, 15, 15, 15, 25, 25, 25, 36, 36,
+ 36, 36, 36, 36, 36, 36, 55, 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, 34, 34, 35, 35, 35, 2, 2, 44,
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
+ 17, 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,
+ 47, 47, 48, 48, 48, 48, 48, 33, 33, 34,
+ 34, 34, 43, 23, 18, 19, 20, 21, 22, 35,
+ 35, 35, 35,
};
-static short yylen[] = { 2,
+static short yylen[] = { 2,
0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
0, 2, 6, 7, 7, 0, 2, 8, 8, 10,
9, 8, 11, 3, 0, 1, 0, 1, 1, 1,
- 1, 1, 1, 0, 1, 1, 1, 1, 1, 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, 3, 5, 2, 4, 0,
- 5, 1, 1, 5, 4, 5, 4, 5, 6, 5,
- 4, 5, 4, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 5, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
- 3, 2, 4, 3, 4, 1, 1, 1, 1, 1,
- 1, 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, 1, 0, 1, 1, 1, 1, 1, 1,
+ 4, 1, 0, 6, 6, 0, 0, 0, 1, 0,
+ 1, 0, 2, 1, 2, 1, 1, 1, 3, 2,
+ 0, 7, 3, 3, 1, 2, 3, 1, 3, 5,
+ 6, 3, 3, 5, 2, 4, 0, 5, 1, 1,
+ 5, 4, 5, 4, 5, 6, 5, 4, 5, 4,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 5, 3, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 1, 2, 3, 2, 3, 2,
+ 4, 3, 5, 1, 1, 1, 1, 1, 1, 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,
+ 3, 2, 3, 2, 1, 1, 1, 0, 1, 0,
+ 1, 2, 1, 2, 2, 2, 2, 2, 2, 1,
+ 1, 1, 1,
};
-static short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
- 64, 14, 4, 161, 0, 0, 136, 0, 156, 0,
- 55, 55, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 168, 169, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 0, 128, 130, 0, 0, 0, 0, 162,
- 51, 0, 57, 0, 62, 0, 7, 177, 180, 179,
- 178, 0, 0, 0, 0, 0, 0, 4, 4, 4,
- 4, 4, 4, 0, 0, 0, 0, 0, 151, 0,
- 0, 0, 0, 78, 0, 175, 0, 142, 0, 0,
- 0, 0, 0, 171, 0, 0, 0, 0, 0, 0,
- 0, 0, 122, 0, 0, 0, 172, 173, 174, 176,
- 0, 0, 34, 0, 0, 0, 0, 0, 0, 0,
+static short yydefred[] = { 1,
+ 0, 7, 0, 45, 58, 56, 0, 56, 56, 8,
+ 46, 9, 11, 48, 0, 47, 49, 50, 0, 0,
+ 0, 70, 71, 0, 14, 4, 169, 0, 0, 144,
+ 0, 164, 0, 57, 57, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 114, 115, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 13, 0, 50, 59,
- 0, 0, 0, 76, 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 4, 155, 157, 0, 0, 0,
- 0, 0, 0, 0, 124, 0, 140, 0, 0, 121,
- 27, 0, 0, 19, 0, 0, 0, 0, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 0, 0, 83, 0, 0,
- 94, 0, 0, 0, 0, 0, 0, 0, 138, 0,
- 0, 61, 60, 53, 0, 3, 0, 0, 159, 0,
- 125, 0, 42, 0, 43, 0, 0, 0, 0, 170,
- 0, 0, 36, 41, 0, 0, 0, 158, 167, 79,
- 0, 143, 0, 145, 0, 123, 0, 0, 0, 0,
- 91, 0, 0, 0, 0, 93, 87, 0, 85, 0,
- 134, 0, 139, 0, 77, 0, 81, 0, 0, 0,
- 0, 0, 0, 0, 0, 73, 144, 146, 133, 0,
- 0, 0, 92, 86, 0, 90, 88, 135, 84, 65,
- 160, 6, 0, 0, 0, 0, 0, 0, 0, 0,
- 132, 89, 74, 7, 28, 29, 0, 0, 24, 25,
- 0, 32, 0, 0, 0, 22, 0, 0, 0, 31,
- 5, 0, 30, 0, 0, 33, 0, 23,
+ 0, 12, 0, 0, 0, 0, 0, 0, 0, 10,
+ 0, 0, 0, 0, 0, 136, 138, 0, 0, 0,
+ 0, 170, 125, 52, 0, 59, 0, 69, 0, 0,
+ 7, 190, 193, 192, 191, 0, 0, 0, 0, 0,
+ 0, 4, 4, 4, 4, 4, 4, 0, 0, 0,
+ 0, 0, 159, 0, 0, 0, 0, 85, 0, 188,
+ 0, 150, 0, 0, 0, 0, 0, 0, 0, 175,
+ 177, 176, 0, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 130, 0, 0, 0, 185, 186, 187, 189,
+ 0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 13, 0, 51, 61, 0,
+ 0, 0, 0, 83, 0, 0, 87, 0, 0, 0,
+ 0, 0, 0, 0, 4, 163, 165, 0, 0, 0,
+ 0, 0, 0, 0, 132, 0, 148, 174, 0, 0,
+ 171, 0, 0, 129, 27, 0, 0, 19, 0, 0,
+ 0, 0, 73, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 89, 0,
+ 0, 90, 0, 0, 101, 0, 0, 0, 0, 0,
+ 0, 0, 146, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 167, 0, 0, 0, 42, 0, 43, 0,
+ 0, 0, 0, 183, 0, 0, 36, 41, 0, 0,
+ 0, 166, 182, 86, 0, 151, 0, 153, 0, 131,
+ 173, 65, 0, 0, 0, 0, 98, 0, 0, 0,
+ 0, 100, 94, 0, 92, 0, 142, 0, 147, 63,
+ 68, 67, 55, 0, 54, 84, 0, 88, 133, 0,
+ 0, 0, 0, 0, 0, 0, 0, 80, 152, 154,
+ 141, 0, 0, 0, 99, 93, 0, 97, 95, 143,
+ 91, 72, 168, 6, 0, 0, 0, 0, 0, 0,
+ 0, 0, 140, 96, 81, 7, 28, 29, 0, 0,
+ 24, 25, 0, 32, 0, 0, 0, 22, 0, 0,
+ 0, 31, 5, 0, 30, 0, 0, 33, 0, 23,
};
-static short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
- 74, 75, 76, 77, 273, 79, 274, 263, 265, 268,
- 276, 264, 266, 114, 200, 92, 80, 239, 82, 84,
- 181, 254, 143, 271, 13, 2, 14, 15, 16, 86,
- 260,
+static short yydgoto[] = { 1,
+ 10, 11, 20, 100, 19, 91, 366, 94, 355, 3,
+ 12, 13, 70, 371, 281, 72, 73, 74, 75, 76,
+ 77, 78, 79, 287, 81, 288, 277, 279, 282, 290,
+ 278, 280, 118, 210, 96, 82, 253, 85, 87, 190,
+ 323, 152, 285, 267, 221, 14, 83, 133, 15, 2,
+ 16, 17, 18, 89, 274,
};
-static short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
- 0, 0, 0, 0, -24, -24, 0, -5, 0, 2126,
- 0, 0, 6, 28, 44, 57, -32, 2126, 68, 69,
- 72, 999, 943, -24, 1062, 1327, -198, 0, 0, -24,
- 2126, 2126, 2126, 2126, 2126, 2126, 1233, 1383, 0, 2126,
- 2126, -24, -24, -24, -24, 2126, -217, 0, 342, 827,
- -20, -80, -70, 0, 0, -60, 73, 61, 75, 0,
- 0, -1, 0, -137, 0, -130, 0, 0, 0, 0,
- 0, 2126, 88, 2126, -189, -1, -137, 0, 0, 0,
- 0, 0, 0, 89, 827, 99, 1444, 943, 0, -189,
- 0, -80, 75, 0, 2126, 0, 90, 0, -189, -16,
- 27, -58, 2126, 0, 75, 218, 218, 218, -169, -169,
- 63, -22, 0, -63, 218, 218, 0, 0, 0, 0,
- -189, -1, 0, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 0, 0, 74, 2126, 1535, 2126,
- 2126, 2126, 2126, 2126, 2126, 1725, 0, 2126, 0, 0,
- -44, -91, 256, 0, 2126, 428, 0, -1, 2126, 2126,
- 2126, 2126, 131, 1800, 0, 0, 0, -12, 36, 130,
- 2126, 75, 1861, 1936, 0, 48, 0, 2126, 87, 0,
- 0, -272, -272, 0, -272, -272, -272, -119, 0, 1565,
- -189, 1088, 375, 160, 827, 715, 389, 771, 684, 1026,
- 1242, 218, 218, 2126, 0, 2006, 2126, 0, 143, -56,
- 0, 1, 51, -49, 56, 43, 58, 45, 0, 7,
- 827, 0, 0, 0, 2126, 0, 141, 2126, 0, 2126,
- 0, -272, 0, 144, 0, 145, -272, 151, 158, 0,
- 162, 342, 0, 0, 166, 150, 2126, 0, 0, 0,
- 9, 0, 16, 0, 19, 0, 60, 2126, 2126, 47,
- 0, 21, 94, 2126, 78, 0, 0, 91, 0, 95,
- 0, 101, 0, 153, 0, 268, 0, 92, 92, 92,
- 92, 2126, 92, 2126, 188, 0, 0, 0, 0, 96,
- 1152, 109, 0, 0, 196, 0, 0, 0, 0, 0,
- 0, 0, -217, -217, -204, -204, 198, -217, 185, 92,
- 0, 0, 0, 0, 0, 0, 92, 211, 0, 0,
- 92, 0, 1800, -217, 319, 0, 2126, -217, 216, 0,
- 0, 228, 0, 92, 92, 0, -204, 0,
+static short yysindex[] = { 0,
+ 0, 0, -199, 0, 0, 0, -53, 0, 0, 0,
+ 0, 0, 0, 0, 646, 0, 0, 0, -217, -207,
+ 44, 0, 0, -207, 0, 0, 0, -32, -32, 0,
+ 66, 0, 2177, 0, 0, 69, 83, 93, 110, -35,
+ 2177, 119, 121, 136, 1013, 973, -32, 1077, 1344, -146,
+ 2177, 68, -32, 2177, 2177, 2177, 2177, 2177, 2177, 1384,
+ 1424, 0, 2177, 2177, -32, -32, -32, -32, -152, 0,
+ 470, 845, -13, -65, -63, 0, 0, 55, 137, 122,
+ 138, 0, 0, 0, 60, 0, -70, 0, -66, -70,
+ 0, 0, 0, 0, 0, 2177, 146, 2177, 1085, 60,
+ -70, 0, 0, 0, 0, 0, 0, 152, 845, 153,
+ 1464, 973, 0, 1085, 0, -65, 138, 0, 2177, 0,
+ 160, 0, 1085, 2, 76, -52, 2177, 1085, 1524, 0,
+ 0, 0, -96, 0, 138, -181, -181, -181, -112, -112,
+ 123, -38, 0, -74, -181, -181, 0, 0, 0, 0,
+ 60, 0, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 0, 0, -16, 2177, 1731, 2177, 2177,
+ 2177, 2177, 2177, 2177, 1791, 0, 2177, 0, 0, -88,
+ -34, -88, 339, 0, 2177, 287, 0, -88, 2177, 2177,
+ 2177, 2177, 173, 1850, 0, 0, 0, -33, 46, 180,
+ 2177, 138, 1910, 2025, 0, 97, 0, 0, -31, -29,
+ 0, 2177, 133, 0, 0, -237, -237, 0, -237, -237,
+ -237, -69, 0, 1614, 1085, 684, 167, 107, 845, 3800,
+ 1125, 405, 1164, 778, -228, -181, -181, 2177, 0, 2117,
+ 2177, 0, 197, -48, 0, -9, -72, -45, -7, -42,
+ 56, -36, 0, -4, 845, -10, -47, 2177, -47, 0,
+ 216, 2177, 0, 2177, 60, -237, 0, 219, 0, 230,
+ -237, 233, 237, 0, 242, 470, 0, 0, 246, 225,
+ 2177, 0, 0, 0, 13, 0, 18, 0, 29, 0,
+ 0, 0, 61, 2177, 2177, 54, 0, 32, 63, 2177,
+ 165, 0, 0, 174, 0, 178, 0, 191, 0, 0,
+ 0, 0, 0, 261, 0, 0, 350, 0, 0, 182,
+ 182, 182, 182, 2177, 182, 2177, 281, 0, 0, 0,
+ 0, 102, 1237, 202, 0, 0, 294, 0, 0, 0,
+ 0, 0, 0, 0, -152, -152, -130, -130, 297, -152,
+ 290, 182, 0, 0, 0, 0, 0, 0, 182, 318,
+ 0, 0, 182, 0, 1850, -152, 407, 0, 2177, -152,
+ 324, 0, 0, 326, 0, 182, 182, 0, -130, 0,
};
-static short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
+static short yyrindex[] = { 0,
+ 0, 0, 243, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 23, 2214, 0,
- 0, 2264, 2308, 0, 0, 0, 0, 0, 0, 0,
+ 36, 451, 0, 0, 2208, 2271, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 105, 0, -18, 1030,
- 2383, 2433, 2561, 0, 0, 2636, 2686, 0, 918, 0,
- 0, 0, 0, -25, 0, 0, 0, 0, 0, 0,
- 0, 2308, 0, 0, 3879, 0, 165, 0, 0, 0,
- 0, 0, 0, 0, 1356, 0, 0, 232, 0, 3936,
- 502, 561, 3047, 0, 0, 0, 2730, 0, 3987, 2433,
- 0, 0, 2308, 0, 3096, 3236, 3300, 3436, 1656, 3186,
- 2780, 0, 0, 0, 3487, 3550, 0, 0, 0, 0,
- 4025, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 115, 0,
+ -12, 939, 2325, 2385, 2463, 0, 0, 2510, 2561, 0,
+ 1220, 0, 0, 0, 0, 0, -44, 0, 0, -44,
+ 0, 0, 0, 0, 0, 2271, 0, 0, 3846, 0,
+ -105, 0, 0, 0, 0, 0, 0, 0, 2612, 0,
+ 0, 327, 0, 3883, 522, 583, 3032, 0, 0, 0,
+ 2621, 0, 3893, 2385, 0, 0, 2271, 3930, 0, 0,
+ 0, 0, 2667, 0, 3092, 3374, 3418, 3458, 3219, 3331,
+ 2746, 0, 0, 0, 3496, 3567, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2828, 0, 0,
- 0, 0, 887, 0, 232, 0, 0, 0, 242, 0,
- 0, 0, 0, 226, 0, 0, 0, 0, 249, 0,
- 0, 3142, 0, 0, 0, 0, 0, 0, 2889, 0,
- 0, -4, 10, 0, 11, 17, 24, 363, 0, -27,
- 664, 3890, 3686, 3737, 1507, 0, 4291, 4188, 4155, 4035,
- 3842, 3586, 3623, 0, 0, 0, 0, 0, 2983, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1640, 0, 0, 0, 233, 0, 0, 0, 0, 2308,
- 0, 37, 0, 0, 0, 0, 262, 0, 0, 0,
- 0, 52, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 2797, 0, 0, -23,
+ 0, -23, 913, 0, 327, 0, 0, 247, 336, 0,
+ 0, 0, 0, 333, 0, 0, 0, 0, 352, 0,
+ 0, 3138, 0, 0, 0, 0, 0, 0, 0, 2857,
+ 0, 0, 2903, 0, 0, -8, -2, 0, 7, 33,
+ 42, 2255, 0, -28, 3968, 1822, 3732, 3769, 3023, 0,
+ 4119, 4082, 4021, 4005, 1044, 3610, 3694, 0, 0, 0,
+ 0, 0, 2949, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 3657, -21, 0, 345, 0, 0,
+ 0, 0, 0, 2271, 0, 71, 0, 0, 0, 0,
+ 364, 0, 0, 0, 0, 86, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 232, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 327,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 264, 0, 0, 0, 0, 0, 0,
- -19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 105, 105, 168, 168, 0, 105, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 298, 105, 887, 0, 0, 105, 0, 0,
- 0, 0, 0, 0, 0, 0, 168, 0,
+ 0, 0, 0, 0, 0, 355, 0, 0, 0, 0,
+ 0, 0, 2972, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 115, 115, 175, 175, 0, 115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 374, 115, 913, 0, 0, 115,
+ 0, 0, 0, 0, 0, 0, 0, 0, 175, 0,
};
-static short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
- 0, 0, 0, 0, 340, -38, 0, 0, 215, -138,
- 14, 97, 190, -85, -179, 583, 0, 0, 0, 0,
- 286, 0, -140, 0, 0, 0, 0, 0, 0, 0,
- 0,
+static short yygindex[] = { 0,
+ 0, 0, 164, 383, 0, 14, 0, 37, 655, -89,
+ 0, 0, 0, -336, -15, 3415, 0, 2211, 368, 369,
+ 0, 0, 0, 410, 916, 0, 0, 273, -163, 62,
+ 94, 249, -71, -186, 634, 0, 0, 0, 428, -46,
+ 184, 118, 0, -149, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
};
-#define YYTABLESIZE 4610
-static short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
- 174, 107, 15, 204, 107, 149, 150, 83, 278, 210,
- 104, 104, 122, 58, 94, 104, 18, 207, 107, 107,
- 15, 296, 171, 132, 134, 98, 368, 303, 85, 316,
- 39, 16, 173, 113, 18, 275, 317, 17, 123, 318,
- 142, 323, 175, 147, 20, 104, 147, 99, 39, 16,
- 170, 347, 348, 107, 172, 17, 202, 38, 23, 279,
- 147, 147, 20, 100, 113, 147, 189, 190, 191, 192,
- 193, 194, 40, 198, 199, 38, 101, 58, 23, 154,
- 155, 300, 168, 302, 26, 322, 171, 106, 107, 62,
- 15, 108, 176, 236, 325, 147, 162, 163, 178, 177,
- 164, 23, 180, 165, 166, 167, 182, 185, 195, 203,
- 212, 213, 215, 216, 217, 218, 219, 26, 315, 196,
- 26, 26, 26, 297, 26, 167, 26, 26, 299, 26,
- 301, 205, 319, 208, 240, 242, 243, 244, 245, 246,
- 247, 248, 250, 26, 237, 255, 62, 21, 26, 304,
- 280, 199, 286, 337, 307, 262, 213, 288, 213, 150,
- 272, 305, 294, 277, 308, 309, 324, 281, 341, 283,
- 285, 310, 345, 346, 287, 26, 234, 352, 311, 19,
- 21, 312, 326, 21, 21, 21, 313, 21, 314, 21,
- 21, 330, 21, 360, 332, 327, 113, 363, 362, 328,
- 290, 113, 292, 293, 2, 329, 21, 26, 340, 26,
- 26, 21, 88, 342, 149, 150, 343, 89, 351, 149,
- 150, 149, 150, 353, 104, 104, 104, 104, 149, 150,
- 357, 104, 107, 107, 107, 107, 364, 44, 21, 107,
- 44, 44, 44, 102, 44, 355, 44, 44, 365, 44,
- 104, 104, 165, 104, 320, 149, 150, 52, 107, 107,
- 199, 107, 37, 44, 35, 149, 150, 58, 44, 166,
- 21, 163, 21, 21, 147, 147, 147, 147, 149, 150,
- 262, 147, 40, 147, 149, 150, 149, 150, 331, 147,
- 147, 147, 147, 149, 150, 44, 149, 150, 149, 150,
- 147, 147, 37, 147, 147, 147, 147, 147, 147, 147,
- 157, 235, 147, 149, 150, 147, 147, 147, 35, 69,
- 149, 150, 149, 150, 149, 150, 21, 44, 149, 150,
- 44, 97, 78, 149, 150, 149, 150, 149, 150, 214,
- 26, 26, 26, 26, 26, 26, 359, 26, 26, 26,
+#define YYTABLESIZE 4423
+static short yytable[] = { 71,
+ 65, 193, 223, 65, 107, 22, 216, 292, 271, 301,
+ 311, 321, 111, 314, 60, 111, 316, 60, 224, 65,
+ 313, 372, 318, 250, 194, 181, 178, 183, 15, 111,
+ 111, 312, 18, 126, 111, 62, 319, 64, 39, 84,
+ 289, 214, 269, 192, 142, 144, 15, 16, 275, 86,
+ 18, 69, 390, 338, 198, 217, 39, 180, 339, 182,
+ 163, 164, 158, 159, 111, 16, 4, 5, 6, 340,
+ 7, 8, 345, 17, 251, 26, 155, 179, 60, 155,
+ 172, 113, 20, 173, 122, 315, 174, 175, 176, 293,
+ 26, 17, 181, 155, 155, 208, 209, 9, 155, 62,
+ 20, 64, 88, 65, 67, 98, 248, 129, 102, 177,
+ 127, 38, 344, 219, 26, 199, 200, 201, 202, 203,
+ 204, 188, 103, 347, 180, 151, 40, 337, 155, 38,
+ 173, 66, 104, 174, 175, 176, 197, 226, 227, 229,
+ 230, 231, 232, 233, 15, 369, 370, 26, 317, 105,
+ 26, 26, 26, 341, 26, 346, 26, 26, 110, 26,
+ 111, 254, 256, 257, 258, 259, 260, 261, 262, 264,
+ 359, 23, 24, 26, 21, 112, 185, 184, 26, 209,
+ 186, 187, 26, 276, 227, 195, 227, 225, 286, 189,
+ 191, 205, 60, 206, 363, 295, 324, 297, 299, 213,
+ 215, 220, 328, 21, 176, 26, 303, 21, 65, 266,
+ 21, 21, 21, 222, 21, 384, 21, 21, 291, 21,
+ 294, 300, 268, 304, 92, 158, 159, 158, 159, 93,
+ 302, 159, 306, 21, 308, 309, 310, 26, 21, 26,
+ 26, 249, 2, 111, 111, 111, 111, 158, 159, 320,
+ 111, 158, 159, 60, 158, 159, 326, 158, 159, 330,
+ 106, 158, 159, 158, 159, 21, 158, 159, 158, 159,
+ 331, 111, 111, 332, 111, 44, 377, 333, 44, 44,
+ 44, 334, 44, 336, 44, 44, 335, 44, 342, 348,
+ 158, 159, 158, 159, 209, 158, 159, 21, 349, 21,
+ 21, 44, 350, 322, 354, 322, 44, 155, 155, 155,
+ 155, 329, 158, 159, 155, 351, 155, 158, 159, 352,
+ 276, 362, 155, 155, 155, 155, 364, 273, 158, 159,
+ 272, 158, 159, 44, 365, 155, 155, 373, 155, 155,
+ 155, 155, 155, 155, 155, 158, 159, 155, 375, 166,
+ 155, 155, 155, 158, 159, 158, 159, 379, 53, 71,
+ 158, 159, 158, 159, 386, 44, 387, 180, 44, 62,
+ 26, 26, 26, 26, 26, 26, 37, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
- 256, 269, 188, 26, 26, 0, 26, 26, 26, 26,
- 26, 149, 150, 149, 150, 26, 26, 26, 26, 26,
- 26, 0, 0, 67, 26, 0, 67, 4, 5, 6,
- 339, 7, 8, 26, 0, 26, 26, 0, 0, 0,
- 0, 67, 0, 21, 21, 21, 21, 21, 21, 0,
+ 353, 35, 181, 26, 26, 163, 26, 26, 26, 26,
+ 26, 158, 159, 178, 40, 26, 26, 26, 26, 26,
+ 26, 26, 166, 37, 35, 172, 26, 101, 173, 131,
+ 132, 174, 175, 176, 80, 26, 228, 26, 26, 361,
+ 21, 21, 21, 21, 21, 21, 381, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
- 21, 21, 21, 361, 0, 0, 21, 21, 154, 21,
- 21, 21, 21, 21, 0, 67, 0, 0, 21, 21,
- 21, 21, 21, 21, 0, 0, 163, 21, 259, 164,
- 0, 258, 165, 166, 167, 0, 21, 0, 21, 21,
- 44, 44, 44, 44, 44, 44, 0, 44, 44, 44,
- 157, 0, 0, 44, 0, 0, 44, 44, 44, 44,
- 0, 0, 0, 44, 44, 0, 44, 44, 44, 44,
- 44, 0, 0, 0, 0, 44, 44, 44, 44, 44,
- 44, 4, 5, 6, 44, 7, 8, 164, 0, 0,
- 165, 166, 167, 44, 177, 44, 44, 177, 177, 177,
- 0, 177, 161, 177, 177, 161, 177, 0, 151, 0,
- 0, 0, 0, 0, 152, 153, 154, 155, 0, 161,
- 161, 0, 0, 0, 161, 177, 0, 0, 156, 158,
- 159, 160, 161, 162, 163, 0, 0, 164, 0, 0,
- 165, 166, 167, 0, 4, 5, 6, 0, 7, 8,
- 0, 0, 177, 178, 161, 0, 178, 178, 178, 0,
- 178, 126, 178, 178, 126, 178, 0, 0, 93, 0,
- 0, 0, 0, 144, 145, 146, 147, 0, 126, 126,
- 148, 0, 0, 126, 178, 115, 116, 177, 0, 0,
- 0, 0, 124, 0, 67, 67, 67, 67, 0, 149,
- 150, 67, 0, 0, 137, 138, 139, 140, 0, 0,
- 0, 0, 0, 126, 52, 0, 0, 62, 64, 50,
- 67, 57, 0, 65, 61, 0, 60, 0, 334, 335,
- 336, 0, 338, 0, 0, 152, 153, 154, 155, 0,
- 59, 163, 0, 0, 164, 63, 178, 165, 166, 167,
- 201, 159, 160, 161, 162, 163, 0, 0, 164, 354,
- 0, 165, 166, 167, 100, 0, 356, 100, 151, 0,
- 358, 0, 58, 0, 152, 153, 154, 155, 0, 0,
- 0, 100, 100, 366, 367, 0, 100, 0, 156, 158,
- 159, 160, 161, 162, 163, 0, 0, 164, 0, 0,
- 165, 166, 167, 0, 23, 0, 0, 53, 0, 0,
- 0, 0, 0, 0, 0, 0, 100, 0, 177, 177,
- 177, 177, 177, 0, 177, 177, 177, 0, 0, 0,
- 177, 0, 289, 161, 161, 161, 161, 157, 0, 0,
- 161, 177, 161, 177, 177, 177, 177, 177, 161, 161,
- 161, 161, 177, 177, 177, 177, 177, 177, 0, 161,
- 161, 177, 161, 161, 161, 161, 161, 161, 161, 0,
- 177, 161, 177, 177, 161, 161, 161, 178, 178, 178,
- 178, 178, 0, 178, 178, 178, 0, 0, 0, 178,
- 0, 0, 126, 126, 126, 126, 0, 0, 0, 126,
- 178, 126, 178, 178, 178, 178, 178, 126, 126, 126,
- 126, 178, 178, 178, 178, 178, 178, 0, 126, 126,
- 178, 126, 126, 126, 126, 126, 126, 126, 0, 178,
- 126, 178, 178, 126, 126, 126, 0, 22, 24, 25,
- 26, 27, 28, 0, 29, 30, 31, 0, 0, 157,
- 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, 44,
- 0, 51, 44, 44, 44, 67, 44, 0, 44, 44,
- 54, 44, 55, 56, 0, 100, 100, 100, 100, 0,
- 0, 0, 100, 0, 100, 44, 0, 0, 0, 0,
- 44, 100, 0, 0, 109, 0, 0, 118, 68, 0,
- 0, 100, 100, 0, 100, 100, 100, 100, 100, 0,
- 152, 153, 154, 155, 0, 52, 68, 44, 62, 64,
- 50, 0, 57, 0, 65, 61, 0, 60, 161, 162,
- 163, 0, 0, 164, 179, 151, 165, 166, 167, 0,
- 0, 152, 153, 154, 155, 0, 63, 0, 187, 44,
- 68, 0, 44, 0, 0, 156, 158, 159, 160, 161,
- 162, 163, 0, 0, 164, 0, 0, 165, 166, 167,
- 0, 52, 0, 58, 62, 64, 50, 0, 57, 0,
- 65, 61, 0, 60, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 211, 0, 0, 152, 153, 154,
- 155, 0, 63, 0, 0, 23, 0, 0, 53, 0,
- 71, 0, 0, 71, 160, 161, 162, 163, 0, 0,
- 164, 0, 0, 165, 166, 167, 0, 71, 71, 58,
- 0, 0, 0, 253, 52, 0, 0, 62, 64, 50,
- 261, 57, 0, 65, 61, 0, 60, 151, 0, 0,
- 0, 0, 0, 152, 153, 154, 155, 0, 0, 0,
- 0, 23, 71, 0, 53, 63, 0, 156, 158, 159,
- 160, 161, 162, 163, 0, 0, 164, 0, 0, 165,
- 166, 167, 44, 44, 44, 44, 44, 44, 0, 44,
- 44, 44, 58, 0, 0, 44, 0, 0, 44, 44,
- 44, 44, 0, 0, 0, 44, 44, 0, 44, 44,
- 44, 44, 44, 0, 0, 0, 0, 44, 44, 44,
- 44, 44, 44, 0, 23, 0, 44, 53, 0, 68,
- 68, 68, 68, 0, 0, 44, 68, 44, 44, 111,
- 25, 26, 27, 28, 89, 29, 30, 31, 0, 0,
- 0, 32, 0, 0, 157, 68, 68, 0, 0, 0,
- 0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 0, 0, 51, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 24, 25, 26, 27, 28,
- 0, 29, 30, 31, 0, 52, 0, 32, 62, 64,
- 50, 0, 57, 131, 65, 61, 0, 60, 38, 0,
- 39, 40, 41, 42, 43, 0, 0, 0, 0, 44,
- 45, 46, 47, 48, 49, 0, 63, 0, 51, 0,
- 0, 71, 71, 71, 71, 0, 0, 54, 71, 55,
- 56, 0, 152, 153, 154, 155, 0, 0, 117, 25,
- 26, 27, 28, 58, 29, 30, 31, 71, 71, 0,
- 32, 162, 163, 0, 0, 164, 0, 0, 165, 166,
- 167, 38, 0, 39, 40, 41, 42, 43, 0, 0,
- 0, 0, 44, 45, 46, 47, 48, 49, 53, 52,
- 0, 51, 62, 64, 50, 0, 57, 0, 65, 61,
- 54, 60, 55, 56, 152, 0, 154, 155, 0, 0,
- 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
- 63, 91, 91, 162, 163, 0, 148, 164, 0, 148,
- 165, 166, 167, 104, 0, 0, 0, 0, 0, 112,
- 91, 120, 0, 148, 148, 52, 91, 58, 62, 64,
- 50, 0, 57, 0, 65, 61, 0, 60, 91, 91,
- 91, 91, 151, 0, 0, 0, 0, 0, 152, 153,
- 154, 155, 0, 0, 0, 0, 63, 0, 148, 0,
- 0, 0, 53, 158, 159, 160, 161, 162, 163, 0,
- 0, 164, 0, 0, 165, 166, 167, 0, 0, 0,
- 0, 0, 0, 58, 112, 133, 52, 0, 0, 62,
- 64, 50, 0, 57, 197, 65, 61, 0, 60, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 0, 0, 0, 0, 0, 63, 53, 0,
- 0, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 154, 155, 51, 238, 58, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 0, 0, 95, 163, 0,
- 95, 164, 0, 0, 165, 166, 167, 0, 0, 270,
- 0, 0, 0, 0, 95, 95, 0, 52, 0, 53,
- 62, 64, 50, 0, 57, 241, 65, 61, 0, 60,
- 0, 0, 0, 24, 25, 26, 27, 28, 0, 29,
- 30, 31, 0, 0, 0, 32, 0, 0, 63, 95,
- 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, 58, 51, 148, 148, 148,
- 148, 0, 0, 0, 148, 54, 0, 55, 56, 24,
- 25, 26, 27, 28, 0, 29, 30, 31, 0, 0,
- 0, 32, 0, 148, 148, 0, 0, 0, 0, 0,
- 53, 0, 38, 0, 39, 40, 41, 42, 43, 0,
- 0, 0, 0, 44, 45, 46, 47, 48, 49, 0,
- 70, 0, 51, 70, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 55, 56, 0, 116, 70, 70, 116,
- 24, 25, 26, 27, 28, 0, 29, 30, 31, 0,
- 0, 0, 32, 116, 116, 0, 0, 0, 116, 0,
- 0, 0, 0, 38, 0, 39, 40, 41, 42, 43,
- 0, 0, 70, 0, 44, 45, 46, 47, 48, 49,
- 0, 0, 0, 51, 0, 0, 0, 0, 116, 0,
- 0, 0, 54, 0, 55, 56, 0, 52, 0, 0,
- 62, 64, 50, 0, 57, 249, 65, 61, 0, 60,
- 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,
- 95, 95, 0, 0, 0, 95, 0, 0, 63, 0,
- 0, 24, 25, 26, 27, 28, 0, 29, 30, 31,
- 0, 0, 0, 32, 95, 95, 0, 0, 0, 0,
- 0, 0, 0, 0, 38, 58, 39, 40, 41, 42,
- 43, 0, 0, 0, 0, 44, 45, 46, 47, 48,
- 49, 0, 52, 0, 51, 62, 64, 50, 0, 57,
- 0, 65, 61, 54, 60, 55, 56, 0, 0, 0,
- 53, 152, 153, 154, 155, 0, 0, 0, 0, 0,
- 0, 0, 0, 63, 0, 0, 158, 159, 160, 161,
- 162, 163, 0, 0, 164, 0, 0, 165, 166, 167,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 58, 0, 0, 52, 0, 0, 62, 64, 50, 0,
- 57, 282, 65, 61, 0, 60, 0, 0, 0, 0,
- 0, 70, 70, 70, 70, 0, 0, 0, 70, 0,
- 0, 0, 0, 0, 63, 53, 0, 116, 116, 116,
- 116, 0, 0, 0, 116, 0, 116, 70, 70, 0,
- 0, 0, 116, 116, 116, 116, 0, 0, 0, 0,
- 0, 58, 0, 116, 116, 0, 116, 116, 116, 116,
- 116, 116, 116, 0, 0, 116, 0, 0, 52, 0,
- 0, 62, 64, 50, 0, 57, 284, 65, 61, 0,
- 60, 24, 25, 26, 27, 28, 53, 29, 30, 31,
- 0, 0, 0, 32, 0, 0, 0, 0, 0, 63,
- 0, 0, 0, 0, 38, 0, 39, 40, 41, 42,
- 43, 0, 0, 0, 0, 44, 45, 46, 47, 48,
- 49, 0, 0, 0, 51, 0, 58, 0, 0, 0,
- 0, 0, 0, 54, 0, 55, 56, 0, 52, 0,
- 0, 62, 64, 50, 0, 57, 291, 65, 61, 0,
- 60, 0, 0, 0, 0, 22, 24, 25, 26, 27,
- 28, 53, 29, 30, 31, 0, 0, 0, 32, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
- 0, 39, 40, 41, 42, 43, 0, 0, 0, 0,
- 44, 45, 46, 47, 48, 49, 58, 0, 0, 51,
- 0, 0, 0, 0, 0, 0, 0, 0, 54, 0,
- 55, 56, 0, 0, 0, 0, 0, 24, 25, 26,
- 27, 28, 0, 29, 30, 31, 0, 0, 0, 32,
- 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
- 38, 0, 39, 40, 41, 42, 43, 0, 0, 0,
- 0, 44, 45, 46, 47, 48, 49, 0, 52, 0,
- 51, 62, 64, 50, 0, 57, 0, 65, 61, 54,
- 60, 55, 56, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 38, 58, 39, 40, 41,
- 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 0, 0, 51, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 0, 53, 0, 0, 154, 0, 0, 154, 0, 0,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 154, 154, 0, 32, 0, 154, 0, 0, 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, 150, 51, 154, 150, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 0, 150, 150, 0, 0, 0, 150, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 163, 0,
- 0, 163, 0, 0, 0, 0, 150, 0, 0, 0,
- 0, 0, 0, 0, 0, 163, 163, 0, 0, 0,
- 163, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 24, 25, 26, 27, 28, 0, 29, 30,
- 31, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 163, 0, 0, 0, 0, 38, 0, 39, 40, 41,
- 42, 43, 0, 0, 0, 0, 44, 45, 46, 47,
- 48, 49, 0, 131, 0, 51, 131, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 55, 56, 0, 0,
- 131, 131, 0, 0, 0, 131, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 126, 0, 131, 126, 0, 0, 0,
- 0, 0, 0, 0, 0, 154, 154, 154, 154, 0,
- 126, 126, 154, 0, 154, 126, 0, 0, 0, 0,
- 154, 154, 154, 154, 0, 0, 0, 0, 0, 0,
- 0, 154, 154, 0, 154, 154, 154, 154, 154, 154,
- 154, 0, 0, 154, 0, 126, 154, 154, 154, 0,
- 0, 0, 0, 0, 0, 150, 150, 150, 150, 0,
- 0, 0, 150, 0, 150, 0, 0, 0, 0, 0,
- 150, 150, 150, 150, 0, 0, 0, 0, 0, 0,
- 0, 150, 150, 0, 150, 150, 150, 150, 150, 150,
- 150, 0, 0, 150, 0, 0, 150, 150, 150, 163,
- 163, 163, 163, 0, 0, 0, 163, 0, 163, 0,
- 0, 0, 0, 0, 163, 163, 163, 163, 0, 0,
- 0, 129, 0, 0, 129, 163, 163, 0, 163, 163,
- 163, 163, 163, 163, 163, 0, 0, 163, 129, 129,
- 163, 163, 163, 129, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 129, 131, 131, 131, 131, 0, 0,
- 0, 131, 0, 131, 0, 0, 0, 0, 0, 131,
- 131, 131, 131, 0, 0, 0, 127, 0, 0, 127,
- 131, 131, 0, 131, 131, 131, 131, 131, 131, 131,
- 0, 0, 131, 127, 127, 131, 131, 131, 127, 0,
- 0, 0, 0, 0, 126, 126, 126, 126, 0, 0,
- 0, 126, 0, 126, 0, 0, 0, 0, 0, 126,
- 126, 126, 126, 0, 0, 0, 137, 0, 127, 137,
- 126, 126, 0, 126, 126, 126, 126, 126, 126, 126,
- 0, 0, 126, 137, 137, 126, 126, 126, 137, 0,
+ 283, 90, 325, 21, 21, 0, 21, 21, 21, 21,
+ 21, 0, 0, 270, 0, 21, 21, 21, 21, 21,
+ 21, 21, 367, 368, 0, 172, 21, 374, 173, 0,
+ 0, 174, 175, 176, 0, 21, 0, 21, 21, 0,
+ 0, 162, 0, 382, 162, 0, 0, 385, 44, 44,
+ 44, 44, 44, 44, 0, 44, 44, 44, 162, 162,
+ 0, 44, 0, 162, 44, 44, 44, 44, 0, 0,
+ 0, 44, 44, 0, 44, 44, 44, 44, 44, 0,
+ 0, 383, 0, 44, 44, 44, 44, 44, 44, 0,
+ 0, 0, 0, 162, 44, 0, 0, 0, 0, 0,
+ 0, 0, 0, 44, 190, 44, 44, 190, 190, 190,
+ 0, 190, 169, 190, 190, 169, 190, 160, 0, 0,
+ 0, 0, 0, 161, 162, 163, 164, 0, 0, 169,
+ 169, 0, 0, 0, 169, 190, 0, 0, 0, 165,
+ 167, 168, 169, 170, 171, 172, 0, 0, 173, 0,
+ 0, 174, 175, 176, 4, 5, 6, 0, 7, 8,
+ 0, 0, 190, 0, 169, 191, 0, 0, 191, 191,
+ 191, 0, 191, 134, 191, 191, 134, 191, 0, 0,
+ 160, 0, 0, 0, 0, 9, 161, 162, 163, 164,
+ 134, 134, 0, 0, 0, 134, 191, 190, 0, 0,
+ 0, 0, 165, 167, 168, 169, 170, 171, 172, 0,
+ 0, 173, 97, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 4, 5, 6, 134, 7, 8, 55, 119,
+ 120, 65, 67, 53, 0, 60, 134, 68, 64, 0,
+ 63, 161, 162, 163, 164, 0, 0, 0, 147, 148,
+ 149, 150, 0, 9, 62, 0, 0, 0, 191, 66,
+ 169, 170, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 162, 162, 162, 162, 0, 0, 0, 162,
+ 0, 162, 0, 0, 0, 0, 61, 162, 162, 162,
+ 162, 153, 154, 155, 156, 211, 0, 0, 157, 0,
+ 162, 162, 0, 162, 162, 162, 162, 162, 162, 162,
+ 0, 0, 162, 0, 0, 162, 162, 162, 26, 158,
+ 159, 56, 0, 0, 0, 0, 0, 0, 190, 190,
+ 190, 190, 190, 0, 190, 190, 190, 0, 0, 0,
+ 190, 0, 0, 169, 169, 169, 169, 0, 0, 0,
+ 169, 190, 169, 190, 190, 190, 190, 190, 169, 169,
+ 169, 169, 190, 190, 190, 190, 190, 190, 0, 0,
+ 0, 169, 169, 190, 169, 169, 169, 169, 169, 169,
+ 169, 0, 190, 169, 190, 190, 169, 169, 169, 191,
+ 191, 191, 191, 191, 0, 191, 191, 191, 0, 0,
+ 0, 191, 0, 0, 134, 134, 134, 134, 0, 0,
+ 0, 134, 191, 134, 191, 191, 191, 191, 191, 134,
+ 134, 134, 134, 191, 191, 191, 191, 191, 191, 0,
+ 0, 0, 134, 134, 191, 134, 134, 134, 134, 134,
+ 134, 134, 0, 191, 134, 191, 191, 134, 134, 134,
+ 0, 25, 27, 28, 29, 30, 31, 166, 32, 33,
+ 34, 0, 0, 0, 35, 0, 0, 36, 37, 38,
+ 39, 0, 0, 0, 40, 41, 0, 42, 43, 44,
+ 45, 46, 0, 0, 0, 0, 47, 48, 49, 50,
+ 51, 52, 0, 0, 0, 44, 0, 54, 44, 44,
+ 44, 0, 44, 0, 44, 44, 57, 44, 58, 59,
+ 0, 117, 0, 0, 0, 0, 0, 0, 0, 135,
+ 161, 44, 163, 164, 0, 0, 44, 0, 0, 78,
+ 0, 0, 78, 0, 0, 356, 357, 358, 0, 360,
+ 0, 171, 172, 0, 0, 173, 78, 78, 174, 175,
+ 176, 0, 0, 44, 0, 55, 0, 0, 65, 67,
+ 53, 117, 60, 0, 68, 64, 376, 63, 0, 0,
+ 0, 0, 0, 378, 0, 0, 0, 380, 0, 0,
+ 0, 78, 0, 0, 212, 44, 66, 0, 44, 0,
+ 388, 389, 117, 0, 0, 55, 0, 0, 65, 67,
+ 53, 0, 60, 0, 68, 64, 0, 63, 0, 0,
+ 0, 0, 0, 61, 161, 162, 163, 164, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 0, 0,
+ 0, 0, 0, 0, 106, 171, 172, 106, 0, 173,
+ 0, 0, 174, 175, 176, 26, 0, 0, 56, 0,
+ 0, 106, 106, 61, 0, 0, 106, 0, 0, 55,
+ 0, 0, 65, 67, 53, 0, 60, 0, 68, 64,
+ 0, 63, 0, 0, 0, 160, 0, 0, 0, 0,
+ 0, 161, 162, 163, 164, 26, 106, 0, 56, 0,
+ 66, 0, 0, 0, 0, 0, 0, 165, 167, 168,
+ 169, 170, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 61, 44, 44,
+ 44, 44, 44, 44, 0, 44, 44, 44, 0, 0,
+ 0, 44, 0, 117, 44, 44, 44, 44, 0, 117,
+ 0, 44, 44, 0, 44, 44, 44, 44, 44, 26,
+ 0, 0, 56, 44, 44, 44, 44, 44, 44, 0,
+ 78, 78, 78, 78, 44, 0, 0, 78, 0, 0,
+ 0, 0, 0, 44, 0, 44, 44, 0, 0, 115,
+ 28, 29, 30, 31, 93, 32, 33, 34, 78, 78,
+ 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 41, 0, 42, 43, 44, 45, 46, 0,
+ 75, 0, 0, 47, 48, 49, 50, 51, 52, 27,
+ 28, 29, 30, 31, 54, 32, 33, 34, 75, 0,
+ 0, 35, 0, 57, 0, 58, 59, 0, 0, 0,
+ 0, 0, 41, 0, 42, 43, 44, 45, 46, 166,
+ 0, 0, 0, 47, 48, 49, 50, 51, 52, 0,
+ 0, 0, 75, 0, 54, 106, 106, 106, 106, 0,
+ 0, 0, 106, 57, 106, 58, 59, 0, 0, 0,
+ 106, 106, 0, 121, 28, 29, 30, 31, 0, 32,
+ 33, 34, 0, 106, 106, 35, 106, 106, 106, 106,
+ 106, 106, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 163, 164, 0, 55, 0, 54, 65,
+ 67, 53, 0, 60, 0, 68, 64, 57, 63, 58,
+ 59, 0, 171, 172, 0, 0, 173, 0, 0, 174,
+ 175, 176, 125, 0, 0, 0, 0, 66, 0, 0,
+ 0, 161, 162, 163, 164, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 141, 68, 64, 0, 63, 168,
+ 169, 170, 171, 172, 61, 0, 173, 0, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 66, 0, 0,
+ 161, 162, 163, 164, 0, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 0, 68, 64, 0, 63, 56,
+ 170, 171, 172, 0, 61, 173, 0, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 66, 0, 0,
+ 0, 75, 75, 75, 75, 0, 55, 0, 75, 65,
+ 67, 53, 0, 60, 207, 68, 64, 0, 63, 56,
+ 0, 0, 0, 0, 61, 0, 143, 160, 0, 75,
+ 75, 0, 0, 161, 162, 163, 164, 66, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 167, 168, 169, 170, 171, 172, 0, 0, 173, 56,
+ 0, 174, 175, 176, 61, 0, 55, 0, 0, 65,
+ 67, 53, 0, 60, 218, 68, 64, 0, 63, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 161, 0, 0, 161, 0, 0, 0, 0, 137, 0,
- 0, 0, 0, 0, 0, 0, 0, 161, 161, 0,
- 0, 0, 161, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 56,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 28, 29, 30, 31, 0, 32, 33, 34, 0,
+ 0, 0, 35, 0, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 56,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 0,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 27, 28, 29, 30, 31, 54, 32, 33, 34, 0,
+ 0, 0, 35, 0, 57, 0, 58, 59, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 0, 0, 0, 55, 0, 54, 65, 67, 53, 0,
+ 60, 255, 68, 64, 57, 63, 58, 59, 0, 0,
+ 27, 28, 29, 30, 31, 0, 32, 33, 34, 0,
+ 0, 0, 35, 0, 66, 0, 0, 0, 0, 0,
+ 0, 0, 0, 41, 0, 42, 43, 44, 45, 46,
+ 0, 0, 0, 0, 47, 48, 49, 50, 51, 52,
+ 0, 61, 0, 55, 0, 54, 65, 67, 53, 0,
+ 60, 263, 68, 64, 57, 63, 58, 59, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 120, 0, 161, 120, 0, 0, 0, 0, 0, 0,
- 0, 0, 129, 129, 129, 129, 0, 120, 120, 129,
- 0, 129, 120, 0, 0, 0, 0, 129, 129, 129,
- 129, 0, 0, 0, 0, 0, 0, 0, 129, 129,
- 0, 129, 129, 129, 129, 129, 129, 129, 69, 0,
- 129, 69, 120, 129, 129, 129, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 69, 69, 0, 0, 0,
- 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 127, 127, 127,
- 127, 0, 0, 0, 127, 0, 127, 0, 0, 0,
- 69, 0, 127, 127, 127, 127, 0, 0, 0, 119,
- 0, 0, 119, 127, 127, 0, 127, 127, 127, 127,
- 127, 127, 127, 0, 0, 127, 119, 119, 127, 127,
- 127, 119, 0, 0, 0, 0, 0, 137, 137, 137,
- 137, 0, 0, 0, 137, 0, 137, 0, 0, 0,
- 0, 0, 137, 137, 137, 137, 0, 0, 0, 0,
- 0, 119, 0, 137, 137, 0, 137, 137, 137, 137,
- 137, 137, 137, 0, 0, 137, 0, 0, 137, 137,
- 137, 161, 161, 161, 161, 0, 0, 0, 161, 0,
- 161, 0, 0, 0, 0, 0, 161, 161, 161, 161,
- 0, 0, 0, 75, 0, 0, 75, 161, 161, 0,
- 161, 161, 161, 161, 161, 161, 161, 0, 0, 161,
- 75, 75, 161, 161, 161, 75, 0, 0, 0, 0,
- 0, 120, 120, 120, 120, 0, 0, 0, 120, 0,
- 120, 0, 0, 0, 0, 0, 120, 120, 120, 120,
- 0, 0, 0, 0, 0, 75, 0, 120, 120, 0,
- 120, 120, 120, 120, 120, 120, 120, 164, 0, 120,
- 0, 0, 120, 120, 120, 0, 0, 0, 0, 69,
- 69, 69, 69, 0, 164, 164, 69, 0, 69, 164,
- 0, 0, 0, 0, 69, 69, 69, 69, 0, 0,
- 0, 0, 0, 0, 0, 69, 69, 0, 69, 69,
- 69, 69, 69, 69, 69, 0, 149, 69, 0, 164,
- 69, 69, 69, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 149, 149, 0, 0, 0, 149, 0,
- 119, 119, 119, 119, 0, 0, 0, 119, 0, 119,
- 0, 0, 0, 0, 0, 119, 119, 119, 119, 0,
- 0, 0, 72, 0, 0, 0, 119, 119, 149, 119,
- 119, 119, 119, 119, 119, 119, 0, 0, 119, 72,
- 72, 119, 119, 119, 72, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 56, 0, 0, 0,
+ 0, 0, 108, 0, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
+ 108, 61, 55, 0, 108, 65, 67, 53, 0, 60,
+ 0, 68, 64, 0, 63, 0, 0, 0, 0, 0,
+ 161, 162, 163, 164, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 108, 0, 56, 167, 168, 169,
+ 170, 171, 172, 0, 0, 173, 0, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 61, 0, 55, 0, 0, 65, 67, 53, 0, 60,
+ 296, 68, 64, 0, 63, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 117, 0, 0, 117,
- 0, 0, 0, 0, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 117, 117, 0, 0, 0, 117, 0,
- 0, 0, 0, 0, 75, 75, 75, 75, 0, 0,
- 0, 75, 0, 75, 0, 0, 0, 0, 0, 75,
- 75, 75, 75, 0, 0, 0, 111, 0, 117, 111,
- 75, 75, 0, 75, 75, 75, 75, 75, 75, 75,
- 0, 0, 75, 111, 111, 75, 75, 75, 111, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 164, 164,
- 164, 164, 0, 0, 0, 164, 0, 164, 111, 0,
- 0, 0, 0, 164, 164, 164, 164, 0, 0, 0,
- 112, 0, 0, 112, 164, 164, 0, 164, 164, 164,
- 164, 164, 164, 164, 0, 0, 164, 112, 112, 164,
- 164, 164, 112, 0, 0, 0, 0, 149, 149, 149,
- 149, 0, 0, 0, 149, 0, 149, 0, 0, 0,
- 0, 0, 149, 149, 149, 149, 0, 0, 0, 0,
- 0, 0, 112, 149, 149, 0, 149, 149, 149, 149,
- 149, 149, 149, 0, 0, 149, 0, 0, 149, 149,
- 149, 0, 0, 72, 72, 72, 72, 0, 0, 0,
- 72, 0, 72, 0, 0, 0, 0, 0, 72, 72,
- 72, 72, 0, 0, 0, 0, 0, 0, 0, 72,
- 72, 0, 72, 72, 72, 72, 72, 72, 72, 0,
- 0, 72, 0, 0, 72, 72, 72, 117, 117, 117,
- 117, 0, 0, 0, 117, 0, 117, 0, 0, 0,
- 0, 0, 117, 117, 117, 117, 113, 0, 0, 113,
- 0, 0, 0, 117, 117, 0, 117, 117, 117, 117,
- 117, 117, 117, 113, 113, 117, 0, 0, 113, 0,
- 0, 0, 0, 0, 0, 0, 0, 111, 111, 111,
- 111, 0, 0, 0, 111, 0, 111, 0, 0, 0,
- 0, 0, 111, 111, 111, 111, 0, 109, 113, 0,
- 109, 0, 0, 111, 111, 0, 111, 111, 111, 111,
- 111, 111, 111, 0, 109, 109, 0, 0, 0, 109,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 112, 112, 112, 112, 0, 0, 0, 112, 109,
- 112, 0, 0, 0, 0, 0, 112, 112, 112, 112,
- 110, 0, 0, 110, 0, 0, 0, 112, 112, 0,
- 112, 112, 112, 112, 112, 112, 112, 110, 110, 0,
- 0, 0, 110, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 108, 0, 0, 108,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 110, 108, 108, 0, 0, 0, 108, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 96, 0, 0, 96, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
- 96, 96, 0, 0, 0, 96, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 113, 113, 113,
- 113, 0, 0, 0, 113, 96, 113, 0, 0, 0,
- 0, 0, 113, 113, 113, 113, 97, 0, 0, 97,
- 0, 0, 0, 113, 113, 0, 113, 113, 113, 113,
- 113, 113, 113, 97, 97, 0, 0, 0, 97, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 109, 109,
- 109, 109, 0, 0, 0, 109, 0, 109, 0, 0,
- 0, 0, 0, 109, 109, 109, 109, 98, 97, 0,
- 98, 0, 0, 0, 109, 109, 0, 109, 109, 109,
- 109, 109, 109, 109, 98, 98, 0, 0, 0, 98,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 110, 110, 110, 110, 0, 0, 0, 110, 98,
- 110, 0, 0, 0, 0, 0, 110, 110, 110, 110,
- 0, 0, 0, 0, 0, 0, 0, 110, 110, 0,
- 110, 110, 110, 110, 110, 110, 110, 108, 108, 108,
- 108, 0, 0, 0, 108, 0, 108, 0, 0, 0,
- 0, 0, 108, 108, 108, 108, 0, 0, 0, 0,
- 0, 0, 99, 108, 108, 99, 108, 108, 108, 108,
- 108, 108, 108, 0, 96, 96, 96, 96, 0, 99,
- 99, 96, 0, 96, 99, 0, 0, 0, 0, 96,
- 96, 96, 96, 0, 0, 0, 0, 0, 0, 153,
- 96, 96, 153, 96, 96, 96, 96, 96, 96, 96,
- 101, 0, 0, 101, 99, 0, 153, 153, 0, 0,
- 0, 153, 0, 0, 0, 0, 0, 101, 101, 0,
- 0, 0, 101, 0, 0, 0, 0, 97, 97, 97,
- 97, 0, 0, 0, 97, 0, 97, 0, 0, 0,
- 0, 153, 97, 97, 97, 97, 152, 0, 0, 152,
- 0, 0, 101, 97, 97, 0, 97, 97, 97, 97,
- 97, 97, 0, 152, 152, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 98, 98,
- 98, 98, 0, 0, 0, 98, 0, 98, 0, 0,
- 0, 0, 0, 98, 98, 0, 98, 141, 152, 0,
- 141, 0, 0, 0, 98, 98, 0, 98, 98, 98,
- 98, 98, 98, 0, 141, 141, 0, 0, 0, 141,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118, 0, 0, 118, 0,
- 0, 0, 0, 0, 0, 102, 0, 0, 102, 141,
- 0, 0, 118, 118, 0, 0, 0, 118, 0, 0,
- 0, 0, 102, 102, 0, 0, 0, 102, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 99, 99, 99, 99, 118, 0, 0,
- 99, 0, 99, 0, 0, 0, 0, 102, 99, 99,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,
- 99, 0, 99, 99, 99, 99, 99, 99, 0, 0,
- 153, 153, 153, 153, 0, 0, 0, 153, 0, 153,
- 0, 101, 101, 101, 101, 153, 153, 0, 101, 0,
- 101, 0, 0, 0, 0, 0, 153, 153, 0, 153,
- 153, 153, 153, 153, 0, 0, 0, 101, 101, 0,
- 101, 101, 101, 101, 101, 103, 0, 0, 103, 0,
- 0, 0, 0, 0, 0, 0, 0, 152, 152, 152,
- 152, 0, 103, 103, 152, 0, 152, 103, 0, 0,
- 0, 0, 152, 152, 0, 0, 0, 0, 105, 0,
- 0, 105, 0, 152, 152, 0, 152, 152, 152, 152,
- 152, 0, 0, 0, 0, 105, 105, 103, 0, 0,
- 105, 0, 0, 0, 0, 0, 0, 0, 141, 141,
- 141, 141, 0, 0, 0, 141, 0, 141, 0, 0,
- 0, 0, 0, 141, 141, 0, 0, 0, 0, 0,
- 105, 0, 0, 0, 141, 141, 0, 141, 141, 141,
- 141, 141, 0, 0, 0, 0, 118, 118, 118, 118,
- 0, 0, 0, 118, 0, 118, 102, 102, 102, 102,
- 0, 118, 118, 102, 0, 102, 0, 0, 0, 0,
- 0, 0, 118, 118, 0, 118, 118, 118, 118, 118,
- 0, 106, 102, 102, 106, 102, 102, 102, 102, 102,
- 0, 0, 0, 0, 0, 0, 0, 0, 106, 106,
- 95, 0, 0, 106, 0, 0, 0, 0, 105, 0,
- 0, 0, 110, 0, 0, 119, 0, 0, 0, 0,
- 0, 0, 126, 127, 128, 129, 130, 0, 0, 0,
- 135, 136, 0, 106, 0, 0, 141, 0, 0, 0,
+ 0, 0, 0, 66, 0, 56, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 27, 28, 29,
+ 30, 31, 0, 32, 33, 34, 0, 0, 0, 35,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 41, 0, 42, 43, 44, 45, 46, 0, 0, 0,
+ 0, 47, 48, 49, 50, 51, 52, 0, 0, 0,
+ 0, 0, 54, 0, 0, 56, 0, 0, 0, 0,
+ 0, 57, 0, 58, 59, 0, 0, 27, 28, 29,
+ 30, 31, 0, 32, 33, 34, 0, 55, 0, 35,
+ 65, 67, 53, 0, 60, 298, 68, 64, 0, 63,
+ 41, 0, 42, 43, 44, 45, 46, 0, 0, 0,
+ 0, 47, 48, 49, 50, 51, 52, 0, 66, 0,
+ 0, 0, 54, 108, 108, 108, 108, 0, 0, 0,
+ 108, 57, 108, 58, 59, 25, 27, 28, 29, 30,
+ 31, 0, 32, 33, 34, 61, 0, 0, 35, 0,
+ 0, 108, 108, 0, 108, 108, 108, 108, 108, 41,
+ 0, 42, 43, 44, 45, 46, 0, 0, 0, 0,
+ 47, 48, 49, 50, 51, 52, 0, 0, 0, 55,
+ 56, 54, 65, 67, 53, 0, 60, 307, 68, 64,
+ 57, 63, 58, 59, 0, 0, 27, 28, 29, 30,
+ 31, 0, 32, 33, 34, 0, 0, 0, 35, 0,
+ 66, 0, 0, 0, 0, 0, 0, 0, 0, 41,
+ 0, 42, 43, 44, 45, 46, 0, 0, 0, 0,
+ 47, 48, 49, 50, 51, 52, 0, 61, 0, 55,
+ 0, 54, 65, 67, 53, 0, 60, 0, 68, 64,
+ 57, 63, 58, 59, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 95, 95,
+ 66, 0, 56, 0, 0, 0, 0, 0, 158, 0,
+ 108, 158, 0, 0, 0, 0, 116, 95, 124, 0,
+ 0, 0, 130, 95, 0, 158, 158, 61, 0, 0,
+ 158, 0, 0, 0, 0, 95, 95, 95, 95, 0,
+ 0, 27, 28, 29, 30, 31, 0, 32, 33, 34,
+ 0, 0, 0, 35, 0, 74, 0, 0, 74, 0,
+ 158, 0, 56, 0, 41, 0, 42, 43, 44, 45,
+ 46, 178, 0, 74, 178, 47, 48, 49, 50, 51,
+ 52, 0, 116, 0, 0, 0, 54, 0, 178, 178,
+ 0, 0, 0, 178, 0, 57, 0, 58, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 74, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 178, 0, 139, 0, 0, 139, 0,
+ 0, 0, 0, 27, 28, 29, 30, 31, 0, 32,
+ 33, 34, 139, 139, 0, 35, 252, 139, 0, 0,
+ 0, 0, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 284, 0, 0, 0, 139, 54, 0,
+ 0, 0, 0, 0, 0, 134, 0, 57, 134, 58,
+ 59, 0, 0, 27, 28, 29, 30, 31, 0, 32,
+ 33, 34, 134, 134, 0, 35, 0, 134, 0, 0,
+ 0, 0, 0, 0, 0, 0, 41, 0, 42, 43,
+ 44, 45, 46, 0, 0, 0, 0, 47, 48, 49,
+ 50, 51, 52, 0, 0, 0, 0, 134, 54, 158,
+ 158, 158, 158, 0, 0, 0, 158, 57, 158, 58,
+ 59, 0, 0, 0, 158, 158, 158, 158, 0, 0,
+ 0, 0, 0, 137, 0, 0, 137, 158, 158, 0,
+ 158, 158, 158, 158, 158, 158, 158, 0, 0, 158,
+ 137, 137, 158, 158, 158, 137, 74, 74, 74, 74,
+ 0, 0, 0, 74, 0, 0, 0, 0, 0, 0,
+ 0, 0, 178, 178, 178, 178, 0, 0, 0, 178,
+ 135, 178, 0, 135, 74, 137, 0, 178, 178, 178,
+ 178, 0, 0, 0, 0, 0, 0, 135, 135, 0,
+ 178, 178, 135, 178, 178, 178, 178, 178, 178, 178,
+ 0, 0, 178, 0, 0, 178, 178, 178, 0, 0,
+ 0, 0, 0, 0, 0, 0, 139, 139, 139, 139,
+ 0, 145, 135, 139, 145, 139, 0, 0, 0, 0,
+ 0, 139, 139, 139, 139, 0, 0, 0, 145, 145,
+ 0, 0, 0, 145, 139, 139, 0, 139, 139, 139,
+ 139, 139, 139, 139, 0, 0, 139, 0, 0, 139,
+ 139, 139, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 156, 145, 0, 156, 134, 134, 134, 134,
+ 0, 169, 0, 134, 169, 134, 0, 0, 0, 156,
+ 156, 134, 134, 134, 134, 0, 0, 0, 169, 169,
+ 0, 0, 0, 169, 134, 134, 0, 134, 134, 134,
+ 134, 134, 134, 134, 0, 0, 134, 0, 0, 134,
+ 134, 134, 0, 0, 156, 0, 0, 172, 0, 0,
+ 172, 0, 0, 169, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 172, 172, 0, 0, 0, 172,
+ 0, 0, 0, 0, 137, 137, 137, 137, 0, 0,
+ 0, 137, 0, 137, 0, 0, 0, 0, 0, 137,
+ 137, 137, 137, 0, 0, 0, 0, 0, 0, 172,
+ 0, 0, 137, 137, 0, 137, 137, 137, 137, 137,
+ 137, 137, 0, 0, 137, 0, 0, 137, 137, 137,
+ 0, 135, 135, 135, 135, 0, 128, 0, 135, 128,
+ 135, 0, 0, 0, 0, 0, 135, 135, 135, 135,
+ 0, 0, 0, 128, 128, 0, 0, 0, 128, 135,
+ 135, 0, 135, 135, 135, 135, 135, 135, 135, 0,
+ 0, 135, 0, 0, 135, 135, 135, 0, 0, 0,
+ 0, 0, 145, 145, 145, 145, 0, 76, 128, 145,
+ 76, 145, 0, 0, 0, 0, 0, 145, 145, 145,
+ 145, 0, 0, 0, 76, 76, 0, 0, 0, 76,
+ 145, 145, 0, 145, 145, 145, 145, 145, 145, 145,
+ 0, 0, 145, 0, 0, 145, 145, 145, 0, 0,
+ 0, 0, 0, 156, 156, 156, 156, 0, 0, 76,
+ 156, 0, 169, 169, 169, 169, 0, 66, 0, 169,
+ 66, 169, 0, 0, 0, 0, 0, 169, 169, 169,
+ 169, 156, 156, 0, 66, 66, 0, 0, 0, 66,
+ 169, 169, 0, 169, 169, 169, 169, 169, 169, 169,
+ 0, 0, 169, 0, 0, 169, 169, 169, 172, 172,
+ 172, 172, 0, 127, 0, 172, 127, 172, 0, 66,
+ 0, 0, 0, 172, 172, 172, 172, 0, 0, 0,
+ 127, 127, 0, 0, 0, 127, 172, 172, 0, 172,
+ 172, 172, 172, 172, 172, 172, 0, 0, 172, 0,
+ 0, 172, 172, 172, 0, 0, 0, 0, 0, 82,
+ 0, 0, 82, 0, 0, 127, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 82, 82, 0, 0,
+ 0, 82, 114, 0, 0, 114, 0, 128, 128, 128,
+ 128, 0, 0, 0, 128, 0, 128, 0, 0, 114,
+ 114, 0, 128, 128, 128, 128, 0, 0, 0, 0,
+ 0, 82, 0, 0, 0, 128, 128, 0, 128, 128,
+ 128, 128, 128, 128, 128, 0, 0, 128, 0, 0,
+ 128, 128, 128, 102, 114, 0, 102, 0, 76, 76,
+ 76, 76, 179, 0, 0, 76, 0, 76, 0, 0,
+ 102, 102, 0, 76, 76, 76, 76, 0, 0, 179,
+ 179, 0, 0, 0, 179, 0, 76, 76, 0, 76,
+ 76, 76, 76, 76, 76, 76, 0, 0, 76, 0,
+ 0, 76, 76, 76, 0, 102, 0, 0, 0, 0,
+ 0, 0, 0, 0, 179, 0, 0, 0, 66, 66,
+ 66, 66, 157, 0, 0, 66, 0, 66, 0, 0,
+ 0, 0, 0, 66, 66, 66, 66, 0, 0, 157,
+ 157, 0, 0, 0, 157, 0, 66, 66, 0, 66,
+ 66, 66, 66, 66, 66, 66, 0, 0, 66, 0,
+ 0, 66, 66, 66, 127, 127, 127, 127, 79, 0,
+ 0, 127, 0, 127, 157, 0, 0, 0, 0, 127,
+ 127, 127, 127, 0, 0, 79, 79, 0, 0, 0,
+ 79, 0, 127, 127, 0, 127, 127, 127, 127, 127,
+ 127, 127, 0, 0, 127, 0, 0, 127, 127, 127,
+ 82, 82, 82, 82, 0, 0, 0, 82, 0, 82,
+ 79, 0, 0, 0, 0, 82, 82, 82, 82, 0,
+ 0, 0, 0, 114, 114, 114, 114, 0, 82, 82,
+ 114, 82, 82, 82, 82, 82, 82, 82, 0, 123,
+ 82, 0, 123, 82, 82, 82, 0, 0, 0, 0,
+ 0, 114, 114, 0, 114, 0, 123, 123, 0, 0,
+ 0, 123, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 102, 102, 102, 102, 0, 0,
+ 0, 102, 0, 179, 179, 179, 179, 0, 0, 0,
+ 179, 123, 179, 0, 0, 0, 0, 0, 179, 179,
+ 179, 179, 102, 102, 0, 0, 0, 0, 0, 0,
+ 0, 179, 179, 0, 179, 179, 179, 179, 179, 179,
+ 179, 0, 0, 179, 0, 0, 179, 179, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 186, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 103, 103, 103, 103,
- 0, 0, 0, 103, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 157, 157, 157, 157, 0, 0, 0,
+ 157, 124, 157, 0, 124, 0, 0, 0, 157, 157,
+ 157, 157, 0, 0, 0, 0, 0, 0, 124, 124,
+ 0, 157, 157, 124, 157, 157, 157, 157, 157, 157,
+ 157, 0, 0, 157, 0, 0, 157, 157, 157, 79,
+ 79, 79, 79, 0, 118, 0, 79, 118, 79, 0,
+ 0, 0, 0, 124, 79, 79, 79, 79, 0, 0,
+ 0, 118, 118, 0, 0, 0, 118, 79, 79, 0,
+ 79, 79, 79, 79, 79, 79, 79, 99, 0, 79,
+ 0, 0, 79, 79, 79, 109, 0, 0, 119, 114,
+ 0, 119, 123, 0, 0, 128, 118, 0, 0, 136,
+ 137, 138, 139, 140, 0, 119, 119, 145, 146, 0,
+ 119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 123, 123, 123, 123, 0, 0, 0, 123, 120, 123,
+ 0, 120, 0, 0, 0, 123, 123, 123, 123, 0,
+ 119, 0, 196, 0, 0, 120, 120, 0, 123, 123,
+ 120, 123, 123, 123, 123, 123, 123, 123, 0, 0,
+ 123, 0, 0, 0, 0, 0, 116, 0, 0, 116,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 103, 103, 0, 103, 103, 103, 103, 105,
- 105, 105, 105, 0, 0, 0, 105, 0, 105, 0,
- 0, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 105, 105, 0, 105, 105,
- 105, 0, 0, 0, 0, 0, 0, 0, 251, 0,
+ 120, 0, 0, 116, 116, 0, 0, 0, 116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 116, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 265, 124, 124, 124, 124, 0, 117, 0, 124,
+ 117, 124, 0, 0, 0, 0, 0, 124, 124, 124,
+ 124, 0, 0, 0, 117, 117, 0, 0, 0, 117,
+ 124, 124, 0, 124, 124, 124, 124, 124, 124, 124,
+ 0, 0, 124, 0, 0, 118, 118, 118, 118, 0,
+ 115, 0, 118, 115, 118, 0, 0, 0, 0, 117,
+ 118, 118, 118, 118, 0, 0, 0, 115, 115, 0,
+ 0, 0, 115, 118, 118, 0, 118, 118, 118, 118,
+ 118, 118, 118, 0, 0, 0, 327, 0, 0, 119,
+ 119, 119, 119, 0, 0, 0, 119, 77, 119, 0,
+ 77, 0, 115, 0, 119, 119, 119, 119, 0, 0,
+ 0, 0, 0, 0, 77, 77, 0, 119, 119, 343,
+ 119, 119, 119, 119, 119, 119, 119, 0, 0, 120,
+ 120, 120, 120, 0, 103, 0, 120, 103, 120, 0,
+ 0, 0, 0, 0, 120, 120, 120, 120, 0, 77,
+ 0, 103, 103, 0, 0, 0, 103, 120, 120, 0,
+ 120, 120, 120, 120, 120, 120, 120, 116, 116, 116,
+ 116, 0, 104, 0, 116, 104, 116, 0, 0, 0,
+ 0, 0, 116, 116, 116, 116, 103, 0, 0, 104,
+ 104, 0, 0, 0, 104, 116, 116, 0, 116, 116,
+ 116, 116, 116, 116, 116, 0, 0, 0, 0, 105,
+ 0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 104, 0, 105, 105, 0, 0,
+ 0, 105, 0, 0, 0, 0, 0, 0, 117, 117,
+ 117, 117, 0, 0, 0, 117, 0, 117, 0, 0,
+ 0, 0, 0, 117, 117, 117, 117, 305, 0, 0,
+ 0, 105, 166, 0, 0, 0, 117, 117, 0, 117,
+ 117, 117, 117, 117, 117, 117, 0, 0, 0, 0,
+ 0, 115, 115, 115, 115, 0, 161, 0, 115, 161,
+ 115, 0, 0, 0, 0, 0, 115, 115, 115, 115,
+ 0, 0, 0, 161, 161, 0, 0, 0, 161, 115,
+ 115, 0, 115, 115, 115, 115, 115, 115, 115, 0,
+ 0, 0, 0, 160, 0, 0, 160, 0, 77, 77,
+ 77, 77, 0, 149, 0, 77, 149, 0, 161, 0,
+ 160, 160, 0, 0, 0, 160, 0, 0, 0, 0,
+ 149, 149, 0, 0, 0, 149, 77, 77, 0, 0,
+ 0, 0, 0, 0, 0, 103, 103, 103, 103, 0,
+ 126, 0, 103, 126, 103, 160, 0, 0, 0, 0,
+ 103, 103, 103, 103, 0, 149, 0, 126, 126, 0,
+ 0, 0, 126, 103, 103, 0, 103, 103, 103, 103,
+ 103, 103, 103, 104, 104, 104, 104, 0, 107, 0,
+ 104, 107, 104, 0, 0, 0, 0, 0, 104, 104,
+ 104, 104, 126, 0, 0, 107, 107, 0, 0, 0,
+ 107, 104, 104, 0, 104, 104, 104, 104, 104, 104,
+ 105, 105, 105, 105, 0, 109, 0, 105, 109, 105,
+ 0, 0, 0, 0, 0, 105, 105, 0, 105, 0,
+ 107, 110, 109, 109, 110, 0, 0, 109, 105, 105,
+ 0, 105, 105, 105, 105, 105, 105, 0, 110, 110,
+ 160, 0, 0, 110, 0, 0, 161, 162, 163, 164,
+ 0, 0, 0, 0, 0, 0, 0, 109, 0, 0,
+ 0, 0, 165, 167, 168, 169, 170, 171, 172, 0,
+ 0, 173, 0, 110, 174, 175, 176, 161, 161, 161,
+ 161, 0, 112, 0, 161, 112, 161, 0, 0, 0,
+ 0, 0, 161, 161, 0, 0, 0, 0, 0, 112,
+ 112, 0, 0, 0, 112, 161, 161, 0, 161, 161,
+ 161, 161, 161, 0, 160, 160, 160, 160, 0, 113,
+ 0, 160, 113, 160, 149, 149, 149, 149, 0, 160,
+ 160, 149, 0, 149, 112, 0, 113, 113, 0, 149,
+ 149, 113, 160, 160, 0, 160, 160, 160, 160, 160,
+ 0, 0, 149, 149, 0, 149, 149, 149, 149, 149,
+ 0, 126, 126, 126, 126, 0, 0, 0, 126, 0,
+ 126, 113, 0, 0, 0, 0, 126, 126, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
+ 126, 0, 126, 126, 126, 126, 126, 0, 0, 107,
+ 107, 107, 107, 0, 0, 0, 107, 0, 107, 0,
+ 0, 0, 0, 0, 0, 107, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 107, 0,
+ 107, 107, 107, 107, 107, 0, 109, 109, 109, 109,
+ 0, 0, 0, 109, 0, 109, 0, 0, 0, 0,
+ 0, 0, 110, 110, 110, 110, 0, 0, 0, 110,
+ 0, 110, 0, 0, 109, 109, 0, 109, 109, 109,
+ 109, 109, 0, 0, 0, 0, 0, 0, 0, 0,
+ 110, 110, 0, 110, 110, 110, 110, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 112, 112, 112, 112, 0, 0, 0,
+ 112, 0, 112, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 112, 112, 0, 112, 112, 112, 0, 0, 0,
+ 113, 113, 113, 113, 0, 0, 0, 113, 0, 113,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 106, 106, 106, 106, 0, 0, 0, 106,
- 0, 106, 0, 0, 0, 0, 0, 0, 306, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 106, 106,
- 0, 106, 106, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
+ 0, 0, 0, 0, 0, 0, 0, 0, 113, 113,
+ 0, 113, 113,
};
-static short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
- 91, 41, 41, 40, 44, 298, 299, 257, 41, 93,
- 58, 59, 46, 59, 40, 63, 41, 123, 58, 59,
- 59, 41, 123, 57, 58, 40, 367, 41, 59, 41,
- 41, 41, 123, 92, 59, 194, 41, 41, 257, 41,
- 278, 41, 123, 41, 41, 93, 44, 40, 59, 59,
- 91, 276, 277, 93, 91, 59, 115, 41, 123, 44,
- 58, 59, 59, 40, 123, 63, 98, 99, 100, 101,
- 102, 103, 41, 107, 108, 59, 40, 123, 123, 289,
- 290, 59, 123, 59, 0, 59, 123, 40, 40, 36,
- 59, 40, 40, 40, 294, 93, 306, 307, 44, 59,
- 310, 123, 260, 313, 314, 315, 257, 40, 40, 40,
- 144, 145, 146, 147, 148, 149, 150, 33, 277, 41,
- 36, 37, 38, 93, 40, 315, 42, 43, 93, 45,
- 93, 125, 93, 91, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 59, 91, 257, 36, 0, 64, 255,
- 41, 185, 125, 312, 260, 189, 190, 91, 192, 299,
- 194, 41, 40, 195, 41, 41, 93, 201, 93, 203,
- 204, 41, 333, 334, 208, 91, 123, 338, 41, 257,
- 33, 40, 125, 36, 37, 38, 41, 40, 59, 42,
- 43, 59, 45, 354, 123, 125, 255, 358, 357, 125,
- 234, 260, 236, 237, 0, 125, 59, 123, 41, 125,
- 126, 64, 257, 125, 298, 299, 41, 262, 41, 298,
- 299, 298, 299, 59, 272, 273, 274, 275, 298, 299,
- 40, 279, 272, 273, 274, 275, 41, 33, 91, 279,
- 36, 37, 38, 296, 40, 344, 42, 43, 41, 45,
- 298, 299, 41, 301, 288, 298, 299, 123, 298, 299,
- 294, 301, 41, 59, 59, 298, 299, 123, 64, 41,
- 123, 59, 125, 126, 272, 273, 274, 275, 298, 299,
- 314, 279, 41, 281, 298, 299, 298, 299, 41, 287,
- 288, 289, 290, 298, 299, 91, 298, 299, 298, 299,
- 298, 299, 59, 301, 302, 303, 304, 305, 306, 307,
- 63, 258, 310, 298, 299, 313, 314, 315, 41, 353,
- 298, 299, 298, 299, 298, 299, 8, 123, 298, 299,
- 126, 32, 13, 298, 299, 298, 299, 298, 299, 145,
- 256, 257, 258, 259, 260, 261, 353, 263, 264, 265,
+static short yycheck[] = { 15,
+ 36, 91, 41, 36, 40, 59, 59, 41, 195, 41,
+ 59, 59, 41, 59, 59, 44, 59, 123, 93, 36,
+ 93, 358, 59, 40, 96, 91, 40, 91, 41, 58,
+ 59, 41, 41, 49, 63, 59, 41, 59, 41, 257,
+ 204, 40, 192, 90, 60, 61, 59, 41, 198, 257,
+ 59, 15, 389, 41, 101, 127, 59, 123, 41, 123,
+ 289, 290, 300, 301, 93, 59, 266, 267, 268, 41,
+ 270, 271, 41, 41, 91, 123, 41, 91, 123, 44,
+ 309, 45, 41, 312, 48, 93, 315, 316, 317, 44,
+ 123, 59, 91, 58, 59, 111, 112, 297, 63, 123,
+ 59, 123, 59, 36, 37, 40, 123, 40, 40, 123,
+ 257, 41, 59, 129, 0, 102, 103, 104, 105, 106,
+ 107, 85, 40, 310, 123, 278, 41, 291, 93, 59,
+ 312, 64, 40, 315, 316, 317, 100, 153, 154, 155,
+ 156, 157, 158, 159, 59, 276, 277, 33, 93, 40,
+ 36, 37, 38, 93, 40, 93, 42, 43, 40, 45,
+ 40, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 334, 8, 9, 59, 0, 40, 40, 123, 64, 195,
+ 59, 44, 123, 199, 200, 40, 202, 151, 204, 260,
+ 257, 40, 298, 41, 93, 211, 268, 213, 214, 40,
+ 125, 298, 274, 257, 317, 91, 222, 33, 36, 298,
+ 36, 37, 38, 91, 40, 379, 42, 43, 205, 45,
+ 41, 125, 257, 91, 257, 300, 301, 300, 301, 262,
+ 260, 301, 248, 59, 250, 251, 40, 123, 64, 125,
+ 126, 258, 0, 272, 273, 274, 275, 300, 301, 260,
+ 279, 300, 301, 298, 300, 301, 41, 300, 301, 41,
+ 296, 300, 301, 300, 301, 91, 300, 301, 300, 301,
+ 41, 300, 301, 41, 303, 33, 366, 41, 36, 37,
+ 38, 40, 40, 59, 42, 43, 41, 45, 304, 125,
+ 300, 301, 300, 301, 310, 300, 301, 123, 125, 125,
+ 126, 59, 125, 267, 123, 269, 64, 272, 273, 274,
+ 275, 275, 300, 301, 279, 125, 281, 300, 301, 59,
+ 336, 41, 287, 288, 289, 290, 125, 41, 300, 301,
+ 44, 300, 301, 91, 41, 300, 301, 41, 303, 304,
+ 305, 306, 307, 308, 309, 300, 301, 312, 59, 63,
+ 315, 316, 317, 300, 301, 300, 301, 40, 123, 375,
+ 300, 301, 300, 301, 41, 123, 41, 41, 126, 123,
+ 256, 257, 258, 259, 260, 261, 41, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 41, 59, 41, 279, 280, 289, 282, 283, 284, 285,
+ 286, 300, 301, 59, 41, 291, 292, 293, 294, 295,
+ 296, 297, 63, 59, 41, 309, 302, 35, 312, 52,
+ 52, 315, 316, 317, 15, 311, 154, 313, 314, 336,
+ 256, 257, 258, 259, 260, 261, 375, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 125, 192, 97, 279, 280, -1, 282, 283, 284, 285,
- 286, 298, 299, 298, 299, 291, 292, 293, 294, 295,
- 296, -1, -1, 41, 300, -1, 44, 266, 267, 268,
- 314, 270, 271, 309, -1, 311, 312, -1, -1, -1,
- -1, 59, -1, 256, 257, 258, 259, 260, 261, -1,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 125, -1, -1, 279, 280, 289, 282,
- 283, 284, 285, 286, -1, 93, -1, -1, 291, 292,
- 293, 294, 295, 296, -1, -1, 307, 300, 41, 310,
- -1, 44, 313, 314, 315, -1, 309, -1, 311, 312,
- 256, 257, 258, 259, 260, 261, -1, 263, 264, 265,
- 63, -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, 266, 267, 268, 300, 270, 271, 310, -1, -1,
- 313, 314, 315, 309, 33, 311, 312, 36, 37, 38,
- -1, 40, 41, 42, 43, 44, 45, -1, 281, -1,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, 58,
- 59, -1, -1, -1, 63, 64, -1, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, -1, -1,
- 313, 314, 315, -1, 266, 267, 268, -1, 270, 271,
- -1, -1, 91, 33, 93, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, 44, 45, -1, -1, 26, -1,
- -1, -1, -1, 272, 273, 274, 275, -1, 58, 59,
- 279, -1, -1, 63, 64, 43, 44, 126, -1, -1,
- -1, -1, 50, -1, 272, 273, 274, 275, -1, 298,
- 299, 279, -1, -1, 62, 63, 64, 65, -1, -1,
- -1, -1, -1, 93, 33, -1, -1, 36, 37, 38,
- 298, 40, -1, 42, 43, -1, 45, -1, 309, 310,
- 311, -1, 313, -1, -1, 287, 288, 289, 290, -1,
- 59, 307, -1, -1, 310, 64, 126, 313, 314, 315,
- 108, 303, 304, 305, 306, 307, -1, -1, 310, 340,
- -1, 313, 314, 315, 41, -1, 347, 44, 281, -1,
- 351, -1, 91, -1, 287, 288, 289, 290, -1, -1,
- -1, 58, 59, 364, 365, -1, 63, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, -1, -1,
- 313, 314, 315, -1, 123, -1, -1, 126, -1, -1,
- -1, -1, -1, -1, -1, -1, 93, -1, 257, 258,
+ 202, 24, 269, 279, 280, -1, 282, 283, 284, 285,
+ 286, -1, -1, 125, -1, 291, 292, 293, 294, 295,
+ 296, 297, 355, 356, -1, 309, 302, 360, 312, -1,
+ -1, 315, 316, 317, -1, 311, -1, 313, 314, -1,
+ -1, 41, -1, 376, 44, -1, -1, 380, 256, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, 58, 59,
+ -1, 269, -1, 63, 272, 273, 274, 275, -1, -1,
+ -1, 279, 280, -1, 282, 283, 284, 285, 286, -1,
+ -1, 125, -1, 291, 292, 293, 294, 295, 296, -1,
+ -1, -1, -1, 93, 302, -1, -1, -1, -1, -1,
+ -1, -1, -1, 311, 33, 313, 314, 36, 37, 38,
+ -1, 40, 41, 42, 43, 44, 45, 281, -1, -1,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, 64, -1, -1, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 266, 267, 268, -1, 270, 271,
+ -1, -1, 91, -1, 93, 33, -1, -1, 36, 37,
+ 38, -1, 40, 41, 42, 43, 44, 45, -1, -1,
+ 281, -1, -1, -1, -1, 297, 287, 288, 289, 290,
+ 58, 59, -1, -1, -1, 63, 64, 126, -1, -1,
+ -1, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, 29, -1, 315, 316, 317, -1, -1, -1,
+ -1, -1, 266, 267, 268, 93, 270, 271, 33, 46,
+ 47, 36, 37, 38, -1, 40, 53, 42, 43, -1,
+ 45, 287, 288, 289, 290, -1, -1, -1, 65, 66,
+ 67, 68, -1, 297, 59, -1, -1, -1, 126, 64,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 272, 273, 274, 275, -1, -1, -1, 279,
+ -1, 281, -1, -1, -1, -1, 91, 287, 288, 289,
+ 290, 272, 273, 274, 275, 112, -1, -1, 279, -1,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 123, 300,
+ 301, 126, -1, -1, -1, -1, -1, -1, 257, 258,
259, 260, 261, -1, 263, 264, 265, -1, -1, -1,
- 269, -1, 58, 272, 273, 274, 275, 63, -1, -1,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, -1, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, -1,
- 309, 310, 311, 312, 313, 314, 315, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
- -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, -1, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, -1, 309,
- 310, 311, 312, 313, 314, 315, -1, 256, 257, 258,
- 259, 260, 261, -1, 263, 264, 265, -1, -1, 63,
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, 33,
- -1, 300, 36, 37, 38, 13, 40, -1, 42, 43,
- 309, 45, 311, 312, -1, 272, 273, 274, 275, -1,
- -1, -1, 279, -1, 281, 59, -1, -1, -1, -1,
- 64, 288, -1, -1, 42, -1, -1, 45, 41, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, -1,
- 287, 288, 289, 290, -1, 33, 59, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, 305, 306,
- 307, -1, -1, 310, 82, 281, 313, 314, 315, -1,
- -1, 287, 288, 289, 290, -1, 64, -1, 96, 123,
- 93, -1, 126, -1, -1, 301, 302, 303, 304, 305,
- 306, 307, -1, -1, 310, -1, -1, 313, 314, 315,
- -1, 33, -1, 91, 36, 37, 38, -1, 40, -1,
- 42, 43, -1, 45, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 142, -1, -1, 287, 288, 289,
- 290, -1, 64, -1, -1, 123, -1, -1, 126, -1,
- 41, -1, -1, 44, 304, 305, 306, 307, -1, -1,
- 310, -1, -1, 313, 314, 315, -1, 58, 59, 91,
- -1, -1, -1, 181, 33, -1, -1, 36, 37, 38,
- 188, 40, -1, 42, 43, -1, 45, 281, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
- -1, 123, 93, -1, 126, 64, -1, 301, 302, 303,
- 304, 305, 306, 307, -1, -1, 310, -1, -1, 313,
- 314, 315, 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, 123, -1, 300, 126, -1, 272,
- 273, 274, 275, -1, -1, 309, 279, 311, 312, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, -1, -1,
- -1, 269, -1, -1, 63, 298, 299, -1, -1, -1,
- -1, -1, 280, -1, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- -1, -1, 300, -1, -1, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, 257, 258, 259, 260, 261,
- -1, 263, 264, 265, -1, 33, -1, 269, 36, 37,
- 38, -1, 40, 41, 42, 43, -1, 45, 280, -1,
- 282, 283, 284, 285, 286, -1, -1, -1, -1, 291,
- 292, 293, 294, 295, 296, -1, 64, -1, 300, -1,
- -1, 272, 273, 274, 275, -1, -1, 309, 279, 311,
- 312, -1, 287, 288, 289, 290, -1, -1, 257, 258,
- 259, 260, 261, 91, 263, 264, 265, 298, 299, -1,
- 269, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, 280, -1, 282, 283, 284, 285, 286, -1, -1,
- -1, -1, 291, 292, 293, 294, 295, 296, 126, 33,
- -1, 300, 36, 37, 38, -1, 40, -1, 42, 43,
- 309, 45, 311, 312, 287, -1, 289, 290, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- 64, 25, 26, 306, 307, -1, 41, 310, -1, 44,
- 313, 314, 315, 37, -1, -1, -1, -1, -1, 43,
- 44, 45, -1, 58, 59, 33, 50, 91, 36, 37,
- 38, -1, 40, -1, 42, 43, -1, 45, 62, 63,
- 64, 65, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, -1, 64, -1, 93, -1,
- -1, -1, 126, 302, 303, 304, 305, 306, 307, -1,
- -1, 310, -1, -1, 313, 314, 315, -1, -1, -1,
- -1, -1, -1, 91, 108, 93, 33, -1, -1, 36,
- 37, 38, -1, 40, 41, 42, 43, -1, 45, 257,
+ 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, -1, -1,
+ -1, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, -1, 311, 312, 313, 314, 315, 316, 317, 257,
258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
- -1, 269, -1, -1, -1, -1, -1, 64, 126, -1,
+ -1, 269, -1, -1, 272, 273, 274, 275, -1, -1,
+ -1, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, -1,
+ -1, -1, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, -1, 311, 312, 313, 314, 315, 316, 317,
+ -1, 256, 257, 258, 259, 260, 261, 63, 263, 264,
+ 265, -1, -1, -1, 269, -1, -1, 272, 273, 274,
+ 275, -1, -1, -1, 279, 280, -1, 282, 283, 284,
+ 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
+ 295, 296, -1, -1, -1, 33, -1, 302, 36, 37,
+ 38, -1, 40, -1, 42, 43, 311, 45, 313, 314,
+ -1, 46, -1, -1, -1, -1, -1, -1, -1, 54,
+ 287, 59, 289, 290, -1, -1, 64, -1, -1, 41,
+ -1, -1, 44, -1, -1, 331, 332, 333, -1, 335,
+ -1, 308, 309, -1, -1, 312, 58, 59, 315, 316,
+ 317, -1, -1, 91, -1, 33, -1, -1, 36, 37,
+ 38, 96, 40, -1, 42, 43, 362, 45, -1, -1,
+ -1, -1, -1, 369, -1, -1, -1, 373, -1, -1,
+ -1, 93, -1, -1, 119, 123, 64, -1, 126, -1,
+ 386, 387, 127, -1, -1, 33, -1, -1, 36, 37,
+ 38, -1, 40, -1, 42, 43, -1, 45, -1, -1,
+ -1, -1, -1, 91, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, -1, -1, -1, 64, -1, -1, -1,
+ -1, -1, -1, -1, 41, 308, 309, 44, -1, 312,
+ -1, -1, 315, 316, 317, 123, -1, -1, 126, -1,
+ -1, 58, 59, 91, -1, -1, 63, -1, -1, 33,
+ -1, -1, 36, 37, 38, -1, 40, -1, 42, 43,
+ -1, 45, -1, -1, -1, 281, -1, -1, -1, -1,
+ -1, 287, 288, 289, 290, 123, 93, -1, 126, -1,
+ 64, -1, -1, -1, -1, -1, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, 91, 256, 257,
+ 258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
+ -1, 269, -1, 268, 272, 273, 274, 275, -1, 274,
+ -1, 279, 280, -1, 282, 283, 284, 285, 286, 123,
+ -1, -1, 126, 291, 292, 293, 294, 295, 296, -1,
+ 272, 273, 274, 275, 302, -1, -1, 279, -1, -1,
+ -1, -1, -1, 311, -1, 313, 314, -1, -1, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 300, 301,
+ -1, 269, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, -1, 282, 283, 284, 285, 286, -1,
+ 41, -1, -1, 291, 292, 293, 294, 295, 296, 257,
+ 258, 259, 260, 261, 302, 263, 264, 265, 59, -1,
+ -1, 269, -1, 311, -1, 313, 314, -1, -1, -1,
+ -1, -1, 280, -1, 282, 283, 284, 285, 286, 63,
-1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- 289, 290, 300, 167, 91, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, -1, -1, 41, 307, -1,
- 44, 310, -1, -1, 313, 314, 315, -1, -1, 193,
- -1, -1, -1, -1, 58, 59, -1, 33, -1, 126,
- 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
- -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
- 264, 265, -1, -1, -1, 269, -1, -1, 64, 93,
- -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ -1, -1, 93, -1, 302, 272, 273, 274, 275, -1,
+ -1, -1, 279, 311, 281, 313, 314, -1, -1, -1,
+ 287, 288, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, -1, 300, 301, 269, 303, 304, 305, 306,
+ 307, 308, -1, -1, -1, -1, 280, -1, 282, 283,
284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
- 294, 295, 296, -1, -1, 91, 300, 272, 273, 274,
- 275, -1, -1, -1, 279, 309, -1, 311, 312, 257,
- 258, 259, 260, 261, -1, 263, 264, 265, -1, -1,
- -1, 269, -1, 298, 299, -1, -1, -1, -1, -1,
- 126, -1, 280, -1, 282, 283, 284, 285, 286, -1,
- -1, -1, -1, 291, 292, 293, 294, 295, 296, -1,
- 41, -1, 300, 44, -1, -1, -1, -1, -1, -1,
- -1, 309, -1, 311, 312, -1, 41, 58, 59, 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, 93, -1, 291, 292, 293, 294, 295, 296,
- -1, -1, -1, 300, -1, -1, -1, -1, 93, -1,
- -1, -1, 309, -1, 311, 312, -1, 33, -1, -1,
- 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, -1, 64, -1,
- -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
- -1, -1, -1, 269, 298, 299, -1, -1, -1, -1,
- -1, -1, -1, -1, 280, 91, 282, 283, 284, 285,
- 286, -1, -1, -1, -1, 291, 292, 293, 294, 295,
- 296, -1, 33, -1, 300, 36, 37, 38, -1, 40,
- -1, 42, 43, 309, 45, 311, 312, -1, -1, -1,
- 126, 287, 288, 289, 290, -1, -1, -1, -1, -1,
- -1, -1, -1, 64, -1, -1, 302, 303, 304, 305,
- 306, 307, -1, -1, 310, -1, -1, 313, 314, 315,
+ 294, 295, 296, 289, 290, -1, 33, -1, 302, 36,
+ 37, 38, -1, 40, -1, 42, 43, 311, 45, 313,
+ 314, -1, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 59, -1, -1, -1, -1, 64, -1, -1,
+ -1, 287, 288, 289, 290, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, 305,
+ 306, 307, 308, 309, 91, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, 64, -1, -1,
+ 287, 288, 289, 290, -1, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, -1, 42, 43, -1, 45, 126,
+ 307, 308, 309, -1, 91, 312, -1, -1, 315, 316,
+ 317, -1, -1, -1, -1, -1, -1, 64, -1, -1,
+ -1, 272, 273, 274, 275, -1, 33, -1, 279, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, 126,
+ -1, -1, -1, -1, 91, -1, 93, 281, -1, 300,
+ 301, -1, -1, 287, 288, 289, 290, 64, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 91, -1, -1, 33, -1, -1, 36, 37, 38, -1,
- 40, 41, 42, 43, -1, 45, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
- -1, -1, -1, -1, 64, 126, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, 298, 299, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, 91, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, 41, 42, 43, -1,
- 45, 257, 258, 259, 260, 261, 126, 263, 264, 265,
- -1, -1, -1, 269, -1, -1, -1, -1, -1, 64,
- -1, -1, -1, -1, 280, -1, 282, 283, 284, 285,
- 286, -1, -1, -1, -1, 291, 292, 293, 294, 295,
- 296, -1, -1, -1, 300, -1, 91, -1, -1, -1,
- -1, -1, -1, 309, -1, 311, 312, -1, 33, -1,
- -1, 36, 37, 38, -1, 40, 41, 42, 43, -1,
- 45, -1, -1, -1, -1, 256, 257, 258, 259, 260,
- 261, 126, 263, 264, 265, -1, -1, -1, 269, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 280,
- -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
- 291, 292, 293, 294, 295, 296, 91, -1, -1, 300,
- -1, -1, -1, -1, -1, -1, -1, -1, 309, -1,
- 311, 312, -1, -1, -1, -1, -1, 257, 258, 259,
- 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
- -1, 126, -1, -1, -1, -1, -1, -1, -1, -1,
- 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
- -1, 291, 292, 293, 294, 295, 296, -1, 33, -1,
- 300, 36, 37, 38, -1, 40, -1, 42, 43, 309,
- 45, 311, 312, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
- -1, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, -1, -1, -1, 269, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 280, 91, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, -1, -1, 300, -1, -1, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- -1, 126, -1, -1, 41, -1, -1, 44, -1, -1,
- -1, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, 58, 59, -1, 269, -1, 63, -1, -1, -1,
- -1, -1, -1, -1, -1, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, -1, 41, 300, 93, 44, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- -1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, 126,
+ -1, 315, 316, 317, 91, -1, 33, -1, -1, 36,
+ 37, 38, -1, 40, 41, 42, 43, -1, 45, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
- -1, 44, -1, -1, -1, -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, -1, 257, 258, 259, 260, 261, -1, 263, 264,
- 265, -1, -1, -1, 269, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, -1, 280, -1, 282, 283, 284,
- 285, 286, -1, -1, -1, -1, 291, 292, 293, 294,
- 295, 296, -1, 41, -1, 300, 44, -1, -1, -1,
- -1, -1, -1, -1, 309, -1, 311, 312, -1, -1,
- 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 64, -1, 126,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, -1,
+ -1, -1, 269, -1, 91, -1, -1, -1, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, 126,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, -1,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ 257, 258, 259, 260, 261, 302, 263, 264, 265, -1,
+ -1, -1, 269, -1, 311, -1, 313, 314, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ -1, -1, -1, 33, -1, 302, 36, 37, 38, -1,
+ 40, 41, 42, 43, 311, 45, 313, 314, -1, -1,
+ 257, 258, 259, 260, 261, -1, 263, 264, 265, -1,
+ -1, -1, 269, -1, 64, -1, -1, -1, -1, -1,
+ -1, -1, -1, 280, -1, 282, 283, 284, 285, 286,
+ -1, -1, -1, -1, 291, 292, 293, 294, 295, 296,
+ -1, 91, -1, 33, -1, 302, 36, 37, 38, -1,
+ 40, 41, 42, 43, 311, 45, 313, 314, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 41, -1, 93, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
- 58, 59, 279, -1, 281, 63, -1, -1, -1, -1,
- 287, 288, 289, 290, -1, -1, -1, -1, -1, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, 306,
- 307, -1, -1, 310, -1, 93, 313, 314, 315, -1,
- -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
- -1, -1, 279, -1, 281, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 64, -1, 126, -1, -1, -1,
+ -1, -1, 41, -1, -1, 44, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
+ 59, 91, 33, -1, 63, 36, 37, 38, -1, 40,
+ -1, 42, 43, -1, 45, -1, -1, -1, -1, -1,
287, 288, 289, 290, -1, -1, -1, -1, -1, -1,
- -1, 298, 299, -1, 301, 302, 303, 304, 305, 306,
- 307, -1, -1, 310, -1, -1, 313, 314, 315, 272,
- 273, 274, 275, -1, -1, -1, 279, -1, 281, -1,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
- -1, 41, -1, -1, 44, 298, 299, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, -1, 310, 58, 59,
- 313, 314, 315, 63, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 64, 93, -1, 126, 304, 305, 306,
+ 307, 308, 309, -1, -1, 312, -1, -1, 315, 316,
+ 317, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 91, -1, 33, -1, -1, 36, 37, 38, -1, 40,
+ 41, 42, 43, -1, 45, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 64, -1, 126, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, -1, -1, -1, 269,
+ 91, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
+ -1, 291, 292, 293, 294, 295, 296, -1, -1, -1,
+ -1, -1, 302, -1, -1, 126, -1, -1, -1, -1,
+ -1, 311, -1, 313, 314, -1, -1, 257, 258, 259,
+ 260, 261, -1, 263, 264, 265, -1, 33, -1, 269,
+ 36, 37, 38, -1, 40, 41, 42, 43, -1, 45,
+ 280, -1, 282, 283, 284, 285, 286, -1, -1, -1,
+ -1, 291, 292, 293, 294, 295, 296, -1, 64, -1,
+ -1, -1, 302, 272, 273, 274, 275, -1, -1, -1,
+ 279, 311, 281, 313, 314, 256, 257, 258, 259, 260,
+ 261, -1, 263, 264, 265, 91, -1, -1, 269, -1,
+ -1, 300, 301, -1, 303, 304, 305, 306, 307, 280,
+ -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
+ 291, 292, 293, 294, 295, 296, -1, -1, -1, 33,
+ 126, 302, 36, 37, 38, -1, 40, 41, 42, 43,
+ 311, 45, 313, 314, -1, -1, 257, 258, 259, 260,
+ 261, -1, 263, 264, 265, -1, -1, -1, 269, -1,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, 280,
+ -1, 282, 283, 284, 285, 286, -1, -1, -1, -1,
+ 291, 292, 293, 294, 295, 296, -1, 91, -1, 33,
+ -1, 302, 36, 37, 38, -1, 40, -1, 42, 43,
+ 311, 45, 313, 314, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 28, 29,
+ 64, -1, 126, -1, -1, -1, -1, -1, 41, -1,
+ 40, 44, -1, -1, -1, -1, 46, 47, 48, -1,
+ -1, -1, 52, 53, -1, 58, 59, 91, -1, -1,
+ 63, -1, -1, -1, -1, 65, 66, 67, 68, -1,
+ -1, 257, 258, 259, 260, 261, -1, 263, 264, 265,
+ -1, -1, -1, 269, -1, 41, -1, -1, 44, -1,
+ 93, -1, 126, -1, 280, -1, 282, 283, 284, 285,
+ 286, 41, -1, 59, 44, 291, 292, 293, 294, 295,
+ 296, -1, 112, -1, -1, -1, 302, -1, 58, 59,
+ -1, -1, -1, 63, -1, 311, -1, 313, 314, -1,
+ -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 93, 272, 273, 274, 275, -1, -1,
- -1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, -1, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
+ -1, -1, -1, 93, -1, 41, -1, -1, 44, -1,
+ -1, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, 176, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
+ 294, 295, 296, 203, -1, -1, -1, 93, 302, -1,
+ -1, -1, -1, -1, -1, 41, -1, 311, 44, 313,
+ 314, -1, -1, 257, 258, 259, 260, 261, -1, 263,
+ 264, 265, 58, 59, -1, 269, -1, 63, -1, -1,
+ -1, -1, -1, -1, -1, -1, 280, -1, 282, 283,
+ 284, 285, 286, -1, -1, -1, -1, 291, 292, 293,
+ 294, 295, 296, -1, -1, -1, -1, 93, 302, 272,
+ 273, 274, 275, -1, -1, -1, 279, 311, 281, 313,
+ 314, -1, -1, -1, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, 41, -1, -1, 44, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, -1, -1, 312,
+ 58, 59, 315, 316, 317, 63, 272, 273, 274, 275,
+ -1, -1, -1, 279, -1, -1, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
+ 41, 281, -1, 44, 300, 93, -1, 287, 288, 289,
+ 290, -1, -1, -1, -1, -1, -1, 58, 59, -1,
+ 300, 301, 63, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, -1, -1,
+ -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
+ -1, 41, 93, 279, 44, 281, -1, -1, -1, -1,
+ -1, 287, 288, 289, 290, -1, -1, -1, 58, 59,
+ -1, -1, -1, 63, 300, 301, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 41, 93, -1, 44, 272, 273, 274, 275,
+ -1, 41, -1, 279, 44, 281, -1, -1, -1, 58,
+ 59, 287, 288, 289, 290, -1, -1, -1, 58, 59,
+ -1, -1, -1, 63, 300, 301, -1, 303, 304, 305,
+ 306, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, -1, -1, 93, -1, -1, 41, -1, -1,
+ 44, -1, -1, 93, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
-1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
-1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, 93, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 41, -1, -1, 44, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 41, -1, 93, 44, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, 58, 59, 279,
- -1, 281, 63, -1, -1, -1, -1, 287, 288, 289,
- 290, -1, -1, -1, -1, -1, -1, -1, 298, 299,
- -1, 301, 302, 303, 304, 305, 306, 307, 41, -1,
- 310, 44, 93, 313, 314, 315, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- 93, -1, 287, 288, 289, 290, -1, -1, -1, 41,
- -1, -1, 44, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, 58, 59, 313, 314,
- 315, 63, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, 93, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, 272, 273, 274, 275, -1, -1, -1, 279, -1,
+ 288, 289, 290, -1, -1, -1, -1, -1, -1, 93,
+ -1, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ 308, 309, -1, -1, 312, -1, -1, 315, 316, 317,
+ -1, 272, 273, 274, 275, -1, 41, -1, 279, 44,
281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, 41, -1, -1, 44, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, -1, -1, 310,
- 58, 59, 313, 314, 315, 63, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, -1, -1, 93, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 41, -1, 310,
- -1, -1, 313, 314, 315, -1, -1, -1, -1, 272,
- 273, 274, 275, -1, 58, 59, 279, -1, 281, 63,
- -1, -1, -1, -1, 287, 288, 289, 290, -1, -1,
- -1, -1, -1, -1, -1, 298, 299, -1, 301, 302,
- 303, 304, 305, 306, 307, -1, 41, 310, -1, 93,
- 313, 314, 315, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, 300,
+ 301, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, -1, -1, 315, 316, 317, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, 41, 93, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, 93,
+ 279, -1, 272, 273, 274, 275, -1, 41, -1, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, 300, 301, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 272, 273,
+ 274, 275, -1, 41, -1, 279, 44, 281, -1, 93,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
+ 58, 59, -1, -1, -1, 63, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, -1, -1, -1, -1, -1, 41,
+ -1, -1, 44, -1, -1, 93, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
+ -1, 63, 41, -1, -1, 44, -1, 272, 273, 274,
+ 275, -1, -1, -1, 279, -1, 281, -1, -1, 58,
+ 59, -1, 287, 288, 289, 290, -1, -1, -1, -1,
+ -1, 93, -1, -1, -1, 300, 301, -1, 303, 304,
+ 305, 306, 307, 308, 309, -1, -1, 312, -1, -1,
+ 315, 316, 317, 41, 93, -1, 44, -1, 272, 273,
+ 274, 275, 41, -1, -1, 279, -1, 281, -1, -1,
+ 58, 59, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, -1, 93, -1, -1, -1, -1,
+ -1, -1, -1, -1, 93, -1, -1, -1, 272, 273,
+ 274, 275, 41, -1, -1, 279, -1, 281, -1, -1,
+ -1, -1, -1, 287, 288, 289, 290, -1, -1, 58,
+ 59, -1, -1, -1, 63, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 272, 273, 274, 275, 41, -1,
+ -1, 279, -1, 281, 93, -1, -1, -1, -1, 287,
+ 288, 289, 290, -1, -1, 58, 59, -1, -1, -1,
+ 63, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ 308, 309, -1, -1, 312, -1, -1, 315, 316, 317,
272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
- -1, -1, -1, -1, -1, 287, 288, 289, 290, -1,
- -1, -1, 41, -1, -1, -1, 298, 299, 93, 301,
- 302, 303, 304, 305, 306, 307, -1, -1, 310, 58,
- 59, 313, 314, 315, 63, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
- -1, -1, -1, -1, 93, -1, -1, -1, -1, -1,
- -1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
+ 93, -1, -1, -1, -1, 287, 288, 289, 290, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, 300, 301,
+ 279, 303, 304, 305, 306, 307, 308, 309, -1, 41,
+ 312, -1, 44, 315, 316, 317, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, -1, 58, 59, -1, -1,
+ -1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 272, 273, 274, 275, -1, -1,
- -1, 279, -1, 281, -1, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, 41, -1, 93, 44,
- 298, 299, -1, 301, 302, 303, 304, 305, 306, 307,
- -1, -1, 310, 58, 59, 313, 314, 315, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, 93, -1,
- -1, -1, -1, 287, 288, 289, 290, -1, -1, -1,
- 41, -1, -1, 44, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, 307, -1, -1, 310, 58, 59, 313,
- 314, 315, 63, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, -1, 93, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, -1, 310, -1, -1, 313, 314,
- 315, -1, -1, 272, 273, 274, 275, -1, -1, -1,
- 279, -1, 281, -1, -1, -1, -1, -1, 287, 288,
- 289, 290, -1, -1, -1, -1, -1, -1, -1, 298,
- 299, -1, 301, 302, 303, 304, 305, 306, 307, -1,
- -1, 310, -1, -1, 313, 314, 315, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, 58, 59, 310, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, 41, 93, -1,
- 44, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, -1, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 279, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, 93, 281, -1, -1, -1, -1, -1, 287, 288,
+ 289, 290, 300, 301, -1, -1, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, 304, 305, 306, 307, 308,
+ 309, -1, -1, 312, -1, -1, 315, 316, 317, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, 93,
- 281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- 41, -1, -1, 44, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 58, 59, -1,
- -1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, -1, -1, 44,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, 41, 281, -1, 44, -1, -1, -1, 287, 288,
+ 289, 290, -1, -1, -1, -1, -1, -1, 58, 59,
+ -1, 300, 301, 63, 303, 304, 305, 306, 307, 308,
+ 309, -1, -1, 312, -1, -1, 315, 316, 317, 272,
+ 273, 274, 275, -1, 41, -1, 279, 44, 281, -1,
+ -1, -1, -1, 93, 287, 288, 289, 290, -1, -1,
+ -1, 58, 59, -1, -1, -1, 63, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, 33, -1, 312,
+ -1, -1, 315, 316, 317, 41, -1, -1, 41, 45,
+ -1, 44, 48, -1, -1, 51, 93, -1, -1, 55,
+ 56, 57, 58, 59, -1, 58, 59, 63, 64, -1,
+ 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 272, 273, 274, 275, -1, -1, -1, 279, 41, 281,
+ -1, 44, -1, -1, -1, 287, 288, 289, 290, -1,
+ 93, -1, 98, -1, -1, 58, 59, -1, 300, 301,
+ 63, 303, 304, 305, 306, 307, 308, 309, -1, -1,
+ 312, -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,
+ 93, -1, -1, 58, 59, -1, -1, -1, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 41, -1, -1, 44, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 93, -1,
- 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ -1, -1, -1, -1, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 93, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, 93, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, 307, 58, 59, -1, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
+ -1, 187, 272, 273, 274, 275, -1, 41, -1, 279,
+ 44, 281, -1, -1, -1, -1, -1, 287, 288, 289,
+ 290, -1, -1, -1, 58, 59, -1, -1, -1, 63,
+ 300, 301, -1, 303, 304, 305, 306, 307, 308, 309,
+ -1, -1, 312, -1, -1, 272, 273, 274, 275, -1,
+ 41, -1, 279, 44, 281, -1, -1, -1, -1, 93,
+ 287, 288, 289, 290, -1, -1, -1, 58, 59, -1,
+ -1, -1, 63, 300, 301, -1, 303, 304, 305, 306,
+ 307, 308, 309, -1, -1, -1, 272, -1, -1, 272,
+ 273, 274, 275, -1, -1, -1, 279, 41, 281, -1,
+ 44, -1, 93, -1, 287, 288, 289, 290, -1, -1,
+ -1, -1, -1, -1, 58, 59, -1, 300, 301, 305,
+ 303, 304, 305, 306, 307, 308, 309, -1, -1, 272,
+ 273, 274, 275, -1, 41, -1, 279, 44, 281, -1,
+ -1, -1, -1, -1, 287, 288, 289, 290, -1, 93,
+ -1, 58, 59, -1, -1, -1, 63, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, 272, 273, 274,
+ 275, -1, 41, -1, 279, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, 289, 290, 93, -1, -1, 58,
+ 59, -1, -1, -1, 63, 300, 301, -1, 303, 304,
+ 305, 306, 307, 308, 309, -1, -1, -1, -1, 41,
+ -1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 93, -1, 58, 59, -1, -1,
+ -1, 63, -1, -1, -1, -1, -1, -1, 272, 273,
274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, 289, 290, 41, 93, -1,
- 44, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, 307, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 272, 273, 274, 275, -1, -1, -1, 279, 93,
+ -1, -1, -1, 287, 288, 289, 290, 58, -1, -1,
+ -1, 93, 63, -1, -1, -1, 300, 301, -1, 303,
+ 304, 305, 306, 307, 308, 309, -1, -1, -1, -1,
+ -1, 272, 273, 274, 275, -1, 41, -1, 279, 44,
281, -1, -1, -1, -1, -1, 287, 288, 289, 290,
- -1, -1, -1, -1, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 306, 307, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, -1, 287, 288, 289, 290, -1, -1, -1, -1,
- -1, -1, 41, 298, 299, 44, 301, 302, 303, 304,
- 305, 306, 307, -1, 272, 273, 274, 275, -1, 58,
- 59, 279, -1, 281, 63, -1, -1, -1, -1, 287,
- 288, 289, 290, -1, -1, -1, -1, -1, -1, 41,
- 298, 299, 44, 301, 302, 303, 304, 305, 306, 307,
- 41, -1, -1, 44, 93, -1, 58, 59, -1, -1,
- -1, 63, -1, -1, -1, -1, -1, 58, 59, -1,
- -1, -1, 63, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, -1, -1, 279, -1, 281, -1, -1, -1,
- -1, 93, 287, 288, 289, 290, 41, -1, -1, 44,
- -1, -1, 93, 298, 299, -1, 301, 302, 303, 304,
- 305, 306, -1, 58, 59, -1, -1, -1, 63, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, -1, 290, 41, 93, -1,
- 44, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, 306, -1, 58, 59, -1, -1, -1, 63,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 41, -1, -1, 44, -1,
- -1, -1, -1, -1, -1, 41, -1, -1, 44, 93,
- -1, -1, 58, 59, -1, -1, -1, 63, -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, 272, 273, 274, 275, 93, -1, -1,
- 279, -1, 281, -1, -1, -1, -1, 93, 287, 288,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 298,
- 299, -1, 301, 302, 303, 304, 305, 306, -1, -1,
- 272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
- -1, 272, 273, 274, 275, 287, 288, -1, 279, -1,
- 281, -1, -1, -1, -1, -1, 298, 299, -1, 301,
- 302, 303, 304, 305, -1, -1, -1, 298, 299, -1,
- 301, 302, 303, 304, 305, 41, -1, -1, 44, -1,
- -1, -1, -1, -1, -1, -1, -1, 272, 273, 274,
- 275, -1, 58, 59, 279, -1, 281, 63, -1, -1,
- -1, -1, 287, 288, -1, -1, -1, -1, 41, -1,
- -1, 44, -1, 298, 299, -1, 301, 302, 303, 304,
- 305, -1, -1, -1, -1, 58, 59, 93, -1, -1,
- 63, -1, -1, -1, -1, -1, -1, -1, 272, 273,
- 274, 275, -1, -1, -1, 279, -1, 281, -1, -1,
- -1, -1, -1, 287, 288, -1, -1, -1, -1, -1,
- 93, -1, -1, -1, 298, 299, -1, 301, 302, 303,
- 304, 305, -1, -1, -1, -1, 272, 273, 274, 275,
- -1, -1, -1, 279, -1, 281, 272, 273, 274, 275,
- -1, 287, 288, 279, -1, 281, -1, -1, -1, -1,
- -1, -1, 298, 299, -1, 301, 302, 303, 304, 305,
- -1, 41, 298, 299, 44, 301, 302, 303, 304, 305,
- -1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
- 30, -1, -1, 63, -1, -1, -1, -1, 38, -1,
- -1, -1, 42, -1, -1, 45, -1, -1, -1, -1,
- -1, -1, 52, 53, 54, 55, 56, -1, -1, -1,
- 60, 61, -1, 93, -1, -1, 66, -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, 94, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 272, 273, 274, 275,
- -1, -1, -1, 279, -1, 281, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 298, 299, -1, 301, 302, 303, 304, 272,
+ -1, -1, -1, 58, 59, -1, -1, -1, 63, 300,
+ 301, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, -1, -1, 41, -1, -1, 44, -1, 272, 273,
+ 274, 275, -1, 41, -1, 279, 44, -1, 93, -1,
+ 58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
+ 58, 59, -1, -1, -1, 63, 300, 301, -1, -1,
+ -1, -1, -1, -1, -1, 272, 273, 274, 275, -1,
+ 41, -1, 279, 44, 281, 93, -1, -1, -1, -1,
+ 287, 288, 289, 290, -1, 93, -1, 58, 59, -1,
+ -1, -1, 63, 300, 301, -1, 303, 304, 305, 306,
+ 307, 308, 309, 272, 273, 274, 275, -1, 41, -1,
+ 279, 44, 281, -1, -1, -1, -1, -1, 287, 288,
+ 289, 290, 93, -1, -1, 58, 59, -1, -1, -1,
+ 63, 300, 301, -1, 303, 304, 305, 306, 307, 308,
+ 272, 273, 274, 275, -1, 41, -1, 279, 44, 281,
+ -1, -1, -1, -1, -1, 287, 288, -1, 290, -1,
+ 93, 41, 58, 59, 44, -1, -1, 63, 300, 301,
+ -1, 303, 304, 305, 306, 307, 308, -1, 58, 59,
+ 281, -1, -1, 63, -1, -1, 287, 288, 289, 290,
+ -1, -1, -1, -1, -1, -1, -1, 93, -1, -1,
+ -1, -1, 303, 304, 305, 306, 307, 308, 309, -1,
+ -1, 312, -1, 93, 315, 316, 317, 272, 273, 274,
+ 275, -1, 41, -1, 279, 44, 281, -1, -1, -1,
+ -1, -1, 287, 288, -1, -1, -1, -1, -1, 58,
+ 59, -1, -1, -1, 63, 300, 301, -1, 303, 304,
+ 305, 306, 307, -1, 272, 273, 274, 275, -1, 41,
+ -1, 279, 44, 281, 272, 273, 274, 275, -1, 287,
+ 288, 279, -1, 281, 93, -1, 58, 59, -1, 287,
+ 288, 63, 300, 301, -1, 303, 304, 305, 306, 307,
+ -1, -1, 300, 301, -1, 303, 304, 305, 306, 307,
+ -1, 272, 273, 274, 275, -1, -1, -1, 279, -1,
+ 281, 93, -1, -1, -1, -1, 287, 288, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 300,
+ 301, -1, 303, 304, 305, 306, 307, -1, -1, 272,
273, 274, 275, -1, -1, -1, 279, -1, 281, -1,
- -1, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 298, 299, -1, 301, 302,
- 303, -1, -1, -1, -1, -1, -1, -1, 178, -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, 288, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 300, 301, -1,
+ 303, 304, 305, 306, 307, -1, 272, 273, 274, 275,
+ -1, -1, -1, 279, -1, 281, -1, -1, -1, -1,
+ -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
+ -1, 281, -1, -1, 300, 301, -1, 303, 304, 305,
+ 306, 307, -1, -1, -1, -1, -1, -1, -1, -1,
+ 300, 301, -1, 303, 304, 305, 306, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 272, 273, 274, 275, -1, -1, -1,
+ 279, -1, 281, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 300, 301, -1, 303, 304, 305, -1, -1, -1,
+ 272, 273, 274, 275, -1, -1, -1, 279, -1, 281,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 272, 273, 274, 275, -1, -1, -1, 279,
- -1, 281, -1, -1, -1, -1, -1, -1, 258, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 298, 299,
- -1, 301, 302, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 289,
+ -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
+ -1, 303, 304,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
-#define YYMAXTOKEN 315
+#define YYMAXTOKEN 317
#if YYDEBUG
static char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1140,9 +1143,9 @@ static char *yyname[] = {
"ANONSUB","PACKAGE","USE","WHILE","UNTIL","IF","UNLESS","ELSE","ELSIF",
"CONTINUE","FOR","LOOPEX","DOTDOT","FUNC0","FUNC1","FUNC","UNIOP","LSTOP",
"RELOP","EQOP","MULOP","ADDOP","DOLSHARP","DO","HASHBRACK","NOAMP","LOCAL","MY",
-"PREC_LOW","OROP","ANDOP","NOTOP","ASSIGNOP","OROR","ANDAND","BITOROP",
-"BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP","PREINC","PREDEC",
-"POSTINC","POSTDEC","ARROW",
+"MYSUB","COLONATTR","PREC_LOW","OROP","ANDOP","NOTOP","ASSIGNOP","OROR",
+"ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+"PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
};
static char *yyrule[] = {
"$accept : prog",
@@ -1193,18 +1196,25 @@ static char *yyrule[] = {
"label : LABEL",
"decl : format",
"decl : subrout",
+"decl : mysubrout",
"decl : package",
"decl : use",
"format : FORMAT startformsub formname block",
"formname : WORD",
"formname :",
-"subrout : SUB startsub subname proto subbody",
+"mysubrout : MYSUB startsub subname proto subattrlist subbody",
+"subrout : SUB startsub subname proto subattrlist subbody",
"startsub :",
"startanonsub :",
"startformsub :",
"subname : WORD",
"proto :",
"proto : THING",
+"subattrlist :",
+"subattrlist : COLONATTR THING",
+"subattrlist : COLONATTR",
+"myattrlist : COLONATTR THING",
+"myattrlist : COLONATTR",
"subbody : block",
"subbody : ';'",
"package : PACKAGE WORD ';'",
@@ -1263,14 +1273,15 @@ static char *yyrule[] = {
"term : term POSTDEC",
"term : PREINC term",
"term : PREDEC term",
-"term : local term",
+"term : myattrterm",
+"term : LOCAL term",
"term : '(' expr ')'",
"term : '(' ')'",
"term : '[' expr ']'",
"term : '[' ']'",
"term : HASHBRACK expr ';' '}'",
"term : HASHBRACK ';' '}'",
-"term : ANONSUB startanonsub proto block",
+"term : ANONSUB startanonsub proto subattrlist block",
"term : scalar",
"term : star",
"term : hsh",
@@ -1308,13 +1319,18 @@ static char *yyrule[] = {
"term : PMFUNC '(' term ',' term ')'",
"term : WORD",
"term : listop",
+"myattrterm : MY myterm myattrlist",
+"myattrterm : MY myterm",
+"myterm : '(' expr ')'",
+"myterm : '(' ')'",
+"myterm : scalar",
+"myterm : hsh",
+"myterm : ary",
"listexpr :",
"listexpr : argexpr",
"listexprcom :",
"listexprcom : expr",
"listexprcom : expr ','",
-"local : LOCAL",
-"local : MY",
"my_scalar : scalar",
"amper : '&' indirob",
"scalar : '$' indirob",
@@ -1342,26 +1358,22 @@ static char *yyrule[] = {
#define YYMAXDEPTH 500
#endif
#endif
-#line 666 "perly.y"
+#line 726 "perly.y"
/* PROGRAM */
-#line 1427 "perly.c"
+
+/* more stuff added to make perly_c.diff easier to apply */
+
+#ifdef yyparse
+#undef yyparse
+#endif
+#define yyparse() Perl_yyparse(pTHX)
+
+#line 1372 "perly.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
-
-struct ysv {
- short* yyss;
- YYSTYPE* yyvs;
- int oldyydebug;
- int oldyynerrs;
- int oldyyerrflag;
- int oldyychar;
- YYSTYPE oldyyval;
- YYSTYPE oldyylval;
-};
-
int
-Perl_yyparse(pTHX)
+yyparse()
{
register int yym, yyn, yystate;
register short *yyssp;
@@ -1372,11 +1384,6 @@ Perl_yyparse(pTHX)
int retval = 0;
#if YYDEBUG
register char *yys;
-#ifndef __cplusplus
-# ifndef getenv
- extern char *getenv();
-# endif
-#endif
#endif
struct ysv *ysave;
@@ -1388,7 +1395,7 @@ Perl_yyparse(pTHX)
ysave->oldyychar = yychar;
ysave->oldyyval = yyval;
ysave->oldyylval = yylval;
-
+
#if YYDEBUG
if (yys = getenv("YYDEBUG"))
{
@@ -1428,7 +1435,7 @@ yyloop:
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
- printf("yydebug: state %d, reading %d (%s)\n", yystate,
+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
yychar, yys);
}
#endif
@@ -1450,10 +1457,8 @@ yyloop:
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs =
- (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss =
- (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
@@ -1494,8 +1499,8 @@ yyinrecovery:
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: state %d, error recovery shifting to state %d\n",
- *yyssp, yytable[yyn]);
+ "yydebug: state %d, error recovery shifting to state %d\n",
+ *yyssp, yytable[yyn]);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -1506,10 +1511,8 @@ yyinrecovery:
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs = (YYSTYPE*)PerlMem_realloc((char*)yyvs,
- yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss = (short*)PerlMem_realloc((char*)yyss,
- yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
@@ -1523,9 +1526,8 @@ yyinrecovery:
{
#if YYDEBUG
if (yydebug)
- PerlIO_printf(Perl_debug_log,
- "yydebug: error recovery discarding state %d\n",
- *yyssp);
+ PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
+ *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
@@ -1542,9 +1544,8 @@ yyinrecovery:
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
- PerlIO_printf(Perl_debug_log,
- "yydebug: state %d, error recovery discards token %d (%s)\n",
- yystate, yychar, yys);
+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
+ yystate, yychar, yys);
}
#endif
yychar = (-1);
@@ -1561,7 +1562,7 @@ yyreduce:
switch (yyn)
{
case 1:
-#line 101 "perly.y"
+#line 125 "perly.y"
{
#if defined(YYDEBUG) && defined(DEBUGGING)
yydebug = (PL_debug & 1);
@@ -1570,50 +1571,50 @@ case 1:
}
break;
case 2:
-#line 108 "perly.y"
+#line 132 "perly.y"
{ newPROG(yyvsp[0].opval); }
break;
case 3:
-#line 112 "perly.y"
+#line 136 "perly.y"
{ if (PL_copline > (line_t)yyvsp[-3].ival)
PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 4:
-#line 118 "perly.y"
+#line 142 "perly.y"
{ yyval.ival = block_start(TRUE); }
break;
case 5:
-#line 122 "perly.y"
+#line 146 "perly.y"
{ if (PL_copline > (line_t)yyvsp[-3].ival)
PL_copline = yyvsp[-3].ival;
yyval.opval = block_end(yyvsp[-2].ival, yyvsp[-1].opval); }
break;
case 6:
-#line 128 "perly.y"
+#line 152 "perly.y"
{ yyval.ival = block_start(FALSE); }
break;
case 7:
-#line 132 "perly.y"
+#line 156 "perly.y"
{ yyval.opval = Nullop; }
break;
case 8:
-#line 134 "perly.y"
+#line 158 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
case 9:
-#line 136 "perly.y"
+#line 160 "perly.y"
{ yyval.opval = append_list(OP_LINESEQ,
(LISTOP*)yyvsp[-1].opval, (LISTOP*)yyvsp[0].opval);
PL_pad_reset_pending = TRUE;
if (yyvsp[-1].opval && yyvsp[0].opval) PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 10:
-#line 143 "perly.y"
+#line 167 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-1].pval, yyvsp[0].opval); }
break;
case 12:
-#line 146 "perly.y"
+#line 170 "perly.y"
{ if (yyvsp[-1].pval != Nullch) {
yyval.opval = newSTATEOP(0, yyvsp[-1].pval, newOP(OP_NULL, 0));
}
@@ -1624,75 +1625,75 @@ case 12:
PL_expect = XSTATE; }
break;
case 13:
-#line 155 "perly.y"
+#line 179 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval, yyvsp[-1].opval);
PL_expect = XSTATE; }
break;
case 14:
-#line 160 "perly.y"
+#line 184 "perly.y"
{ yyval.opval = Nullop; }
break;
case 15:
-#line 162 "perly.y"
+#line 186 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
case 16:
-#line 164 "perly.y"
+#line 188 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 17:
-#line 166 "perly.y"
+#line 190 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[0].opval, yyvsp[-2].opval); }
break;
case 18:
-#line 168 "perly.y"
+#line 192 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, scalar(yyvsp[0].opval), yyvsp[-2].opval); }
break;
case 19:
-#line 170 "perly.y"
+#line 194 "perly.y"
{ yyval.opval = newLOOPOP(OPf_PARENS, 1, yyvsp[0].opval, yyvsp[-2].opval);}
break;
case 20:
-#line 172 "perly.y"
+#line 196 "perly.y"
{ yyval.opval = newFOROP(0, Nullch, yyvsp[-1].ival,
Nullop, yyvsp[0].opval, yyvsp[-2].opval, Nullop); }
break;
case 21:
-#line 177 "perly.y"
+#line 201 "perly.y"
{ yyval.opval = Nullop; }
break;
case 22:
-#line 179 "perly.y"
+#line 203 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 23:
-#line 181 "perly.y"
+#line 205 "perly.y"
{ PL_copline = yyvsp[-5].ival;
yyval.opval = newCONDOP(0, yyvsp[-3].opval, scope(yyvsp[-1].opval), yyvsp[0].opval);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 24:
-#line 187 "perly.y"
+#line 211 "perly.y"
{ PL_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 191 "perly.y"
+#line 215 "perly.y"
{ PL_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 26:
-#line 197 "perly.y"
+#line 221 "perly.y"
{ yyval.opval = Nullop; }
break;
case 27:
-#line 199 "perly.y"
+#line 223 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
case 28:
-#line 203 "perly.y"
+#line 227 "perly.y"
{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1700,7 +1701,7 @@ case 28:
yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 29:
-#line 209 "perly.y"
+#line 233 "perly.y"
{ PL_copline = yyvsp[-6].ival;
yyval.opval = block_end(yyvsp[-4].ival,
newSTATEOP(0, yyvsp[-7].pval,
@@ -1708,23 +1709,23 @@ case 29:
yyvsp[-6].ival, yyvsp[-3].opval, yyvsp[-1].opval, yyvsp[0].opval))); }
break;
case 30:
-#line 215 "perly.y"
+#line 239 "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 31:
-#line 218 "perly.y"
+#line 242 "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 32:
-#line 222 "perly.y"
+#line 246 "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 33:
-#line 226 "perly.y"
+#line 250 "perly.y"
{ OP *forop = append_elem(OP_LINESEQ,
scalar(yyvsp[-6].opval),
newWHILEOP(0, 1, (LOOP*)Nullop,
@@ -1734,427 +1735,459 @@ case 33:
yyval.opval = block_end(yyvsp[-7].ival, newSTATEOP(0, yyvsp[-10].pval, forop)); }
break;
case 34:
-#line 234 "perly.y"
+#line 258 "perly.y"
{ yyval.opval = newSTATEOP(0, yyvsp[-2].pval,
newWHILEOP(0, 1, (LOOP*)Nullop,
NOLINE, Nullop, yyvsp[-1].opval, yyvsp[0].opval)); }
break;
case 35:
-#line 240 "perly.y"
+#line 264 "perly.y"
{ yyval.opval = Nullop; }
break;
case 37:
-#line 245 "perly.y"
+#line 269 "perly.y"
{ (void)scan_num("1"); yyval.opval = yylval.opval; }
break;
case 39:
-#line 250 "perly.y"
+#line 274 "perly.y"
{ yyval.opval = invert(scalar(yyvsp[0].opval)); }
break;
case 40:
-#line 254 "perly.y"
+#line 278 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 41:
-#line 258 "perly.y"
+#line 282 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 42:
-#line 262 "perly.y"
+#line 286 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 43:
-#line 266 "perly.y"
+#line 290 "perly.y"
{ yyval.opval = yyvsp[0].opval; intro_my(); }
break;
case 44:
-#line 270 "perly.y"
+#line 294 "perly.y"
{ yyval.pval = Nullch; }
break;
case 46:
-#line 275 "perly.y"
+#line 299 "perly.y"
{ yyval.ival = 0; }
break;
case 47:
-#line 277 "perly.y"
+#line 301 "perly.y"
{ yyval.ival = 0; }
break;
case 48:
-#line 279 "perly.y"
+#line 303 "perly.y"
{ yyval.ival = 0; }
break;
case 49:
-#line 281 "perly.y"
+#line 305 "perly.y"
{ yyval.ival = 0; }
break;
case 50:
-#line 285 "perly.y"
-{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 307 "perly.y"
+{ yyval.ival = 0; }
break;
case 51:
-#line 288 "perly.y"
-{ yyval.opval = yyvsp[0].opval; }
+#line 311 "perly.y"
+{ newFORM(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 52:
-#line 289 "perly.y"
-{ yyval.opval = Nullop; }
+#line 314 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
case 53:
-#line 293 "perly.y"
-{ newSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
+#line 315 "perly.y"
+{ yyval.opval = Nullop; }
break;
case 54:
-#line 297 "perly.y"
-{ yyval.ival = start_subparse(FALSE, 0); }
+#line 319 "perly.y"
+{ newMYSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 55:
-#line 301 "perly.y"
-{ yyval.ival = start_subparse(FALSE, CVf_ANON); }
+#line 323 "perly.y"
+{ newATTRSUB(yyvsp[-4].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
case 56:
-#line 305 "perly.y"
-{ yyval.ival = start_subparse(TRUE, 0); }
+#line 327 "perly.y"
+{ yyval.ival = start_subparse(FALSE, 0); }
break;
case 57:
-#line 308 "perly.y"
+#line 331 "perly.y"
+{ yyval.ival = start_subparse(FALSE, CVf_ANON); }
+break;
+case 58:
+#line 335 "perly.y"
+{ yyval.ival = start_subparse(TRUE, 0); }
+break;
+case 59:
+#line 338 "perly.y"
{ STRLEN n_a; char *name = SvPV(((SVOP*)yyvsp[0].opval)->op_sv,n_a);
if (strEQ(name, "BEGIN") || strEQ(name, "END")
|| strEQ(name, "INIT"))
CvSPECIAL_on(PL_compcv);
yyval.opval = yyvsp[0].opval; }
break;
-case 58:
-#line 316 "perly.y"
+case 60:
+#line 346 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 60:
-#line 320 "perly.y"
+case 62:
+#line 351 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 63:
+#line 353 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 64:
+#line 355 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 65:
+#line 359 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 61:
-#line 321 "perly.y"
+case 66:
+#line 361 "perly.y"
+{ yyval.opval = Nullop; }
+break;
+case 67:
+#line 364 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 68:
+#line 365 "perly.y"
{ yyval.opval = Nullop; PL_expect = XSTATE; }
break;
-case 62:
-#line 325 "perly.y"
+case 69:
+#line 369 "perly.y"
{ package(yyvsp[-1].opval); }
break;
-case 63:
-#line 327 "perly.y"
+case 70:
+#line 371 "perly.y"
{ package(Nullop); }
break;
-case 64:
-#line 331 "perly.y"
+case 71:
+#line 375 "perly.y"
{ CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
-case 65:
-#line 333 "perly.y"
+case 72:
+#line 377 "perly.y"
{ utilize(yyvsp[-6].ival, yyvsp[-5].ival, yyvsp[-3].opval, yyvsp[-2].opval, yyvsp[-1].opval); }
break;
-case 66:
-#line 337 "perly.y"
+case 73:
+#line 381 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 67:
-#line 339 "perly.y"
+case 74:
+#line 383 "perly.y"
{ yyval.opval = newLOGOP(yyvsp[-1].ival, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 69:
-#line 344 "perly.y"
+case 76:
+#line 388 "perly.y"
{ yyval.opval = yyvsp[-1].opval; }
break;
-case 70:
-#line 346 "perly.y"
+case 77:
+#line 390 "perly.y"
{ yyval.opval = append_elem(OP_LIST, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 72:
-#line 351 "perly.y"
+case 79:
+#line 395 "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 73:
-#line 354 "perly.y"
+case 80:
+#line 398 "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 74:
-#line 357 "perly.y"
+case 81:
+#line 401 "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 75:
-#line 362 "perly.y"
+case 82:
+#line 406 "perly.y"
{ yyval.opval = convert(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, scalar(yyvsp[-2].opval),
newUNOP(OP_METHOD, 0, yyvsp[0].opval))); }
break;
-case 76:
-#line 366 "perly.y"
+case 83:
+#line 410 "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 77:
-#line 371 "perly.y"
+case 84:
+#line 415 "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 78:
-#line 376 "perly.y"
+case 85:
+#line 420 "perly.y"
{ yyval.opval = convert(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 79:
-#line 378 "perly.y"
+case 86:
+#line 422 "perly.y"
{ yyval.opval = convert(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 80:
-#line 380 "perly.y"
-{ yyvsp[0].opval = newANONSUB(yyvsp[-1].ival, 0, yyvsp[0].opval); }
+case 87:
+#line 424 "perly.y"
+{ yyvsp[0].opval = newANONATTRSUB(yyvsp[-1].ival, 0, Nullop, yyvsp[0].opval); }
break;
-case 81:
-#line 382 "perly.y"
+case 88:
+#line 426 "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 84:
-#line 392 "perly.y"
+case 91:
+#line 436 "perly.y"
{ yyval.opval = newBINOP(OP_GELEM, 0, yyvsp[-4].opval, scalar(yyvsp[-2].opval)); }
break;
-case 85:
-#line 394 "perly.y"
+case 92:
+#line 438 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0, oopsAV(yyvsp[-3].opval), scalar(yyvsp[-1].opval)); }
break;
-case 86:
-#line 396 "perly.y"
+case 93:
+#line 440 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-4].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 87:
-#line 400 "perly.y"
+case 94:
+#line 444 "perly.y"
{ yyval.opval = newBINOP(OP_AELEM, 0,
ref(newAVREF(yyvsp[-3].opval),OP_RV2AV),
scalar(yyvsp[-1].opval));}
break;
-case 88:
-#line 404 "perly.y"
+case 95:
+#line 448 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0, oopsHV(yyvsp[-4].opval), jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 89:
-#line 407 "perly.y"
+case 96:
+#line 451 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-5].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 90:
-#line 412 "perly.y"
+case 97:
+#line 456 "perly.y"
{ yyval.opval = newBINOP(OP_HELEM, 0,
ref(newHVREF(yyvsp[-4].opval),OP_RV2HV),
jmaybe(yyvsp[-2].opval));
PL_expect = XOPERATOR; }
break;
-case 91:
-#line 417 "perly.y"
+case 98:
+#line 461 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar(yyvsp[-3].opval))); }
break;
-case 92:
-#line 420 "perly.y"
+case 99:
+#line 464 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval,
newCVREF(0, scalar(yyvsp[-4].opval)))); }
break;
-case 93:
-#line 425 "perly.y"
+case 100:
+#line 469 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval,
newCVREF(0, scalar(yyvsp[-3].opval)))); }
break;
-case 94:
-#line 429 "perly.y"
+case 101:
+#line 473 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
newCVREF(0, scalar(yyvsp[-2].opval))); }
break;
-case 95:
-#line 435 "perly.y"
+case 102:
+#line 479 "perly.y"
{ yyval.opval = newASSIGNOP(OPf_STACKED, yyvsp[-2].opval, yyvsp[-1].ival, yyvsp[0].opval); }
break;
-case 96:
-#line 437 "perly.y"
+case 103:
+#line 481 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 97:
-#line 439 "perly.y"
+case 104:
+#line 483 "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 98:
-#line 443 "perly.y"
+case 105:
+#line 487 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 99:
-#line 445 "perly.y"
+case 106:
+#line 489 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 100:
-#line 447 "perly.y"
+case 107:
+#line 491 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 101:
-#line 449 "perly.y"
+case 108:
+#line 493 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 102:
-#line 451 "perly.y"
+case 109:
+#line 495 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 103:
-#line 453 "perly.y"
+case 110:
+#line 497 "perly.y"
{ yyval.opval = newBINOP(yyvsp[-1].ival, 0, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval)); }
break;
-case 104:
-#line 455 "perly.y"
+case 111:
+#line 499 "perly.y"
{ yyval.opval = newRANGE(yyvsp[-1].ival, scalar(yyvsp[-2].opval), scalar(yyvsp[0].opval));}
break;
-case 105:
-#line 457 "perly.y"
+case 112:
+#line 501 "perly.y"
{ yyval.opval = newLOGOP(OP_AND, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 106:
-#line 459 "perly.y"
+case 113:
+#line 503 "perly.y"
{ yyval.opval = newLOGOP(OP_OR, 0, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 107:
-#line 461 "perly.y"
+case 114:
+#line 505 "perly.y"
{ yyval.opval = newCONDOP(0, yyvsp[-4].opval, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 108:
-#line 463 "perly.y"
+case 115:
+#line 507 "perly.y"
{ yyval.opval = bind_match(yyvsp[-1].ival, yyvsp[-2].opval, yyvsp[0].opval); }
break;
-case 109:
-#line 466 "perly.y"
+case 116:
+#line 510 "perly.y"
{ yyval.opval = newUNOP(OP_NEGATE, 0, scalar(yyvsp[0].opval)); }
break;
-case 110:
-#line 468 "perly.y"
+case 117:
+#line 512 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 111:
-#line 470 "perly.y"
+case 118:
+#line 514 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 112:
-#line 472 "perly.y"
+case 119:
+#line 516 "perly.y"
{ yyval.opval = newUNOP(OP_COMPLEMENT, 0, scalar(yyvsp[0].opval));}
break;
-case 113:
-#line 474 "perly.y"
+case 120:
+#line 518 "perly.y"
{ yyval.opval = newUNOP(OP_REFGEN, 0, mod(yyvsp[0].opval,OP_REFGEN)); }
break;
-case 114:
-#line 476 "perly.y"
+case 121:
+#line 520 "perly.y"
{ yyval.opval = newUNOP(OP_POSTINC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTINC)); }
break;
-case 115:
-#line 479 "perly.y"
+case 122:
+#line 523 "perly.y"
{ yyval.opval = newUNOP(OP_POSTDEC, 0,
mod(scalar(yyvsp[-1].opval), OP_POSTDEC)); }
break;
-case 116:
-#line 482 "perly.y"
+case 123:
+#line 526 "perly.y"
{ yyval.opval = newUNOP(OP_PREINC, 0,
mod(scalar(yyvsp[0].opval), OP_PREINC)); }
break;
-case 117:
-#line 485 "perly.y"
+case 124:
+#line 529 "perly.y"
{ yyval.opval = newUNOP(OP_PREDEC, 0,
mod(scalar(yyvsp[0].opval), OP_PREDEC)); }
break;
-case 118:
-#line 488 "perly.y"
+case 125:
+#line 532 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 126:
+#line 534 "perly.y"
{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
break;
-case 119:
-#line 490 "perly.y"
+case 127:
+#line 536 "perly.y"
{ yyval.opval = sawparens(yyvsp[-1].opval); }
break;
-case 120:
-#line 492 "perly.y"
+case 128:
+#line 538 "perly.y"
{ yyval.opval = sawparens(newNULLLIST()); }
break;
-case 121:
-#line 494 "perly.y"
+case 129:
+#line 540 "perly.y"
{ yyval.opval = newANONLIST(yyvsp[-1].opval); }
break;
-case 122:
-#line 496 "perly.y"
+case 130:
+#line 542 "perly.y"
{ yyval.opval = newANONLIST(Nullop); }
break;
-case 123:
-#line 498 "perly.y"
+case 131:
+#line 544 "perly.y"
{ yyval.opval = newANONHASH(yyvsp[-2].opval); }
break;
-case 124:
-#line 500 "perly.y"
+case 132:
+#line 546 "perly.y"
{ yyval.opval = newANONHASH(Nullop); }
break;
-case 125:
-#line 502 "perly.y"
-{ yyval.opval = newANONSUB(yyvsp[-2].ival, yyvsp[-1].opval, yyvsp[0].opval); }
+case 133:
+#line 548 "perly.y"
+{ yyval.opval = newANONATTRSUB(yyvsp[-3].ival, yyvsp[-2].opval, yyvsp[-1].opval, yyvsp[0].opval); }
break;
-case 126:
-#line 504 "perly.y"
+case 134:
+#line 550 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 127:
-#line 506 "perly.y"
+case 135:
+#line 552 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 128:
-#line 508 "perly.y"
+case 136:
+#line 554 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 129:
-#line 510 "perly.y"
+case 137:
+#line 556 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 130:
-#line 512 "perly.y"
+case 138:
+#line 558 "perly.y"
{ yyval.opval = newUNOP(OP_AV2ARYLEN, 0, ref(yyvsp[0].opval, OP_AV2ARYLEN));}
break;
-case 131:
-#line 514 "perly.y"
+case 139:
+#line 560 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 132:
-#line 516 "perly.y"
+case 140:
+#line 562 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, yyvsp[-4].opval); }
break;
-case 133:
-#line 518 "perly.y"
+case 141:
+#line 564 "perly.y"
{ yyval.opval = newSLICEOP(0, yyvsp[-1].opval, Nullop); }
break;
-case 134:
-#line 520 "perly.y"
+case 142:
+#line 566 "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 135:
-#line 526 "perly.y"
+case 143:
+#line 572 "perly.y"
{ yyval.opval = prepend_elem(OP_HSLICE,
newOP(OP_PUSHMARK, 0),
newLISTOP(OP_HSLICE, 0,
@@ -2162,38 +2195,38 @@ case 135:
ref(oopsHV(yyvsp[-4].opval), OP_HSLICE)));
PL_expect = XOPERATOR; }
break;
-case 136:
-#line 533 "perly.y"
+case 144:
+#line 579 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 137:
-#line 535 "perly.y"
+case 145:
+#line 581 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, 0, scalar(yyvsp[0].opval)); }
break;
-case 138:
-#line 537 "perly.y"
+case 146:
+#line 583 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar(yyvsp[-2].opval)); }
break;
-case 139:
-#line 539 "perly.y"
+case 147:
+#line 585 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[-1].opval, scalar(yyvsp[-3].opval))); }
break;
-case 140:
-#line 542 "perly.y"
+case 148:
+#line 588 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 141:
-#line 545 "perly.y"
+case 149:
+#line 591 "perly.y"
{ yyval.opval = dofile(yyvsp[0].opval); }
break;
-case 142:
-#line 547 "perly.y"
+case 150:
+#line 593 "perly.y"
{ yyval.opval = newUNOP(OP_NULL, OPf_SPECIAL, scope(yyvsp[0].opval)); }
break;
-case 143:
-#line 549 "perly.y"
+case 151:
+#line 595 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
prepend_elem(OP_LIST,
@@ -2202,8 +2235,8 @@ case 143:
scalar(yyvsp[-2].opval)
)),Nullop)); dep();}
break;
-case 144:
-#line 557 "perly.y"
+case 152:
+#line 603 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB,
OPf_SPECIAL|OPf_STACKED,
append_elem(OP_LIST,
@@ -2213,151 +2246,171 @@ case 144:
scalar(yyvsp[-3].opval)
)))); dep();}
break;
-case 145:
-#line 566 "perly.y"
+case 153:
+#line 612 "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 146:
-#line 570 "perly.y"
+case 154:
+#line 616 "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 147:
-#line 575 "perly.y"
+case 155:
+#line 621 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, OPf_SPECIAL);
PL_hints |= HINT_BLOCK_SCOPE; }
break;
-case 148:
-#line 578 "perly.y"
+case 156:
+#line 624 "perly.y"
{ yyval.opval = newLOOPEX(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 149:
-#line 580 "perly.y"
+case 157:
+#line 626 "perly.y"
{ yyval.opval = newUNOP(OP_NOT, 0, scalar(yyvsp[0].opval)); }
break;
-case 150:
-#line 582 "perly.y"
+case 158:
+#line 628 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 151:
-#line 584 "perly.y"
+case 159:
+#line 630 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 152:
-#line 586 "perly.y"
+case 160:
+#line 632 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-1].ival, 0, yyvsp[0].opval); }
break;
-case 153:
-#line 588 "perly.y"
+case 161:
+#line 634 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
append_elem(OP_LIST, yyvsp[0].opval, scalar(yyvsp[-1].opval))); }
break;
-case 154:
-#line 591 "perly.y"
+case 162:
+#line 637 "perly.y"
{ yyval.opval = newOP(yyvsp[0].ival, 0); }
break;
-case 155:
-#line 593 "perly.y"
+case 163:
+#line 639 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, 0); }
break;
-case 156:
-#line 595 "perly.y"
+case 164:
+#line 641 "perly.y"
{ yyval.opval = newUNOP(OP_ENTERSUB, OPf_STACKED,
scalar(yyvsp[0].opval)); }
break;
-case 157:
-#line 598 "perly.y"
+case 165:
+#line 644 "perly.y"
{ yyval.opval = newOP(yyvsp[-2].ival, OPf_SPECIAL); }
break;
-case 158:
-#line 600 "perly.y"
+case 166:
+#line 646 "perly.y"
{ yyval.opval = newUNOP(yyvsp[-3].ival, 0, yyvsp[-1].opval); }
break;
-case 159:
-#line 602 "perly.y"
+case 167:
+#line 648 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-3].opval, yyvsp[-1].opval, Nullop); }
break;
-case 160:
-#line 604 "perly.y"
+case 168:
+#line 650 "perly.y"
{ yyval.opval = pmruntime(yyvsp[-5].opval, yyvsp[-3].opval, yyvsp[-1].opval); }
break;
-case 163:
-#line 610 "perly.y"
-{ yyval.opval = Nullop; }
+case 171:
+#line 656 "perly.y"
+{ yyval.opval = my_attrs(yyvsp[-1].opval,yyvsp[0].opval); }
break;
-case 164:
-#line 612 "perly.y"
+case 172:
+#line 658 "perly.y"
+{ yyval.opval = localize(yyvsp[0].opval,yyvsp[-1].ival); }
+break;
+case 173:
+#line 662 "perly.y"
+{ yyval.opval = sawparens(yyvsp[-1].opval); }
+break;
+case 174:
+#line 664 "perly.y"
+{ yyval.opval = sawparens(newNULLLIST()); }
+break;
+case 175:
+#line 666 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 165:
-#line 616 "perly.y"
+case 176:
+#line 668 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 177:
+#line 670 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
+break;
+case 178:
+#line 674 "perly.y"
{ yyval.opval = Nullop; }
break;
-case 166:
-#line 618 "perly.y"
+case 179:
+#line 676 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-case 167:
-#line 620 "perly.y"
-{ yyval.opval = yyvsp[-1].opval; }
+case 180:
+#line 680 "perly.y"
+{ yyval.opval = Nullop; }
break;
-case 168:
-#line 623 "perly.y"
-{ yyval.ival = 0; }
+case 181:
+#line 682 "perly.y"
+{ yyval.opval = yyvsp[0].opval; }
break;
-case 169:
-#line 624 "perly.y"
-{ yyval.ival = 1; }
+case 182:
+#line 684 "perly.y"
+{ yyval.opval = yyvsp[-1].opval; }
break;
-case 170:
-#line 628 "perly.y"
+case 183:
+#line 688 "perly.y"
{ PL_in_my = 0; yyval.opval = my(yyvsp[0].opval); }
break;
-case 171:
-#line 632 "perly.y"
+case 184:
+#line 692 "perly.y"
{ yyval.opval = newCVREF(yyvsp[-1].ival,yyvsp[0].opval); }
break;
-case 172:
-#line 636 "perly.y"
+case 185:
+#line 696 "perly.y"
{ yyval.opval = newSVREF(yyvsp[0].opval); }
break;
-case 173:
-#line 640 "perly.y"
+case 186:
+#line 700 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 174:
-#line 644 "perly.y"
+case 187:
+#line 704 "perly.y"
{ yyval.opval = newHVREF(yyvsp[0].opval); }
break;
-case 175:
-#line 648 "perly.y"
+case 188:
+#line 708 "perly.y"
{ yyval.opval = newAVREF(yyvsp[0].opval); }
break;
-case 176:
-#line 652 "perly.y"
+case 189:
+#line 712 "perly.y"
{ yyval.opval = newGVREF(0,yyvsp[0].opval); }
break;
-case 177:
-#line 656 "perly.y"
+case 190:
+#line 716 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 178:
-#line 658 "perly.y"
+case 191:
+#line 718 "perly.y"
{ yyval.opval = scalar(yyvsp[0].opval); }
break;
-case 179:
-#line 660 "perly.y"
+case 192:
+#line 720 "perly.y"
{ yyval.opval = scope(yyvsp[0].opval); }
break;
-case 180:
-#line 663 "perly.y"
+case 193:
+#line 723 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
-#line 2365 "perly.c"
+#line 2414 "perly.c"
}
yyssp -= yym;
yystate = *yyssp;
@@ -2368,8 +2421,8 @@ break;
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: after reduction, shifting from state 0 to state %d\n",
- YYFINAL);
+ "yydebug: after reduction, shifting from state 0 to state %d\n",
+ YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
@@ -2399,8 +2452,8 @@ break;
#if YYDEBUG
if (yydebug)
PerlIO_printf(Perl_debug_log,
- "yydebug: after reduction, shifting from state %d to state %d\n",
- *yyssp, yystate);
+ "yydebug: after reduction, shifting from state %d to state %d\n",
+ *yyssp, yystate);
#endif
if (yyssp >= yyss + yystacksize - 1)
{
@@ -2411,10 +2464,8 @@ break;
int yyps_index = (yyssp - yyss);
int yypv_index = (yyvsp - yyvs);
yystacksize += YYSTACKSIZE;
- ysave->yyvs = yyvs =
- (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
- ysave->yyss = yyss =
- (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
if (!yyvs || !yyss)
goto yyoverflow;
yyssp = yyss + yyps_index;
diff --git a/vms/perly_h.vms b/vms/perly_h.vms
index c750217d8f..ff89cfffbf 100644
--- a/vms/perly_h.vms
+++ b/vms/perly_h.vms
@@ -40,24 +40,27 @@
#define NOAMP 294
#define LOCAL 295
#define MY 296
-#define OROP 297
-#define ANDOP 298
-#define NOTOP 299
-#define ASSIGNOP 300
-#define OROR 301
-#define ANDAND 302
-#define BITOROP 303
-#define BITANDOP 304
-#define SHIFTOP 305
-#define MATCHOP 306
-#define UMINUS 307
-#define REFGEN 308
-#define POWOP 309
-#define PREINC 310
-#define PREDEC 311
-#define POSTINC 312
-#define POSTDEC 313
-#define ARROW 314
+#define MYSUB 297
+#define COLONATTR 298
+#define PREC_LOW 299
+#define OROP 300
+#define ANDOP 301
+#define NOTOP 302
+#define ASSIGNOP 303
+#define OROR 304
+#define ANDAND 305
+#define BITOROP 306
+#define BITANDOP 307
+#define SHIFTOP 308
+#define MATCHOP 309
+#define UMINUS 310
+#define REFGEN 311
+#define POWOP 312
+#define PREINC 313
+#define PREDEC 314
+#define POSTINC 315
+#define POSTDEC 316
+#define ARROW 317
#endif /* PERL_CORE */
typedef union {
diff --git a/xsutils.c b/xsutils.c
new file mode 100644
index 0000000000..14f9d0f185
--- /dev/null
+++ b/xsutils.c
@@ -0,0 +1,298 @@
+#include "EXTERN.h"
+#define PERL_IN_XSUTILS_C
+#include "perl.h"
+
+/*
+ * Contributed by Spider Boardman (spider.boardman@orb.nashua.nh.us).
+ */
+
+STATIC int
+S_modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs)
+{
+ SV *attr;
+ char *name;
+ STRLEN len;
+ bool negated;
+ int nret;
+
+ for (nret = 0 ; numattrs && (attr = *attrlist++); numattrs--) {
+ name = SvPV(attr, len);
+ if (negated = (*name == '-')) {
+ name++;
+ len--;
+ }
+ switch (SvTYPE(sv)) {
+ case SVt_PVCV:
+ switch ((int)len) {
+ case 6:
+ switch (*name) {
+ case 'l':
+#ifdef CVf_LVALUE
+ if (strEQ(name, "lvalue")) {
+ if (negated)
+ CvFLAGS((CV*)sv) &= ~CVf_LVALUE;
+ else
+ CvFLAGS((CV*)sv) |= CVf_LVALUE;
+ continue;
+ }
+#endif /* defined CVf_LVALUE */
+ if (strEQ(name, "locked")) {
+ if (negated)
+ CvFLAGS((CV*)sv) &= ~CVf_LOCKED;
+ else
+ CvFLAGS((CV*)sv) |= CVf_LOCKED;
+ continue;
+ }
+ break;
+ case 'm':
+ if (strEQ(name, "method")) {
+ if (negated)
+ CvFLAGS((CV*)sv) &= ~CVf_METHOD;
+ else
+ CvFLAGS((CV*)sv) |= CVf_METHOD;
+ continue;
+ }
+ break;
+ }
+ break;
+ }
+ break;
+ default:
+ /* nothing, yet */
+ break;
+ }
+ /* anything recognized had a 'continue' above */
+ *retlist++ = attr;
+ nret++;
+ }
+
+ return nret;
+}
+
+
+/* package attributes; */
+void XS_attributes__warn_reserved(pTHXo_ CV *cv);
+void XS_attributes_reftype(pTHXo_ CV *cv);
+void XS_attributes__modify_attrs(pTHXo_ CV *cv);
+void XS_attributes__guess_stash(pTHXo_ CV *cv);
+void XS_attributes__fetch_attrs(pTHXo_ CV *cv);
+void XS_attributes_bootstrap(pTHXo_ CV *cv);
+
+
+/*
+ * Note that only ${pkg}::bootstrap definitions should go here.
+ * This helps keep down the start-up time, which is especially
+ * relevant for users who don't invoke any features which are
+ * (partially) implemented here.
+ *
+ * The various bootstrap definitions can take care of doing
+ * package-specific newXS() calls. Since the layout of the
+ * bundled lib/*.pm files is in a version-specific directory,
+ * version checks in these bootstrap calls are optional.
+ */
+
+void
+Perl_boot_core_xsutils(pTHX)
+{
+ char *file = __FILE__;
+
+ newXS("attributes::bootstrap", XS_attributes_bootstrap, file);
+}
+
+#ifdef PERL_OBJECT
+#define NO_XSLOCKS
+#endif /* PERL_OBJECT */
+
+#include "XSUB.h"
+
+/* package attributes; */
+
+XS(XS_attributes_bootstrap)
+{
+ dXSARGS;
+ char *file = __FILE__;
+
+ newXSproto("attributes::_warn_reserved", XS_attributes__warn_reserved, file, "");
+ newXS("attributes::_modify_attrs", XS_attributes__modify_attrs, file);
+ newXSproto("attributes::_guess_stash", XS_attributes__guess_stash, file, "$");
+ newXSproto("attributes::_fetch_attrs", XS_attributes__fetch_attrs, file, "$");
+ newXSproto("attributes::reftype", XS_attributes_reftype, file, "$");
+
+ XSRETURN(0);
+}
+
+XS(XS_attributes__modify_attrs)
+{
+ dXSARGS;
+ SV *rv, *sv;
+
+ if (items < 1) {
+usage:
+ Perl_croak(aTHX_
+ "Usage: attributes::_modify_attrs $reference, @attributes");
+ }
+
+ rv = ST(0);
+ if (!(SvOK(rv) && SvROK(rv)))
+ goto usage;
+ sv = SvRV(rv);
+ if (items > 1)
+ XSRETURN(modify_SV_attributes(sv, &ST(0), &ST(1), items-1));
+
+ XSRETURN(0);
+}
+
+XS(XS_attributes__fetch_attrs)
+{
+ dXSARGS;
+ SV *rv, *sv;
+ cv_flags_t cvflags;
+
+ if (items != 1) {
+usage:
+ Perl_croak(aTHX_
+ "Usage: attributes::_fetch_attrs $reference");
+ }
+
+ rv = ST(0);
+ SP -= items;
+ if (!(SvOK(rv) && SvROK(rv)))
+ goto usage;
+ sv = SvRV(rv);
+
+ switch (SvTYPE(sv)) {
+ case SVt_PVCV:
+ cvflags = CvFLAGS((CV*)sv);
+ if (cvflags & CVf_LOCKED)
+ XPUSHs(sv_2mortal(newSVpvn("locked", 6)));
+#ifdef CVf_LVALUE
+ if (cvflags & CVf_LVALUE)
+ XPUSHs(sv_2mortal(newSVpvn("lvalue", 6)));
+#endif
+ if (cvflags & CVf_METHOD)
+ XPUSHs(sv_2mortal(newSVpvn("method", 6)));
+ break;
+ default:
+ break;
+ }
+
+ PUTBACK;
+}
+
+XS(XS_attributes__guess_stash)
+{
+ dXSARGS;
+ SV *rv, *sv;
+#ifdef dXSTARGET
+ dXSTARGET;
+#else
+ SV * TARG = sv_newmortal();
+#endif
+
+ if (items != 1) {
+usage:
+ Perl_croak(aTHX_
+ "Usage: attributes::_guess_stash $reference");
+ }
+
+ rv = ST(0);
+ ST(0) = TARG;
+ if (!(SvOK(rv) && SvROK(rv)))
+ goto usage;
+ sv = SvRV(rv);
+
+ if (SvOBJECT(sv))
+ sv_setpv(TARG, HvNAME(SvSTASH(sv)));
+#if 0 /* this was probably a bad idea */
+ else if (SvPADMY(sv))
+ sv_setsv(TARG, &PL_sv_no); /* unblessed lexical */
+#endif
+ else {
+ HV *stash = Nullhv;
+ switch (SvTYPE(sv)) {
+ case SVt_PVCV:
+ if (CvGV(sv) && isGV(CvGV(sv)) && GvSTASH(CvGV(sv)) &&
+ HvNAME(GvSTASH(CvGV(sv))))
+ stash = GvSTASH(CvGV(sv));
+ else if (/* !CvANON(sv) && */ CvSTASH(sv) && HvNAME(CvSTASH(sv)))
+ stash = CvSTASH(sv);
+ break;
+ case SVt_PVMG:
+ if (!(SvFAKE(sv) && SvTIED_mg(sv, '*')))
+ break;
+ /*FALLTHROUGH*/
+ case SVt_PVGV:
+ if (GvGP(sv) && GvESTASH((GV*)sv) && HvNAME(GvESTASH((GV*)sv)))
+ stash = GvESTASH((GV*)sv);
+ break;
+ default:
+ break;
+ }
+ if (stash)
+ sv_setpv(TARG, HvNAME(stash));
+ }
+
+#ifdef dXSTARGET
+ SvSETMAGIC(TARG);
+#endif
+ XSRETURN(1);
+}
+
+XS(XS_attributes_reftype)
+{
+ dXSARGS;
+ SV *rv, *sv;
+#ifdef dXSTARGET
+ dXSTARGET;
+#else
+ SV * TARG = sv_newmortal();
+#endif
+
+ if (items != 1) {
+usage:
+ Perl_croak(aTHX_
+ "Usage: attributes::reftype $reference");
+ }
+
+ rv = ST(0);
+ ST(0) = TARG;
+ if (!SvOK(rv)) {
+ ST(0) = &PL_sv_no;
+ XSRETURN(1);
+ }
+ if (!SvROK(rv))
+ goto usage;
+ sv = SvRV(rv);
+ sv_setpv(TARG, sv_reftype(sv, 0));
+#ifdef dXSTARGET
+ SvSETMAGIC(TARG);
+#endif
+
+ XSRETURN(1);
+}
+
+XS(XS_attributes__warn_reserved)
+{
+ dXSARGS;
+ SV *rv, *sv;
+#ifdef dXSTARGET
+ dXSTARGET;
+#else
+ SV * TARG = sv_newmortal();
+#endif
+
+ if (items != 0) {
+ Perl_croak(aTHX_
+ "Usage: attributes::_warn_reserved ()");
+ }
+
+ EXTEND(SP,1);
+ ST(0) = TARG;
+ sv_setiv(TARG, ckWARN(WARN_RESERVED) != 0);
+#ifdef dXSTARGET
+ SvSETMAGIC(TARG);
+#endif
+
+ XSRETURN(1);
+}
+