#include <stdarg.h>
#include <setjmp.h>
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
#ifndef YYFREE
# define YYFREE free
#endif
properly redirected to new data. */
#define YYHEADROOM 2
-#if (! defined (YYSTACKEXPANDABLE) \
- && (! defined (__cplusplus) \
- || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
- && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
-#define YYSTACKEXPANDABLE 1
-#else
-#define YYSTACKEXPANDABLE 0
+#ifndef YYSTACKEXPANDABLE
+# if (! defined (__cplusplus) \
+ || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
+ && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))
+# define YYSTACKEXPANDABLE 1
+# else
+# define YYSTACKEXPANDABLE 0
+# endif
#endif
#if YYERROR_VERBOSE
};
struct yyGLRStack {
- int yyerrflag;
int yyerrState;
]b4_location_if([[ /* To compute the location of the error token. */
yyGLRStackItem yyerror_range[3];]])[
static void
yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg)
{
- yystack->yyerrflag = 1;
if (yymsg != NULL)
yyerror (]b4_yyerror_args[yymsg);
longjmp (yystack->yyexception_buffer, 1);
static void
yyStackOverflow (yyGLRStack* yystack]b4_pure_formals[)
{
- yyFail (yystack]b4_pure_args[, "parser stack overflow");
+ longjmp (yystack->yyexception_buffer, 2);
}
#if YYDEBUG || YYERROR_VERBOSE
# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
# undef YYBACKUP
# define YYBACKUP(Token, Value) \
- return yyerror (]b4_yyerror_args["syntax error: cannot back up"), \
+ return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
yyerrok, yyerr
yylow = 1;
else
*yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;
YYLLOC_DEFAULT (*yylocp, yyvsp - yyrhslen, yyrhslen);
-]
+]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = *yylocp;
+]])
switch (yyn)
{
b4_actions
switch (yyn)
{
b4_mergers
+ default: break;
}
}
[
static yybool
yyinitGLRStack (yyGLRStack* yystack, size_t yysize)
{
- yystack->yyerrflag = 0;
yystack->yyerrState = 0;
yynerrs = 0;
yystack->yyspaceLeft = yysize;
yyreportTree (yyx1, 2);
YYFPRINTF (stderr, "\n");
#endif
- yyFail (yystack][]b4_pure_args[, "ambiguity detected");
+ yyFail (yystack][]b4_pure_args[, YY_("ambiguity detected"));
}
yyprefix = yyor;
}
- yyf = yyformat;
- yysize1 = yysize + (yyfmt - yyformat);
+ yyf = YY_(yyformat);
+ yysize1 = yysize + strlen (yyf);
yysize_overflow |= yysize1 < yysize;
yysize = yysize1;
YYFREE (yymsg);
}
else
- yyerror (]b4_lyyerror_args["syntax error; also virtual memory exhausted");
+ yyerror (]b4_lyyerror_args[YY_("syntax error; also memory exhausted"));
}
else
#endif /* YYERROR_VERBOSE */
- yyerror (]b4_lyyerror_args["syntax error");
+ yyerror (]b4_lyyerror_args[YY_("syntax error"));
yynerrs += 1;
}
}
default: \
break; \
case yyabort: \
- yystack.yyerrflag = 1; \
- goto yyDone; \
+ goto yyabortlab; \
case yyaccept: \
- yystack.yyerrflag = 0; \
- goto yyDone; \
+ goto yyacceptlab; \
case yyerr: \
goto yyuser_error; \
} \
]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[
{
+ int yyresult;
yySymbol yytoken;
yyGLRStack yystack;
size_t yyposn;
YYDPRINTF ((stderr, "Starting parse\n"));
yytoken = YYEMPTY;
-
- if (setjmp (yystack.yyexception_buffer) != 0)
- goto yyDone;
-
- if (! yyinitGLRStack (&yystack, YYINITDEPTH))
- goto yyDone;
- yystack.yytokenp = &yytoken;
-
yylval = yyval_default;
]b4_location_if([
#if YYLTYPE_IS_TRIVIAL
/* Line __line__ of glr.c. */
b4_syncline([@oline@], [@ofile@])])dnl
[
+ if (! yyinitGLRStack (&yystack, YYINITDEPTH))
+ goto yyoverflowlab;
+ switch (setjmp (yystack.yyexception_buffer))
+ {
+ case 1: goto yyabortlab;
+ case 2: goto yyoverflowlab;
+ }
+ yystack.yytokenp = &yytoken;
yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[);
yyposn = 0;
yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
if (yystate == YYFINAL)
- goto yyDone;
+ goto yyacceptlab;
if (yyisDefaultedState (yystate))
{
yyrule = yydefaultAction (yystate);
{
yyundeleteLastStack (&yystack);
if (yystack.yytops.yysize == 0)
- yyFail (&yystack][]b4_lpure_args[, "syntax error");
+ yyFail (&yystack][]b4_lpure_args[, YY_("syntax error"));
YYCHK1 (yyresolveStack (&yystack]b4_user_args[));
YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[
yyrecoverSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[);
yyposn = yystack.yytops.yystates[0]->yyposn;
}
- yyDone:
- /* On YYABORT, free the lookahead. */
- if (yystack.yyerrflag == 1 && yytoken != YYEMPTY)
+
+ yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+ yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+ yyoverflowlab:
+ yyerror (]b4_lyyerror_args[YY_("parser stack overflow"));
+ yyresult = 2;
+ /* Fall through. */
+
+ yyreturn:
+ if (yytoken != YYEOF && yytoken != YYEMPTY)
yydestruct ("Error: discarding lookahead",
yytoken, yylvalp]b4_location_if([, yyllocp])[);
yyfreeGLRStack (&yystack);
- return yystack.yyerrflag;
+ return yyresult;
}
/* DEBUGGING ONLY */