*** perly.c.orig Sun Feb 7 04:48:56 1999 --- perly.c Sun Feb 7 05:30:49 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, }; ! static 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() { register int yym, yyn, yystate; #if YYDEBUG register char *yys; 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) { 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")) { *************** *** 1406,1409 **** --- 1384,1397 ---- 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; *************** *** 1431,1440 **** #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]; --- 1419,1442 ---- #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]; *************** *** 1472,1481 **** #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]; --- 1474,1498 ---- #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]; *************** *** 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); #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); #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; *************** *** 2356,2363 **** goto yyloop; yyoverflow: ! yyerror("yacc stack overflow"); yyabort: ! return (1); yyaccept: ! return (0); } --- 2391,2398 ---- goto yyloop; yyoverflow: ! yyerror("Out of memory for yacc stack"); yyabort: ! retval = 1; yyaccept: ! return retval; }