This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update to version 1.16
[perl5.git] / perly.c.diff
index c8d6f10..3b3c04e 100644 (file)
@@ -1,7 +1,81 @@
-*** perly.c.orig       Mon Feb 14 14:24:43 1994
---- perly.c    Mon Feb 14 14:24:44 1994
+*** perly.c.orig       Wed Feb 14 15:29:04 1996
+--- perly.c    Wed Feb 14 15:29:05 1996
 ***************
-*** 1591,1603 ****
+*** 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 RELOP 285
+- #define EQOP 286
+- #define MULOP 287
+- #define ADDOP 288
+- #define DOLSHARP 289
+- #define DO 290
+- #define LOCAL 291
+- #define HASHBRACK 292
+- #define NOAMP 293
+- #define OROP 294
+- #define ANDOP 295
+- #define NOTOP 296
+- #define LSTOP 297
+- #define ASSIGNOP 298
+- #define OROR 299
+- #define ANDAND 300
+- #define BITOROP 301
+- #define BITANDOP 302
+- #define UNIOP 303
+- #define SHIFTOP 304
+- #define MATCHOP 305
+- #define UMINUS 306
+- #define REFGEN 307
+- #define POWOP 308
+- #define PREINC 309
+- #define PREDEC 310
+- #define POSTINC 311
+- #define POSTDEC 312
+- #define ARROW 313
+  #define YYERRCODE 256
+  short yylhs[] = {                                        -1,
+     31,    0,    5,    3,    6,    6,    6,    7,    7,    7,
+--- 12,17 ----
+***************
+*** 1381,1393 ****
   int yynerrs;
   int yyerrflag;
   int yychar;
 - short yyss[YYSTACKSIZE];
 - YYSTYPE yyvs[YYSTACKSIZE];
 - #define yystacksize YYSTACKSIZE
-  #line 611 "perly.y"
+  #line 571 "perly.y"
    /* PROGRAM */
-  #line 1604 "y.tab.c"
---- 1591,1598 ----
+  #line 1394 "y.tab.c"
+--- 1316,1323 ----
 ***************
-*** 1608,1613 ****
---- 1603,1621 ----
+*** 1394,1407 ****
+--- 1324,1382 ----
+  #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(ptr)
++ 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()
   {
       register int yym, yyn, yystate;
 +     short* yyss;
 +     YYSTYPE* yyvs;
 +     unsigned yystacksize = YYSTACKSIZE;
-+     int oldyydebug   = yydebug;
-+     int oldyynerrs   = yynerrs;
-+     int oldyyerrflag = yyerrflag;
-+     int oldyychar    = yychar;
-+     YYSTYPE oldyyval = yyval;
-+     YYSTYPE oldyylval        = yylval;
 +     int retval = 0;
-+ 
   #if YYDEBUG
       register char *yys;
       extern char *getenv();
++ #endif
+  
++     struct ysv *ysave = (struct ysv*)safemalloc(sizeof(struct ysv));
++     SAVEDESTRUCTOR(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;
 ***************
-*** 1624,1629 ****
---- 1632,1645 ----
+*** 1414,1419 ****
+--- 1389,1402 ----
       yyerrflag = 0;
       yychar = (-1);
   
 +     /*
 +     ** Initialize private stacks (yyparse may be called from an action)
 +     */
-+     yyss = (short*)malloc(yystacksize*sizeof(short));
-+     yyvs = (YYSTYPE*)malloc(yystacksize*sizeof(YYSTYPE));
++     ysave->yyss = yyss = (short*)safemalloc(yystacksize*sizeof(short));
++     ysave->yyvs = yyvs = (YYSTYPE*)safemalloc(yystacksize*sizeof(YYSTYPE));
 +     if (!yyvs || !yyss)
 +      goto yyoverflow;
 + 
       yyvsp = yyvs;
       *yyssp = yystate = 0;
 ***************
-*** 1639,1645 ****
+*** 1429,1435 ****
               yys = 0;
               if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
               if (!yys) yys = "illegal-symbol";
                       yychar, yys);
           }
   #endif
---- 1655,1661 ----
+--- 1412,1418 ----
               yys = 0;
               if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
               if (!yys) yys = "illegal-symbol";
           }
   #endif
 ***************
-*** 1649,1660 ****
+*** 1439,1450 ****
       {
   #if YYDEBUG
           if (yydebug)
           }
           *++yyssp = yystate = yytable[yyn];
           *++yyvsp = yylval;
---- 1665,1688 ----
+--- 1422,1447 ----
       {
   #if YYDEBUG
           if (yydebug)
 !          int yyps_index = (yyssp - yyss);
 !          int yypv_index = (yyvsp - yyvs);
 !          yystacksize += YYSTACKSIZE;
-!          yyvs = (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!          yyss = (short*)realloc((char*)yyss,yystacksize * sizeof(short));
+!          ysave->yyvs = yyvs =
+!              (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
+!          ysave->yyss = yyss =
+!              (short*)realloc((char*)yyss,yystacksize * sizeof(short));
 !          if (!yyvs || !yyss)
 !              goto yyoverflow;
 !          yyssp = yyss + yyps_index;
           *++yyssp = yystate = yytable[yyn];
           *++yyvsp = yylval;
 ***************
-*** 1690,1701 ****
+*** 1480,1491 ****
               {
   #if YYDEBUG
                   if (yydebug)
                   }
                   *++yyssp = yystate = yytable[yyn];
                   *++yyvsp = yylval;
---- 1718,1744 ----
+--- 1477,1503 ----
               {
   #if YYDEBUG
                   if (yydebug)
 !                  int yyps_index = (yyssp - yyss);
 !                  int yypv_index = (yyvsp - yyvs);
 !                  yystacksize += YYSTACKSIZE;
-!                  yyvs = (YYSTYPE*)realloc((char*)yyvs,
+!                  ysave->yyvs = yyvs = (YYSTYPE*)realloc((char*)yyvs,
 !                      yystacksize * sizeof(YYSTYPE));
-!                  yyss = (short*)realloc((char*)yyss,
+!                  ysave->yyss = yyss = (short*)realloc((char*)yyss,
 !                      yystacksize * sizeof(short));
 !                  if (!yyvs || !yyss)
 !                      goto yyoverflow;
                   *++yyssp = yystate = yytable[yyn];
                   *++yyvsp = yylval;
 ***************
-*** 1705,1712 ****
+*** 1495,1502 ****
               {
   #if YYDEBUG
                   if (yydebug)
   #endif
                   if (yyssp <= yyss) goto yyabort;
                   --yyssp;
---- 1748,1756 ----
+--- 1507,1515 ----
               {
   #if YYDEBUG
                   if (yydebug)
                   if (yyssp <= yyss) goto yyabort;
                   --yyssp;
 ***************
-*** 1723,1730 ****
+*** 1513,1520 ****
               yys = 0;
               if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
               if (!yys) yys = "illegal-symbol";
           }
   #endif
           yychar = (-1);
---- 1767,1775 ----
+--- 1526,1534 ----
               yys = 0;
               if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
               if (!yys) yys = "illegal-symbol";
   #endif
           yychar = (-1);
 ***************
-*** 1733,1739 ****
+*** 1523,1529 ****
   yyreduce:
   #if YYDEBUG
       if (yydebug)
                   yystate, yyn, yyrule[yyn]);
   #endif
       yym = yylen[yyn];
---- 1778,1784 ----
+--- 1537,1543 ----
   yyreduce:
   #if YYDEBUG
       if (yydebug)
   #endif
       yym = yylen[yyn];
 ***************
-*** 2490,2497 ****
+*** 2242,2249 ****
       {
   #if YYDEBUG
           if (yydebug)
   #endif
           yystate = YYFINAL;
           *++yyssp = YYFINAL;
---- 2535,2543 ----
+--- 2256,2264 ----
       {
   #if YYDEBUG
           if (yydebug)
           yystate = YYFINAL;
           *++yyssp = YYFINAL;
 ***************
-*** 2505,2511 ****
+*** 2257,2263 ****
                   yys = 0;
                   if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                   if (!yys) yys = "illegal-symbol";
                           YYFINAL, yychar, yys);
               }
   #endif
---- 2551,2557 ----
+--- 2272,2278 ----
                   yys = 0;
                   if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                   if (!yys) yys = "illegal-symbol";
               }
   #endif
 ***************
-*** 2520,2539 ****
+*** 2272,2291 ****
           yystate = yydgoto[yym];
   #if YYDEBUG
       if (yydebug)
   yyaccept:
 !     return (0);
   }
---- 2566,2606 ----
+--- 2287,2321 ----
           yystate = yydgoto[yym];
   #if YYDEBUG
       if (yydebug)
 !      int yyps_index = (yyssp - yyss);
 !      int yypv_index = (yyvsp - yyvs);
 !      yystacksize += YYSTACKSIZE;
-!      yyvs = (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-!      yyss = (short*)realloc((char*)yyss,yystacksize * sizeof(short));
+!      ysave->yyvs = yyvs =
+!          (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
+!      ysave->yyss = yyss =
+!          (short*)realloc((char*)yyss,yystacksize * sizeof(short));
 !      if (!yyvs || !yyss)
 !          goto yyoverflow;
 !      yyssp = yyss + yyps_index;
   yyabort:
 !     retval = 1;
   yyaccept:
-!     if (yyss) free(yyss);
-!     if (yyvs) free(yyvs);
-!     yydebug  = oldyydebug;
-!     yynerrs  = oldyynerrs;
-!     yyerrflag        = oldyyerrflag;
-!     yychar   = oldyychar;
-!     yyval    = oldyyval;
-!     yylval   = oldyylval;
 !     return retval;
   }