X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.c.diff;h=55f0a11cca0749ca2c1f94dc8b8b16f753bafa74;hb=97abc6adffcd3efcbaee73cbdad2055b2d06be4f;hp=c8d6f10b50daf03041ae75f5d100adeb1e5a047e;hpb=8990e3071044a96302560bbdb5706f3e74cf1bef;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.c.diff b/perly.c.diff index c8d6f10..55f0a11 100644 --- a/perly.c.diff +++ b/perly.c.diff @@ -1,8 +1,86 @@ -*** perly.c.orig Mon Feb 14 14:24:43 1994 ---- perly.c Mon Feb 14 14:24:44 1994 +Index: perly.c +*** perly.c.orig Sun Mar 1 21:44:24 1998 +--- perly.c Sun Mar 1 21:46:32 1998 *************** -*** 1591,1603 **** - int yynerrs; +*** 13,82 **** + } + +! #line 29 "perly.y" +! typedef union { +! I32 ival; +! char *pval; +! OP *opval; +! GV *gvval; +! } YYSTYPE; +! #line 23 "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, +--- 13,17 ---- + } + +! #line 16 "perly.c" + #define YYERRCODE 256 + short yylhs[] = { -1, +*************** +*** 1337,1347 **** int yyerrflag; int yychar; - short *yyssp; @@ -12,14 +90,55 @@ - short yyss[YYSTACKSIZE]; - YYSTYPE yyvs[YYSTACKSIZE]; - #define yystacksize YYSTACKSIZE - #line 611 "perly.y" + #line 636 "perly.y" /* PROGRAM */ - #line 1604 "y.tab.c" ---- 1591,1598 ---- +--- 1272,1277 ---- *************** -*** 1608,1613 **** ---- 1603,1621 ---- - yyparse() +*** 1350,1361 **** + #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")) + { +--- 1280,1338 ---- + #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) { register int yym, yyn, yystate; + register short *yyssp; @@ -27,54 +146,59 @@ + short* yyss; + YYSTYPE* yyvs; + unsigned yystacksize = YYSTACKSIZE; -+ int oldyydebug = yydebug; -+ int oldyynerrs = yynerrs; -+ int oldyyerrflag = yyerrflag; -+ int oldyychar = yychar; -+ YYSTYPE oldyyval = yyval; -+ YYSTYPE oldyylval = yylval; + 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")) + { *************** -*** 1624,1629 **** ---- 1632,1645 ---- - yyerrflag = 0; +*** 1370,1373 **** +--- 1347,1360 ---- yychar = (-1); + /* + ** Initialize private stacks (yyparse may be called from an action) + */ -+ yyss = (short*)malloc(yystacksize*sizeof(short)); -+ yyvs = (YYSTYPE*)malloc(yystacksize*sizeof(YYSTYPE)); ++ 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; *************** -*** 1639,1645 **** - yys = 0; +*** 1385,1389 **** if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; ! printf("yydebug: state %d, reading %d (%s)\n", yystate, yychar, yys); } - #endif ---- 1655,1661 ---- - yys = 0; +--- 1372,1376 ---- if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; -! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", yystate, +! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, yychar, yys); } - #endif *************** -*** 1649,1660 **** - { +*** 1395,1404 **** #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, shifting to state %d\n", @@ -85,12 +209,10 @@ ! goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; ---- 1665,1688 ---- - { +--- 1382,1405 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, "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) @@ -102,18 +224,18 @@ ! int yyps_index = (yyssp - yyss); ! int yypv_index = (yyvsp - yyvs); ! yystacksize += YYSTACKSIZE; -! yyvs = (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE)); -! yyss = (short*)realloc((char*)yyss,yystacksize * sizeof(short)); +! ysave->yyvs = yyvs = +! (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE)); +! ysave->yyss = yyss = +! (short*)realloc((char*)yyss,yystacksize * sizeof(short)); ! if (!yyvs || !yyss) ! goto yyoverflow; ! yyssp = yyss + yyps_index; ! yyvsp = yyvs + yypv_index; } *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; *************** -*** 1690,1701 **** - { +*** 1436,1445 **** #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, error recovery shifting\ @@ -124,12 +246,10 @@ ! goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; ---- 1718,1744 ---- - { +--- 1437,1461 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, +! PerlIO_printf(Perl_debug_log, ! "yydebug: state %d, error recovery shifting to state %d\n", ! *yyssp, yytable[yyn]); #endif @@ -142,9 +262,9 @@ ! int yyps_index = (yyssp - yyss); ! int yypv_index = (yyvsp - yyvs); ! yystacksize += YYSTACKSIZE; -! yyvs = (YYSTYPE*)realloc((char*)yyvs, +! ysave->yyvs = yyvs = (YYSTYPE*)realloc((char*)yyvs, ! yystacksize * sizeof(YYSTYPE)); -! yyss = (short*)realloc((char*)yyss, +! ysave->yyss = yyss = (short*)realloc((char*)yyss, ! yystacksize * sizeof(short)); ! if (!yyvs || !yyss) ! goto yyoverflow; @@ -152,104 +272,82 @@ ! yyvsp = yyvs + yypv_index; } *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; *************** -*** 1705,1712 **** - { +*** 1451,1456 **** #if YYDEBUG if (yydebug) ! printf("yydebug: error recovery discarding state %d\n", ! *yyssp); #endif if (yyssp <= yyss) goto yyabort; - --yyssp; ---- 1748,1756 ---- - { +--- 1467,1473 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, +! PerlIO_printf(Perl_debug_log, ! "yydebug: error recovery discarding state %d\n", ! *yyssp); #endif if (yyssp <= yyss) goto yyabort; - --yyssp; *************** -*** 1723,1730 **** - yys = 0; +*** 1469,1474 **** 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 - yychar = (-1); ---- 1767,1775 ---- - yys = 0; +--- 1486,1492 ---- if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; -! fprintf(stderr, +! PerlIO_printf(Perl_debug_log, ! "yydebug: state %d, error recovery discards token %d (%s)\n", ! yystate, yychar, yys); } #endif - yychar = (-1); *************** -*** 1733,1739 **** - yyreduce: +*** 1479,1483 **** #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, reducing by rule %d (%s)\n", yystate, yyn, yyrule[yyn]); #endif - yym = yylen[yyn]; ---- 1778,1784 ---- - yyreduce: +--- 1497,1501 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, "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]; *************** -*** 2490,2497 **** - { +*** 2274,2279 **** #if YYDEBUG if (yydebug) ! printf("yydebug: after reduction, shifting from state 0 to\ ! state %d\n", YYFINAL); #endif yystate = YYFINAL; - *++yyssp = YYFINAL; ---- 2535,2543 ---- - { +--- 2292,2298 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, +! PerlIO_printf(Perl_debug_log, ! "yydebug: after reduction, shifting from state 0 to state %d\n", ! YYFINAL); #endif yystate = YYFINAL; - *++yyssp = YYFINAL; *************** -*** 2505,2511 **** - yys = 0; +*** 2289,2293 **** if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; ! printf("yydebug: state %d, reading %d (%s)\n", YYFINAL, yychar, yys); } - #endif ---- 2551,2557 ---- - yys = 0; +--- 2308,2312 ---- if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; -! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", +! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", YYFINAL, yychar, yys); } - #endif *************** -*** 2520,2539 **** - yystate = yydgoto[yym]; +*** 2304,2313 **** #if YYDEBUG if (yydebug) ! printf("yydebug: after reduction, shifting from state %d \ @@ -260,20 +358,10 @@ ! goto yyoverflow; } *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; - yyoverflow: -! yyerror("yacc stack overflow"); - yyabort: -! return (1); - yyaccept: -! return (0); - } ---- 2566,2606 ---- - yystate = yydgoto[yym]; +--- 2323,2347 ---- #if YYDEBUG if (yydebug) -! fprintf(stderr, +! PerlIO_printf(Perl_debug_log, ! "yydebug: after reduction, shifting from state %d to state %d\n", ! *yyssp, yystate); #endif @@ -286,28 +374,32 @@ ! int yyps_index = (yyssp - yyss); ! int yypv_index = (yyvsp - yyvs); ! yystacksize += YYSTACKSIZE; -! yyvs = (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE)); -! yyss = (short*)realloc((char*)yyss,yystacksize * sizeof(short)); +! ysave->yyvs = yyvs = +! (YYSTYPE*)realloc((char*)yyvs,yystacksize * sizeof(YYSTYPE)); +! ysave->yyss = yyss = +! (short*)realloc((char*)yyss,yystacksize * sizeof(short)); ! if (!yyvs || !yyss) ! goto yyoverflow; ! yyssp = yyss + yyps_index; ! yyvsp = yyvs + yypv_index; } *++yyssp = yystate; - *++yyvsp = yyval; +*************** +*** 2315,2322 **** + goto yyloop; + yyoverflow: +! yyerror("yacc stack overflow"); + yyabort: +! return (1); + yyaccept: +! return (0); + } +--- 2349,2356 ---- goto yyloop; yyoverflow: ! yyerror("Out of memory for yacc stack"); yyabort: ! retval = 1; yyaccept: -! if (yyss) free(yyss); -! if (yyvs) free(yyvs); -! yydebug = oldyydebug; -! yynerrs = oldyynerrs; -! yyerrflag = oldyyerrflag; -! yychar = oldyychar; -! yyval = oldyyval; -! yylval = oldyylval; ! return retval; }