This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove a comment that is no longer necessary since Perl Object bit
[perl5.git] / perly.y
diff --git a/perly.y b/perly.y
index 33b269a..4dac4d0 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -79,7 +79,7 @@
 %token <i_tkval> LOCAL MY MYSUB REQUIRE
 %token <i_tkval> COLONATTR
 
-%type <ival> prog progstart remember mremember savescope
+%type <ival> prog progstart remember mremember
 %type <ival>  startsub startanonsub startformsub
 /* FIXME for MAD - are these two ival? */
 %type <ival> mydefsv mintro
@@ -175,9 +175,6 @@ mremember:  /* NULL */      /* start a partial lexical scope */
                        { $$ = block_start(FALSE); }
        ;
 
-savescope:     /* NULL */      /* remember stack pos in case of error */
-               { $$ = PL_savestack_ix; }
-
 /* A collection of "lines" in the program */
 lineseq        :       /* NULL */
                        { $$ = Nullop; }
@@ -188,12 +185,13 @@ lineseq   :       /* NULL */
                                    (LISTOP*)$1, (LISTOP*)$2),
                                $1);
                        }
-       |       lineseq savescope line
-                       {   LEAVE_SCOPE($2);
-                           $$ = append_list(OP_LINESEQ,
-                               (LISTOP*)$1, (LISTOP*)$3);
+       |       lineseq line
+                       {   $$ = append_list(OP_LINESEQ,
+                               (LISTOP*)$1, (LISTOP*)$2);
                            PL_pad_reset_pending = TRUE;
-                           if ($1 && $3) PL_hints |= HINT_BLOCK_SCOPE; }
+                           if ($1 && $2)
+                               PL_hints |= HINT_BLOCK_SCOPE;
+                       }
        ;
 
 /* A "line" in the program */
@@ -226,7 +224,7 @@ line        :       label cond
                        {
                          $$ = newSTATEOP(0, PVAL($1), $2);
                          PL_parser->expect = XSTATE;
-                         DO_MAD(
+                         DO_MAD({
                              /* sideff might already have a nexstate */
                              OP* op = ((LISTOP*)$$)->op_first;
                              if (op) {
@@ -236,7 +234,7 @@ line        :       label cond
                                  token_getmad($1,op,'L');
                                  token_getmad($3,op,';');
                              }
-                         )
+                         })
                        }
        ;
 
@@ -262,7 +260,7 @@ sideff      :       error
                          TOKEN_GETMAD($2,$$,'w');
                        }
        |       expr FOR expr
-                       { $$ = newFOROP(0, Nullch, (line_t)IVAL($2),
+                       { $$ = newFOROP(0, NULL, (line_t)IVAL($2),
                                        Nullop, $3, $1, Nullop);
                          TOKEN_GETMAD($2,((LISTOP*)$$)->op_first->op_sibling,'w');
                        }
@@ -469,10 +467,10 @@ label     :       /* empty */
                        {
 #ifdef MAD
                          YYSTYPE tmplval;
-                         tmplval.pval = Nullch;
+                         tmplval.pval = NULL;
                          $$ = newTOKEN(OP_NULL, tmplval, 0);
 #else
-                         $$ = Nullch;
+                         $$ = NULL;
 #endif
                        }
        |       LABEL
@@ -537,16 +535,18 @@ mysubrout:        MYSUB startsub subname proto subattrlist subbody
 subrout        :       SUB startsub subname proto subattrlist subbody
                        { SvREFCNT_inc_simple_void(PL_compcv);
 #ifdef MAD
-                         OP* o = newSVOP(OP_ANONCODE, 0,
-                           (SV*)newATTRSUB($2, $3, $4, $5, $6));
-                         $$ = newOP(OP_NULL,0);
-                         op_getmad(o,$$,'&');
-                         op_getmad($3,$$,'n');
-                         op_getmad($4,$$,'s');
-                         op_getmad($5,$$,'a');
-                         token_getmad($1,$$,'d');
-                         append_madprops($6->op_madprop, $$, 0);
-                         $6->op_madprop = 0;
+                         {
+                             OP* o = newSVOP(OP_ANONCODE, 0,
+                               (SV*)newATTRSUB($2, $3, $4, $5, $6));
+                             $$ = newOP(OP_NULL,0);
+                             op_getmad(o,$$,'&');
+                             op_getmad($3,$$,'n');
+                             op_getmad($4,$$,'s');
+                             op_getmad($5,$$,'a');
+                             token_getmad($1,$$,'d');
+                             append_madprops($6->op_madprop, $$, 0);
+                             $6->op_madprop = 0;
+                           }
 #else
                          newATTRSUB($2, $3, $4, $5, $6);
                          $$ = Nullop;
@@ -906,14 +906,14 @@ termbinop:        term ASSIGNOP term                     /* $x = $y */
        |       term DOTDOT term                       /* $x..$y, $x...$y */
                        {
                          $$ = newRANGE(IVAL($2), scalar($1), scalar($3));
-                         DO_MAD(
+                         DO_MAD({
                              UNOP *op;
                              op = (UNOP*)$$;
                              op = (UNOP*)op->op_first; /* get to flop */
                              op = (UNOP*)op->op_first; /* get to flip */
                              op = (UNOP*)op->op_first; /* get to range */
                              token_getmad($2,(OP*)op,'o');
-                           )
+                           })
                        }
        |       term ANDAND term                       /* $x && $y */
                        { $$ = newLOGOP(OP_AND, 0, $1, $3);
@@ -1083,7 +1083,7 @@ term      :       termbinop
                        { $$ = $1; }
        |       LOCAL term      %prec UNIOP
                        { $$ = localize($2,IVAL($1));
-                         TOKEN_GETMAD($1,$$,'d');
+                         TOKEN_GETMAD($1,$$,'k');
                        }
        |       '(' expr ')'
                        { $$ = sawparens(IF_MAD(newUNOP(OP_NULL,0,$2), $2));
@@ -1140,14 +1140,14 @@ term    :       termbinop
                        {
                          $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                append_elem(OP_LIST, $3, scalar($1)));
-                         DO_MAD(
+                         DO_MAD({
                              OP* op = $$;
                              if (op->op_type == OP_CONST) { /* defeat const fold */
                                op = (OP*)op->op_madprop->mad_val;
                              }
                              token_getmad($2,op,'(');
                              token_getmad($4,op,')');
-                         )
+                         })
                        }
        |       NOAMP WORD listexpr                  /* foo(@args) */
                        { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,