From 03d05f6e34ec0d195930f4155352c2082f8dff3a Mon Sep 17 00:00:00 2001 From: Lukas Mai Date: Sun, 26 Oct 2014 11:17:47 +0100 Subject: [PATCH] rename convert to op_convert_list and APIfy --- MANIFEST | 1 + embed.fnc | 2 +- embed.h | 2 +- ext/XS-APItest/APItest.pm | 2 +- ext/XS-APItest/APItest.xs | 16 ++ ext/XS-APItest/t/join_with_space.t | 16 ++ op.c | 100 ++++---- perly.act | 471 ++++++++++++++++++------------------- perly.h | 64 +++-- perly.tab | 39 +-- perly.y | 20 +- proto.h | 6 +- 12 files changed, 402 insertions(+), 337 deletions(-) create mode 100644 ext/XS-APItest/t/join_with_space.t diff --git a/MANIFEST b/MANIFEST index 5a26bdb..50bfc6f 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 bbec53a..ded066b 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 1dc949c..50d3824 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 9cca610..bd4a7a8 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 43a49e3..c5ae2be 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 0000000..420f147 --- /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 f032885..fece8dd 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 into a list op if it is not one already, and then converts it +into the specified I, 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, +C and C. Then finally it is passed to +C 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 74df6d1..e284d77 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 8c99721..167e3c1 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 . */ /* 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 cc72890..f6768be 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 289e28e..90cf731 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); $$ = 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 73a103f..d8dc59b 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 \ -- 1.8.3.1