aboutsummaryrefslogtreecommitdiff
path: root/yaccpar.c
diff options
context:
space:
mode:
Diffstat (limited to 'yaccpar.c')
-rw-r--r--yaccpar.c61
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;",