In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/abdcbdb837d9244b83dc32ee471b3b7f383a6c18?hp=90d141c4a9322a9b132806feee6144ea36c9c7fb>

- Log -----------------------------------------------------------------
commit abdcbdb837d9244b83dc32ee471b3b7f383a6c18
Author: Lukas Mai <[email protected]>
Date:   Sun Oct 26 12:11:36 2014 +0100

    fix type incompatibilities between format strings/args
    
    Building a debugging perl triggered warnings such as
    
    warning: format ‘%d’ expects argument of type ‘int’, but argument 3 
has type ‘U32’
    warning: field width specifier ‘*’ expects argument of type ‘int’, 
but argument 5 has type ‘long unsigned int’
    warning: format ‘%x’ expects argument of type ‘unsigned int’, but 
argument 3 has type ‘wchar_t’

M       locale.c
M       regcomp.c

commit 03d05f6e34ec0d195930f4155352c2082f8dff3a
Author: Lukas Mai <[email protected]>
Date:   Sun Oct 26 11:17:47 2014 +0100

    rename convert to op_convert_list and APIfy

M       MANIFEST
M       embed.fnc
M       embed.h
M       ext/XS-APItest/APItest.pm
M       ext/XS-APItest/APItest.xs
A       ext/XS-APItest/t/join_with_space.t
M       op.c
M       perly.act
M       perly.h
M       perly.tab
M       perly.y
M       proto.h
-----------------------------------------------------------------------

Summary of changes:
 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 ++
 locale.c                           |   2 +-
 op.c                               | 100 ++++----
 perly.act                          | 471 ++++++++++++++++++-------------------
 perly.h                            |  64 +++--
 perly.tab                          |  39 +--
 perly.y                            |  20 +-
 proto.h                            |   6 +-
 regcomp.c                          |  10 +-
 14 files changed, 408 insertions(+), 343 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|arrayarithexp
 ... [37 chars truncated]
+       next unless 
/\A(?:rpn|calcrpn|stufftest|swaptwostmts|looprest|scopelessblock|stmtasexpr|stmtsasexpr|loopblock|blockasexpr|swaplabel|labelconst|arrayfullexpr|arraylistexpr|arraytermexpr|arrayarithexp
 ... [53 chars truncated]
        $^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/locale.c b/locale.c
index 0bf234c..481628b 100644
--- a/locale.c
+++ b/locale.c
@@ -1140,7 +1140,7 @@ Perl__is_cur_LC_category_utf8(pTHX_ int category)
                 || wc != (wchar_t) 0x2010)
             {
                 is_utf8 = FALSE;
-                DEBUG_L(PerlIO_printf(Perl_debug_log, "\thyphen=U+%x\n", wc));
+                DEBUG_L(PerlIO_printf(Perl_debug_log, "\thyphen=U+%x\n", 
(unsigned int)wc));
                 DEBUG_L(PerlIO_printf(Perl_debug_log,
                         "\treturn from mbtowc=%d; errno=%d; ?UTF8 locale=0\n",
                         mbtowc(&wc, HYPHEN_UTF8, strlen(HYPHEN_UTF8)), errno));
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<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 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 <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
**** PATCH TRUNCATED AT 2000 LINES -- 301 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to