diff options
Diffstat (limited to 'yaccpar.c')
-rw-r--r-- | yaccpar.c | 61 |
1 files changed, 29 insertions, 32 deletions
diff --git a/yaccpar.c b/yaccpar.c index 717d735defc4..a77a5394a78a 100644 --- a/yaccpar.c +++ b/yaccpar.c @@ -2,7 +2,7 @@ * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @ */ -/* @Id: yaccpar.skel,v 1.5 2014/04/07 21:51:00 tom Exp @ */ +/* @Id: yaccpar.skel,v 1.7 2016/06/06 23:35:55 Tom.Shields Exp @ */ #include "defs.h" @@ -55,8 +55,10 @@ const char *const tables[] = "extern YYINT yytable[];", "extern YYINT yycheck[];", "", - "#if YYDEBUG", + "#if YYDEBUG || defined(yytname)", "extern char *yyname[];", + "#endif", + "#if YYDEBUG", "extern char *yyrule[];", "#endif", 0 @@ -132,7 +134,7 @@ const char *const body_1[] = { "", "#if YYDEBUG", - "#include <stdio.h> /* needed for printf */", + "#include <stdio.h> /* needed for printf */", "#endif", "", "#include <stdlib.h> /* needed for malloc, etc */", @@ -209,6 +211,8 @@ const char *const body_2[] = " }", "#endif", "", + " yym = 0;", + " yyn = 0;", " yynerrs = 0;", " yyerrflag = 0;", " yychar = YYEMPTY;", @@ -228,28 +232,26 @@ const char *const body_2[] = " if ((yyn = yydefred[yystate]) != 0) goto yyreduce;", " if (yychar < 0)", " {", - " if ((yychar = YYLEX) < 0) yychar = YYEOF;", + " yychar = YYLEX;", + " if (yychar < 0) yychar = YYEOF;", "#if YYDEBUG", " if (yydebug)", " {", - " yys = yyname[YYTRANSLATE(yychar)];", + " if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];", " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", " YYPREFIX, yystate, yychar, yys);", " }", "#endif", " }", - " if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&", - " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", + " if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&", + " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: state %d, shifting to state %d\\n\",", " YYPREFIX, yystate, yytable[yyn]);", "#endif", - " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", - " {", - " goto yyoverflow;", - " }", + " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", " yystate = yytable[yyn];", " *++yystack.s_mark = yytable[yyn];", " *++yystack.l_mark = yylval;", @@ -257,18 +259,17 @@ const char *const body_2[] = " if (yyerrflag > 0) --yyerrflag;", " goto yyloop;", " }", - " if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&", - " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", + " if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&", + " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)", " {", " yyn = yytable[yyn];", " goto yyreduce;", " }", - " if (yyerrflag) goto yyinrecovery;", + " if (yyerrflag != 0) goto yyinrecovery;", "", " YYERROR_CALL(\"syntax error\");", "", - " goto yyerrlab;", - "", + " goto yyerrlab; /* redundant goto avoids 'unused label' warning */", "yyerrlab:", " ++yynerrs;", "", @@ -278,18 +279,15 @@ const char *const body_2[] = " yyerrflag = 3;", " for (;;)", " {", - " if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&", - " yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)", + " if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&", + " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)", " {", "#if YYDEBUG", " if (yydebug)", " printf(\"%sdebug: state %d, error recovery shifting\\", " to state %d\\n\", YYPREFIX, *yystack.s_mark, yytable[yyn]);", "#endif", - " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", - " {", - " goto yyoverflow;", - " }", + " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", " yystate = yytable[yyn];", " *++yystack.s_mark = yytable[yyn];", " *++yystack.l_mark = yylval;", @@ -314,7 +312,7 @@ const char *const body_2[] = "#if YYDEBUG", " if (yydebug)", " {", - " yys = yyname[YYTRANSLATE(yychar)];", + " if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];", " printf(\"%sdebug: state %d, error recovery discards token %d (%s)\\n\",", " YYPREFIX, yystate, yychar, yys);", " }", @@ -330,10 +328,11 @@ const char *const body_2[] = " YYPREFIX, yystate, yyn, yyrule[yyn]);", "#endif", " yym = yylen[yyn];", - " if (yym)", + " if (yym > 0)", " yyval = yystack.l_mark[1-yym];", " else", " memset(&yyval, 0, sizeof yyval);", + "", " switch (yyn)", " {", 0 @@ -358,11 +357,12 @@ const char *const trailer[] = " *++yystack.l_mark = yyval;", " if (yychar < 0)", " {", - " if ((yychar = YYLEX) < 0) yychar = YYEOF;", + " yychar = YYLEX;", + " if (yychar < 0) yychar = YYEOF;", "#if YYDEBUG", " if (yydebug)", " {", - " yys = yyname[YYTRANSLATE(yychar)];", + " if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];", " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", " YYPREFIX, YYFINAL, yychar, yys);", " }", @@ -371,8 +371,8 @@ const char *const trailer[] = " if (yychar == YYEOF) goto yyaccept;", " goto yyloop;", " }", - " if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&", - " yyn <= YYTABLESIZE && yycheck[yyn] == yystate)", + " if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&", + " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)", " yystate = yytable[yyn];", " else", " yystate = yydgoto[yym];", @@ -381,10 +381,7 @@ const char *const trailer[] = " printf(\"%sdebug: after reduction, shifting from state %d \\", "to state %d\\n\", YYPREFIX, *yystack.s_mark, yystate);", "#endif", - " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", - " {", - " goto yyoverflow;", - " }", + " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", " *++yystack.s_mark = (YYINT) yystate;", " *++yystack.l_mark = yyval;", " goto yyloop;", |