Re: what is YYDEBUG and why does it reset errno?
Rafael Garcia-Suarez [Mon, 25 Mar 2002 11:33:17 +0000 (12:33 +0100)]
Message-ID: <20020325113317.A1410@rafael>

Apparently VMS does not do YYDEBUG.

p4raw-id: //depot/perl@15486

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

diff --git a/perly.c b/perly.c
index 9fd86d3..0c5b80a 100644 (file)
--- a/perly.c
+++ b/perly.c
@@ -6,7 +6,7 @@
 #include "EXTERN.h"
 #define PERL_IN_PERLY_C
 #include "perl.h"
-#ifdef EBCDIC
+#if defined(EBCDIC) || defined(VMS)
 #undef YYDEBUG
 #endif
 #define dep() deprecate_old("\"do\" to call subroutines")
index 1c07724..31e0171 100755 (executable)
@@ -19,7 +19,7 @@
 #  
 
 gnupatch=patch
-. config.sh
+. ./config.sh
 
 input=$1
 output=$2
@@ -52,6 +52,7 @@ if grep 'yaccpar 1.8 (Berkeley)' $input >/dev/null 2>&1; then
            -e 's/^yynewerror:$//' \
            -e 's/^    goto yynewerror;//' \
            -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
+           -e 's|deprecate(|deprecate_old(|' \
            < $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"
@@ -72,6 +73,7 @@ elif grep 'yaccpar    1.9 (Berkeley)' $input >/dev/null 2>&1; then
            -e 's/^yynewerror:$//' \
            -e 's/^    goto yynewerror;//' \
            -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
+           -e 's|deprecate(|deprecate_old(|' \
            < $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"
diff --git a/perly.y b/perly.y
index 48049eb..6b7df9b 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -16,7 +16,7 @@
 #include "EXTERN.h"
 #define PERL_IN_PERLY_C
 #include "perl.h"
-#ifdef EBCDIC
+#if defined(EBCDIC) || defined(VMS)
 #undef YYDEBUG
 #endif
 #define dep() deprecate("\"do\" to call subroutines")
index aab3a86..5fac710 100644 (file)
---- perly.c.orig       Tue Jun 19 08:39:52 2001
-+++ perly.c    Tue Jun 19 08:39:24 2001
-@@ -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"
-@@ -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,
-     0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
-    12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
-    15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
-@@ -135,7 +74,7 @@
-    49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
-    21,   22,   23,   36,   36,   36,   36,
- };
--short yylen[] = {                                         2,
-+static short yylen[] = {                                         2,
-     2,    4,    0,    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[] = {                                      4,
-+static short yydefred[] = {                                      4,
-     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,    3,  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,    2,   95,  370,   98,  359,
-     3,   12,   13,   70,  375,  285,   72,   73,   74,   75,
-    76,   77,   78,   79,  291,   81,  292,  281,  283,  286,
-@@ -207,7 +146,7 @@
-   194,  327,  156,  289,  271,  225,   14,   83,  137,   84,
-    85,   86,   87,   15,   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,    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,
-@@ -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",
- "prog : progstart lineseq",
- "block : '{' remember 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 793 "perly.y"
-  /* PROGRAM */
-@@ -1477,7 +1405,7 @@
- #endif
- #define yyparse() Perl_yyparse(pTHX)
--#line 1481 "y.tab.c"
-+#line 1409 "perly.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
-@@ -1485,11 +1413,31 @@
- 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 (yys = getenv("YYDEBUG"))
-+#if YYDEBUG
-+    if ((yys = getenv("YYDEBUG")))
-     {
-         yyn = *yys;
-         if (yyn >= '0' && yyn <= '9')
-@@ -1501,12 +1449,22 @@
-     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;
- yyloop:
--    if (yyn = yydefred[yystate]) goto yyreduce;
-+    if ((yyn = yydefred[yystate])) goto yyreduce;
-     if (yychar < 0)
-     {
-         if ((yychar = yylex()) < 0) yychar = 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)
-         {
-+          /*
-+          ** 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;
-@@ -1547,14 +1517,14 @@
-     }
-     if (yyerrflag) goto yyinrecovery;
- #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)
-                 {
-+                  /*
-+                  ** 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 790 "perly.y"
- { yyval.opval = yyvsp[0].opval; }
- break;
--#line 2477 "y.tab.c"
-+#line 2459 "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,50 @@
-         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)
-     {
-+      /*
-+      ** 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;
-+}
-+
-+static void
-+yydestruct(pTHX_ 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       ma 25 maalis 17.32.52 2002
+--- perly.c    ma 25 maalis 17.32.53 2002
+***************
+*** 1,5 ****
+  #ifndef lint
+! static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
+  #endif
+  #define YYBYACC 1
+  #line 16 "perly.y"
+--- 1,5 ----
+  #ifndef lint
+! /* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */
+  #endif
+  #define YYBYACC 1
+  #line 16 "perly.y"
+***************
+*** 9,15 ****
+  #if defined(EBCDIC) || defined(VMS)
+  #undef YYDEBUG
+  #endif
+! #define dep() deprecate("\"do\" to call subroutines")
+  
+  /* stuff included here to make perly_c.diff apply better */
+  
+--- 9,15 ----
+  #if defined(EBCDIC) || defined(VMS)
+  #undef YYDEBUG
+  #endif
+! #define dep() deprecate_old("\"do\" to call subroutines")
+  
+  /* stuff included here to make perly_c.diff apply better */
+  
+***************
+*** 50,119 ****
+  #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
+  #define YYERRCODE 256
+! short yylhs[] = {                                        -1,
+      0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
+     12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
+     15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
+--- 50,58 ----
+  #define yylex yylex_r
+  #endif
+  
+! #line 54 "perly.c"
+  #define YYERRCODE 256
+! static short yylhs[] = {                                        -1,
+      0,    9,    7,    6,   10,    8,   11,   11,   11,   12,
+     12,   12,   12,   25,   25,   25,   25,   25,   25,   25,
+     15,   15,   15,   14,   14,   43,   43,   13,   13,   13,
+***************
+*** 135,141 ****
+     49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
+     21,   22,   23,   36,   36,   36,   36,
+  };
+! short yylen[] = {                                         2,
+      2,    4,    0,    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,
+--- 74,80 ----
+     49,   34,   34,   35,   35,   35,   44,   24,   19,   20,
+     21,   22,   23,   36,   36,   36,   36,
+  };
+! static short yylen[] = {                                         2,
+      2,    4,    0,    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,163 ****
+      1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
+      2,    2,    2,    1,    1,    1,    1,
+  };
+! short yydefred[] = {                                      4,
+      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,    3,  173,    0,    0,  154,
+--- 96,102 ----
+      1,    0,    1,    0,    1,    2,    1,    2,    2,    2,
+      2,    2,    2,    1,    1,    1,    1,
+  };
+! static short yydefred[] = {                                      4,
+      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,    3,  173,    0,    0,  154,
+***************
+*** 199,205 ****
+      0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
+      0,   33,    0,   23,
+  };
+! short yydgoto[] = {                                       1,
+     10,   11,   20,  104,   19,    2,   95,  370,   98,  359,
+      3,   12,   13,   70,  375,  285,   72,   73,   74,   75,
+     76,   77,   78,   79,  291,   81,  292,  281,  283,  286,
+--- 138,144 ----
+      0,   22,    0,    0,    0,   31,    5,    0,   30,    0,
+      0,   33,    0,   23,
+  };
+! static short yydgoto[] = {                                       1,
+     10,   11,   20,  104,   19,    2,   95,  370,   98,  359,
+      3,   12,   13,   70,  375,  285,   72,   73,   74,   75,
+     76,   77,   78,   79,  291,   81,  292,  281,  283,  286,
+***************
+*** 207,213 ****
+    194,  327,  156,  289,  271,  225,   14,   83,  137,   84,
+     85,   86,   87,   15,   16,   17,   18,   93,  278,
+  };
+! 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,
+--- 146,152 ----
+    194,  327,  156,  289,  271,  225,   14,   83,  137,   84,
+     85,   86,   87,   15,   16,   17,   18,   93,  278,
+  };
+! 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,255 ****
+    449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
+    216,    0, -123,    0,
+  };
+! 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,
+--- 188,194 ----
+    449,    0, 2181, -150,  340,    0,    0,  355,    0,  216,
+    216,    0, -123,    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,297 ****
+    917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+      0,    0,  179,    0,
+  };
+! short yygindex[] = {                                      0,
+      0,    0,  196,  425,    0,    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,
+--- 230,236 ----
+    917,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+      0,    0,  179,    0,
+  };
+! static short yygindex[] = {                                      0,
+      0,    0,  196,  425,    0,    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,
+***************
+*** 300,306 ****
+      0,    0,    0,    0,    0,    0,    0,    0,    0,
+  };
+  #define YYTABLESIZE 4568
+! 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,
+--- 239,245 ----
+      0,    0,    0,    0,    0,    0,    0,    0,    0,
+  };
+  #define YYTABLESIZE 4568
+! 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,765 ****
+      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      0,    0,    0,    0,    0,    0,   77,   77,
+  };
+! 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,
+--- 698,704 ----
+      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      0,    0,    0,    0,    0,    0,   77,   77,
+  };
+! 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,1230 ****
+  #endif
+  #define YYMAXTOKEN 317
+  #if YYDEBUG
+! 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,
+--- 1163,1169 ----
+  #endif
+  #define YYMAXTOKEN 317
+  #if YYDEBUG
+! 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,1247 ****
+  "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+  "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
+  };
+! char *yyrule[] = {
+  "$accept : prog",
+  "prog : progstart lineseq",
+  "block : '{' remember lineseq '}'",
+--- 1180,1186 ----
+  "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
+  "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
+  };
+! static char *yyrule[] = {
+  "$accept : prog",
+  "prog : progstart lineseq",
+  "block : '{' remember lineseq '}'",
+***************
+*** 1456,1472 ****
+  #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 793 "perly.y"
+   /* PROGRAM */
+  
+--- 1395,1400 ----
+***************
+*** 1477,1483 ****
+  #endif
+  #define yyparse() Perl_yyparse(pTHX)
+  
+! #line 1481 "y.tab.c"
+  #define YYABORT goto yyabort
+  #define YYACCEPT goto yyaccept
+  #define YYERROR goto yyerrlab
+--- 1405,1411 ----
+  #endif
+  #define yyparse() Perl_yyparse(pTHX)
+  
+! #line 1409 "perly.c"
+  #define YYABORT goto yyabort
+  #define YYACCEPT goto yyaccept
+  #define YYERROR goto yyerrlab
+***************
+*** 1485,1495 ****
+  yyparse()
+  {
+      register int yym, yyn, yystate;
+  #if YYDEBUG
+      register char *yys;
+!     extern char *getenv();
+  
+!     if (yys = getenv("YYDEBUG"))
+      {
+          yyn = *yys;
+          if (yyn >= '0' && yyn <= '9')
+--- 1413,1443 ----
+  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;
+          if (yyn >= '0' && yyn <= '9')
+***************
+*** 1501,1512 ****
+      yyerrflag = 0;
+      yychar = (-1);
+  
+      yyssp = yyss;
+      yyvsp = yyvs;
+      *yyssp = yystate = 0;
+  
+  yyloop:
+!     if (yyn = yydefred[yystate]) goto yyreduce;
+      if (yychar < 0)
+      {
+          if ((yychar = yylex()) < 0) yychar = 0;
+--- 1449,1470 ----
+      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;
+  
+  yyloop:
+!     if ((yyn = yydefred[yystate])) goto yyreduce;
+      if (yychar < 0)
+      {
+          if ((yychar = yylex()) < 0) yychar = 0;
+***************
+*** 1516,1522 ****
+              yys = 0;
+              if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+              if (!yys) yys = "illegal-symbol";
+!             printf("yydebug: state %d, reading %d (%s)\n", yystate,
+                      yychar, yys);
+          }
+  #endif
+--- 1474,1480 ----
+              yys = 0;
+              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);
+          }
+  #endif
+***************
+*** 1526,1537 ****
+      {
+  #if YYDEBUG
+          if (yydebug)
+!             printf("yydebug: state %d, shifting to state %d\n",
+                      yystate, yytable[yyn]);
+  #endif
+          if (yyssp >= yyss + yystacksize - 1)
+          {
+              goto yyoverflow;
+          }
+          *++yyssp = yystate = yytable[yyn];
+          *++yyvsp = yylval;
+--- 1484,1507 ----
+      {
+  #if YYDEBUG
+          if (yydebug)
+!             PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
+                      yystate, yytable[yyn]);
+  #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;
+***************
+*** 1547,1560 ****
+      }
+      if (yyerrflag) goto yyinrecovery;
+  #ifdef lint
+!     goto yynewerror;
+  #endif
+! yynewerror:
+      yyerror("syntax error");
+  #ifdef lint
+!     goto yyerrlab;
+  #endif
+! yyerrlab:
+      ++yynerrs;
+  yyinrecovery:
+      if (yyerrflag < 3)
+--- 1517,1530 ----
+      }
+      if (yyerrflag) goto yyinrecovery;
+  #ifdef lint
+! 
+  #endif
+! 
+      yyerror("syntax error");
+  #ifdef lint
+! 
+  #endif
+! 
+      ++yynerrs;
+  yyinrecovery:
+      if (yyerrflag < 3)
+***************
+*** 1567,1578 ****
+              {
+  #if YYDEBUG
+                  if (yydebug)
+!                     printf("yydebug: state %d, error recovery shifting\
+   to state %d\n", *yyssp, yytable[yyn]);
+  #endif
+                  if (yyssp >= yyss + yystacksize - 1)
+                  {
+                      goto yyoverflow;
+                  }
+                  *++yyssp = yystate = yytable[yyn];
+                  *++yyvsp = yylval;
+--- 1537,1560 ----
+              {
+  #if YYDEBUG
+                  if (yydebug)
+!                     PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery shifting\
+   to state %d\n", *yyssp, yytable[yyn]);
+  #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;
+***************
+*** 1582,1588 ****
+              {
+  #if YYDEBUG
+                  if (yydebug)
+!                     printf("yydebug: error recovery discarding state %d\n",
+                              *yyssp);
+  #endif
+                  if (yyssp <= yyss) goto yyabort;
+--- 1564,1570 ----
+              {
+  #if YYDEBUG
+                  if (yydebug)
+!                     PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
+                              *yyssp);
+  #endif
+                  if (yyssp <= yyss) goto yyabort;
+***************
+*** 1600,1606 ****
+              yys = 0;
+              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
+--- 1582,1588 ----
+              yys = 0;
+              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
+***************
+*** 1610,1616 ****
+  yyreduce:
+  #if YYDEBUG
+      if (yydebug)
+!         printf("yydebug: state %d, reducing by rule %d (%s)\n",
+                  yystate, yyn, yyrule[yyn]);
+  #endif
+      yym = yylen[yyn];
+--- 1592,1598 ----
+  yyreduce:
+  #if YYDEBUG
+      if (yydebug)
+!         PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
+                  yystate, yyn, yyrule[yyn]);
+  #endif
+      yym = yylen[yyn];
+***************
+*** 2473,2479 ****
+  #line 790 "perly.y"
+  { yyval.opval = yyvsp[0].opval; }
+  break;
+! #line 2477 "y.tab.c"
+      }
+      yyssp -= yym;
+      yystate = *yyssp;
+--- 2455,2461 ----
+  #line 790 "perly.y"
+  { yyval.opval = yyvsp[0].opval; }
+  break;
+! #line 2459 "perly.c"
+      }
+      yyssp -= yym;
+      yystate = *yyssp;
+***************
+*** 2483,2489 ****
+      {
+  #if YYDEBUG
+          if (yydebug)
+!             printf("yydebug: after reduction, shifting from state 0 to\
+   state %d\n", YYFINAL);
+  #endif
+          yystate = YYFINAL;
+--- 2465,2471 ----
+      {
+  #if YYDEBUG
+          if (yydebug)
+!             PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
+   state %d\n", YYFINAL);
+  #endif
+          yystate = YYFINAL;
+***************
+*** 2498,2504 ****
+                  yys = 0;
+                  if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+                  if (!yys) yys = "illegal-symbol";
+!                 printf("yydebug: state %d, reading %d (%s)\n",
+                          YYFINAL, yychar, yys);
+              }
+  #endif
+--- 2480,2486 ----
+                  yys = 0;
+                  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);
+              }
+  #endif
+***************
+*** 2513,2532 ****
+          yystate = yydgoto[yym];
+  #if YYDEBUG
+      if (yydebug)
+!         printf("yydebug: after reduction, shifting from state %d \
+  to state %d\n", *yyssp, yystate);
+  #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);
+  }
+--- 2495,2544 ----
+          yystate = yydgoto[yym];
+  #if YYDEBUG
+      if (yydebug)
+!         PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state %d \
+  to state %d\n", *yyssp, yystate);
+  #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;
+! }
+! 
+! static void
+! yydestruct(pTHX_ 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 463a5ed..634dba9 100644 (file)
@@ -7,10 +7,10 @@
 #include "EXTERN.h"
 #define PERL_IN_PERLY_C
 #include "perl.h"
-#ifdef EBCDIC
+#if defined(EBCDIC) || defined(VMS)
 #undef YYDEBUG
 #endif
-#define dep() deprecate("\"do\" to call subroutines")
+#define dep() deprecate_old("\"do\" to call subroutines")
 
 /* stuff included here to make perly_c.diff apply better */