---- perly.c.orig Sun Jun 10 21:13:50 2001
-+++ perly.c Sun Jun 10 21:13:51 2001
-@@ -50,70 +50,9 @@
+--- perly.c.orig Sun Dec 28 01:04:08 2003
++++ perly.c Sun Dec 28 01:08:37 2003
+@@ -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"
+@@ -9,7 +9,7 @@
+ #ifdef EBCDIC
+ #undef YYDEBUG
+ #endif
+-#define dep() deprecate("\"do\" to call subroutines")
++#define dep() deprecate_old("\"do\" to call subroutines")
+
+ /* stuff included here to make perly_c.diff apply better */
+
+@@ -50,72 +50,9 @@
#define yylex yylex_r
#endif
-#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 DOROP 301
+-#define ANDOP 302
+-#define NOTOP 303
+-#define ASSIGNOP 304
+-#define OROR 305
+-#define DORDOR 306
+-#define ANDAND 307
+-#define BITOROP 308
+-#define BITANDOP 309
+-#define SHIFTOP 310
+-#define MATCHOP 311
+-#define UMINUS 312
+-#define REFGEN 313
+-#define POWOP 314
+-#define PREINC 315
+-#define PREDEC 316
+-#define POSTINC 317
+-#define POSTDEC 318
+-#define ARROW 319
+#line 54 "perly.c"
#define YYERRCODE 256
-short yylhs[] = { -1,
+static short yylhs[] = { -1,
- 54, 0, 8, 6, 9, 7, 10, 10, 10, 11,
- 11, 11, 11, 24, 24, 24, 24, 24, 24, 24,
- 14, 14, 14, 13, 13, 42, 42, 12, 12, 12,
-@@ -135,7 +74,7 @@
- 48, 33, 33, 34, 34, 34, 43, 23, 18, 19,
- 20, 21, 22, 35, 35, 35, 35,
+ 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,
+@@ -137,7 +74,7 @@
+ 49, 49, 34, 34, 35, 35, 35, 44, 24, 19,
+ 20, 21, 22, 23, 36, 36, 36, 36,
};
-short yylen[] = { 2,
+static 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,
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,
+@@ -159,7 +96,7 @@
+ 1, 1, 0, 1, 0, 1, 2, 1, 2, 2,
+ 2, 2, 2, 2, 1, 1, 1, 1,
};
--short yydefred[] = { 1,
-+static short yydefred[] = { 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, 4, 173, 0, 0, 154,
-@@ -199,7 +138,7 @@
- 0, 22, 0, 0, 0, 31, 5, 0, 30, 0,
- 0, 33, 0, 23,
+ 0, 70, 0, 14, 3, 174, 0, 0, 155, 0,
+@@ -201,7 +138,7 @@
+ 32, 0, 0, 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, 95, 370, 98, 359, 3,
- 12, 13, 70, 375, 285, 72, 73, 74, 75, 76,
- 77, 78, 79, 291, 81, 292, 281, 283, 286, 294,
-@@ -207,7 +146,7 @@
- 327, 156, 289, 271, 225, 14, 83, 137, 84, 85,
- 86, 87, 15, 2, 16, 17, 18, 93, 278,
+ 10, 11, 20, 103, 19, 2, 94, 373, 97, 362,
+ 3, 12, 13, 69, 378, 288, 71, 72, 73, 74,
+ 75, 76, 77, 78, 294, 80, 295, 284, 286, 289,
+@@ -209,7 +146,7 @@
+ 195, 330, 155, 292, 274, 226, 14, 82, 136, 83,
+ 84, 85, 86, 15, 16, 17, 18, 92, 281,
};
-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,
+ 0, 0, -236, 0, 0, 0, -231, 0, 0, 0,
+ 0, 0, 0, 0, 819, 0, 0, 0, -211, -209,
+ 3, 0, -209, 0, 0, 0, -32, -32, 0, 23,
+@@ -251,7 +188,7 @@
+ 0, 1859, -173, 350, 0, 2213, -173, 360, 0, 0,
+ 361, 0, 221, 221, 0, -240, 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, 371, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 289, 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,
+@@ -293,7 +230,7 @@
+ 0, 435, 90, 880, 0, 0, 90, 0, 0, 0,
+ 0, 0, 0, 0, 0, 186, 0,
};
-short yygindex[] = { 0,
+static short yygindex[] = { 0,
- 0, 0, 196, 425, 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, 103,
-@@ -300,7 +239,7 @@
+ 0, 0, 50, 453, 0, 0, -22, 0, 63, 153,
+ -93, 0, 0, 0, -346, -15, 2480, 0, 1744, 437,
+ 439, 0, 0, 0, 481, 755, 0, 0, 341, -186,
+@@ -302,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,
+ #define YYTABLESIZE 5051
+-short yytable[] = { 70,
++static short yytable[] = { 70,
+ 198, 300, 75, 64, 60, 280, 228, 60, 279, 64,
+ 199, 328, 183, 257, 219, 62, 278, 64, 379, 186,
+ 75, 110, 296, 188, 15, 21, 197, 170, 64, 4,
+@@ -810,7 +747,7 @@
+ 0, 0, 0, 0, 114, 114, 114, 0, 114, 114,
+ 114,
};
-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 @@
+ 94, 44, 41, 36, 59, 41, 41, 123, 44, 36,
+ 99, 59, 40, 40, 40, 59, 200, 36, 365, 91,
+ 59, 40, 209, 91, 41, 257, 93, 63, 59, 266,
+@@ -1324,7 +1261,7 @@
#endif
- #define YYMAXTOKEN 317
+ #define YYMAXTOKEN 319
#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",
+@@ -1341,7 +1278,7 @@
+ "DORDOR","ANDAND","BITOROP","BITANDOP","SHIFTOP","MATCHOP","UMINUS","REFGEN",
+ "POWOP","PREINC","PREDEC","POSTINC","POSTDEC","ARROW",
};
-char *yyrule[] = {
+static char *yyrule[] = {
"$accept : prog",
- "$$1 :",
- "prog : $$1 lineseq",
-@@ -1456,17 +1395,6 @@
+ "prog : progstart lineseq",
+ "block : '{' remember lineseq '}'",
+@@ -1557,17 +1494,6 @@
#define YYMAXDEPTH 500
#endif
#endif
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
- #line 789 "perly.y"
+ #line 796 "perly.y"
/* PROGRAM */
-@@ -1477,7 +1405,7 @@
+@@ -1578,7 +1504,7 @@
#endif
#define yyparse() Perl_yyparse(pTHX)
--#line 1481 "y.tab.c"
-+#line 1481 "perly.c"
+-#line 1582 "y.tab.c"
++#line 1508 "perly.c"
#define YYABORT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
-@@ -1485,10 +1413,30 @@
+@@ -1586,11 +1512,31 @@
yyparse()
{
register int yym, yyn, yystate;
register char *yys;
- extern char *getenv();
+#endif
-
++
+ struct ysv *ysave;
+#ifdef USE_ITHREADS
+ ENTER; /* force yydestruct() before we return */
+ ysave->oldyychar = yychar;
+ ysave->oldyyval = yyval;
+ ysave->oldyylval = yylval;
-+
+
+- if (yys = getenv("YYDEBUG"))
+#if YYDEBUG
- if (yys = getenv("YYDEBUG"))
++ if ((yys = getenv("YYDEBUG")))
{
yyn = *yys;
-@@ -1501,6 +1449,16 @@
+ if (yyn >= '0' && yyn <= '9')
+@@ -1602,12 +1548,22 @@
yyerrflag = 0;
yychar = (-1);
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
-@@ -1516,7 +1474,7 @@
+
+ yyloop:
+- if (yyn = yydefred[yystate]) goto yyreduce;
++ if ((yyn = yydefred[yystate])) goto yyreduce;
+ if (yychar < 0)
+ {
+ if ((yychar = yylex()) < 0) yychar = 0;
+@@ -1617,7 +1573,7 @@
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
yychar, yys);
}
#endif
-@@ -1526,12 +1484,24 @@
+@@ -1627,12 +1583,24 @@
{
#if YYDEBUG
if (yydebug)
#endif
if (yyssp >= yyss + yystacksize - 1)
{
-- goto yyoverflow;
+ /*
+ ** reallocate and recover. Note that pointers
+ ** have to be reset, or bad things will happen
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
+ if (!yyvs || !yyss)
-+ goto yyoverflow;
+ goto yyoverflow;
+ yyssp = yyss + yyps_index;
+ yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
-@@ -1549,12 +1519,12 @@
+@@ -1648,14 +1616,14 @@
+ }
+ if (yyerrflag) goto yyinrecovery;
#ifdef lint
- goto yynewerror;
+- goto yynewerror;
++
#endif
-yynewerror:
+
yyerror("syntax error");
#ifdef lint
- goto yyerrlab;
+- goto yyerrlab;
++
#endif
-yyerrlab:
+
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
-@@ -1567,12 +1537,24 @@
+@@ -1668,12 +1636,24 @@
{
#if YYDEBUG
if (yydebug)
#endif
if (yyssp >= yyss + yystacksize - 1)
{
-- goto yyoverflow;
+ /*
+ ** reallocate and recover. Note that pointers
+ ** have to be reset, or bad things will happen
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
+ if (!yyvs || !yyss)
-+ goto yyoverflow;
+ goto yyoverflow;
+ yyssp = yyss + yyps_index;
+ yyvsp = yyvs + yypv_index;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
-@@ -1582,7 +1564,7 @@
+@@ -1683,7 +1663,7 @@
{
#if YYDEBUG
if (yydebug)
*yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
-@@ -1600,7 +1582,7 @@
+@@ -1701,7 +1681,7 @@
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
yystate, yychar, yys);
}
#endif
-@@ -1610,7 +1592,7 @@
+@@ -1711,7 +1691,7 @@
yyreduce:
#if YYDEBUG
if (yydebug)
yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
-@@ -2473,7 +2455,7 @@
- #line 786 "perly.y"
+@@ -2579,7 +2559,7 @@
+ #line 793 "perly.y"
{ yyval.opval = yyvsp[0].opval; }
break;
--#line 2477 "y.tab.c"
-+#line 2477 "perly.c"
+-#line 2583 "y.tab.c"
++#line 2563 "perly.c"
}
yyssp -= yym;
yystate = *yyssp;
-@@ -2483,7 +2465,7 @@
+@@ -2589,7 +2569,7 @@
{
#if YYDEBUG
if (yydebug)
state %d\n", YYFINAL);
#endif
yystate = YYFINAL;
-@@ -2498,7 +2480,7 @@
+@@ -2604,7 +2584,7 @@
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
YYFINAL, yychar, yys);
}
#endif
-@@ -2513,20 +2495,54 @@
+@@ -2619,20 +2599,50 @@
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
#endif
if (yyssp >= yyss + yystacksize - 1)
{
-- goto yyoverflow;
+ /*
+ ** reallocate and recover. Note that pointers
+ ** have to be reset, or bad things will happen
+ ysave->yyvs = Renew(yyvs, yystacksize, YYSTYPE);
+ ysave->yyss = Renew(yyss, yystacksize, short);
+ if (!yyvs || !yyss)
-+ goto yyoverflow;
+ goto yyoverflow;
+ yyssp = yyss + yyps_index;
+ yyvsp = yyvs + yypv_index;
}
+ return retval;
+}
+
-+#ifdef PERL_OBJECT
-+#include "XSUB.h"
-+#endif
-+
+static void
-+yydestruct(pTHXo_ void *ptr)
++yydestruct(pTHX_ void *ptr)
+{
+ struct ysv* ysave = (struct ysv*)ptr;
+ if (ysave->yyss) Safefree(ysave->yyss);