X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly.c.diff;h=f31072a25f94dd09eefc5555ffdb8a0cb2d3d81f;hb=51594c39ec0a5df8dda24c63498418e94d9787e1;hp=06a8b6ca1e41794089676ae34e106ec4054947b2;hpb=93a17b20b6d176db3f04f51a63b0a781e5ffd11c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly.c.diff b/perly.c.diff index 06a8b6c..f31072a 100644 --- a/perly.c.diff +++ b/perly.c.diff @@ -1,7 +1,81 @@ -*** perly.c.byacc Tue Oct 5 15:44:31 1993 ---- perly.c Tue Oct 5 16:23:53 1993 +*** perly.c.orig Sun Jul 7 23:27:45 1996 +--- perly.c Sun Jul 7 23:27:46 1996 *************** -*** 1396,1408 **** +*** 12,82 **** + deprecate("\"do\" to call subroutines"); + } + +- #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 RELOP 285 +- #define EQOP 286 +- #define MULOP 287 +- #define ADDOP 288 +- #define DOLSHARP 289 +- #define DO 290 +- #define LOCAL 291 +- #define HASHBRACK 292 +- #define NOAMP 293 +- #define OROP 294 +- #define ANDOP 295 +- #define NOTOP 296 +- #define LSTOP 297 +- #define ASSIGNOP 298 +- #define OROR 299 +- #define ANDAND 300 +- #define BITOROP 301 +- #define BITANDOP 302 +- #define UNIOP 303 +- #define SHIFTOP 304 +- #define MATCHOP 305 +- #define UMINUS 306 +- #define REFGEN 307 +- #define POWOP 308 +- #define PREINC 309 +- #define PREDEC 310 +- #define POSTINC 311 +- #define POSTDEC 312 +- #define ARROW 313 + #define YYERRCODE 256 + short yylhs[] = { -1, + 31, 0, 5, 3, 6, 6, 6, 7, 7, 7, +--- 12,17 ---- +*************** +*** 1375,1387 **** int yynerrs; int yyerrflag; int yychar; @@ -12,13 +86,45 @@ - short yyss[YYSTACKSIZE]; - YYSTYPE yyvs[YYSTACKSIZE]; - #define yystacksize YYSTACKSIZE - #line 573 "perly.y" + #line 571 "perly.y" /* PROGRAM */ - #line 1409 "y.tab.c" ---- 1396,1403 ---- + #line 1388 "y.tab.c" +--- 1310,1317 ---- *************** -*** 1413,1418 **** ---- 1408,1426 ---- +*** 1388,1401 **** +--- 1318,1376 ---- + #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(ptr) ++ 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() { register int yym, yyn, yystate; @@ -27,28 +133,36 @@ + 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; extern char *getenv(); ++ #endif + ++ struct ysv *ysave = (struct ysv*)safemalloc(sizeof(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")) + { + yyn = *yys; *************** -*** 1429,1434 **** ---- 1437,1450 ---- +*** 1408,1413 **** +--- 1383,1396 ---- yyerrflag = 0; yychar = (-1); + /* + ** Initialize private stacks (yyparse may be called from an action) + */ -+ yyss = (short*)malloc(yystacksize*sizeof(short)); -+ yyvs = (YYSTYPE*)malloc(yystacksize*sizeof(YYSTYPE)); ++ ysave->yyss = yyss = (short*)safemalloc(yystacksize*sizeof(short)); ++ ysave->yyvs = yyvs = (YYSTYPE*)safemalloc(yystacksize*sizeof(YYSTYPE)); + if (!yyvs || !yyss) + goto yyoverflow; + @@ -56,7 +170,29 @@ yyvsp = yyvs; *yyssp = yystate = 0; *************** -*** 1459,1465 **** +*** 1423,1429 **** + 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 +--- 1406,1412 ---- + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } + #endif +*************** +*** 1433,1444 **** + { + #if YYDEBUG + if (yydebug) +! printf("yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { @@ -64,7 +200,12 @@ } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; ---- 1475,1493 ---- +--- 1416,1441 ---- + { + #if YYDEBUG + if (yydebug) +! fprintf(stderr, "yydebug: state %d, shifting to state %d\n", + yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { @@ -75,8 +216,10 @@ ! 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; @@ -85,7 +228,12 @@ *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; *************** -*** 1500,1506 **** +*** 1474,1485 **** + { + #if YYDEBUG + if (yydebug) +! printf("yydebug: state %d, error recovery shifting\ +! to state %d\n", *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { @@ -93,7 +241,13 @@ } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; ---- 1528,1548 ---- +--- 1471,1497 ---- + { + #if YYDEBUG + if (yydebug) +! fprintf(stderr, +! "yydebug: state %d, error recovery shifting to state %d\n", +! *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { @@ -104,9 +258,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; @@ -116,7 +270,106 @@ *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; *************** -*** 2281,2295 **** +*** 1489,1496 **** + { + #if YYDEBUG + if (yydebug) +! printf("yydebug: error recovery discarding state %d\n", +! *yyssp); + #endif + if (yyssp <= yyss) goto yyabort; + --yyssp; +--- 1501,1509 ---- + { + #if YYDEBUG + if (yydebug) +! fprintf(stderr, +! "yydebug: error recovery discarding state %d\n", +! *yyssp); + #endif + if (yyssp <= yyss) goto yyabort; + --yyssp; +*************** +*** 1507,1514 **** + 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 + yychar = (-1); +--- 1520,1528 ---- + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +! fprintf(stderr, +! "yydebug: state %d, error recovery discards token %d (%s)\n", +! yystate, yychar, yys); + } + #endif + yychar = (-1); +*************** +*** 1517,1523 **** + yyreduce: + #if YYDEBUG + if (yydebug) +! printf("yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); + #endif + yym = yylen[yyn]; +--- 1531,1537 ---- + yyreduce: + #if YYDEBUG + if (yydebug) +! fprintf(stderr, "yydebug: state %d, reducing by rule %d (%s)\n", + yystate, yyn, yyrule[yyn]); + #endif + yym = yylen[yyn]; +*************** +*** 2236,2243 **** + { + #if YYDEBUG + if (yydebug) +! printf("yydebug: after reduction, shifting from state 0 to\ +! state %d\n", YYFINAL); + #endif + yystate = YYFINAL; + *++yyssp = YYFINAL; +--- 2250,2258 ---- + { + #if YYDEBUG + if (yydebug) +! fprintf(stderr, +! "yydebug: after reduction, shifting from state 0 to state %d\n", +! YYFINAL); + #endif + yystate = YYFINAL; + *++yyssp = YYFINAL; +*************** +*** 2251,2257 **** + 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 +--- 2266,2272 ---- + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +! fprintf(stderr, "yydebug: state %d, reading %d (%s)\n", + YYFINAL, yychar, yys); + } + #endif +*************** +*** 2266,2285 **** + 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) { @@ -132,7 +385,13 @@ yyaccept: ! return (0); } ---- 2323,2357 ---- +--- 2281,2315 ---- + yystate = yydgoto[yym]; + #if YYDEBUG + if (yydebug) +! fprintf(stderr, +! "yydebug: after reduction, shifting from state %d to state %d\n", +! *yyssp, yystate); #endif if (yyssp >= yyss + yystacksize - 1) { @@ -143,8 +402,10 @@ ! 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; @@ -158,13 +419,5 @@ 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; }