X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perly_c.diff;h=c0db93ac4a30d9126939b5c94d86f7cb62c222a3;hb=30ef33217aeee51ee47b2433e9384b011646254a;hp=cfd369b53fd5177f81463e09401e04738d572e9d;hpb=428f79ef10ad4e14667125f22397bceac3e2c65e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perly_c.diff b/perly_c.diff index cfd369b..c0db93a 100644 --- a/perly_c.diff +++ b/perly_c.diff @@ -1,253 +1,290 @@ -*** perly.c.orig Sun Feb 7 04:48:56 1999 ---- perly.c Sun Feb 7 05:30:49 1999 +*** perly.c.orig Tue Mar 26 01:38:52 2002 +--- perly.c Tue Mar 26 01:38:54 2002 *************** -*** 7,10 **** ---- 7,25 ---- - #include "perl.h" +*** 1,5 **** + #ifndef lint +! static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; + #endif + #define YYBYACC 1 + #line 16 "perly.y" +--- 1,5 ---- + #ifndef lint +! /* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */ + #endif + #define YYBYACC 1 + #line 16 "perly.y" +*************** +*** 9,15 **** + #ifdef EBCDIC + #undef YYDEBUG + #endif +! #define dep() deprecate("\"do\" to call subroutines") + + /* stuff included here to make perly_c.diff apply better */ + +--- 9,15 ---- + #ifdef EBCDIC + #undef YYDEBUG + #endif +! #define dep() deprecate_old("\"do\" to call subroutines") + + /* stuff included here to make perly_c.diff apply better */ -+ #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"); - } +*** 50,119 **** + #define yylex yylex_r + #endif - #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 +! #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 #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 + 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, + 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, + 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, +--- 50,58 ---- + #define yylex yylex_r + #endif - #line 30 "perly.y" +! #line 54 "perly.c" #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, +! static short yylhs[] = { -1, + 0, 9, 7, 6, 10, 8, 11, 11, 11, 12, + 12, 12, 12, 25, 25, 25, 25, 25, 25, 25, + 15, 15, 15, 14, 14, 43, 43, 13, 13, 13, *************** -*** 109,113 **** - 20, 21, 22, 35, 35, 35, 35, +*** 135,141 **** + 49, 34, 34, 35, 35, 35, 44, 24, 19, 20, + 21, 22, 23, 36, 36, 36, 36, }; ! short yylen[] = { 2, - 0, 2, 4, 0, 4, 0, 0, 2, 2, 2, + 2, 4, 0, 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, + 0, 2, 6, 7, 7, 0, 2, 8, 8, 10, +--- 74,80 ---- + 49, 34, 34, 35, 35, 35, 44, 24, 19, 20, + 21, 22, 23, 36, 36, 36, 36, }; -! static short yylen[] = { 2, - 0, 2, 4, 0, 4, 0, 0, 2, 2, 2, +! static short yylen[] = { 2, + 2, 4, 0, 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, *************** -*** 129,133 **** +*** 157,163 **** + 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, 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 ---- +! short yydefred[] = { 4, + 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, 3, 173, 0, 0, 154, +--- 96,102 ---- + 1, 0, 1, 0, 1, 2, 1, 2, 2, 2, 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, +! static short yydefred[] = { 4, + 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, 3, 173, 0, 0, 154, *************** -*** 168,172 **** - 33, 0, 23, +*** 199,205 **** + 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, + 0, 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, + 10, 11, 20, 104, 19, 2, 95, 370, 98, 359, + 3, 12, 13, 70, 375, 285, 72, 73, 74, 75, + 76, 77, 78, 79, 291, 81, 292, 281, 283, 286, +--- 138,144 ---- + 0, 22, 0, 0, 0, 31, 5, 0, 30, 0, + 0, 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, +! static short yydgoto[] = { 1, + 10, 11, 20, 104, 19, 2, 95, 370, 98, 359, + 3, 12, 13, 70, 375, 285, 72, 73, 74, 75, + 76, 77, 78, 79, 291, 81, 292, 281, 283, 286, *************** -*** 175,179 **** - 250, 142, 267, 13, 2, 14, 15, 16, 85, 256, +*** 207,213 **** + 194, 327, 156, 289, 271, 225, 14, 83, 137, 84, + 85, 86, 87, 15, 16, 17, 18, 93, 278, }; ! 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, + 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, +--- 146,152 ---- + 194, 327, 156, 289, 271, 225, 14, 83, 137, 84, + 85, 86, 87, 15, 16, 17, 18, 93, 278, }; -! static short yysindex[] = { 0, - 0, 0, -66, 0, 0, 0, -48, 0, 0, 0, - 0, 0, 645, 0, 0, 0, -232, -227, -27, 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, *************** -*** 214,218 **** - 0, -238, 0, +*** 249,255 **** + 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, + 216, 0, -123, 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, + 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, +--- 188,194 ---- + 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216, + 216, 0, -123, 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, +! 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, *************** -*** 253,257 **** - 0, 154, 0, +*** 291,297 **** + 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 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, + 0, 0, 196, 425, 0, 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, +--- 230,236 ---- + 917, 0, 0, 119, 0, 0, 0, 0, 0, 0, + 0, 0, 179, 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, +! static short yygindex[] = { 0, + 0, 0, 196, 425, 0, 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, *************** -*** 261,265 **** +*** 300,306 **** + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - #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 4568 +! 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, +--- 239,245 ---- + 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - #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, + #define YYTABLESIZE 4568 +! 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, *************** -*** 706,710 **** - 0, 0, 0, 0, 317, +*** 759,765 **** + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 77, }; -! 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, +! 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, +--- 698,704 ---- + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 77, }; -! static short yycheck[] = { 13, - 41, 36, 86, 41, 91, 40, 44, 59, 91, 59, - 59, 93, 36, 183, 59, 59, 41, 91, 41, 331, +! 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, *************** -*** 1157,1161 **** - #define YYMAXTOKEN 314 +*** 1224,1230 **** + #endif + #define YYMAXTOKEN 317 #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 + 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, +--- 1163,1169 ---- + #endif + #define YYMAXTOKEN 317 #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, + 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", +*** 1241,1247 **** + "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP", + "PREINC","PREDEC","POSTINC","POSTDEC","ARROW", }; ! char *yyrule[] = { "$accept : prog", - "$$1 :", ---- 1116,1120 ---- - "POSTDEC","ARROW", + "prog : progstart lineseq", + "block : '{' remember lineseq '}'", +--- 1180,1186 ---- + "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP", + "PREINC","PREDEC","POSTINC","POSTDEC","ARROW", }; ! static char *yyrule[] = { "$accept : prog", - "$$1 :", + "prog : progstart lineseq", + "block : '{' remember lineseq '}'", *************** -*** 1369,1397 **** +*** 1456,1472 **** + #define YYMAXDEPTH 500 #endif #endif - int yydebug; @@ -261,60 +298,42 @@ - short yyss[YYSTACKSIZE]; - YYSTYPE yyvs[YYSTACKSIZE]; - #define yystacksize YYSTACKSIZE - #line 652 "perly.y" + #line 793 "perly.y" /* PROGRAM */ -! #line 1385 "y.tab.c" + +--- 1395,1400 ---- +*************** +*** 1477,1483 **** + #endif + #define yyparse() Perl_yyparse(pTHX) + +! #line 1481 "y.tab.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab - int -! yyparse() +--- 1405,1411 ---- + #endif + #define yyparse() Perl_yyparse(pTHX) + +! #line 1409 "perly.c" + #define YYABORT goto yyabort + #define YYACCEPT goto yyaccept + #define YYERROR goto yyerrlab +*************** +*** 1485,1495 **** + yyparse() { register int yym, yyn, yystate; #if YYDEBUG register char *yys; - extern char *getenv(); +! extern char *getenv(); - if (yys = getenv("YYDEBUG")) +! 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; + if (yyn >= '0' && yyn <= '9') +--- 1413,1443 ---- + yyparse() { register int yym, yyn, yystate; + register short *yyssp; @@ -325,27 +344,42 @@ + 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; +! #endif -+ #if YYDEBUG - if (yys = getenv("YYDEBUG")) +! 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; + if (yyn >= '0' && yyn <= '9') *************** -*** 1406,1409 **** ---- 1384,1397 ---- +*** 1501,1512 **** + yyerrflag = 0; + yychar = (-1); + + yyssp = yyss; + yyvsp = yyvs; + *yyssp = yystate = 0; + + yyloop: +! if (yyn = yydefred[yystate]) goto yyreduce; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; +--- 1449,1470 ---- + yyerrflag = 0; yychar = (-1); + /* @@ -360,8 +394,33 @@ + yyssp = yyss; yyvsp = yyvs; + *yyssp = yystate = 0; + + yyloop: +! if ((yyn = yydefred[yystate])) goto yyreduce; + if (yychar < 0) + { + if ((yychar = yylex()) < 0) yychar = 0; *************** -*** 1431,1440 **** +*** 1516,1522 **** + 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 +--- 1474,1480 ---- + yys = 0; + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; + if (!yys) yys = "illegal-symbol"; +! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate, + yychar, yys); + } + #endif +*************** +*** 1526,1537 **** + { #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, shifting to state %d\n", @@ -369,10 +428,12 @@ #endif if (yyssp >= yyss + yystacksize - 1) { -! goto yyoverflow; + goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; ---- 1419,1442 ---- + *++yyvsp = yylval; +--- 1484,1507 ---- + { #if YYDEBUG if (yydebug) ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, shifting to state %d\n", @@ -380,188 +441,208 @@ #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; ++ /* ++ ** 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; *************** -*** 1472,1481 **** +*** 1547,1560 **** + } + if (yyerrflag) goto yyinrecovery; + #ifdef lint +! goto yynewerror; + #endif +! yynewerror: + yyerror("syntax error"); + #ifdef lint +! goto yyerrlab; + #endif +! yyerrlab: + ++yynerrs; + yyinrecovery: + if (yyerrflag < 3) +--- 1517,1530 ---- + } + if (yyerrflag) goto yyinrecovery; + #ifdef lint +! + #endif +! + yyerror("syntax error"); + #ifdef lint +! + #endif +! + ++yynerrs; + yyinrecovery: + if (yyerrflag < 3) +*************** +*** 1567,1578 **** + { #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, error recovery shifting\ -! to state %d\n", *yyssp, yytable[yyn]); + to state %d\n", *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { -! goto yyoverflow; + goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; ---- 1474,1498 ---- + *++yyvsp = yylval; +--- 1537,1560 ---- + { #if YYDEBUG if (yydebug) -! PerlIO_printf(Perl_debug_log, -! "yydebug: state %d, error recovery shifting to state %d\n", -! *yyssp, yytable[yyn]); +! 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; ++ /* ++ ** 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; *************** -*** 1487,1492 **** +*** 1582,1588 **** + { #if YYDEBUG if (yydebug) ! printf("yydebug: error recovery discarding state %d\n", -! *yyssp); + *yyssp); #endif if (yyssp <= yyss) goto yyabort; ---- 1504,1510 ---- +--- 1564,1570 ---- + { #if YYDEBUG if (yydebug) -! PerlIO_printf(Perl_debug_log, -! "yydebug: error recovery discarding state %d\n", -! *yyssp); +! PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n", + *yyssp); #endif if (yyssp <= yyss) goto yyabort; *************** -*** 1505,1510 **** +*** 1600,1606 **** + 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); + yystate, yychar, yys); } #endif ---- 1523,1529 ---- +--- 1582,1588 ---- + yys = 0; 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); +! PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n", + yystate, yychar, yys); } #endif *************** -*** 1515,1519 **** +*** 1610,1616 **** + yyreduce: #if YYDEBUG if (yydebug) ! printf("yydebug: state %d, reducing by rule %d (%s)\n", yystate, yyn, yyrule[yyn]); #endif ---- 1534,1538 ---- + yym = yylen[yyn]; +--- 1592,1598 ---- + yyreduce: #if YYDEBUG if (yydebug) ! PerlIO_printf(Perl_debug_log, "yydebug: state %d, reducing by rule %d (%s)\n", yystate, yyn, yyrule[yyn]); #endif + yym = yylen[yyn]; *************** -*** 2305,2309 **** +*** 2473,2479 **** + #line 790 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -! #line 2308 "y.tab.c" +! #line 2477 "y.tab.c" } yyssp -= yym; ---- 2324,2328 ---- + yystate = *yyssp; +--- 2455,2461 ---- + #line 790 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -! #line 2329 "perly.c" +! #line 2459 "perly.c" } yyssp -= yym; + yystate = *yyssp; *************** -*** 2315,2320 **** +*** 2483,2489 **** + { #if YYDEBUG if (yydebug) ! printf("yydebug: after reduction, shifting from state 0 to\ -! state %d\n", YYFINAL); + state %d\n", YYFINAL); #endif yystate = YYFINAL; ---- 2334,2340 ---- +--- 2465,2471 ---- + { #if YYDEBUG if (yydebug) -! PerlIO_printf(Perl_debug_log, -! "yydebug: after reduction, shifting from state 0 to state %d\n", -! YYFINAL); +! PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\ + state %d\n", YYFINAL); #endif yystate = YYFINAL; *************** -*** 2330,2334 **** +*** 2498,2504 **** + yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; ! printf("yydebug: state %d, reading %d (%s)\n", YYFINAL, yychar, yys); } ---- 2350,2354 ---- + #endif +--- 2480,2486 ---- + yys = 0; 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); } + #endif *************** -*** 2345,2354 **** +*** 2513,2532 **** + 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) - { -! 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); + 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; + goto yyoverflow; } *++yyssp = yystate; -*************** -*** 2356,2363 **** + *++yyvsp = yyval; goto yyloop; yyoverflow: ! yyerror("yacc stack overflow"); @@ -570,12 +651,54 @@ yyaccept: ! return (0); } ---- 2391,2398 ---- +--- 2495,2544 ---- + yystate = yydgoto[yym]; + #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 = 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; +! } +! +! static void +! yydestruct(pTHX_ 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); }