X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/15f40952f7696eab92570c3be352204242bb80b3..9662b512840eb42db61d041580bbdc326f4ebd55:/data/glr.c?ds=inline diff --git a/data/glr.c b/data/glr.c index f1cf4dc9..c6fe4c3d 100644 --- a/data/glr.c +++ b/data/glr.c @@ -218,6 +218,18 @@ b4_syncline([@oline@], [@ofile@]) #include #include +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* 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 @@ -657,7 +669,6 @@ union yyGLRStackItem { }; struct yyGLRStack { - int yyerrflag; int yyerrState; ]b4_location_if([[ /* To compute the location of the error token. */ yyGLRStackItem yyerror_range[3];]])[ @@ -681,7 +692,6 @@ static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[); 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); @@ -690,7 +700,7 @@ yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) 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 @@ -773,7 +783,7 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, # 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; @@ -957,7 +967,6 @@ static void yyfreeStateSet (yyGLRStateSet* yyset) static yybool yyinitGLRStack (yyGLRStack* yystack, size_t yysize) { - yystack->yyerrflag = 0; yystack->yyerrState = 0; yynerrs = 0; yystack->yyspaceLeft = yysize; @@ -1527,7 +1536,7 @@ yyreportAmbiguity (yySemanticOption* yyx0, yySemanticOption* yyx1, yyreportTree (yyx1, 2); YYFPRINTF (stderr, "\n"); #endif - yyFail (yystack][]b4_pure_args[, "ambiguity detected"); + yyFail (yystack][]b4_pure_args[, YY_("ambiguity detected")); } @@ -1777,8 +1786,8 @@ yyreportSyntaxError (yyGLRStack* yystack, yyprefix = yyor; } - yyf = yyformat; - yysize1 = yysize + (yyfmt - yyformat); + yyf = YY_(yyformat); + yysize1 = yysize + strlen (yyf); yysize_overflow |= yysize1 < yysize; yysize = yysize1; @@ -1806,11 +1815,11 @@ yyreportSyntaxError (yyGLRStack* yystack, 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; } } @@ -1933,11 +1942,9 @@ yyrecoverSyntaxError (yyGLRStack* yystack, 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; \ } \ @@ -1950,6 +1957,7 @@ yyrecoverSyntaxError (yyGLRStack* yystack, ]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ { + int yyresult; yySymbol yytoken; yyGLRStack yystack; size_t yyposn; @@ -1984,10 +1992,13 @@ m4_popdef([b4_at_dollar])dnl /* Line __line__ of glr.c. */ b4_syncline([@oline@], [@ofile@])])dnl [ - if (setjmp (yystack.yyexception_buffer) != 0) - goto yyDone; if (! yyinitGLRStack (&yystack, YYINITDEPTH)) - yyStackOverflow (&yystack]b4_lpure_args[); + 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; @@ -2007,7 +2018,7 @@ b4_syncline([@oline@], [@ofile@])])dnl 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); @@ -2069,7 +2080,7 @@ b4_syncline([@oline@], [@ofile@])])dnl { 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;]])[ @@ -2089,14 +2100,27 @@ b4_syncline([@oline@], [@ofile@])])dnl 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 */