summaryrefslogtreecommitdiff
path: root/usr.bin/yacc/test/error.tab.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/yacc/test/error.tab.c')
-rw-r--r--usr.bin/yacc/test/error.tab.c58
1 files changed, 45 insertions, 13 deletions
diff --git a/usr.bin/yacc/test/error.tab.c b/usr.bin/yacc/test/error.tab.c
index 8a5c902551e..b16d6ddc8d8 100644
--- a/usr.bin/yacc/test/error.tab.c
+++ b/usr.bin/yacc/test/error.tab.c
@@ -1,11 +1,14 @@
#ifndef lint
/*static char yysccsid[] = "from: @(#)yaccpar 1.9 (Berkeley) 02/21/93";*/
-static char rcsid[] = "$Id: error.tab.c,v 1.1 1995/10/18 08:47:06 deraadt Exp $";
+static char yyrcsid[] = "$OpenBSD: error.tab.c,v 1.2 1996/04/21 23:45:31 deraadt Exp $";
#endif
+#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
-#define yyclearin (yychar=(-1))
+#define YYLEX yylex()
+#define YYEMPTY -1
+#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
@@ -58,10 +61,11 @@ typedef int YYSTYPE;
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
+#define YYSTACKSIZE 10000
+#define YYMAXDEPTH 10000
#endif
#endif
+#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
@@ -70,14 +74,42 @@ short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
+short *yyss;
+short *yysslim;
+YYSTYPE *yyvs;
+int yystacksize;
#line 4 "error.y"
main(){printf("yyparse() = %d\n",yyparse());}
yylex(){return-1;}
yyerror(s)char*s;{printf("%s\n",s);}
-#line 80 "error.tab.c"
+#line 86 "error.tab.c"
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack()
+{
+ int newsize, i;
+ short *newss;
+ YYSTYPE *newvs;
+
+ if ((newsize = yystacksize) == 0)
+ newsize = YYINITSTACKSIZE;
+ else if (newsize >= YYMAXDEPTH)
+ return -1;
+ else if ((newsize *= 2) > YYMAXDEPTH)
+ newsize = YYMAXDEPTH;
+ i = yyssp - yyss;
+ if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
+ return -1;
+ yyss = newss;
+ yyssp = newss + i;
+ if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
+ return -1;
+ yyvs = newvs;
+ yyvsp = newvs + i;
+ yystacksize = newsize;
+ yysslim = yyss + newsize - 1;
+ return 0;
+}
+
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
@@ -88,7 +120,6 @@ yyparse()
register int yym, yyn, yystate;
#if YYDEBUG
register char *yys;
- extern char *getenv();
if (yys = getenv("YYDEBUG"))
{
@@ -102,12 +133,13 @@ yyparse()
yyerrflag = 0;
yychar = (-1);
+ if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
- if (yyn = yydefred[yystate]) goto yyreduce;
+ if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
@@ -130,7 +162,7 @@ yyloop:
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
- if (yyssp >= yyss + yystacksize - 1)
+ if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
@@ -171,7 +203,7 @@ yyinrecovery:
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
- if (yyssp >= yyss + yystacksize - 1)
+ if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
@@ -260,7 +292,7 @@ yyreduce:
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
- if (yyssp >= yyss + yystacksize - 1)
+ if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}