summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Mai <l.mai@web.de>2014-10-26 11:17:47 +0100
committerFather Chrysostomos <sprout@cpan.org>2014-10-26 12:42:38 -0700
commit03d05f6e34ec0d195930f4155352c2082f8dff3a (patch)
tree2cac7fcd03dd585bb31c566abcccaa735209c863
parent90d141c4a9322a9b132806feee6144ea36c9c7fb (diff)
downloadperl-03d05f6e34ec0d195930f4155352c2082f8dff3a.tar.gz
rename convert to op_convert_list and APIfy
-rw-r--r--MANIFEST1
-rw-r--r--embed.fnc2
-rw-r--r--embed.h2
-rw-r--r--ext/XS-APItest/APItest.pm2
-rw-r--r--ext/XS-APItest/APItest.xs16
-rw-r--r--ext/XS-APItest/t/join_with_space.t16
-rw-r--r--op.c100
-rw-r--r--perly.act471
-rw-r--r--perly.h64
-rw-r--r--perly.tab39
-rw-r--r--perly.y20
-rw-r--r--proto.h6
12 files changed, 402 insertions, 337 deletions
diff --git a/MANIFEST b/MANIFEST
index 5a26bdbe42..50bfc6ffea 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -3913,6 +3913,7 @@ ext/XS-APItest/t/gv_fetchmeth.t XS::APItest: tests for gv_fetchmeth() and varia
ext/XS-APItest/t/gv_init.t XS::APItest: tests for gv_init and variants
ext/XS-APItest/t/handy.t XS::APItest: tests for handy.h
ext/XS-APItest/t/hash.t XS::APItest: tests for hash related APIs
+ext/XS-APItest/t/join_with_space.t test op_convert_list
ext/XS-APItest/t/keyword_multiline.t test keyword plugin parsing across lines
ext/XS-APItest/t/keyword_plugin.t test keyword plugin mechanism
ext/XS-APItest/t/labelconst.aux auxiliary file for label test
diff --git a/embed.fnc b/embed.fnc
index bbec53afd3..ded066bf63 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -263,7 +263,7 @@ ApR |I32 |my_chsize |int fd|Off_t length
p |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o \
|NULLOK const OP *curop|bool opnext
: Used in perly.y
-pR |OP* |convert |I32 optype|I32 flags|NULLOK OP* o
+ApdR |OP* |op_convert_list |I32 optype|I32 flags|NULLOK OP* o
: Used in op.c and perl.c
pM |PERL_CONTEXT* |create_eval_scope|U32 flags
Aprd |void |croak_sv |NN SV *baseex
diff --git a/embed.h b/embed.h
index 1dc949c129..50d3824870 100644
--- a/embed.h
+++ b/embed.h
@@ -421,6 +421,7 @@
#define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c)
#define op_append_list(a,b,c) Perl_op_append_list(aTHX_ a,b,c)
#define op_contextualize(a,b) Perl_op_contextualize(aTHX_ a,b)
+#define op_convert_list(a,b,c) Perl_op_convert_list(aTHX_ a,b,c)
#define op_dump(a) Perl_op_dump(aTHX_ a)
#define op_free(a) Perl_op_free(aTHX_ a)
#define op_linklist(a) Perl_op_linklist(aTHX_ a)
@@ -1130,7 +1131,6 @@
#define ck_tell(a) Perl_ck_tell(aTHX_ a)
#define ck_trunc(a) Perl_ck_trunc(aTHX_ a)
#define closest_cop(a,b,c,d) Perl_closest_cop(aTHX_ a,b,c,d)
-#define convert(a,b,c) Perl_convert(aTHX_ a,b,c)
#define core_prototype(a,b,c,d) Perl_core_prototype(aTHX_ a,b,c,d)
#define coresub_op(a,b,c) Perl_coresub_op(aTHX_ a,b,c)
#define create_eval_scope(a) Perl_create_eval_scope(aTHX_ a)
diff --git a/ext/XS-APItest/APItest.pm b/ext/XS-APItest/APItest.pm
index 9cca610b1c..bd4a7a8ffc 100644
--- a/ext/XS-APItest/APItest.pm
+++ b/ext/XS-APItest/APItest.pm
@@ -40,7 +40,7 @@ sub import {
}
}
foreach (keys %{$exports||{}}) {
- next unless /\A(?:rpn|calcrpn|stufftest|swaptwostmts|looprest|scopelessblock|stmtasexpr|stmtsasexpr|loopblock|blockasexpr|swaplabel|labelconst|arrayfullexpr|arraylistexpr|arraytermexpr|arrayarithexpr|arrayexprflags|DEFSV|with_vars)\z/;
+ next unless /\A(?:rpn|calcrpn|stufftest|swaptwostmts|looprest|scopelessblock|stmtasexpr|stmtsasexpr|loopblock|blockasexpr|swaplabel|labelconst|arrayfullexpr|arraylistexpr|arraytermexpr|arrayarithexpr|arrayexprflags|DEFSV|with_vars|join_with_space)\z/;
$^H{"XS::APItest/$_"} = 1;
delete $exports->{$_};
}
diff --git a/ext/XS-APItest/APItest.xs b/ext/XS-APItest/APItest.xs
index 43a49e35bb..c5ae2becf1 100644
--- a/ext/XS-APItest/APItest.xs
+++ b/ext/XS-APItest/APItest.xs
@@ -664,6 +664,7 @@ static SV *hintkey_arraytermexpr_sv, *hintkey_arrayarithexpr_sv;
static SV *hintkey_arrayexprflags_sv;
static SV *hintkey_DEFSV_sv;
static SV *hintkey_with_vars_sv;
+static SV *hintkey_join_with_space_sv;
static int (*next_keyword_plugin)(pTHX_ char *, STRLEN, OP **);
/* low-level parser helpers */
@@ -1043,6 +1044,16 @@ static OP *THX_parse_keyword_with_vars(pTHX)
return block_end(save_ix, op_append_list(OP_LINESEQ, vardeclseq, body));
}
+#define parse_join_with_space() THX_parse_join_with_space(aTHX)
+static OP *THX_parse_join_with_space(pTHX)
+{
+ OP *delim, *args;
+
+ args = parse_listexpr(0);
+ delim = newSVOP(OP_CONST, 0, newSVpvs(" "));
+ return op_convert_list(OP_JOIN, 0, op_prepend_elem(OP_LIST, delim, args));
+}
+
/* plugin glue */
#define keyword_active(hintkey_sv) THX_keyword_active(aTHX_ hintkey_sv)
@@ -1135,6 +1146,10 @@ static int my_keyword_plugin(pTHX_
keyword_active(hintkey_with_vars_sv)) {
*op_ptr = parse_keyword_with_vars();
return KEYWORD_PLUGIN_STMT;
+ } else if(keyword_len == 15 && strnEQ(keyword_ptr, "join_with_space", 15) &&
+ keyword_active(hintkey_join_with_space_sv)) {
+ *op_ptr = parse_join_with_space();
+ return KEYWORD_PLUGIN_EXPR;
} else {
return next_keyword_plugin(aTHX_ keyword_ptr, keyword_len, op_ptr);
}
@@ -3423,6 +3438,7 @@ BOOT:
hintkey_arrayexprflags_sv = newSVpvs_share("XS::APItest/arrayexprflags");
hintkey_DEFSV_sv = newSVpvs_share("XS::APItest/DEFSV");
hintkey_with_vars_sv = newSVpvs_share("XS::APItest/with_vars");
+ hintkey_join_with_space_sv = newSVpvs_share("XS::APItest/join_with_space");
next_keyword_plugin = PL_keyword_plugin;
PL_keyword_plugin = my_keyword_plugin;
}
diff --git a/ext/XS-APItest/t/join_with_space.t b/ext/XS-APItest/t/join_with_space.t
new file mode 100644
index 0000000000..420f1477dd
--- /dev/null
+++ b/ext/XS-APItest/t/join_with_space.t
@@ -0,0 +1,16 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+use XS::APItest qw(join_with_space);
+
+sub foo { 'A' .. 'C' }
+
+my $bar = 42;
+my @baz = ('x', 'y');
+
+my $str = join_with_space $bar, foo, @baz;
+is $str, "42 A B C x y";
diff --git a/op.c b/op.c
index f032885ad4..fece8dd7d7 100644
--- a/op.c
+++ b/op.c
@@ -3153,7 +3153,7 @@ S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp)
/* Fake up a method call to import */
meth = newSVpvs_share("import");
- imop = convert(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL|OPf_WANT_VOID,
+ imop = op_convert_list(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL|OPf_WANT_VOID,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, pack, arg),
newMETHOP_named(OP_METHOD_NAMED, 0, meth)));
@@ -3891,7 +3891,7 @@ Perl_jmaybe(pTHX_ OP *o)
if (o->op_type == OP_LIST) {
OP * const o2
= newSVREF(newGVOP(OP_GV, 0, gv_fetchpvs(";", GV_ADD|GV_NOTQUAL, SVt_PV)));
- o = convert(OP_JOIN, 0, op_prepend_elem(OP_LIST, o2, o));
+ o = op_convert_list(OP_JOIN, 0, op_prepend_elem(OP_LIST, o2, o));
}
return o;
}
@@ -4159,41 +4159,6 @@ S_gen_constant_list(pTHX_ OP *o)
return list(o);
}
-/* convert o (and any siblings) into a list if not already, then
- * convert the parent OP_LIST to type 'type', and CHECKOP() and fold it
- */
-
-OP *
-Perl_convert(pTHX_ I32 type, I32 flags, OP *o)
-{
- dVAR;
- if (type < 0) type = -type, flags |= OPf_SPECIAL;
- if (!o || o->op_type != OP_LIST)
- o = force_list(o, 0);
- else
- o->op_flags &= ~OPf_WANT;
-
- if (!(PL_opargs[type] & OA_MARK))
- op_null(cLISTOPo->op_first);
- else {
- OP * const kid2 = OP_SIBLING(cLISTOPo->op_first);
- if (kid2 && kid2->op_type == OP_COREARGS) {
- op_null(cLISTOPo->op_first);
- kid2->op_private |= OPpCOREARGS_PUSHMARK;
- }
- }
-
- o->op_type = (OPCODE)type;
- o->op_ppaddr = PL_ppaddr[type];
- o->op_flags |= flags;
-
- o = CHECKOP(type, o);
- if (o->op_type != (unsigned)type)
- return o;
-
- return fold_constants(op_integerize(op_std_init(o)));
-}
-
/*
=head1 Optree Manipulation Functions
*/
@@ -4314,6 +4279,51 @@ Perl_op_prepend_elem(pTHX_ I32 type, OP *first, OP *last)
return newLISTOP(type, 0, first, last);
}
+/*
+=for apidoc Am|OP *|op_convert_list|I32 type|I32 flags|OP *o
+
+Converts I<o> into a list op if it is not one already, and then converts it
+into the specified I<type>, calling its check function, allocating a target if
+it needs one, and folding constants.
+
+A list-type op is usually constructed one kid at a time via C<newLISTOP>,
+C<op_prepend_elem> and C<op_append_elem>. Then finally it is passed to
+C<op_convert> to make it the right type.
+
+=cut
+*/
+
+OP *
+Perl_op_convert_list(pTHX_ I32 type, I32 flags, OP *o)
+{
+ dVAR;
+ if (type < 0) type = -type, flags |= OPf_SPECIAL;
+ if (!o || o->op_type != OP_LIST)
+ o = force_list(o, 0);
+ else
+ o->op_flags &= ~OPf_WANT;
+
+ if (!(PL_opargs[type] & OA_MARK))
+ op_null(cLISTOPo->op_first);
+ else {
+ OP * const kid2 = OP_SIBLING(cLISTOPo->op_first);
+ if (kid2 && kid2->op_type == OP_COREARGS) {
+ op_null(cLISTOPo->op_first);
+ kid2->op_private |= OPpCOREARGS_PUSHMARK;
+ }
+ }
+
+ o->op_type = (OPCODE)type;
+ o->op_ppaddr = PL_ppaddr[type];
+ o->op_flags |= flags;
+
+ o = CHECKOP(type, o);
+ if (o->op_type != (unsigned)type)
+ return o;
+
+ return fold_constants(op_integerize(op_std_init(o)));
+}
+
/* Constructors */
@@ -5675,7 +5685,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
/* Fake up a method call to VERSION */
meth = newSVpvs_share("VERSION");
- veop = convert(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL,
+ veop = op_convert_list(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, pack, version),
newMETHOP_named(OP_METHOD_NAMED, 0, meth)));
@@ -5702,7 +5712,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
/* Fake up a method call to import/unimport */
meth = aver
? newSVpvs_share("import") : newSVpvs_share("unimport");
- imop = convert(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL,
+ imop = op_convert_list(OP_ENTERSUB, OPf_STACKED|OPf_SPECIAL,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, pack, arg),
newMETHOP_named(OP_METHOD_NAMED, 0, meth)
@@ -7171,7 +7181,7 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont)
expr = op_lvalue(force_list(expr, 1), OP_GREPSTART);
}
- loop = (LOOP*)list(convert(OP_ENTERITER, iterflags,
+ loop = (LOOP*)list(op_convert_list(OP_ENTERITER, iterflags,
op_append_elem(OP_LIST, expr, scalar(sv))));
assert(!loop->op_next);
/* for my $x () sets OPpLVAL_INTRO;
@@ -8890,13 +8900,13 @@ Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block)
OP *
Perl_newANONLIST(pTHX_ OP *o)
{
- return convert(OP_ANONLIST, OPf_SPECIAL, o);
+ return op_convert_list(OP_ANONLIST, OPf_SPECIAL, o);
}
OP *
Perl_newANONHASH(pTHX_ OP *o)
{
- return convert(OP_ANONHASH, OPf_SPECIAL, o);
+ return op_convert_list(OP_ANONHASH, OPf_SPECIAL, o);
}
OP *
@@ -10745,7 +10755,7 @@ Perl_ck_join(pTHX_ OP *o)
if (bairn && !OP_HAS_SIBLING(bairn) /* single-item list */
&& PL_opargs[bairn->op_type] & OA_RETSCALAR)
{
- OP * const ret = convert(OP_STRINGIFY, 0,
+ OP * const ret = op_convert_list(OP_STRINGIFY, 0,
op_sibling_splice(o, kid, 1, NULL));
op_free(o);
ret->op_folded = 1;
@@ -11275,7 +11285,7 @@ Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
? newPVOP(OP_RUNCV,0,NULL)
: newOP(opnum,0);
default:
- return convert(opnum,0,aop);
+ return op_convert_list(opnum,0,aop);
}
}
assert(0);
@@ -13032,7 +13042,7 @@ Perl_coresub_op(pTHX_ SV * const coreargssv, const int code,
}
return o;
default:
- o = convert(opnum,OPf_SPECIAL*(opnum == OP_GLOB),argop);
+ o = op_convert_list(opnum,OPf_SPECIAL*(opnum == OP_GLOB),argop);
if (is_handle_constructor(o, 2))
argop->op_private |= OPpCOREARGS_DEREF2;
if (opnum == OP_SUBSTR) {
diff --git a/perly.act b/perly.act
index 74df6d1304..e284d774d8 100644
--- a/perly.act
+++ b/perly.act
@@ -8,7 +8,7 @@ case 2:
#line 115 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 3:
@@ -16,14 +16,14 @@ case 2:
{
newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
(yyval.ival) = 0;
- ;}
+ }
break;
case 4:
#line 124 "perly.y"
{
parser->expect = XTERM;
- ;}
+ }
break;
case 5:
@@ -31,14 +31,14 @@ case 2:
{
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
- ;}
+ }
break;
case 6:
#line 133 "perly.y"
{
parser->expect = XBLOCK;
- ;}
+ }
break;
case 7:
@@ -49,14 +49,14 @@ case 2:
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 8:
#line 145 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 9:
@@ -67,14 +67,14 @@ case 2:
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 10:
#line 157 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 11:
@@ -85,14 +85,14 @@ case 2:
(yyval.ival) = 0;
yyunlex();
parser->yychar = YYEOF;
- ;}
+ }
break;
case 12:
#line 169 "perly.y"
{
parser->expect = XSTATE;
- ;}
+ }
break;
case 13:
@@ -100,7 +100,7 @@ case 2:
{
PL_eval_root = (ps[(3) - (3)].val.opval);
(yyval.ival) = 0;
- ;}
+ }
break;
case 14:
@@ -108,7 +108,7 @@ case 2:
{ if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
parser->copline = (line_t)(ps[(1) - (4)].val.ival);
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
- ;}
+ }
break;
case 15:
@@ -116,12 +116,12 @@ case 2:
{ if (parser->copline > (line_t)(ps[(1) - (7)].val.ival))
parser->copline = (line_t)(ps[(1) - (7)].val.ival);
(yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
- ;}
+ }
break;
case 16:
#line 196 "perly.y"
- { (yyval.ival) = block_start(TRUE); ;}
+ { (yyval.ival) = block_start(TRUE); }
break;
case 17:
@@ -129,17 +129,17 @@ case 2:
{ if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
parser->copline = (line_t)(ps[(1) - (4)].val.ival);
(yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
- ;}
+ }
break;
case 18:
#line 207 "perly.y"
- { (yyval.ival) = block_start(FALSE); ;}
+ { (yyval.ival) = block_start(FALSE); }
break;
case 19:
#line 212 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 20:
@@ -148,12 +148,12 @@ case 2:
PL_pad_reset_pending = TRUE;
if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
PL_hints |= HINT_BLOCK_SCOPE;
- ;}
+ }
break;
case 21:
#line 223 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 22:
@@ -162,38 +162,38 @@ case 2:
PL_pad_reset_pending = TRUE;
if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
PL_hints |= HINT_BLOCK_SCOPE;
- ;}
+ }
break;
case 23:
#line 234 "perly.y"
{
(yyval.opval) = (ps[(1) - (1)].val.opval) ? newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)) : NULL;
- ;}
+ }
break;
case 24:
#line 238 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 25:
#line 242 "perly.y"
{
(yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
- ;}
+ }
break;
case 26:
#line 246 "perly.y"
{
(yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
- ;}
+ }
break;
case 27:
#line 253 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 28:
@@ -206,7 +206,7 @@ case 2:
SvREFCNT_inc_simple_void(fmtcv);
pad_add_anon(fmtcv, OP_NULL);
}
- ;}
+ }
break;
case 29:
@@ -231,7 +231,7 @@ case 2:
CvCLONE_on(PL_compcv);
parser->in_my = 0;
parser->in_my_stash = NULL;
- ;}
+ }
break;
case 30:
@@ -244,7 +244,7 @@ case 2:
;
(yyval.opval) = (OP*)NULL;
intro_my();
- ;}
+ }
break;
case 31:
@@ -254,12 +254,12 @@ case 2:
if ((ps[(2) - (4)].val.opval))
package_version((ps[(2) - (4)].val.opval));
(yyval.opval) = (OP*)NULL;
- ;}
+ }
break;
case 32:
#line 304 "perly.y"
- { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
+ { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
break;
case 33:
@@ -268,7 +268,7 @@ case 2:
SvREFCNT_inc_simple_void(PL_compcv);
utilize((ps[(1) - (7)].val.ival), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
(yyval.opval) = (OP*)NULL;
- ;}
+ }
break;
case 34:
@@ -277,7 +277,7 @@ case 2:
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
parser->copline = (line_t)(ps[(1) - (7)].val.ival);
- ;}
+ }
break;
case 35:
@@ -286,7 +286,7 @@ case 2:
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
parser->copline = (line_t)(ps[(1) - (7)].val.ival);
- ;}
+ }
break;
case 36:
@@ -300,17 +300,17 @@ case 2:
? 0
: offset));
parser->copline = (line_t)(ps[(1) - (6)].val.ival);
- ;}
+ }
break;
case 37:
#line 335 "perly.y"
- { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
+ { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); }
break;
case 38:
#line 337 "perly.y"
- { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
+ { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); }
break;
case 39:
@@ -320,7 +320,7 @@ case 2:
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
(ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
parser->copline = (line_t)(ps[(1) - (8)].val.ival);
- ;}
+ }
break;
case 40:
@@ -330,17 +330,17 @@ case 2:
newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
(ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
parser->copline = (line_t)(ps[(1) - (8)].val.ival);
- ;}
+ }
break;
case 41:
#line 353 "perly.y"
- { parser->expect = XTERM; ;}
+ { parser->expect = XTERM; }
break;
case 42:
#line 355 "perly.y"
- { parser->expect = XTERM; ;}
+ { parser->expect = XTERM; }
break;
case 43:
@@ -357,7 +357,7 @@ case 2:
}
(yyval.opval) = block_end((ps[(3) - (13)].val.ival), forop);
parser->copline = (line_t)(ps[(1) - (13)].val.ival);
- ;}
+ }
break;
case 44:
@@ -365,7 +365,7 @@ case 2:
{
(yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
parser->copline = (line_t)(ps[(1) - (9)].val.ival);
- ;}
+ }
break;
case 45:
@@ -374,12 +374,12 @@ case 2:
(yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
parser->copline = (line_t)(ps[(1) - (8)].val.ival);
- ;}
+ }
break;
case 46:
#line 383 "perly.y"
- { parser->in_my = 0; (yyval.opval) = my((ps[(5) - (5)].val.opval)); ;}
+ { parser->in_my = 0; (yyval.opval) = my((ps[(5) - (5)].val.opval)); }
break;
case 47:
@@ -395,7 +395,7 @@ case 2:
(ps[(8) - (11)].val.opval), (ps[(10) - (11)].val.opval), (ps[(11) - (11)].val.opval))
);
parser->copline = (line_t)(ps[(1) - (11)].val.ival);
- ;}
+ }
break;
case 48:
@@ -406,7 +406,7 @@ case 2:
(ps[(3) - (9)].val.opval)),
OP_ENTERLOOP), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
parser->copline = (line_t)(ps[(1) - (9)].val.ival);
- ;}
+ }
break;
case 49:
@@ -415,7 +415,7 @@ case 2:
(yyval.opval) = block_end((ps[(3) - (7)].val.ival),
newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
parser->copline = (line_t)(ps[(1) - (7)].val.ival);
- ;}
+ }
break;
case 50:
@@ -424,7 +424,7 @@ case 2:
/* a block is a loop that happens once */
(yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
(OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
- ;}
+ }
break;
case 51:
@@ -434,7 +434,7 @@ case 2:
if ((ps[(2) - (5)].val.opval)) {
package_version((ps[(2) - (5)].val.opval));
}
- ;}
+ }
break;
case 52:
@@ -445,14 +445,14 @@ case 2:
(OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
if (parser->copline > (line_t)(ps[(4) - (8)].val.ival))
parser->copline = (line_t)(ps[(4) - (8)].val.ival);
- ;}
+ }
break;
case 53:
#line 433 "perly.y"
{
(yyval.opval) = (ps[(1) - (2)].val.opval);
- ;}
+ }
break;
case 54:
@@ -460,7 +460,7 @@ case 2:
{
(yyval.opval) = (OP*)NULL;
parser->copline = NOLINE;
- ;}
+ }
break;
case 55:
@@ -477,64 +477,64 @@ case 2:
parser->copline = CopLINE(PL_curcop)-1;
else parser->copline--;
(yyval.opval) = newSTATEOP(0, NULL,
- convert(OP_FORMLINE, 0, list));
- ;}
+ op_convert_list(OP_FORMLINE, 0, list));
+ }
break;
case 56:
#line 462 "perly.y"
- { (yyval.opval) = NULL; ;}
+ { (yyval.opval) = NULL; }
break;
case 57:
#line 464 "perly.y"
- { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;}
+ { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); }
break;
case 58:
#line 469 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 59:
#line 471 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 60:
#line 473 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
break;
case 61:
#line 475 "perly.y"
- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
break;
case 62:
#line 477 "perly.y"
- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); }
break;
case 63:
#line 479 "perly.y"
- { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
break;
case 64:
#line 481 "perly.y"
{ (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
- parser->copline = (line_t)(ps[(2) - (3)].val.ival); ;}
+ parser->copline = (line_t)(ps[(2) - (3)].val.ival); }
break;
case 65:
#line 484 "perly.y"
- { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
+ { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); }
break;
case 66:
#line 489 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 67:
@@ -542,7 +542,7 @@ case 2:
{
((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
(yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
- ;}
+ }
break;
case 68:
@@ -552,119 +552,119 @@ case 2:
newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
PL_hints |= HINT_BLOCK_SCOPE;
- ;}
+ }
break;
case 69:
#line 506 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 70:
#line 508 "perly.y"
- { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); }
break;
case 71:
#line 513 "perly.y"
{ (yyval.ival) = (PL_min_intro_pending &&
PL_max_intro_pending >= PL_min_intro_pending);
- intro_my(); ;}
+ intro_my(); }
break;
case 72:
#line 519 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 74:
#line 525 "perly.y"
{ YYSTYPE tmplval;
(void)scan_num("1", &tmplval);
- (yyval.opval) = tmplval.opval; ;}
+ (yyval.opval) = tmplval.opval; }
break;
case 76:
#line 533 "perly.y"
- { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
+ { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); }
break;
case 77:
#line 538 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
case 78:
#line 542 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
case 79:
#line 546 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
break;
case 80:
#line 549 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 81:
#line 550 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 82:
#line 554 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, 0);
- SAVEFREESV(PL_compcv); ;}
+ SAVEFREESV(PL_compcv); }
break;
case 83:
#line 560 "perly.y"
{ (yyval.ival) = start_subparse(FALSE, CVf_ANON);
- SAVEFREESV(PL_compcv); ;}
+ SAVEFREESV(PL_compcv); }
break;
case 84:
#line 565 "perly.y"
{ (yyval.ival) = start_subparse(TRUE, 0);
- SAVEFREESV(PL_compcv); ;}
+ SAVEFREESV(PL_compcv); }
break;
case 87:
#line 576 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 89:
#line 582 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 90:
#line 584 "perly.y"
- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+ { (yyval.opval) = (ps[(2) - (2)].val.opval); }
break;
case 91:
#line 586 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 92:
#line 591 "perly.y"
- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+ { (yyval.opval) = (ps[(2) - (2)].val.opval); }
break;
case 93:
#line 593 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 94:
#line 597 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 95:
@@ -677,7 +677,7 @@ case 2:
packWARN(WARN_EXPERIMENTAL__SIGNATURES),
"The signatures feature is experimental");
(yyval.opval) = parse_subsignature();
- ;}
+ }
break;
case 96:
@@ -686,7 +686,7 @@ case 2:
(yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),
newSTATEOP(0, NULL, sawparens(newNULLLIST())));
parser->expect = XBLOCK;
- ;}
+ }
break;
case 97:
@@ -696,37 +696,37 @@ case 2:
parser->copline = (line_t)(ps[(3) - (5)].val.ival);
(yyval.opval) = block_end((ps[(1) - (5)].val.ival),
op_append_list(OP_LINESEQ, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)));
- ;}
+ }
break;
case 98:
#line 627 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 99:
#line 628 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 100:
#line 633 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 101:
#line 635 "perly.y"
- { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 102:
#line 637 "perly.y"
- { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 104:
#line 643 "perly.y"
- { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (2)].val.opval); }
break;
case 105:
@@ -734,72 +734,72 @@ case 2:
{
OP* term = (ps[(3) - (3)].val.opval);
(yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
- ;}
+ }
break;
case 107:
#line 654 "perly.y"
- { (yyval.opval) = convert((ps[(1) - (3)].val.ival), OPf_STACKED,
+ { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
- ;}
+ }
break;
case 108:
#line 658 "perly.y"
- { (yyval.opval) = convert((ps[(1) - (5)].val.ival), OPf_STACKED,
+ { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
- ;}
+ }
break;
case 109:
#line 662 "perly.y"
- { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
newMETHOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
- ;}
+ }
break;
case 110:
#line 668 "perly.y"
- { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
newMETHOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
- ;}
+ }
break;
case 111:
#line 673 "perly.y"
- { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
newMETHOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
- ;}
+ }
break;
case 112:
#line 679 "perly.y"
- { (yyval.opval) = convert(OP_ENTERSUB, OPf_STACKED,
+ { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
newMETHOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
- ;}
+ }
break;
case 113:
#line 685 "perly.y"
- { (yyval.opval) = convert((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
break;
case 114:
#line 687 "perly.y"
- { (yyval.opval) = convert((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
+ { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); }
break;
case 115:
#line 689 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
- (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
+ (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
break;
case 116:
@@ -807,18 +807,18 @@ case 2:
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
- ;}
+ }
break;
case 119:
#line 707 "perly.y"
- { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); ;}
+ { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); }
break;
case 120:
#line 709 "perly.y"
{ (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
- ;}
+ }
break;
case 121:
@@ -826,7 +826,7 @@ case 2:
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
scalar((ps[(4) - (5)].val.opval)));
- ;}
+ }
break;
case 122:
@@ -834,78 +834,78 @@ case 2:
{ (yyval.opval) = newBINOP(OP_AELEM, 0,
ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
scalar((ps[(3) - (4)].val.opval)));
- ;}
+ }
break;
case 123:
#line 722 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
- ;}
+ }
break;
case 124:
#line 725 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
- jmaybe((ps[(4) - (6)].val.opval))); ;}
+ jmaybe((ps[(4) - (6)].val.opval))); }
break;
case 125:
#line 729 "perly.y"
{ (yyval.opval) = newBINOP(OP_HELEM, 0,
ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
- jmaybe((ps[(3) - (5)].val.opval))); ;}
+ jmaybe((ps[(3) - (5)].val.opval))); }
break;
case 126:
#line 733 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); ;}
+ newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); }
break;
case 127:
#line 736 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
- newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); ;}
+ newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); }
break;
case 128:
#line 741 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
- newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); ;}
+ newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); }
break;
case 129:
#line 745 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); ;}
+ newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); }
break;
case 130:
#line 748 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); ;}
+ { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); }
break;
case 131:
#line 750 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); }
break;
case 132:
#line 752 "perly.y"
- { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); ;}
+ { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); }
break;
case 133:
#line 757 "perly.y"
- { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); }
break;
case 134:
#line 759 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 135:
@@ -913,99 +913,99 @@ case 2:
{ if ((ps[(2) - (3)].val.ival) != OP_REPEAT)
scalar((ps[(1) - (3)].val.opval));
(yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
- ;}
+ }
break;
case 136:
#line 766 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 137:
#line 768 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 138:
#line 770 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 139:
#line 772 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 140:
#line 774 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 141:
#line 776 "perly.y"
- { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 142:
#line 778 "perly.y"
- { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+ { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
break;
case 143:
#line 780 "perly.y"
- { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 144:
#line 782 "perly.y"
- { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 145:
#line 784 "perly.y"
- { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 146:
#line 786 "perly.y"
- { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
break;
case 147:
#line 791 "perly.y"
- { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); }
break;
case 148:
#line 793 "perly.y"
- { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+ { (yyval.opval) = (ps[(2) - (2)].val.opval); }
break;
case 149:
#line 796 "perly.y"
- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); }
break;
case 150:
#line 798 "perly.y"
- { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_COMPLEMENT, 0, scalar((ps[(2) - (2)].val.opval))); }
break;
case 151:
#line 800 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTINC, 0,
- op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); ;}
+ op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); }
break;
case 152:
#line 803 "perly.y"
{ (yyval.opval) = newUNOP(OP_POSTDEC, 0,
- op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));;}
+ op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));}
break;
case 153:
#line 806 "perly.y"
- { (yyval.opval) = convert(OP_JOIN, 0,
+ { (yyval.opval) = op_convert_list(OP_JOIN, 0,
op_append_elem(
OP_LIST,
newSVREF(scalar(
@@ -1014,120 +1014,120 @@ case 2:
)),
(ps[(1) - (2)].val.opval)
));
- ;}
+ }
break;
case 154:
#line 817 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREINC, 0,
- op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); ;}
+ op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); }
break;
case 155:
#line 820 "perly.y"
{ (yyval.opval) = newUNOP(OP_PREDEC, 0,
- op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); ;}
+ op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); }
break;
case 156:
#line 827 "perly.y"
- { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); ;}
+ { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); }
break;
case 157:
#line 829 "perly.y"
- { (yyval.opval) = newANONLIST((OP*)NULL);;}
+ { (yyval.opval) = newANONLIST((OP*)NULL);}
break;
case 158:
#line 831 "perly.y"
- { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); ;}
+ { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); }
break;
case 159:
#line 833 "perly.y"
- { (yyval.opval) = newANONHASH((OP*)NULL); ;}
+ { (yyval.opval) = newANONHASH((OP*)NULL); }
break;
case 160:
#line 835 "perly.y"
{ SvREFCNT_inc_simple_void(PL_compcv);
- (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
+ (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); }
break;
case 161:
#line 842 "perly.y"
- { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));;}
+ { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));}
break;
case 162:
#line 844 "perly.y"
- { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));;}
+ { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));}
break;
case 167:
#line 852 "perly.y"
- { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
+ { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); }
break;
case 168:
#line 854 "perly.y"
- { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN)); ;}
+ { (yyval.opval) = newUNOP(OP_REFGEN, 0, op_lvalue((ps[(2) - (2)].val.opval),OP_REFGEN)); }
break;
case 169:
#line 856 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 170:
#line 858 "perly.y"
- { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); ;}
+ { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); }
break;
case 171:
#line 860 "perly.y"
- { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
+ { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); }
break;
case 172:
#line 862 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 173:
#line 864 "perly.y"
- { (yyval.opval) = sawparens(newNULLLIST()); ;}
+ { (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 174:
#line 866 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 175:
#line 868 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 176:
#line 870 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 177:
#line 872 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 178:
#line 874 "perly.y"
- { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
+ { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
break;
case 179:
#line 876 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 180:
@@ -1140,7 +1140,7 @@ case 2:
if ((yyval.opval) && (ps[(1) - (4)].val.opval))
(yyval.opval)->op_private |=
(ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
- ;}
+ }
break;
case 181:
@@ -1153,7 +1153,7 @@ case 2:
if ((yyval.opval) && (ps[(1) - (4)].val.opval))
(yyval.opval)->op_private |=
(ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
- ;}
+ }
break;
case 182:
@@ -1166,7 +1166,7 @@ case 2:
if ((yyval.opval) && (ps[(1) - (5)].val.opval))
(yyval.opval)->op_private |=
(ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
- ;}
+ }
break;
case 183:
@@ -1179,23 +1179,23 @@ case 2:
if ((yyval.opval) && (ps[(1) - (5)].val.opval))
(yyval.opval)->op_private |=
(ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
- ;}
+ }
break;
case 184:
#line 918 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 185:
#line 920 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
break;
case 186:
#line 922 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
- ;}
+ }
break;
case 187:
@@ -1203,129 +1203,129 @@ case 2:
{
(yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
- ;}
+ }
break;
case 188:
#line 930 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
- ;}
+ }
break;
case 189:
#line 934 "perly.y"
- { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); }
break;
case 190:
#line 936 "perly.y"
- { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); }
break;
case 191:
#line 938 "perly.y"
- { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); }
break;
case 192:
#line 940 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
- scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); ;}
+ scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); }
break;
case 193:
#line 943 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); }
break;
case 194:
#line 945 "perly.y"
{ (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);
- PL_hints |= HINT_BLOCK_SCOPE; ;}
+ PL_hints |= HINT_BLOCK_SCOPE; }
break;
case 195:
#line 948 "perly.y"
- { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); }
break;
case 196:
#line 950 "perly.y"
- { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); }
break;
case 197:
#line 952 "perly.y"
- { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
+ { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); }
break;
case 198:
#line 954 "perly.y"
- { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
break;
case 199:
#line 956 "perly.y"
- { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
break;
case 200:
#line 958 "perly.y"
- { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL : 0); ;}
+ { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL : 0); }
break;
case 201:
#line 960 "perly.y"
- { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); }
break;
case 202:
#line 962 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
break;
case 203:
#line 964 "perly.y"
{ (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
- op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); ;}
+ op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
break;
case 204:
#line 967 "perly.y"
- { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
+ { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); }
break;
case 205:
#line 969 "perly.y"
- { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);;}
+ { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);}
break;
case 206:
#line 971 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 207:
#line 973 "perly.y"
- { (yyval.opval) = (ps[(1) - (3)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (3)].val.opval); }
break;
case 208:
#line 975 "perly.y"
- { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+ { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
break;
case 209:
#line 977 "perly.y"
{ (yyval.opval) = ((ps[(1) - (3)].val.ival) == OP_NOT)
? newUNOP((ps[(1) - (3)].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
- : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); ;}
+ : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); }
break;
case 210:
#line 981 "perly.y"
- { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
+ { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); }
break;
case 211:
@@ -1339,12 +1339,12 @@ case 2:
SAVEFREESV(PL_compcv);
} else
(yyval.ival) = 0;
- ;}
+ }
break;
case 212:
#line 994 "perly.y"
- { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); ;}
+ { (yyval.opval) = pmruntime((ps[(1) - (5)].val.opval), (ps[(4) - (5)].val.opval), 1, (ps[(2) - (5)].val.ival)); }
break;
case 215:
@@ -1352,150 +1352,147 @@ case 2:
{
(yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
- ;}
+ }
break;
case 217:
#line 1007 "perly.y"
- { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); ;}
+ { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); }
break;
case 218:
#line 1009 "perly.y"
- { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); ;}
+ { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); }
break;
case 219:
#line 1014 "perly.y"
- { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
+ { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); }
break;
case 220:
#line 1016 "perly.y"
- { (yyval.opval) = sawparens(newNULLLIST()); ;}
+ { (yyval.opval) = sawparens(newNULLLIST()); }
break;
case 221:
#line 1019 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 222:
#line 1021 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 223:
#line 1023 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 224:
#line 1028 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 225:
#line 1030 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 226:
#line 1034 "perly.y"
- { (yyval.opval) = (OP*)NULL; ;}
+ { (yyval.opval) = (OP*)NULL; }
break;
case 227:
#line 1036 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
case 228:
#line 1042 "perly.y"
- { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
+ { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
break;
case 234:
#line 1055 "perly.y"
- { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); }
break;
case 235:
#line 1059 "perly.y"
- { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); }
break;
case 236:
#line 1063 "perly.y"
{ (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
- ;}
+ }
break;
case 237:
#line 1069 "perly.y"
{ (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
- ;}
+ }
break;
case 238:
#line 1075 "perly.y"
- { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); }
break;
case 239:
#line 1077 "perly.y"
- { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
+ { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); }
break;
case 240:
#line 1081 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); ;}
+ { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); }
break;
case 242:
#line 1086 "perly.y"
- { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); }
break;
case 244:
#line 1091 "perly.y"
- { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); }
break;
case 246:
#line 1096 "perly.y"
- { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); ;}
+ { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); }
break;
case 247:
#line 1101 "perly.y"
- { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
break;
case 248:
#line 1103 "perly.y"
- { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
+ { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
break;
case 249:
#line 1105 "perly.y"
- { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
+ { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
break;
case 250:
#line 1108 "perly.y"
- { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+ { (yyval.opval) = (ps[(1) - (1)].val.opval); }
break;
-
-/* Line 1267 of yacc.c. */
-
default: break;
/* Generated from:
- * 6943e6446c58ec52809f6821c15ff693b4d7c34f62c8a1b616279c2a66e3d62f perly.y
+ * acfba7616277d65c961140e70755bfce7328b5238b69030cd63c78d363a9736c perly.y
* d1d4df7b8e30ac9dede664af9179e6e5e7ddc7f2ad9c4eff9e2e5b32c9e16a6e regen_perly.pl
* ex: set ro: */
diff --git a/perly.h b/perly.h
index 8c9972154d..167e3c18b1 100644
--- a/perly.h
+++ b/perly.h
@@ -5,27 +5,24 @@
*/
#ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.7.12-4996. */
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
+/* Bison interface for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -36,10 +33,18 @@
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
-
+
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
@@ -128,6 +133,7 @@
ARROW = 337
};
#endif
+
/* Tokens. */
#define GRAMPROG 258
#define GRAMEXPR 259
@@ -211,8 +217,6 @@
#define ARROW 337
-
-
#ifdef PERL_IN_TOKE_C
static bool
S_is_opval_token(int type) {
@@ -239,23 +243,39 @@ S_is_opval_token(int type) {
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
+/* Line 2053 of yacc.c */
+
I32 ival; /* __DEFAULT__ (marker for regen_perly.pl;
must always be 1st union member) */
char *pval;
OP *opval;
GV *gvval;
-}
-/* Line 1529 of yacc.c. */
- YYSTYPE;
+
+
+/* Line 2053 of yacc.c */
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
#endif
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
/* Generated from:
- * 6943e6446c58ec52809f6821c15ff693b4d7c34f62c8a1b616279c2a66e3d62f perly.y
+ * acfba7616277d65c961140e70755bfce7328b5238b69030cd63c78d363a9736c perly.y
* d1d4df7b8e30ac9dede664af9179e6e5e7ddc7f2ad9c4eff9e2e5b32c9e16a6e regen_perly.pl
* ex: set ro: */
diff --git a/perly.tab b/perly.tab
index cc72890a43..f6768bea0a 100644
--- a/perly.tab
+++ b/perly.tab
@@ -220,7 +220,7 @@ static const yytype_uint16 yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
@@ -239,19 +239,19 @@ static const char *const yytname[] =
"ANDOP", "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "DORDOR", "OROR",
"ANDAND", "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'",
"REFGEN", "UMINUS", "POWOP", "POSTJOIN", "POSTDEC", "POSTINC", "PREDEC",
- "PREINC", "ARROW", "')'", "'('", "$accept", "grammar", "@1", "@2", "@3",
- "@4", "@5", "@6", "block", "formblock", "remember", "mblock",
+ "PREINC", "ARROW", "')'", "'('", "$accept", "grammar", "$@1", "$@2",
+ "$@3", "$@4", "$@5", "$@6", "block", "formblock", "remember", "mblock",
"mremember", "stmtseq", "formstmtseq", "fullstmt", "labfullstmt",
- "barestmt", "@7", "@8", "@9", "@10", "@11", "@12", "formline", "formarg",
- "sideff", "else", "cont", "mintro", "nexpr", "texpr", "iexpr", "mexpr",
- "mnexpr", "miexpr", "formname", "startsub", "startanonsub",
+ "barestmt", "$@7", "$@8", "$@9", "$@10", "@11", "$@12", "formline",
+ "formarg", "sideff", "else", "cont", "mintro", "nexpr", "texpr", "iexpr",
+ "mexpr", "mnexpr", "miexpr", "formname", "startsub", "startanonsub",
"startformsub", "subname", "proto", "subattrlist", "myattrlist",
"subsignature", "@13", "realsubbody", "optsubbody", "expr", "listexpr",
"listop", "@14", "method", "subscripted", "termbinop", "termunop",
"anonymous", "termdo", "term", "@15", "myattrterm", "myterm",
"optlistexpr", "optexpr", "my_scalar", "my_var", "refgen_topic", "amper",
"scalar", "ary", "hsh", "arylen", "star", "sliceme", "kvslice", "gelem",
- "indirob", 0
+ "indirob", YY_NULL
};
#endif
@@ -336,8 +336,8 @@ static const yytype_uint8 yyr2[] =
1
};
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
@@ -478,8 +478,7 @@ static const yytype_int16 yypgoto[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
+ number is the opposite. If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -246
static const yytype_int16 yytable[] =
{
@@ -764,6 +763,12 @@ static const yytype_int16 yytable[] =
182, 183, 0, 0, 184
};
+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-416)))
+
+#define yytable_value_is_error(Yytable_value) \
+ (!!((Yytable_value) == (-246)))
+
static const yytype_int16 yycheck[] =
{
10, 11, 12, 15, 48, 406, 9, 15, 48, 42,
@@ -1124,12 +1129,12 @@ static const toketypes yy_type_tab[] =
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
- toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
- toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
+ toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+ toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval, toketype_ival, toketype_opval,
toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
- toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival,
+ toketype_opval, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval,
+ toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_ival, toketype_ival,
toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
toketype_opval, toketype_ival, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
@@ -1140,6 +1145,6 @@ static const toketypes yy_type_tab[] =
};
/* Generated from:
- * 6943e6446c58ec52809f6821c15ff693b4d7c34f62c8a1b616279c2a66e3d62f perly.y
+ * acfba7616277d65c961140e70755bfce7328b5238b69030cd63c78d363a9736c perly.y
* d1d4df7b8e30ac9dede664af9179e6e5e7ddc7f2ad9c4eff9e2e5b32c9e16a6e regen_perly.pl
* ex: set ro: */
diff --git a/perly.y b/perly.y
index 289e28ef7c..90cf7315f0 100644
--- a/perly.y
+++ b/perly.y
@@ -454,7 +454,7 @@ formline: THING formarg
parser->copline = CopLINE(PL_curcop)-1;
else parser->copline--;
$$ = newSTATEOP(0, NULL,
- convert(OP_FORMLINE, 0, list));
+ op_convert_list(OP_FORMLINE, 0, list));
}
;
@@ -651,40 +651,40 @@ listexpr: listexpr ','
/* List operators */
listop : LSTOP indirob listexpr /* map {...} @args or print $fh @args */
- { $$ = convert($1, OPf_STACKED,
+ { $$ = op_convert_list($1, OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF($1,$2), $3) );
}
| FUNC '(' indirob expr ')' /* print ($fh @args */
- { $$ = convert($1, OPf_STACKED,
+ { $$ = op_convert_list($1, OPf_STACKED,
op_prepend_elem(OP_LIST, newGVREF($1,$3), $4) );
}
| term ARROW method '(' optexpr ')' /* $foo->bar(list) */
- { $$ = convert(OP_ENTERSUB, OPf_STACKED,
+ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, scalar($1), $5),
newMETHOP(OP_METHOD, 0, $3)));
}
| term ARROW method /* $foo->bar */
- { $$ = convert(OP_ENTERSUB, OPf_STACKED,
+ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST, scalar($1),
newMETHOP(OP_METHOD, 0, $3)));
}
| METHOD indirob optlistexpr /* new Class @args */
- { $$ = convert(OP_ENTERSUB, OPf_STACKED,
+ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, $2, $3),
newMETHOP(OP_METHOD, 0, $1)));
}
| FUNCMETH indirob '(' optexpr ')' /* method $object (@args) */
- { $$ = convert(OP_ENTERSUB, OPf_STACKED,
+ { $$ = op_convert_list(OP_ENTERSUB, OPf_STACKED,
op_append_elem(OP_LIST,
op_prepend_elem(OP_LIST, $2, $4),
newMETHOP(OP_METHOD, 0, $1)));
}
| LSTOP optlistexpr /* print @args */
- { $$ = convert($1, 0, $2); }
+ { $$ = op_convert_list($1, 0, $2); }
| FUNC '(' optexpr ')' /* print (@args) */
- { $$ = convert($1, 0, $3); }
+ { $$ = op_convert_list($1, 0, $3); }
| LSTOPSUB startanonsub block /* sub f(&@); f { foo } ... */
{ SvREFCNT_inc_simple_void(PL_compcv);
$<opval>$ = newANONATTRSUB($2, 0, (OP*)NULL, $3); }
@@ -803,7 +803,7 @@ termunop : '-' term %prec UMINUS /* -$x */
{ $$ = newUNOP(OP_POSTDEC, 0,
op_lvalue(scalar($1), OP_POSTDEC));}
| term POSTJOIN /* implicit join after interpolated ->@ */
- { $$ = convert(OP_JOIN, 0,
+ { $$ = op_convert_list(OP_JOIN, 0,
op_append_elem(
OP_LIST,
newSVREF(scalar(
diff --git a/proto.h b/proto.h
index 73a103f06b..d8dc59b10e 100644
--- a/proto.h
+++ b/proto.h
@@ -706,9 +706,6 @@ PERL_CALLCONV const COP* Perl_closest_cop(pTHX_ const COP *cop, const OP *o, con
#define PERL_ARGS_ASSERT_CLOSEST_COP \
assert(cop)
-PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o)
- __attribute__warn_unused_result__;
-
PERL_CALLCONV const char * Perl_cop_fetch_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_COP_FETCH_LABEL \
@@ -3195,6 +3192,9 @@ PERL_CALLCONV OP* Perl_op_contextualize(pTHX_ OP* o, I32 context)
#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE \
assert(o)
+PERL_CALLCONV OP* Perl_op_convert_list(pTHX_ I32 optype, I32 flags, OP* o)
+ __attribute__warn_unused_result__;
+
PERL_CALLCONV void Perl_op_dump(pTHX_ const OP *o)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_OP_DUMP \