summaryrefslogtreecommitdiff
path: root/perly_c.diff
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2002-03-25 12:33:17 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2002-03-25 14:37:03 +0000
commit0ddaf51316ca1bab139289c51c648ec8213a8af3 (patch)
treea9fd6998bb705e22db4900a95c81fa173591c4a2 /perly_c.diff
parent99ef548ba710eb2617804c989e4d5fdae1f04f37 (diff)
downloadperl-0ddaf51316ca1bab139289c51c648ec8213a8af3.tar.gz
Re: what is YYDEBUG and why does it reset errno?
Message-ID: <20020325113317.A1410@rafael> Apparently VMS does not do YYDEBUG. p4raw-id: //depot/perl@15486
Diffstat (limited to 'perly_c.diff')
-rw-r--r--perly_c.diff1150
1 files changed, 704 insertions, 446 deletions
diff --git a/perly_c.diff b/perly_c.diff
index aab3a86abc..5fac7106f2 100644
--- a/perly_c.diff
+++ b/perly_c.diff
@@ -1,446 +1,704 @@
---- perly.c.orig Tue Jun 19 08:39:52 2001
-+++ perly.c Tue Jun 19 08:39:24 2001
-@@ -1,5 +1,5 @@
- #ifndef lint
--static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91";
-+/* static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; */
- #endif
- #define YYBYACC 1
- #line 16 "perly.y"
-@@ -50,70 +50,9 @@
- #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
-+#line 54 "perly.c"
- #define YYERRCODE 256
--short yylhs[] = { -1,
-+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,7 +74,7 @@
- 49, 34, 34, 35, 35, 35, 44, 24, 19, 20,
- 21, 22, 23, 36, 36, 36, 36,
- };
--short yylen[] = { 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,
-@@ -157,7 +96,7 @@
- 1, 0, 1, 0, 1, 2, 1, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1,
- };
--short yydefred[] = { 4,
-+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,7 +138,7 @@
- 0, 22, 0, 0, 0, 31, 5, 0, 30, 0,
- 0, 33, 0, 23,
- };
--short yydgoto[] = { 1,
-+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,7 +146,7 @@
- 194, 327, 156, 289, 271, 225, 14, 83, 137, 84,
- 85, 86, 87, 15, 16, 17, 18, 93, 278,
- };
--short yysindex[] = { 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,
-@@ -249,7 +188,7 @@
- 449, 0, 2181, -150, 340, 0, 0, 355, 0, 216,
- 216, 0, -123, 0,
- };
--short yyrindex[] = { 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,7 +230,7 @@
- 917, 0, 0, 119, 0, 0, 0, 0, 0, 0,
- 0, 0, 179, 0,
- };
--short yygindex[] = { 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,7 +239,7 @@
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
- #define YYTABLESIZE 4568
--short yytable[] = { 71,
-+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,7 +698,7 @@
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 77, 77,
- };
--short yycheck[] = { 15,
-+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,7 +1163,7 @@
- #endif
- #define YYMAXTOKEN 317
- #if YYDEBUG
--char *yyname[] = {
-+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,7 +1180,7 @@
- "ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN","POWOP",
- "PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
- };
--char *yyrule[] = {
-+static char *yyrule[] = {
- "$accept : prog",
- "prog : progstart lineseq",
- "block : '{' remember lineseq '}'",
-@@ -1456,17 +1395,6 @@
- #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 */
-
-@@ -1477,7 +1405,7 @@
- #endif
- #define yyparse() Perl_yyparse(pTHX)
-
--#line 1481 "y.tab.c"
-+#line 1409 "perly.c"
- #define YYABORT goto yyabort
- #define YYACCEPT goto yyaccept
- #define YYERROR goto yyerrlab
-@@ -1485,11 +1413,31 @@
- 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;
-- extern char *getenv();
-+#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 (yys = getenv("YYDEBUG"))
-+#if YYDEBUG
-+ if ((yys = getenv("YYDEBUG")))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
-@@ -1501,12 +1449,22 @@
- 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 ((yyn = yydefred[yystate])) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-@@ -1516,7 +1474,7 @@
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-- printf("yydebug: state %d, reading %d (%s)\n", yystate,
-+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n", yystate,
- yychar, yys);
- }
- #endif
-@@ -1526,12 +1484,24 @@
- {
- #if YYDEBUG
- if (yydebug)
-- printf("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)
- {
-+ /*
-+ ** 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,14 +1517,14 @@
- }
- if (yyerrflag) goto yyinrecovery;
- #ifdef lint
-- goto yynewerror;
-+
- #endif
--yynewerror:
-+
- yyerror("syntax error");
- #ifdef lint
-- goto yyerrlab;
-+
- #endif
--yyerrlab:
-+
- ++yynerrs;
- yyinrecovery:
- if (yyerrflag < 3)
-@@ -1567,12 +1537,24 @@
- {
- #if YYDEBUG
- if (yydebug)
-- printf("yydebug: state %d, error recovery shifting\
-+ 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,7 +1564,7 @@
- {
- #if YYDEBUG
- if (yydebug)
-- printf("yydebug: error recovery discarding state %d\n",
-+ PerlIO_printf(Perl_debug_log, "yydebug: error recovery discarding state %d\n",
- *yyssp);
- #endif
- if (yyssp <= yyss) goto yyabort;
-@@ -1600,7 +1582,7 @@
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-- printf("yydebug: state %d, error recovery discards token %d (%s)\n",
-+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, error recovery discards token %d (%s)\n",
- yystate, yychar, yys);
- }
- #endif
-@@ -1610,7 +1592,7 @@
- yyreduce:
- #if YYDEBUG
- if (yydebug)
-- printf("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];
-@@ -2473,7 +2455,7 @@
- #line 790 "perly.y"
- { yyval.opval = yyvsp[0].opval; }
- break;
--#line 2477 "y.tab.c"
-+#line 2459 "perly.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
-@@ -2483,7 +2465,7 @@
- {
- #if YYDEBUG
- if (yydebug)
-- printf("yydebug: after reduction, shifting from state 0 to\
-+ PerlIO_printf(Perl_debug_log, "yydebug: after reduction, shifting from state 0 to\
- state %d\n", YYFINAL);
- #endif
- yystate = YYFINAL;
-@@ -2498,7 +2480,7 @@
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
-- printf("yydebug: state %d, reading %d (%s)\n",
-+ PerlIO_printf(Perl_debug_log, "yydebug: state %d, reading %d (%s)\n",
- YYFINAL, yychar, yys);
- }
- #endif
-@@ -2513,20 +2495,50 @@
- yystate = yydgoto[yym];
- #if YYDEBUG
- if (yydebug)
-- printf("yydebug: after reduction, shifting from state %d \
-+ 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("yacc stack overflow");
-+ yyerror("Out of memory for yacc stack");
- yyabort:
-- return (1);
-+ retval = 1;
- yyaccept:
-- return (0);
-+#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);
- }
+*** perly.c.orig ma 25 maalis 17.32.52 2002
+--- perly.c ma 25 maalis 17.32.53 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 ****
+ #if defined(EBCDIC) || defined(VMS)
+ #undef YYDEBUG
+ #endif
+! #define dep() deprecate("\"do\" to call subroutines")
+
+ /* stuff included here to make perly_c.diff apply better */
+
+--- 9,15 ----
+ #if defined(EBCDIC) || defined(VMS)
+ #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);
+ }