From: Jarkko Hietaniemi Date: Sun, 10 Jun 2001 17:38:28 +0000 (+0000) Subject: Update perly_c.diff, update perly.fixer to edit away X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7b57b0ead8ab6b3f08be8b4ded2364d260db25a1;p=p5sagit%2Fp5-mst-13.2.git Update perly_c.diff, update perly.fixer to edit away some of the -Wall noise. p4raw-id: //depot/perl@10503 --- diff --git a/perly.c b/perly.c index 2ac6ce9..2b2a3f0 100644 --- 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) diff --git a/perly.fixer b/perly.fixer index 00f583c..16ea925 100755 --- a/perly.fixer +++ b/perly.fixer @@ -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" diff --git a/perly_c.diff b/perly_c.diff index 2099060..c15e95b 100644 --- a/perly_c.diff +++ b/perly_c.diff @@ -1,189 +1,433 @@ -*** 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); + } diff --git a/vms/perly_c.vms b/vms/perly_c.vms index 921aa8d..9528fa1 100644 --- a/vms/perly_c.vms +++ b/vms/perly_c.vms @@ -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)