-*** perly.c.orig Sun Feb 7 04:48:56 1999
---- perly.c Sun Feb 7 05:30:49 1999
+*** y.tab.c.orig Thu Aug 26 22:31:26 1999
+--- y.tab.c Thu Aug 26 22:32:22 1999
***************
-*** 7,10 ****
---- 7,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
-+
-+ #ifdef PERL_OBJECT
-+ static void
-+ Dep(CPerlObj *pPerl)
-+ {
-+ pPerl->deprecate("\"do\" to call subroutines");
-+ }
-+ #define dep() Dep(this)
-+ #else
- static void
- dep(void)
-***************
-*** 12,93 ****
- deprecate("\"do\" to call subroutines");
- }
-
- #line 30 "perly.y"
-- /* I sense a Big Blue pattern here... */
-- #if !defined(OEMVS) && !defined(__OPEN_VM) && !defined(POSIX_BC)
-- #line 34 "perly.y"
-- typedef union {
-- I32 ival;
-- char *pval;
-- OP *opval;
-- GV *gvval;
-- } YYSTYPE;
-- #line 42 "perly.y"
-- #endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
--
-- #ifdef USE_PURE_BISON
-- #define YYLEX_PARAM (&yychar)
-- #endif
-- #line 32 "y.tab.c"
-- #define WORD 257
-- #define METHOD 258
-- #define FUNCMETH 259
-- #define THING 260
-- #define PMFUNC 261
-- #define PRIVATEREF 262
-- #define FUNC0SUB 263
-- #define UNIOPSUB 264
-- #define LSTOPSUB 265
-- #define LABEL 266
-- #define FORMAT 267
-- #define SUB 268
-- #define ANONSUB 269
-- #define PACKAGE 270
-- #define USE 271
-- #define WHILE 272
-- #define UNTIL 273
-- #define IF 274
-- #define UNLESS 275
-- #define ELSE 276
-- #define ELSIF 277
-- #define CONTINUE 278
-- #define FOR 279
-- #define LOOPEX 280
-- #define DOTDOT 281
-- #define FUNC0 282
-- #define FUNC1 283
-- #define FUNC 284
-- #define UNIOP 285
-- #define LSTOP 286
-- #define RELOP 287
-- #define EQOP 288
-- #define MULOP 289
-- #define ADDOP 290
-- #define DOLSHARP 291
-- #define DO 292
-- #define HASHBRACK 293
-- #define NOAMP 294
-- #define LOCAL 295
-- #define MY 296
-- #define OROP 297
-- #define ANDOP 298
-- #define NOTOP 299
-- #define ASSIGNOP 300
-- #define OROR 301
-- #define ANDAND 302
-- #define BITOROP 303
-- #define BITANDOP 304
-- #define SHIFTOP 305
-- #define MATCHOP 306
-- #define UMINUS 307
-- #define REFGEN 308
-- #define POWOP 309
-- #define PREINC 310
-- #define PREDEC 311
-- #define POSTINC 312
-- #define POSTDEC 313
-- #define ARROW 314
- #define YYERRCODE 256
-! short yylhs[] = { -1,
- 45, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 24, 24, 24, 24, 24, 24, 24,
---- 27,35 ----
- deprecate("\"do\" to call subroutines");
- }
-+ #endif
-
- #line 30 "perly.y"
- #define YYERRCODE 256
-! static short yylhs[] = { -1,
- 45, 0, 9, 7, 10, 8, 11, 11, 11, 12,
- 12, 12, 12, 24, 24, 24, 24, 24, 24, 24,
-***************
-*** 109,113 ****
- 20, 21, 22, 35, 35, 35, 35,
- };
-! short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
---- 51,55 ----
- 20, 21, 22, 35, 35, 35, 35,
- };
-! static short yylen[] = { 2,
- 0, 2, 4, 0, 4, 0, 0, 2, 2, 2,
- 1, 2, 3, 1, 1, 3, 3, 3, 3, 3,
-***************
-*** 129,133 ****
- 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,
---- 71,75 ----
- 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,
-***************
-*** 168,172 ****
- 33, 0, 23,
- };
-! short yydgoto[] = { 1,
- 9, 66, 10, 18, 95, 17, 86, 339, 89, 328,
- 3, 11, 12, 68, 344, 263, 70, 71, 72, 73,
---- 110,114 ----
- 33, 0, 23,
- };
-! static short yydgoto[] = { 1,
- 9, 66, 10, 18, 95, 17, 86, 339, 89, 328,
- 3, 11, 12, 68, 344, 263, 70, 71, 72, 73,
-***************
-*** 175,179 ****
- 250, 142, 267, 13, 2, 14, 15, 16, 85, 256,
- };
-! short yysindex[] = { 0,
- 0, 0, -66, 0, 0, 0, -48, 0, 0, 0,
- 0, 0, 645, 0, 0, 0, -232, -227, -27, 0,
---- 117,121 ----
- 250, 142, 267, 13, 2, 14, 15, 16, 85, 256,
- };
-! short short yysindex[] = { 0,
- 0, 0, -66, 0, 0, 0, -48, 0, 0, 0,
- 0, 0, 645, 0, 0, 0, -232, -227, -27, 0,
-***************
-*** 214,218 ****
- 0, -238, 0,
- };
-! short yyrindex[] = { 0,
- 0, 0, 249, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
---- 156,160 ----
- 0, -238, 0,
- };
-! static short yyrindex[] = { 0,
- 0, 0, 249, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
-***************
-*** 253,257 ****
- 0, 154, 0,
- };
-! short yygindex[] = { 0,
- 0, 0, 0, 374, 351, 0, -12, 0, 946, 413,
- -83, 0, 0, 0, -311, -13, 4139, 4198, 0, 0,
---- 195,199 ----
- 0, 154, 0,
- };
-! static short yygindex[] = { 0,
- 0, 0, 0, 374, 351, 0, -12, 0, 946, 413,
- -83, 0, 0, 0, -311, -13, 4139, 4198, 0, 0,
-***************
-*** 261,265 ****
- };
- #define YYTABLESIZE 4425
-! short yytable[] = { 69,
- 207, 62, 181, 105, 168, 102, 105, 204, 168, 248,
- 20, 208, 62, 253, 58, 285, 274, 170, 298, 345,
---- 203,207 ----
- };
- #define YYTABLESIZE 4425
-! static short yytable[] = { 69,
- 207, 62, 181, 105, 168, 102, 105, 204, 168, 248,
- 20, 208, 62, 253, 58, 285, 274, 170, 298, 345,
-***************
-*** 706,710 ****
- 0, 0, 0, 0, 317,
- };
-! short yycheck[] = { 13,
- 41, 36, 86, 41, 91, 40, 44, 59, 91, 59,
- 59, 93, 36, 183, 59, 59, 41, 91, 41, 331,
---- 648,652 ----
- 0, 0, 0, 0, 317,
- };
-! static short yycheck[] = { 13,
- 41, 36, 86, 41, 91, 40, 44, 59, 91, 59,
- 59, 93, 36, 183, 59, 59, 41, 91, 41, 331,
-***************
-*** 1157,1161 ****
- #define YYMAXTOKEN 314
- #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,
---- 1099,1103 ----
- #define YYMAXTOKEN 314
- #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,
-***************
-*** 1174,1178 ****
- "POSTDEC","ARROW",
- };
-! char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
---- 1116,1120 ----
- "POSTDEC","ARROW",
- };
-! static char *yyrule[] = {
- "$accept : prog",
- "$$1 :",
-***************
-*** 1369,1397 ****
- #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 652 "perly.y"
- /* PROGRAM */
-! #line 1385 "y.tab.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
- int
-! yyparse()
+*** 1448,1457 ****
+ yyparse()
{
register int yym, yyn, yystate;
#if YYDEBUG
register char *yys;
- extern char *getenv();
+! extern char *getenv();
if (yys = getenv("YYDEBUG"))
{
---- 1311,1375 ----
- #endif
- #endif
- #line 652 "perly.y"
- /* PROGRAM */
-! #line 1318 "perly.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
-+
-+ struct ysv {
-+ short* yyss;
-+ YYSTYPE* yyvs;
-+ int oldyydebug;
-+ int oldyynerrs;
-+ int oldyyerrflag;
-+ int oldyychar;
-+ YYSTYPE oldyyval;
-+ YYSTYPE oldyylval;
-+ };
-+
-+ void
-+ yydestruct(void *ptr)
-+ {
-+ struct ysv* ysave = (struct ysv*)ptr;
-+ if (ysave->yyss) Safefree(ysave->yyss);
-+ if (ysave->yyvs) Safefree(ysave->yyvs);
-+ yydebug = ysave->oldyydebug;
-+ yynerrs = ysave->oldyynerrs;
-+ yyerrflag = ysave->oldyyerrflag;
-+ yychar = ysave->oldyychar;
-+ yyval = ysave->oldyyval;
-+ yylval = ysave->oldyylval;
-+ Safefree(ysave);
-+ }
-+
- int
-! yyparse(void)
+ yyn = *yys;
+--- 1448,1477 ----
+ yyparse()
{
register int yym, yyn, yystate;
+ register short *yyssp;
+ int retval = 0;
#if YYDEBUG
register char *yys;
-+ #ifndef __cplusplus
- extern char *getenv();
-+ #endif
-+ #endif
-+
+! #endif
+
+ struct ysv *ysave;
++ #ifdef USE_ITHREADS
++ ENTER; /* force yydestruct() before we return */
++ #endif
+ New(73, ysave, 1, struct ysv);
-+ SAVEDESTRUCTOR(yydestruct, ysave);
++ SAVEDESTRUCTOR_X(yydestruct, ysave);
+ ysave->oldyydebug = yydebug;
+ ysave->oldyynerrs = yynerrs;
+ ysave->oldyyerrflag = yyerrflag;
+ ysave->oldyychar = yychar;
+ ysave->oldyyval = yyval;
+ ysave->oldyylval = yylval;
-
++
+ #if YYDEBUG
if (yys = getenv("YYDEBUG"))
{
+ yyn = *yys;
***************
-*** 1406,1409 ****
---- 1384,1397 ----
+*** 1464,1469 ****
+--- 1484,1499 ----
+ yyerrflag = 0;
yychar = (-1);
+ /*
+
yyssp = yyss;
yyvsp = yyvs;
+ *yyssp = yystate = 0;
***************
-*** 1431,1440 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, shifting to state %d\n",
- yystate, yytable[yyn]);
+*** 1494,1500 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1419,1442 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n",
- yystate, yytable[yyn]);
+ *++yyvsp = yylval;
+--- 1524,1542 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! 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));
+! 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;
***************
-*** 1472,1481 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, error recovery shifting\
-! to state %d\n", *yyssp, yytable[yyn]);
+*** 1535,1541 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
---- 1474,1498 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: state %d, error recovery shifting to state %d\n",
-! *yyssp, yytable[yyn]);
+ *++yyvsp = yylval;
+--- 1577,1595 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! 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));
+! 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;
***************
-*** 1487,1492 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
---- 1504,1510 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: error recovery discarding state %d\n",
-! *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
-***************
-*** 1505,1510 ****
- 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
---- 1523,1529 ----
- 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
-***************
-*** 1515,1519 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
---- 1534,1538 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n",
- yystate, yyn, yyrule[yyn]);
- #endif
-***************
-*** 2305,2309 ****
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2308 "y.tab.c"
- }
- yyssp -= yym;
---- 2324,2328 ----
- { yyval.opval = yyvsp[0].opval; }
- break;
-! #line 2329 "perly.c"
- }
- yyssp -= yym;
-***************
-*** 2315,2320 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: after reduction, shifting from state 0 to\
-! state %d\n", YYFINAL);
- #endif
- yystate = YYFINAL;
---- 2334,2340 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: after reduction, shifting from state 0 to state %d\n",
-! YYFINAL);
- #endif
- yystate = YYFINAL;
-***************
-*** 2330,2334 ****
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-! printf("yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
---- 2350,2354 ----
- 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);
- }
-***************
-*** 2345,2354 ****
- #if YYDEBUG
- if (yydebug)
-! printf("yydebug: after reduction, shifting from state %d \
-! to state %d\n", *yyssp, yystate);
+*** 2481,2495 ****
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! goto yyoverflow;
}
*++yyssp = yystate;
---- 2365,2389 ----
- #if YYDEBUG
- if (yydebug)
-! PerlIO_printf(Perl_debug_log,
-! "yydebug: after reduction, shifting from state %d to state %d\n",
-! *yyssp, yystate);
+ *++yyvsp = yyval;
+ goto yyloop;
+ yyoverflow:
+! yyerror("yacc stack overflow");
+ yyabort:
+! return (1);
+ yyaccept:
+! return (0);
+ }
+--- 2535,2583 ----
#endif
if (yyssp >= yyss + yystacksize - 1)
{
! 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));
+! 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;
-***************
-*** 2356,2363 ****
- goto yyloop;
- yyoverflow:
-! yyerror("yacc stack overflow");
- yyabort:
-! return (1);
- yyaccept:
-! return (0);
- }
---- 2391,2398 ----
+ *++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);
}