mirror of
https://github.com/Perl/perl5.git
synced 2026-01-26 08:38:23 +00:00
From: "Craig A. Berry" <craig.berry@SignalTreeSolutions.com> Message-Id: <5.1.0.14.2.20020325135745.01aeabc0@exchi01> p4raw-id: //depot/perl@15506
705 lines
21 KiB
Diff
705 lines
21 KiB
Diff
*** perly.c.orig Tue Mar 26 01:38:52 2002
|
|
--- perly.c Tue Mar 26 01:38:54 2002
|
|
***************
|
|
*** 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 */
|
|
|
|
***************
|
|
*** 50,119 ****
|
|
#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
|
|
#define YYERRCODE 256
|
|
! 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,
|
|
--- 50,58 ----
|
|
#define yylex yylex_r
|
|
#endif
|
|
|
|
! #line 54 "perly.c"
|
|
#define YYERRCODE 256
|
|
! 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,
|
|
***************
|
|
*** 135,141 ****
|
|
49, 34, 34, 35, 35, 35, 44, 24, 19, 20,
|
|
21, 22, 23, 36, 36, 36, 36,
|
|
};
|
|
! 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,
|
|
--- 74,80 ----
|
|
49, 34, 34, 35, 35, 35, 44, 24, 19, 20,
|
|
21, 22, 23, 36, 36, 36, 36,
|
|
};
|
|
! 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,
|
|
***************
|
|
*** 157,163 ****
|
|
1, 0, 1, 0, 1, 2, 1, 2, 2, 2,
|
|
2, 2, 2, 1, 1, 1, 1,
|
|
};
|
|
! 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[] = { 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,
|
|
***************
|
|
*** 199,205 ****
|
|
0, 22, 0, 0, 0, 31, 5, 0, 30, 0,
|
|
0, 33, 0, 23,
|
|
};
|
|
! 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,
|
|
--- 138,144 ----
|
|
0, 22, 0, 0, 0, 31, 5, 0, 30, 0,
|
|
0, 33, 0, 23,
|
|
};
|
|
! 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,
|
|
***************
|
|
*** 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, -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, -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,255 ****
|
|
449, 0, 2181, -150, 340, 0, 0, 355, 0, 216,
|
|
216, 0, -123, 0,
|
|
};
|
|
! 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,
|
|
--- 188,194 ----
|
|
449, 0, 2181, -150, 340, 0, 0, 355, 0, 216,
|
|
216, 0, -123, 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,297 ****
|
|
917, 0, 0, 119, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 179, 0,
|
|
};
|
|
! 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,
|
|
--- 230,236 ----
|
|
917, 0, 0, 119, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 179, 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,
|
|
***************
|
|
*** 300,306 ****
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
};
|
|
#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 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,
|
|
***************
|
|
*** 759,765 ****
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 77, 77,
|
|
};
|
|
! 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[] = { 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,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,
|
|
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,
|
|
***************
|
|
*** 1241,1247 ****
|
|
"ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
|
|
"PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
|
|
};
|
|
! char *yyrule[] = {
|
|
"$accept : prog",
|
|
"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",
|
|
"prog : progstart lineseq",
|
|
"block : '{' remember lineseq '}'",
|
|
***************
|
|
*** 1456,1472 ****
|
|
#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 793 "perly.y"
|
|
/* PROGRAM */
|
|
|
|
--- 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
|
|
--- 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();
|
|
|
|
! if (yys = getenv("YYDEBUG"))
|
|
{
|
|
yyn = *yys;
|
|
if (yyn >= '0' && yyn <= '9')
|
|
--- 1413,1443 ----
|
|
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;
|
|
if (yyn >= '0' && yyn <= '9')
|
|
***************
|
|
*** 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);
|
|
|
|
+ /*
|
|
+ ** 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;
|
|
|
|
yyloop:
|
|
! if ((yyn = yydefred[yystate])) goto yyreduce;
|
|
if (yychar < 0)
|
|
{
|
|
if ((yychar = yylex()) < 0) yychar = 0;
|
|
***************
|
|
*** 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",
|
|
yystate, yytable[yyn]);
|
|
#endif
|
|
if (yyssp >= yyss + yystacksize - 1)
|
|
{
|
|
goto yyoverflow;
|
|
}
|
|
*++yyssp = yystate = yytable[yyn];
|
|
*++yyvsp = yylval;
|
|
--- 1484,1507 ----
|
|
{
|
|
#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 = 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;
|
|
***************
|
|
*** 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]);
|
|
#endif
|
|
if (yyssp >= yyss + yystacksize - 1)
|
|
{
|
|
goto yyoverflow;
|
|
}
|
|
*++yyssp = yystate = yytable[yyn];
|
|
*++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]);
|
|
#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;
|
|
***************
|
|
*** 1582,1588 ****
|
|
{
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
! printf("yydebug: error recovery discarding state %d\n",
|
|
*yyssp);
|
|
#endif
|
|
if (yyssp <= yyss) goto yyabort;
|
|
--- 1564,1570 ----
|
|
{
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
! PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
|
|
*yyssp);
|
|
#endif
|
|
if (yyssp <= yyss) goto yyabort;
|
|
***************
|
|
*** 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);
|
|
}
|
|
#endif
|
|
--- 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);
|
|
}
|
|
#endif
|
|
***************
|
|
*** 1610,1616 ****
|
|
yyreduce:
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
! printf("yydebug: state %d, reducing by rule %d (%s)\n",
|
|
yystate, yyn, yyrule[yyn]);
|
|
#endif
|
|
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];
|
|
***************
|
|
*** 2473,2479 ****
|
|
#line 790 "perly.y"
|
|
{ yyval.opval = yyvsp[0].opval; }
|
|
break;
|
|
! #line 2477 "y.tab.c"
|
|
}
|
|
yyssp -= yym;
|
|
yystate = *yyssp;
|
|
--- 2455,2461 ----
|
|
#line 790 "perly.y"
|
|
{ yyval.opval = yyvsp[0].opval; }
|
|
break;
|
|
! #line 2459 "perly.c"
|
|
}
|
|
yyssp -= yym;
|
|
yystate = *yyssp;
|
|
***************
|
|
*** 2483,2489 ****
|
|
{
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
! printf("yydebug: after reduction, shifting from state 0 to\
|
|
state %d\n", YYFINAL);
|
|
#endif
|
|
yystate = YYFINAL;
|
|
--- 2465,2471 ----
|
|
{
|
|
#if YYDEBUG
|
|
if (yydebug)
|
|
! PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
|
|
state %d\n", YYFINAL);
|
|
#endif
|
|
yystate = YYFINAL;
|
|
***************
|
|
*** 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);
|
|
}
|
|
#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
|
|
***************
|
|
*** 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;
|
|
*++yyvsp = yyval;
|
|
goto yyloop;
|
|
yyoverflow:
|
|
! yyerror("yacc stack overflow");
|
|
yyabort:
|
|
! return (1);
|
|
yyaccept:
|
|
! return (0);
|
|
}
|
|
--- 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);
|
|
}
|