diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-01-08 11:52:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-01-08 11:52:00 +1200 |
commit | 28757baaaeaa3801dd997fad8b1f5f62c64a228e (patch) | |
tree | 207f182f2a7bbe578c2ac82a754f776d0bc25193 /perly.y | |
parent | 26f45c0087f1216e071d7b395c24e01de531479d (diff) | |
download | perl-28757baaaeaa3801dd997fad8b1f5f62c64a228e.tar.gz |
[inseparable changes from patch from perl5.003_19 to perl5.003_20]
BUILD PROCESS
Subject: Make Configure default to the first domain in /etc/resolv.conf
From: Chip Salzenberg <chip@atlantic.net>
Files: Configure
Subject: Start all helper scripts with $startsh
From: Chip Salzenberg <chip@atlantic.net>
Files: Configure
Subject: Support libperl.so under FreeBSD
Date: Sun, 5 Jan 1997 22:41:49 +0100
From: Ollivier Robert <roberto@keltia.freenix.fr>
Files: Configure Makefile.SH
Msg-ID: <Mutt.19970105224149.roberto@keltia.freenix.fr>
(applied based on p5p patch as commit b126116e5ae3d57fa007f8a42fd506805b35163b)
CORE LANGUAGE CHANGES
Subject: Rescind named closures
From: Chip Salzenberg <chip@atlantic.net>
Files: Makefile.SH op.c perly.c perly.c.diff perly.y pp_hot.c
Subject: Fix: empty @_ when calling empty-proto subs without parens
Date: Sat, 04 Jan 1997 10:29:04 +0000
From: Graham Barr <bodg@tiuk.ti.com>
Files: perly.c perly.y
(applied based on p5p patch as commit 3112f5de73952f91aa4e8005d9852dfddbcf0402)
CORE PORTABILITY
Subject: Configure/perl5/Compartmented Mode Workstation (fwd)
Date: Mon, 06 Jan 1997 13:15:38 -0500 (EST)
From: Andy Dougherty <doughera@fractal.phys.lafayette.edu>
Files: Configure hints/dec_osf.sh
private-msgid: <Pine.SOL.3.95.970106131505.1662C-100000@fractal.lafayette.ed
Subject: Remove obsolete file "dl_os2.xs".
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: MANIFEST
DOCUMENTATION
Subject: tiny doc patches
Date: Sat, 04 Jan 1997 11:12:13 -0500
From: Roderick Schertler <roderick@gate.net>
Files: pod/perlapio.pod pod/perlnews.pod pod/perltoc.pod
Msg-ID: <23338.852394333@eeyore.ibcinc.com>
(applied based on p5p patch as commit b681178584626ba3718f1279845fd452317134c1)
Subject: doc patch for defined on perlfunc.pod
Date: 04 Jan 1997 21:28:30 -0500
From: Roderick Schertler <roderick@gate.net>
Files: pod/perlfunc.pod
Msg-ID: <pz91686ek1.fsf@eeyore.ibcinc.com>
(applied based on p5p patch as commit 38e3adfd2e3d40b46e465482945c4f3de4bb50ef)
Subject: doc patch: perldsc
Date: 04 Jan 1997 21:25:58 -0500
From: Roderick Schertler <roderick@gate.net>
Files: pod/perldsc.pod pod/perltoc.pod
Msg-ID: <pzafqo6eo9.fsf@eeyore.ibcinc.com>
(applied based on p5p patch as commit 4d42f92e5bf79556508016b7af91233b12e526eb)
Subject: scalar caller doc fix
Date: Mon, 06 Jan 1997 22:34:20 -0500
From: Roderick Schertler <roderick@gate.net>
Files: pod/perlfunc.pod
Msg-ID: <18245.852608060@eeyore.ibcinc.com>
(applied based on p5p patch as commit 218104faecb0ec19e0f4f89e084959e757a5230f)
Subject: Misc perlfunc updates
From: Tom Christiansen <tchrist@mox.perl.com>
Files: pod/perlfunc.pod pod/perltoc.pod
LIBRARY AND EXTENSIONS
Subject: sigaction() problems
Date: Mon, 06 Jan 1997 15:42:04 -0500
From: Roderick Schertler <roderick@gate.net>
Files: ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod
Msg-ID: <12808.852583324@eeyore.ibcinc.com>
(applied based on p5p patch as commit 84e96f2bcc509ba2fb5d2c9608a30cc3cfdea41a)
Subject: Fix importation of FileHandle methods; fix POSIX docs
From: Chip Salzenberg <chip@atlantic.net>
Files: ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod lib/FileHandle.pm
Subject: Patch: make hints files warn about db-recno failures
Date: Sun, 5 Jan 1997 12:34:25 +0100
From: Dominic Dunlop <domo@slipper.ip.lu>
Files: MANIFEST hints/aux.sh hints/broken-db.msg hints/freebsd.sh
(applied based on p5p patch as commit 692df45da95e2b7d14c4560347ef4555bb40b621)
OTHER CORE CHANGES
Subject: Fix C< sub foo (&@); sub bar (&); foo {}, bar {}, bar {} >
From: Chip Salzenberg <chip@atlantic.net>
Files: perly.c perly.c.diff perly.y
Subject: plug for safe/opcode leaks
Date: Tue, 07 Jan 1997 17:20:46 -0500
From: Doug MacEachern <dougm@osf.org>
Files: op.c
Msg-ID: <199701072220.RAA02117@postman.osf.org>
(applied based on p5p patch as commit 5cbfc2849d37f748a8facbcbf1c889c575943488)
Subject: Fix Dynaloader failures with DProf
Date: Mon, 06 Jan 1997 12:18:46 -0500
From: Gurusamy Sarathy <gsar@engin.umich.edu>
Files: pp_hot.c
private-msgid: <199701061718.MAA26909@aatma.engin.umich.edu>
TESTS
Subject: New test: comp/proto.t
Date: Mon, 06 Jan 1997 09:13:03 +0000
From: Graham Barr <bodg@tiuk.ti.com>
Files: MANIFEST t/comp/proto.t
(applied based on p5p patch as commit 8c1635e65dc1b3900503d444e985e3f0e5601454)
Diffstat (limited to 'perly.y')
-rw-r--r-- | perly.y | 49 |
1 files changed, 33 insertions, 16 deletions
@@ -46,12 +46,13 @@ dep() %token <ival> DOLSHARP DO HASHBRACK NOAMP %token LOCAL MY -%type <ival> prog decl local format startsub remember mremember '&' +%type <ival> prog decl local format startsub startanonsub +%type <ival> remember mremember '&' %type <opval> block mblock lineseq line loop cond else %type <opval> expr term scalar ary hsh arylen star amper sideff %type <opval> argexpr nexpr texpr iexpr mexpr mnexpr mtexpr miexpr %type <opval> listexpr listexprcom indirob -%type <opval> listop method proto cont my_scalar +%type <opval> listop method subname proto subbody cont my_scalar %type <pval> label %left <ival> OROP @@ -269,19 +270,32 @@ format : FORMAT startsub WORD block { newFORM($2, Nullop, $3); } ; -subrout : SUB startsub WORD proto block +subrout : SUB startsub subname proto subbody { newSUB($2, $3, $4, $5); } - | SUB startsub WORD proto ';' - { newSUB($2, $3, $4, Nullop); expect = XSTATE; } + ; + +startsub: /* NULL */ /* start a subroutine scope */ + { $$ = start_subparse(); } + ; + +startanonsub: /* NULL */ /* start an anonymous subroutine scope */ + { $$ = start_subparse(); + CvANON_on(compcv); } + ; + +subname : WORD { char *name = SvPVx(((SVOP*)$1)->op_sv, na); + if (strEQ(name, "BEGIN") || strEQ(name, "END")) + CvUNIQUE_on(compcv); + $$ = $1; } ; proto : /* NULL */ { $$ = Nullop; } | THING ; - -startsub: /* NULL */ /* start a subroutine scope */ - { $$ = start_subparse(); } + +subbody : block { $$ = $1; } + | ';' { $$ = Nullop; expect = XSTATE; } ; package : PACKAGE WORD ';' @@ -290,8 +304,10 @@ package : PACKAGE WORD ';' { package(Nullop); } ; -use : USE startsub WORD WORD listexpr ';' - { utilize($1, $2, $3, $4, $5); } +use : USE startsub + { CvUNIQUE_on(compcv); /* It's a BEGIN {} */ } + WORD WORD listexpr ';' + { utilize($1, $2, $4, $5, $6); } ; expr : expr ANDOP expr @@ -333,11 +349,12 @@ listop : LSTOP indirob argexpr { $$ = convert($1, 0, $2); } | FUNC '(' listexprcom ')' { $$ = convert($1, 0, $3); } - | LSTOPSUB startsub block listexpr %prec LSTOP + | LSTOPSUB startanonsub block + { $3 = newANONSUB($2, 0, $3); } + listexpr %prec LSTOP { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, - append_elem(OP_LIST, - prepend_elem(OP_LIST, newANONSUB($2, 0, $3), $4), - $1)); } + append_elem(OP_LIST, + prepend_elem(OP_LIST, $3, $5), $1)); } ; method : METHOD @@ -411,7 +428,7 @@ term : term ASSIGNOP term { $$ = newANONHASH($2); } | HASHBRACK ';' '}' %prec '(' { $$ = newANONHASH(Nullop); } - | ANONSUB startsub proto block %prec '(' + | ANONSUB startanonsub proto block %prec '(' { $$ = newANONSUB($2, $3, $4); } | scalar %prec '(' { $$ = $1; } @@ -528,7 +545,7 @@ term : term ASSIGNOP term | FUNC0 '(' ')' { $$ = newOP($1, 0); } | FUNC0SUB - { $$ = newUNOP(OP_ENTERSUB, 0, + { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar($1)); } | FUNC1 '(' ')' { $$ = newOP($1, OPf_SPECIAL); } |