This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make CAT2() portable for use as a macro argument with an extra
[perl5.git] / perly_c.diff
index 0ee7cb2..0b73880 100644 (file)
-Index: perly.c
-*** perly.c.old        Wed Jun 10 03:48:43 1998
---- perly.c    Wed Jun 10 03:55:10 1998
+*** y.tab.c.orig       Thu Aug 26 22:31:26 1999
+--- y.tab.c    Thu Aug 26 22:32:22 1999
 ***************
-*** 7,10 ****
---- 7,18 ----
-  #include "perl.h"
-  
-+ #ifdef PERL_OBJECT
-+ static void
-+ Dep(CPerlObj *pPerl)
-+ {
-+     pPerl->deprecate("\"do\" to call subroutines");
-+ }
-+ #define dep() Dep(this)
-+ #else
-  static void
-  dep(void)
-***************
-*** 12,82 ****
-      deprecate("\"do\" to call subroutines");
-  }
-  
-! #line 29 "perly.y"
-! typedef union {
-!     I32      ival;
-!     char *pval;
-!     OP *opval;
-!     GV *gvval;
-! } YYSTYPE;
-! #line 23 "y.tab.c"
-! #define WORD 257
-! #define METHOD 258
-! #define FUNCMETH 259
-! #define THING 260
-! #define PMFUNC 261
-! #define PRIVATEREF 262
-! #define FUNC0SUB 263
-! #define UNIOPSUB 264
-! #define LSTOPSUB 265
-! #define LABEL 266
-! #define FORMAT 267
-! #define SUB 268
-! #define ANONSUB 269
-! #define PACKAGE 270
-! #define USE 271
-! #define WHILE 272
-! #define UNTIL 273
-! #define IF 274
-! #define UNLESS 275
-! #define ELSE 276
-! #define ELSIF 277
-! #define CONTINUE 278
-! #define FOR 279
-! #define LOOPEX 280
-! #define DOTDOT 281
-! #define FUNC0 282
-! #define FUNC1 283
-! #define FUNC 284
-! #define UNIOP 285
-! #define LSTOP 286
-! #define RELOP 287
-! #define EQOP 288
-! #define MULOP 289
-! #define ADDOP 290
-! #define DOLSHARP 291
-! #define DO 292
-! #define HASHBRACK 293
-! #define NOAMP 294
-! #define LOCAL 295
-! #define MY 296
-! #define OROP 297
-! #define ANDOP 298
-! #define NOTOP 299
-! #define ASSIGNOP 300
-! #define OROR 301
-! #define ANDAND 302
-! #define BITOROP 303
-! #define BITANDOP 304
-! #define SHIFTOP 305
-! #define MATCHOP 306
-! #define UMINUS 307
-! #define REFGEN 308
-! #define POWOP 309
-! #define PREINC 310
-! #define PREDEC 311
-! #define POSTINC 312
-! #define POSTDEC 313
-! #define ARROW 314
-  #define YYERRCODE 256
-  short yylhs[] = {                                        -1,
---- 20,26 ----
-      deprecate("\"do\" to call subroutines");
-  }
-+ #endif
-  
-! #line 16 "perly.c"
-  #define YYERRCODE 256
-  short yylhs[] = {                                        -1,
-***************
-*** 1337,1361 ****
-  int yyerrflag;
-  int yychar;
-- short *yyssp;
-- YYSTYPE *yyvsp;
-  YYSTYPE yyval;
-  YYSTYPE yylval;
-- short yyss[YYSTACKSIZE];
-- YYSTYPE yyvs[YYSTACKSIZE];
-- #define yystacksize YYSTACKSIZE
-  #line 635 "perly.y"
-   /* PROGRAM */
-! #line 1349 "y.tab.c"
-  #define YYABORT goto yyabort
-  #define YYACCEPT goto yyaccept
-  #define YYERROR goto yyerrlab
-  int
-! yyparse()
+*** 1447,1456 ****
+  yyparse()
   {
       register int yym, yyn, yystate;
   #if YYDEBUG
       register char *yys;
-      extern char *getenv();
+!     extern char *getenv();
   
       if (yys = getenv("YYDEBUG"))
       {
---- 1281,1347 ----
-  int yyerrflag;
-  int yychar;
-  YYSTYPE yyval;
-  YYSTYPE yylval;
-  #line 635 "perly.y"
-   /* PROGRAM */
-! #line 1349 "perly.c"
-  #define YYABORT goto yyabort
-  #define YYACCEPT goto yyaccept
-  #define YYERROR goto yyerrlab
-+ 
-+ struct ysv {
-+     short* yyss;
-+     YYSTYPE* yyvs;
-+     int oldyydebug;
-+     int oldyynerrs;
-+     int oldyyerrflag;
-+     int oldyychar;
-+     YYSTYPE oldyyval;
-+     YYSTYPE oldyylval;
-+ };
-+ 
-+ void
-+ yydestruct(void *ptr)
-+ {
-+     struct ysv* ysave = (struct ysv*)ptr;
-+     if (ysave->yyss) Safefree(ysave->yyss);
-+     if (ysave->yyvs) Safefree(ysave->yyvs);
-+     yydebug  = ysave->oldyydebug;
-+     yynerrs  = ysave->oldyynerrs;
-+     yyerrflag        = ysave->oldyyerrflag;
-+     yychar   = ysave->oldyychar;
-+     yyval    = ysave->oldyyval;
-+     yylval   = ysave->oldyylval;
-+     Safefree(ysave);
-+ }
-+ 
-  int
-! yyparse(void)
+          yyn = *yys;
+--- 1447,1473 ----
+  yyparse()
   {
       register int yym, yyn, yystate;
 +     register short *yyssp;
@@ -174,27 +24,26 @@ Index: perly.c
 +     int retval = 0;
   #if YYDEBUG
       register char *yys;
-+ #ifndef __cplusplus
-      extern char *getenv();
-+ #endif
-+ #endif
-+ 
+! #endif
+  
 +     struct ysv *ysave;
 +     New(73, ysave, 1, struct ysv);
-+     SAVEDESTRUCTOR(yydestruct, ysave);
++     SAVEDESTRUCTOR_X(yydestruct, ysave);
 +     ysave->oldyydebug        = yydebug;
 +     ysave->oldyynerrs        = yynerrs;
 +     ysave->oldyyerrflag      = yyerrflag;
 +     ysave->oldyychar = yychar;
 +     ysave->oldyyval  = yyval;
 +     ysave->oldyylval = yylval;
-  
++   
 + #if YYDEBUG
       if (yys = getenv("YYDEBUG"))
       {
+          yyn = *yys;
 ***************
-*** 1370,1373 ****
---- 1356,1369 ----
+*** 1463,1468 ****
+--- 1480,1495 ----
+      yyerrflag = 0;
       yychar = (-1);
   
 +     /*
@@ -209,36 +58,17 @@ Index: perly.c
 + 
       yyssp = yyss;
       yyvsp = yyvs;
+      *yyssp = yystate = 0;
 ***************
-*** 1385,1389 ****
-              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-              if (!yys) yys = "illegal-symbol";
-!             printf("yydebug: state %d, reading %d (%s)\n", yystate,
-                      yychar, yys);
-          }
---- 1381,1385 ----
-              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-              if (!yys) yys = "illegal-symbol";
-!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
-                      yychar, yys);
-          }
-***************
-*** 1395,1404 ****
-  #if YYDEBUG
-          if (yydebug)
-!             printf("yydebug: state %d, shifting to state %d\n",
-                      yystate, yytable[yyn]);
+*** 1493,1499 ****
   #endif
           if (yyssp >= yyss + yystacksize - 1)
           {
 !             goto yyoverflow;
           }
           *++yyssp = yystate = yytable[yyn];
---- 1391,1414 ----
-  #if YYDEBUG
-          if (yydebug)
-!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
-                      yystate, yytable[yyn]);
+          *++yyvsp = yylval;
+--- 1520,1538 ----
   #endif
           if (yyssp >= yyss + yystacksize - 1)
           {
@@ -249,34 +79,25 @@ Index: perly.c
 !          int yyps_index = (yyssp - yyss);
 !          int yypv_index = (yyvsp - yyvs);
 !          yystacksize += YYSTACKSIZE;
-!          ysave->yyvs = yyvs =
-!              (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!          ysave->yyss = yyss =
-!              (short*)realloc((char*)yyss,yystacksize * sizeof(short));
+!          ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+!          ysave->yyss = Renew(yyss, yystacksize, short);
 !          if (!yyvs || !yyss)
 !              goto yyoverflow;
 !          yyssp = yyss + yyps_index;
 !          yyvsp = yyvs + yypv_index;
           }
           *++yyssp = yystate = yytable[yyn];
+          *++yyvsp = yylval;
 ***************
-*** 1436,1445 ****
-  #if YYDEBUG
-                  if (yydebug)
-!                     printf("yydebug: state %d, error recovery shifting\
-!  to state %d\n", *yyssp, yytable[yyn]);
+*** 1534,1540 ****
   #endif
                   if (yyssp >= yyss + yystacksize - 1)
                   {
 !                     goto yyoverflow;
                   }
                   *++yyssp = yystate = yytable[yyn];
---- 1446,1470 ----
-  #if YYDEBUG
-                  if (yydebug)
-!                     PerlIO_printf(Perl_debug_log,
-!                   "yydebug: state %d, error recovery shifting to state %d\n",
-!                   *yyssp, yytable[yyn]);
+                  *++yyvsp = yylval;
+--- 1573,1591 ----
   #endif
                   if (yyssp >= yyss + yystacksize - 1)
                   {
@@ -287,121 +108,33 @@ Index: perly.c
 !                  int yyps_index = (yyssp - yyss);
 !                  int yypv_index = (yyvsp - yyvs);
 !                  yystacksize += YYSTACKSIZE;
-!                  ysave->yyvs = yyvs = (YYSTYPE*)realloc((char*)yyvs,
-!                      yystacksize * sizeof(YYSTYPE));
-!                  ysave->yyss = yyss = (short*)realloc((char*)yyss,
-!                      yystacksize * sizeof(short));
+!                  ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+!                  ysave->yyss = Renew(yyss, yystacksize, short);
 !                  if (!yyvs || !yyss)
 !                      goto yyoverflow;
 !                  yyssp = yyss + yyps_index;
 !                  yyvsp = yyvs + yypv_index;
                   }
                   *++yyssp = yystate = yytable[yyn];
+                  *++yyvsp = yylval;
 ***************
-*** 1451,1456 ****
-  #if YYDEBUG
-                  if (yydebug)
-!                     printf("yydebug: error recovery discarding state %d\n",
-!                             *yyssp);
-  #endif
-                  if (yyssp <= yyss) goto yyabort;
---- 1476,1482 ----
-  #if YYDEBUG
-                  if (yydebug)
-!                     PerlIO_printf(Perl_debug_log,
-!                      "yydebug: error recovery discarding state %d\n",
-!                      *yyssp);
-  #endif
-                  if (yyssp <= yyss) goto yyabort;
-***************
-*** 1469,1474 ****
-              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-              if (!yys) yys = "illegal-symbol";
-!             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
-!                     yystate, yychar, yys);
-          }
-  #endif
---- 1495,1501 ----
-              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-              if (!yys) yys = "illegal-symbol";
-!             PerlIO_printf(Perl_debug_log,
-!              "yydebug: state %d, error recovery discards token %d (%s)\n",
-!              yystate, yychar, yys);
-          }
-  #endif
-***************
-*** 1479,1483 ****
-  #if YYDEBUG
-      if (yydebug)
-!         printf("yydebug: state %d, reducing by rule %d (%s)\n",
-                  yystate, yyn, yyrule[yyn]);
-  #endif
---- 1506,1510 ----
-  #if YYDEBUG
-      if (yydebug)
-!         PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
-                  yystate, yyn, yyrule[yyn]);
-  #endif
-***************
-*** 2263,2267 ****
-  { yyval.opval = yyvsp[0].opval; }
-  break;
-! #line 2266 "y.tab.c"
-      }
-      yyssp -= yym;
---- 2290,2294 ----
-  { yyval.opval = yyvsp[0].opval; }
-  break;
-! #line 2266 "perly.c"
-      }
-      yyssp -= yym;
-***************
-*** 2273,2278 ****
-  #if YYDEBUG
-          if (yydebug)
-!             printf("yydebug: after reduction, shifting from state 0 to\
-!  state %d\n", YYFINAL);
-  #endif
-          yystate = YYFINAL;
---- 2300,2306 ----
-  #if YYDEBUG
-          if (yydebug)
-!             PerlIO_printf(Perl_debug_log,
-!              "yydebug: after reduction, shifting from state 0 to state %d\n",
-!              YYFINAL);
-  #endif
-          yystate = YYFINAL;
-***************
-*** 2288,2292 ****
-                  if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-                  if (!yys) yys = "illegal-symbol";
-!                 printf("yydebug: state %d, reading %d (%s)\n",
-                          YYFINAL, yychar, yys);
-              }
---- 2316,2320 ----
-                  if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-                  if (!yys) yys = "illegal-symbol";
-!                 PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n",
-                          YYFINAL, yychar, yys);
-              }
-***************
-*** 2303,2312 ****
-  #if YYDEBUG
-      if (yydebug)
-!         printf("yydebug: after reduction, shifting from state %d \
-! to state %d\n", *yyssp, yystate);
+*** 2473,2487 ****
   #endif
       if (yyssp >= yyss + yystacksize - 1)
       {
 !         goto yyoverflow;
       }
       *++yyssp = yystate;
---- 2331,2355 ----
-  #if YYDEBUG
-      if (yydebug)
-!         PerlIO_printf(Perl_debug_log,
-!          "yydebug: after reduction, shifting from state %d to state %d\n",
-!          *yyssp, yystate);
+      *++yyvsp = yyval;
+      goto yyloop;
+  yyoverflow:
+!     yyerror("yacc stack overflow");
+  yyabort:
+!     return (1);
+  yyaccept:
+!     return (0);
+  }
+--- 2524,2569 ----
   #endif
       if (yyssp >= yyss + yystacksize - 1)
       {
@@ -412,27 +145,15 @@ Index: perly.c
 !      int yyps_index = (yyssp - yyss);
 !      int yypv_index = (yyvsp - yyvs);
 !      yystacksize += YYSTACKSIZE;
-!      ysave->yyvs = yyvs =
-!          (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!      ysave->yyss = yyss =
-!          (short*)realloc((char*)yyss,yystacksize * sizeof(short));
+!      ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+!      ysave->yyss = Renew(yyss, yystacksize, short);
 !      if (!yyvs || !yyss)
 !          goto yyoverflow;
 !      yyssp = yyss + yyps_index;
 !      yyvsp = yyvs + yypv_index;
       }
       *++yyssp = yystate;
-***************
-*** 2314,2321 ****
-      goto yyloop;
-  yyoverflow:
-!     yyerror("yacc stack overflow");
-  yyabort:
-!     return (1);
-  yyaccept:
-!     return (0);
-  }
---- 2357,2364 ----
+      *++yyvsp = yyval;
       goto yyloop;
   yyoverflow:
 !     yyerror("Out of memory for yacc stack");
@@ -440,4 +161,23 @@ Index: perly.c
 !     retval = 1;
   yyaccept:
 !     return retval;
+! }
+! 
+! #ifdef PERL_OBJECT
+! #include "XSUB.h"
+! #endif
+! 
+! static void
+! yydestruct(pTHXo_ void *ptr)
+! {
+!     struct ysv* ysave = (struct ysv*)ptr;
+!     if (ysave->yyss) Safefree(ysave->yyss);
+!     if (ysave->yyvs) Safefree(ysave->yyvs);
+!     yydebug  = ysave->oldyydebug;
+!     yynerrs  = ysave->oldyynerrs;
+!     yyerrflag        = ysave->oldyyerrflag;
+!     yychar   = ysave->oldyychar;
+!     yyval    = ysave->oldyyval;
+!     yylval   = ysave->oldyylval;
+!     Safefree(ysave);
   }