Update perly_c.diff, update perly.fixer to edit away
Jarkko Hietaniemi [Sun, 10 Jun 2001 17:38:28 +0000 (17:38 +0000)]
some of the -Wall noise.

p4raw-id: //depot/perl@10503

perly.c
perly.fixer
perly_c.diff
vms/perly_c.vms

diff --git a/perly.c b/perly.c
index 2ac6ce9..2b2a3f0 100644 (file)
--- a/perly.c
+++ b/perly.c
@@ -1,5 +1,5 @@
 #ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
+/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */
 #endif
 #define YYBYACC 1
 #line 16 "perly.y"
@@ -1509,7 +1509,9 @@ yyloop:
         if (yyerrflag > 0)  --yyerrflag;
         goto yyloop;
     }
-    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+    if (
+((yyn = yyrindex[yystate])) && 
+(yyn += yychar) >= 0 &&
             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
     {
         yyn = yytable[yyn];
@@ -1519,12 +1521,12 @@ yyloop:
 #ifdef lint
     goto yynewerror;
 #endif
-yynewerror:
+
     yyerror("syntax error");
 #ifdef lint
     goto yyerrlab;
 #endif
-yyerrlab:
+
     ++yynerrs;
 yyinrecovery:
     if (yyerrflag < 3)
index 00f583c..16ea925 100755 (executable)
@@ -2,7 +2,7 @@
 
 # Fix up yacc output to allow dynamic allocation.  Since perly.c
 # is now provided with the perl source, this should not be necessary.
-#  
+#
 # However, if the user wishes to use byacc, or wishes to try another 
 # compiler compiler (e.g. bison or yacc), this script will get run.
 # See makefile run_byacc target for more details.
@@ -14,6 +14,9 @@
 #
 # Additional information to make the BSD section work with SunOS 4.0.2
 #   tdinger@East.Sun.COM (Tom Dinger)  4/15/1991
+#
+# Also edit some practices gcc -Wall finds questionable.
+#  
 
 input=$1
 output=$2
@@ -41,6 +44,11 @@ if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then
            -e '/^static static/s/^static //' \
            -e '/^#define.WORD/,/^#define.ARROW/d' \
            -e '/^int.yydebug/,/^#define.yystacksize/d' \
+           -e 's/^yyerrlab:$//' \
+           -e 's/^    goto yyerrlab;//' \
+           -e 's/^yynewerror:$//' \
+           -e 's/^    goto yynewerror;//' \
+           -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
            < $output > $tmp && mv -f $tmp $output || exit 1
        rm -rf $input
        echo "If you need to debug perly.c, you need to fix up the #line"
@@ -56,6 +64,11 @@ elif grep 'yaccpar   1.9 (Berkeley)' $input >/dev/null 2>&1; then
            -e '/^static static/s/^static //' \
            -e '/^#define.WORD/,/^#define.ARROW/d' \
            -e '/^int.yydebug/,/^#define.yystacksize/d' \
+           -e 's/^yyerrlab:$//' \
+           -e 's/^    goto yyerrlab;//' \
+           -e 's/^yynewerror:$//' \
+           -e 's/^    goto yynewerror;//' \
+           -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
            < $output > $tmp && mv -f $tmp $output || exit 1
        rm -rf $input
        echo "If you need to debug perly.c, you need to fix up the #line"
index 2099060..c15e95b 100644 (file)
-*** y.tab.c.orig       Thu Aug 26 22:31:26 1999
---- y.tab.c    Thu Aug 26 22:32:22 1999
-***************
-*** 1448,1457 ****
-  yyparse()
-  {
-      register int yym, yyn, yystate;
-  #if YYDEBUG
-      register char *yys;
-!     extern char *getenv();
-  
-      if (yys = getenv("YYDEBUG"))
-      {
-          yyn = *yys;
---- 1448,1477 ----
-  yyparse()
-  {
-      register int yym, yyn, yystate;
-+     register short *yyssp;
-+     register YYSTYPE *yyvsp;
-+     short* yyss;
-+     YYSTYPE* yyvs;
-+     unsigned yystacksize = YYSTACKSIZE;
-+     int retval = 0;
-  #if YYDEBUG
-      register char *yys;
-! #endif
-  
-+     struct ysv *ysave;
-+ #ifdef USE_ITHREADS
-+     ENTER;                   /* force yydestruct() before we return */
-+ #endif
-+     New(73, ysave, 1, struct ysv);
-+     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;
-***************
-*** 1464,1469 ****
---- 1484,1499 ----
-      yyerrflag = 0;
-      yychar = (-1);
-  
-+     /*
-+     ** Initialize private stacks (yyparse may be called from an action)
-+     */
-+     New(73, yyss, yystacksize, short);
-+     New(73, yyvs, yystacksize, YYSTYPE);
-+     ysave->yyss = yyss;
-+     ysave->yyvs = yyvs;
-+     if (!yyvs || !yyss)
-+      goto yyoverflow;
-+ 
-      yyssp = yyss;
-      yyvsp = yyvs;
-      *yyssp = yystate = 0;
-***************
-*** 1494,1500 ****
-  #endif
-          if (yyssp >= yyss + yystacksize - 1)
-          {
-!             goto yyoverflow;
-          }
-          *++yyssp = yystate = yytable[yyn];
-          *++yyvsp = yylval;
---- 1524,1542 ----
-  #endif
-          if (yyssp >= yyss + yystacksize - 1)
-          {
-!          /*
-!          ** reallocate and recover.  Note that pointers
-!          ** have to be reset, or bad things will happen
-!          */
-!          int yyps_index = (yyssp - yyss);
-!          int yypv_index = (yyvsp - yyvs);
-!          yystacksize += YYSTACKSIZE;
-!          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;
-***************
-*** 1535,1541 ****
-  #endif
-                  if (yyssp >= yyss + yystacksize - 1)
-                  {
-!                     goto yyoverflow;
-                  }
-                  *++yyssp = yystate = yytable[yyn];
-                  *++yyvsp = yylval;
---- 1577,1595 ----
-  #endif
-                  if (yyssp >= yyss + yystacksize - 1)
-                  {
-!                  /*
-!                  ** reallocate and recover.  Note that pointers
-!                  ** have to be reset, or bad things will happen
-!                  */
-!                  int yyps_index = (yyssp - yyss);
-!                  int yypv_index = (yyvsp - yyvs);
-!                  yystacksize += YYSTACKSIZE;
-!                  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;
-***************
-*** 2481,2495 ****
-  #endif
-      if (yyssp >= yyss + yystacksize - 1)
-      {
-!         goto yyoverflow;
-      }
-      *++yyssp = yystate;
-      *++yyvsp = yyval;
-      goto yyloop;
-  yyoverflow:
-!     yyerror("yacc stack overflow");
-  yyabort:
-!     return (1);
-  yyaccept:
-!     return (0);
-  }
---- 2535,2583 ----
-  #endif
-      if (yyssp >= yyss + yystacksize - 1)
-      {
-!      /*
-!      ** reallocate and recover.  Note that pointers
-!      ** have to be reset, or bad things will happen
-!      */
-!      int yyps_index = (yyssp - yyss);
-!      int yypv_index = (yyvsp - yyvs);
-!      yystacksize += YYSTACKSIZE;
-!      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;
-      *++yyvsp = yyval;
-      goto yyloop;
-  yyoverflow:
-!     yyerror("Out of memory for yacc stack");
-  yyabort:
-!     retval = 1;
-  yyaccept:
-! #ifdef USE_ITHREADS
-!     LEAVE;                   /* force yydestruct() before we return */
-! #endif
-!     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);
-  }
+--- perly.c.orig       Sun Jun 10 21:13:50 2001
++++ perly.c    Sun Jun 10 21:13:51 2001
+@@ -50,70 +50,9 @@
+ #define yylex yylex_r
+ #endif
+-#line 54 "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 MYSUB 297
+-#define COLONATTR 298
+-#define PREC_LOW 299
+-#define OROP 300
+-#define ANDOP 301
+-#define NOTOP 302
+-#define ASSIGNOP 303
+-#define OROR 304
+-#define ANDAND 305
+-#define BITOROP 306
+-#define BITANDOP 307
+-#define SHIFTOP 308
+-#define MATCHOP 309
+-#define UMINUS 310
+-#define REFGEN 311
+-#define POWOP 312
+-#define PREINC 313
+-#define PREDEC 314
+-#define POSTINC 315
+-#define POSTDEC 316
+-#define ARROW 317
++#line 54 "perly.c"
+ #define YYERRCODE 256
+-short yylhs[] = {                                        -1,
++static short yylhs[] = {                                        -1,
+    54,    0,    8,    6,    9,    7,   10,   10,   10,   11,
+    11,   11,   11,   24,   24,   24,   24,   24,   24,   24,
+    14,   14,   14,   13,   13,   42,   42,   12,   12,   12,
+@@ -135,7 +74,7 @@
+    48,   33,   33,   34,   34,   34,   43,   23,   18,   19,
+    20,   21,   22,   35,   35,   35,   35,
+ };
+-short yylen[] = {                                         2,
++static short yylen[] = {                                         2,
+     0,    2,    4,    0,    4,    0,    0,    2,    2,    2,
+     1,    2,    3,    1,    1,    3,    3,    3,    3,    3,
+     0,    2,    6,    7,    7,    0,    2,    8,    8,   10,
+@@ -157,7 +96,7 @@
+     1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
+     2,    2,    2,    1,    1,    1,    1,
+ };
+-short yydefred[] = {                                      1,
++static short yydefred[] = {                                      1,
+     0,    7,    0,   45,   58,   56,    0,   56,   56,    8,
+    46,    9,   11,   48,    0,   47,   49,   50,    0,    0,
+     0,   70,   71,    0,   14,    4,  173,    0,    0,  154,
+@@ -199,7 +138,7 @@
+     0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
+     0,   33,    0,   23,
+ };
+-short yydgoto[] = {                                       1,
++static short yydgoto[] = {                                       1,
+    10,   11,   20,  104,   19,   95,  370,   98,  359,    3,
+    12,   13,   70,  375,  285,   72,   73,   74,   75,   76,
+    77,   78,   79,  291,   81,  292,  281,  283,  286,  294,
+@@ -207,7 +146,7 @@
+   327,  156,  289,  271,  225,   14,   83,  137,   84,   85,
+    86,   87,   15,    2,   16,   17,   18,   93,  278,
+ };
+-short yysindex[] = {                                      0,
++static short yysindex[] = {                                      0,
+     0,    0, -132,    0,    0,    0,  -51,    0,    0,    0,
+     0,    0,    0,    0,  650,    0,    0,    0, -239, -215,
+     5,    0,    0, -215,    0,    0,    0,  -31,  -31,    0,
+@@ -249,7 +188,7 @@
+   449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
+   216,    0, -123,    0,
+ };
+-short yyrindex[] = {                                      0,
++static short yyrindex[] = {                                      0,
+     0,    0,  247,    0,    0,    0,    0,    0,    0,    0,
+     0,    0,    0,    0,    0,    0,    0,    0,  274,    0,
+     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+@@ -291,7 +230,7 @@
+   917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+     0,    0,  179,    0,
+ };
+-short yygindex[] = {                                      0,
++static short yygindex[] = {                                      0,
+     0,    0,  196,  425,    0,   -2,    0,   37,  634,  -94,
+     0,    0,    0, -323,  -15, 2445,    0,  999,  414,  417,
+     0,    0,    0,  463,  -43,    0,    0,  321, -198,  103,
+@@ -300,7 +239,7 @@
+     0,    0,    0,    0,    0,    0,    0,    0,    0,
+ };
+ #define YYTABLESIZE 4568
+-short yytable[] = {                                      71,
++static short yytable[] = {                                      71,
+   197,   65,  121,  227,   65,  111,  220,   22,  198,  293,
+   139,  296,  315,  275,  305,  102,  273,   88,  113,  228,
+    60,  113,  279,   65,  317,   60,  182,  254,  325,  101,
+@@ -759,7 +698,7 @@
+     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+     0,    0,    0,    0,    0,    0,   77,   77,
+ };
+-short yycheck[] = {                                      15,
++static short yycheck[] = {                                      15,
+    95,   36,   46,   41,   36,   40,   59,   59,  100,  208,
+    54,   41,   59,  199,   41,   40,  196,  257,   41,   93,
+   123,   44,  202,   36,   93,   59,   40,   40,   59,   29,
+@@ -1224,7 +1163,7 @@
+ #endif
+ #define YYMAXTOKEN 317
+ #if YYDEBUG
+-char *yyname[] = {
++static char *yyname[] = {
+ "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ "'!'",0,0,"'$'","'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'",0,0,0,0,0,0,0,
+ 0,0,0,0,0,"':'","';'",0,0,0,"'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+@@ -1241,7 +1180,7 @@
+ "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+ "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
+ };
+-char *yyrule[] = {
++static char *yyrule[] = {
+ "$accept : prog",
+ "$$1 :",
+ "prog : $$1 lineseq",
+@@ -1456,17 +1395,6 @@
+ #define YYMAXDEPTH 500
+ #endif
+ #endif
+-int yydebug;
+-int yynerrs;
+-int yyerrflag;
+-int yychar;
+-short *yyssp;
+-YYSTYPE *yyvsp;
+-YYSTYPE yyval;
+-YYSTYPE yylval;
+-short yyss[YYSTACKSIZE];
+-YYSTYPE yyvs[YYSTACKSIZE];
+-#define yystacksize YYSTACKSIZE
+ #line 789 "perly.y"
+  /* PROGRAM */
+@@ -1477,7 +1405,7 @@
+ #endif
+ #define yyparse() Perl_yyparse(pTHX)
+-#line 1481 "y.tab.c"
++#line 1481 "perly.c"
+ #define YYABORT goto yyabort
+ #define YYACCEPT goto yyaccept
+ #define YYERROR goto yyerrlab
+@@ -1485,10 +1413,30 @@
+ yyparse()
+ {
+     register int yym, yyn, yystate;
++    register short *yyssp;
++    register YYSTYPE *yyvsp;
++    short* yyss;
++    YYSTYPE* yyvs;
++    unsigned yystacksize = YYSTACKSIZE;
++    int retval = 0;
+ #if YYDEBUG
+     register char *yys;
+-    extern char *getenv();
++#endif
++    struct ysv *ysave;
++#ifdef USE_ITHREADS
++    ENTER;                    /* force yydestruct() before we return */
++#endif
++    New(73, ysave, 1, struct ysv);
++    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;
+@@ -1501,6 +1449,16 @@
+     yyerrflag = 0;
+     yychar = (-1);
++    /*
++    ** Initialize private stacks (yyparse may be called from an action)
++    */
++    New(73, yyss, yystacksize, short);
++    New(73, yyvs, yystacksize, YYSTYPE);
++    ysave->yyss = yyss;
++    ysave->yyvs = yyvs;
++    if (!yyvs || !yyss)
++      goto yyoverflow;
++
+     yyssp = yyss;
+     yyvsp = yyvs;
+     *yyssp = yystate = 0;
+@@ -1516,7 +1474,7 @@
+             yys = 0;
+             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+             if (!yys) yys = "illegal-symbol";
+-            printf("yydebug: state %d, reading %d (%s)\n", yystate,
++            PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
+                     yychar, yys);
+         }
+ #endif
+@@ -1526,12 +1484,24 @@
+     {
+ #if YYDEBUG
+         if (yydebug)
+-            printf("yydebug: state %d, shifting to state %d\n",
++            PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
+                     yystate, yytable[yyn]);
+ #endif
+         if (yyssp >= yyss + yystacksize - 1)
+         {
+-            goto yyoverflow;
++          /*
++          ** reallocate and recover.  Note that pointers
++          ** have to be reset, or bad things will happen
++          */
++          int yyps_index = (yyssp - yyss);
++          int yypv_index = (yyvsp - yyvs);
++          yystacksize += YYSTACKSIZE;
++          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;
+@@ -1549,12 +1519,12 @@
+ #ifdef lint
+     goto yynewerror;
+ #endif
+-yynewerror:
++
+     yyerror("syntax error");
+ #ifdef lint
+     goto yyerrlab;
+ #endif
+-yyerrlab:
++
+     ++yynerrs;
+ yyinrecovery:
+     if (yyerrflag < 3)
+@@ -1567,12 +1537,24 @@
+             {
+ #if YYDEBUG
+                 if (yydebug)
+-                    printf("yydebug: state %d, error recovery shifting\
++                    PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\
+  to state %d\n", *yyssp, yytable[yyn]);
+ #endif
+                 if (yyssp >= yyss + yystacksize - 1)
+                 {
+-                    goto yyoverflow;
++                  /*
++                  ** reallocate and recover.  Note that pointers
++                  ** have to be reset, or bad things will happen
++                  */
++                  int yyps_index = (yyssp - yyss);
++                  int yypv_index = (yyvsp - yyvs);
++                  yystacksize += YYSTACKSIZE;
++                  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;
+@@ -1582,7 +1564,7 @@
+             {
+ #if YYDEBUG
+                 if (yydebug)
+-                    printf("yydebug: error recovery discarding state %d\n",
++                    PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
+                             *yyssp);
+ #endif
+                 if (yyssp <= yyss) goto yyabort;
+@@ -1600,7 +1582,7 @@
+             yys = 0;
+             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+             if (!yys) yys = "illegal-symbol";
+-            printf("yydebug: state %d, error recovery discards token %d (%s)\n",
++            PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
+                     yystate, yychar, yys);
+         }
+ #endif
+@@ -1610,7 +1592,7 @@
+ yyreduce:
+ #if YYDEBUG
+     if (yydebug)
+-        printf("yydebug: state %d, reducing by rule %d (%s)\n",
++        PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
+                 yystate, yyn, yyrule[yyn]);
+ #endif
+     yym = yylen[yyn];
+@@ -2473,7 +2455,7 @@
+ #line 786 "perly.y"
+ { yyval.opval = yyvsp[0].opval; }
+ break;
+-#line 2477 "y.tab.c"
++#line 2477 "perly.c"
+     }
+     yyssp -= yym;
+     yystate = *yyssp;
+@@ -2483,7 +2465,7 @@
+     {
+ #if YYDEBUG
+         if (yydebug)
+-            printf("yydebug: after reduction, shifting from state 0 to\
++            PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
+  state %d\n", YYFINAL);
+ #endif
+         yystate = YYFINAL;
+@@ -2498,7 +2480,7 @@
+                 yys = 0;
+                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+                 if (!yys) yys = "illegal-symbol";
+-                printf("yydebug: state %d, reading %d (%s)\n",
++                PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n",
+                         YYFINAL, yychar, yys);
+             }
+ #endif
+@@ -2513,20 +2495,54 @@
+         yystate = yydgoto[yym];
+ #if YYDEBUG
+     if (yydebug)
+-        printf("yydebug: after reduction, shifting from state %d \
++        PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \
+ to state %d\n", *yyssp, yystate);
+ #endif
+     if (yyssp >= yyss + yystacksize - 1)
+     {
+-        goto yyoverflow;
++      /*
++      ** reallocate and recover.  Note that pointers
++      ** have to be reset, or bad things will happen
++      */
++      int yyps_index = (yyssp - yyss);
++      int yypv_index = (yyvsp - yyvs);
++      yystacksize += YYSTACKSIZE;
++      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;
+     *++yyvsp = yyval;
+     goto yyloop;
+ yyoverflow:
+-    yyerror("yacc stack overflow");
++    yyerror("Out of memory for yacc stack");
+ yyabort:
+-    return (1);
++    retval = 1;
+ yyaccept:
+-    return (0);
++#ifdef USE_ITHREADS
++    LEAVE;                    /* force yydestruct() before we return */
++#endif
++    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);
+ }
index 921aa8d..9528fa1 100644 (file)
@@ -1,6 +1,6 @@
 /* Postprocessed by vms_yfix.pl 1.11 to add VMS declarations of globals */
 #ifndef lint
-static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
+/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */
 #endif
 #define YYBYACC 1
 #line 16 "perly.y"
@@ -1521,12 +1521,12 @@ yyloop:
 #ifdef lint
     goto yynewerror;
 #endif
-yynewerror:
+
     yyerror("syntax error");
 #ifdef lint
     goto yyerrlab;
 #endif
-yyerrlab:
+
     ++yynerrs;
 yyinrecovery:
     if (yyerrflag < 3)