-*** perly.c.orig Mon Jul 26 03:27:57 1999
---- perly.c Mon Jul 26 02:47:03 1999
-***************
-*** 8,91 ****
- #include "perl.h"
-
- #define dep() deprecate("\"do\" to call subroutines")
-
-! #line 27 "perly.y"
-! /* I sense a Big Blue pattern here... */
-! #if !defined(OEMVS) && !defined(__OPEN_VM) && !defined(POSIX_BC)
-! #line 31 "perly.y"
-! typedef union {
-! I32 ival;
-! char *pval;
-! OP *opval;
-! GV *gvval;
-! } YYSTYPE;
-! #line 39 "perly.y"
-! #endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
-
-! #ifdef USE_PURE_BISON
-! #define YYLEX_PARAM (&yychar)
-! #endif
-! #line 29 "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 PREC_LOW 297
-! #define OROP 298
-! #define ANDOP 299
-! #define NOTOP 300
-! #define ASSIGNOP 301
-! #define OROR 302
-! #define ANDAND 303
-! #define BITOROP 304
-! #define BITANDOP 305
-! #define SHIFTOP 306
-! #define MATCHOP 307
-! #define UMINUS 308
-! #define REFGEN 309
-! #define POWOP 310
-! #define PREINC 311
-! #define PREDEC 312
-! #define POSTINC 313
-! #define POSTDEC 314
-! #define ARROW 315
- #define YYERRCODE 256
-! short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
---- 8,25 ----
- #include "perl.h"
-
-+ #define yydebug PL_yydebug
-+ #define yynerrs PL_yynerrs
-+ #define yyerrflag PL_yyerrflag
-+ #define yychar PL_yychar
-+ #define yyval PL_yyval
-+ #define yylval PL_yylval
-+
- #define dep() deprecate("\"do\" to call subroutines")
-
-! static void yydestruct(pTHXo_ void *ptr);
-
-! #line 27 "perly.y"
- #define YYERRCODE 256
-! static short yylhs[] = { -1,
- 46, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 25, 25, 25, 25, 25, 25, 25,
-***************
-*** 107,111 ****
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
- };
-! short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
---- 41,45 ----
- 24, 19, 20, 21, 22, 23, 36, 36, 36, 36,
- };
-! static short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
-***************
-*** 127,131 ****
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
- };
-! short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
---- 61,65 ----
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
- };
-! static short yydefred[] = { 1,
- 0, 7, 0, 45, 56, 54, 0, 54, 8, 46,
- 9, 11, 0, 47, 48, 49, 0, 0, 0, 63,
-***************
-*** 166,170 ****
- 5, 0, 30, 0, 0, 33, 0, 23,
- };
-! short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
---- 100,104 ----
- 5, 0, 30, 0, 0, 33, 0, 23,
- };
-! static short yydgoto[] = { 1,
- 9, 66, 10, 18, 96, 17, 87, 344, 90, 333,
- 3, 11, 12, 68, 349, 267, 70, 71, 72, 73,
-***************
-*** 174,178 ****
- 260,
- };
-! short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
---- 108,112 ----
- 260,
- };
-! static short yysindex[] = { 0,
- 0, 0, 142, 0, 0, 0, -57, 0, 0, 0,
- 0, 0, 622, 0, 0, 0, -239, -229, -10, 0,
-***************
-*** 213,217 ****
- 0, 228, 0, 92, 92, 0, -204, 0,
- };
-! short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
---- 147,151 ----
- 0, 228, 0, 92, 92, 0, -204, 0,
- };
-! static short yyrindex[] = { 0,
- 0, 0, 225, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 155, 0, 0, 0,
-***************
-*** 252,256 ****
- 0, 0, 0, 0, 0, 0, 168, 0,
- };
-! short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
---- 186,190 ----
- 0, 0, 0, 0, 0, 0, 168, 0,
- };
-! static short yygindex[] = { 0,
- 0, 0, 0, 339, 320, 0, -11, 0, 913, 360,
- -78, 0, 0, 0, -320, -13, 4321, 0, 1367, 0,
-***************
-*** 261,265 ****
- };
- #define YYTABLESIZE 4610
-! short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
---- 195,199 ----
- };
- #define YYTABLESIZE 4610
-! static short yytable[] = { 69,
- 206, 20, 295, 62, 113, 257, 184, 103, 183, 298,
- 172, 62, 125, 104, 252, 350, 104, 81, 209, 169,
-***************
-*** 724,728 ****
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
- };
-! short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
---- 658,662 ----
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 321,
- };
-! static short yycheck[] = { 13,
- 59, 59, 59, 36, 43, 185, 92, 40, 87, 59,
- 91, 36, 51, 41, 59, 336, 44, 257, 41, 40,
-***************
-*** 1193,1197 ****
- #define YYMAXTOKEN 315
- #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,
---- 1127,1131 ----
- #define YYMAXTOKEN 315
- #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,
-***************
-*** 1210,1214 ****
- "POSTINC","POSTDEC","ARROW",
- };
-! char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
---- 1144,1148 ----
- "POSTINC","POSTDEC","ARROW",
- };
-! static char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
-***************
-*** 1408,1436 ****
- #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 666 "perly.y"
- /* PROGRAM */
-! #line 1424 "y.tab.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
- int
-! yyparse()
- {
- register int yym, yyn, yystate;
- #if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
---- 1342,1391 ----
- #endif
- #endif
- #line 666 "perly.y"
- /* PROGRAM */
-! #line 1427 "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;
-+ };
-+
- int
-! Perl_yyparse(pTHX)
- {
- 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;
-+ #ifndef __cplusplus
- extern char *getenv();
-+ #endif
-+ #endif
-+
-+ struct ysv *ysave;
-+ New(73, ysave, 1, 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"))
- {
-***************
-*** 1445,1448 ****
---- 1400,1413 ----
- 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;
-***************
-*** 1470,1479 ****
- #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];
---- 1435,1458 ----
- #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 = yyvs =
-! (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss =
-! (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
-! if (!yyvs || !yyss)
-! goto yyoverflow;
-! yyssp = yyss + yyps_index;
-! yyvsp = yyvs + yypv_index;
- }
- *++yyssp = yystate = yytable[yyn];
-***************
-*** 1511,1520 ****
- #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];
---- 1490,1514 ----
- #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 = yyvs = (YYSTYPE*)PerlMem_realloc((char*)yyvs,
-! yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss = (short*)PerlMem_realloc((char*)yyss,
-! yystacksize * sizeof(short));
-! if (!yyvs || !yyss)
-! goto yyoverflow;
-! yyssp = yyss + yyps_index;
-! yyvsp = yyvs + yypv_index;
- }
- *++yyssp = yystate = yytable[yyn];
-***************
-*** 1526,1531 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
---- 1520,1526 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
-***************
-*** 1544,1549 ****
- 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
---- 1539,1545 ----
- 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
-***************
-*** 1554,1558 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
---- 1550,1554 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
-***************
-*** 2358,2362 ****
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2361 "y.tab.c"
- }
- yyssp -= yym;
---- 2354,2358 ----
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2365 "perly.c"
- }
- yyssp -= yym;
-***************
-*** 2368,2373 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: after reduction, shifting from state 0 to\
-! state %d\n", YYFINAL);
- #endif
- yystate = YYFINAL;
---- 2364,2370 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: after reduction, shifting from state 0 to state %d\n",
-! YYFINAL);
- #endif
- yystate = YYFINAL;
-***************
-*** 2383,2387 ****
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-! printf("yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
---- 2380,2384 ----
- 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);
- }
-***************
-*** 2398,2407 ****
- #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;
---- 2395,2419 ----
- #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 = yyvs =
-! (YYSTYPE*)PerlMem_realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE));
-! ysave->yyss = yyss =
-! (short*)PerlMem_realloc((char*)yyss,yystacksize * sizeof(short));
-! if (!yyvs || !yyss)
-! goto yyoverflow;
-! yyssp = yyss + yyps_index;
-! yyvsp = yyvs + yypv_index;
- }
- *++yyssp = yystate;
-***************
-*** 2409,2416 ****
- goto yyloop;
- yyoverflow:
-! yyerror("yacc stack overflow");
- yyabort:
-! return (1);
- yyaccept:
-! return (0);
- }
---- 2421,2448 ----
- goto yyloop;
- yyoverflow:
-! yyerror("Out of memory for yacc stack");
- yyabort:
-! retval = 1;
- yyaccept:
-! return retval;
-! }
-!
-! #ifdef PERL_OBJECT
-! #define NO_XSLOCKS
-! #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);
- }
+--- y.tab.c Mon Sep 30 04:20:57 2002
++++ perly.c Mon Sep 30 04:18:04 2002
+@@ -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"
+@@ -9,7 +9,7 @@
+ #ifdef EBCDIC
+ #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 */
+
+@@ -50,72 +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 DOROP 301
+-#define ANDOP 302
+-#define NOTOP 303
+-#define ASSIGNOP 304
+-#define OROR 305
+-#define DORDOR 306
+-#define ANDAND 307
+-#define BITOROP 308
+-#define BITANDOP 309
+-#define SHIFTOP 310
+-#define MATCHOP 311
+-#define UMINUS 312
+-#define REFGEN 313
+-#define POWOP 314
+-#define PREINC 315
+-#define PREDEC 316
+-#define POSTINC 317
+-#define POSTDEC 318
+-#define ARROW 319
++#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,
+@@ -137,7 +74,7 @@
+ 49, 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,
+@@ -159,7 +96,7 @@
+ 1, 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, 0, 14, 3, 174, 0, 0, 155, 0,
+@@ -201,7 +138,7 @@
+ 32, 0, 0, 0, 22, 0, 0, 0, 31, 5,
+ 0, 30, 0, 0, 33, 0, 23,
+ };
+-short yydgoto[] = { 1,
++static short yydgoto[] = { 1,
+ 10, 11, 20, 103, 19, 2, 94, 373, 97, 362,
+ 3, 12, 13, 69, 378, 288, 71, 72, 73, 74,
+ 75, 76, 77, 78, 294, 80, 295, 284, 286, 289,
+@@ -209,7 +146,7 @@
+ 195, 330, 155, 292, 274, 226, 14, 82, 136, 83,
+ 84, 85, 86, 15, 16, 17, 18, 92, 281,
+ };
+-short yysindex[] = { 0,
++static short yysindex[] = { 0,
+ 0, 0, -236, 0, 0, 0, -231, 0, 0, 0,
+ 0, 0, 0, 0, 819, 0, 0, 0, -211, -209,
+ 3, 0, -209, 0, 0, 0, -32, -32, 0, 23,
+@@ -251,7 +188,7 @@
+ 0, 1859, -173, 350, 0, 2213, -173, 360, 0, 0,
+ 361, 0, 221, 221, 0, -240, 0,
+ };
+-short yyrindex[] = { 0,
++static short yyrindex[] = { 0,
+ 0, 0, 371, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 289, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+@@ -293,7 +230,7 @@
+ 0, 435, 90, 880, 0, 0, 90, 0, 0, 0,
+ 0, 0, 0, 0, 0, 186, 0,
+ };
+-short yygindex[] = { 0,
++static short yygindex[] = { 0,
+ 0, 0, 50, 453, 0, 0, -22, 0, 63, 153,
+ -93, 0, 0, 0, -346, -15, 2480, 0, 1744, 437,
+ 439, 0, 0, 0, 481, 755, 0, 0, 341, -186,
+@@ -302,7 +239,7 @@
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+ #define YYTABLESIZE 5051
+-short yytable[] = { 70,
++static short yytable[] = { 70,
+ 198, 300, 75, 64, 60, 280, 228, 60, 279, 64,
+ 199, 328, 183, 257, 219, 62, 278, 64, 379, 186,
+ 75, 110, 296, 188, 15, 21, 197, 170, 64, 4,
+@@ -810,7 +747,7 @@
+ 0, 0, 0, 0, 114, 114, 114, 0, 114, 114,
+ 114,
+ };
+-short yycheck[] = { 15,
++static short yycheck[] = { 15,
+ 94, 44, 41, 36, 59, 41, 41, 123, 44, 36,
+ 99, 59, 40, 40, 40, 59, 200, 36, 365, 91,
+ 59, 40, 209, 91, 41, 257, 93, 63, 59, 266,
+@@ -1324,7 +1261,7 @@
+ #endif
+ #define YYMAXTOKEN 319
+ #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,
+@@ -1341,7 +1278,7 @@
+ "DORDOR","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 '}'",
+@@ -1557,17 +1494,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 795 "perly.y"
+ /* PROGRAM */
+
+@@ -1578,7 +1504,7 @@
+ #endif
+ #define yyparse() Perl_yyparse(pTHX)
+
+-#line 1582 "y.tab.c"
++#line 1582 "perly.c"
+ #define YYABORT goto yyabort
+ #define YYACCEPT goto yyaccept
+ #define YYERROR goto yyerrlab
+@@ -1586,11 +1512,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')
+@@ -1602,12 +1548,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;
+@@ -1617,7 +1573,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
+@@ -1627,12 +1583,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;
+@@ -1648,14 +1616,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)
+@@ -1668,12 +1636,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;
+@@ -1683,7 +1663,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;
+@@ -1701,7 +1681,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
+@@ -1711,7 +1691,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];
+@@ -2578,7 +2558,7 @@
+ #line 792 "perly.y"
+ { yyval.opval = yyvsp[0].opval; }
+ break;
+-#line 2582 "y.tab.c"
++#line 2582 "perly.c"
+ }
+ yyssp -= yym;
+ yystate = *yyssp;
+@@ -2588,7 +2568,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;
+@@ -2603,7 +2583,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
+@@ -2618,20 +2598,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);
+ }