d: handle eof in yytranslate

This changes the traces from

    Reading a token:
    Now at end of input.

to

    Reading a token:
    Next token is token $end (7FFEE56E6474)

which is ok.  Actually it is even better, as it gives the location
when locations are enabled, and is clearer when rules explicitly use
the EOF token.

* data/skeletons/lalr1.d (yytranslate_): Handle eof here, as is done
in lalr1.cc.
This commit is contained in:
Akim Demaille
2019-08-30 06:57:26 -05:00
parent 569125a6bf
commit 5e95bb6251

View File

@@ -500,17 +500,9 @@ m4_popdef([b4_at_dollar])])dnl
} }
/* Convert token to internal form. */ /* Convert token to internal form. */
if (yychar <= YYTokenType.EOF) yytoken = yytranslate_ (yychar);]b4_parse_trace_if([[
{ yy_symbol_print ("Next token is",
yychar = yytoken = YYTokenType.EOF;]b4_parse_trace_if([[ yytoken, yylval]b4_locations_if([, yylloc])[);]])[
yycdebug ("Now at end of input.\n");]])[
}
else
{
yytoken = yytranslate_ (yychar);]b4_parse_trace_if([[
yy_symbol_print ("Next token is",
yytoken, yylval]b4_locations_if([, yylloc])[);]])[
}
/* If the proper action on seeing token YYTOKEN is to reduce or to /* If the proper action on seeing token YYTOKEN is to reduce or to
detect an error, take that action. */ detect an error, take that action. */
@@ -833,7 +825,9 @@ m4_popdef([b4_at_dollar])])dnl
]b4_translate[ ]b4_translate[
@}; @};
if (0 <= t && t <= yyuser_token_number_max_) if (t <= 0)
return YYTokenType.EOF;
else if (t <= yyuser_token_number_max_)
return translate_table[t]; return translate_table[t];
else else
return yyundef_token_;]])[ return yyundef_token_;]])[