mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 14:23:04 +00:00
* tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
defines it. * data/glr.c (yystos): New. (b4_yysymprint_generate, b4_yydestruct_generate): Invoke. (YYDSYMPRINT): New. (yyval): Don't define it, it is handled via M4. (yyrecoverParseError): Free verbosely the discarded symbols. * data/yacc.c (yysymprint): Remove, rather... (b4_yysymprint_generate): invoke. * data/c.m4 (b4_yysymprint_generate): New. Accept pointers as arguments, as opposed to the version from yacc.c. (b4_yydestruct_generate): Likewise. * tests/cations.at (Printers and Destructors): Use Bison directives instead of CPP macros. Don't rely on internal details.
This commit is contained in:
57
data/c.m4
57
data/c.m4
@@ -327,8 +327,8 @@ m4_define([b4_syncline],
|
||||
# SYMBOL-ACTION, SYMBOL-TYPENAME)
|
||||
# -------------------------------------------------
|
||||
m4_define([b4_symbol_actions],
|
||||
[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
|
||||
m4_pushdef([b4_at_dollar], [yylocation])dnl
|
||||
[m4_pushdef([b4_dollar_dollar], [yyvaluep->$6])dnl
|
||||
m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl
|
||||
case $4: /* $3 */
|
||||
b4_syncline([$2], [$1])
|
||||
$5;
|
||||
@@ -351,13 +351,13 @@ m4_define([b4_yydestruct_generate],
|
||||
|
||||
]$1([yydestruct],
|
||||
[static void],
|
||||
[[int yytype], [yytype]],
|
||||
[[YYSTYPE yyvalue], [yyvalue]]b4_location_if([,
|
||||
[[YYLTYPE yylocation], [yylocation]]]))[
|
||||
[[int yytype], [yytype]],
|
||||
[[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
|
||||
[[YYLTYPE *yylocationp], [yylocationp]]]))[
|
||||
{
|
||||
/* Pacify ``unused variable'' warnings. */
|
||||
(void) yyvalue;
|
||||
]b4_location_if([ (void) yylocation;
|
||||
(void) yyvaluep;
|
||||
]b4_location_if([ (void) yylocationp;
|
||||
])[
|
||||
switch (yytype)
|
||||
{
|
||||
@@ -367,3 +367,46 @@ m4_define([b4_yydestruct_generate],
|
||||
}
|
||||
}]dnl
|
||||
])
|
||||
|
||||
|
||||
# b4_yysymprint_generate(FUNTION-DECLARATOR)
|
||||
# ------------------------------------------
|
||||
# Generate the "yysymprint" function, which declaration is issued using
|
||||
# FUNTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
|
||||
# or "b4_c_function_def" for K&R.
|
||||
m4_define([b4_yysymprint_generate],
|
||||
[[/*-----------------------------.
|
||||
| Print this symbol on YYOUT. |
|
||||
`-----------------------------*/
|
||||
|
||||
]$1([yysymprint],
|
||||
[static void],
|
||||
[[FILE *yyout], [yyout]],
|
||||
[[int yytype], [yytype]],
|
||||
[[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
|
||||
[[YYLTYPE *yylocationp], [yylocationp]]]))
|
||||
{
|
||||
/* Pacify ``unused variable'' warnings. */
|
||||
(void) yyvaluep;
|
||||
b4_location_if([ (void) yylocationp;
|
||||
])dnl
|
||||
|
||||
if (yytype < YYNTOKENS)
|
||||
{
|
||||
YYFPRINTF (yyout, "token %s (", yytname[[yytype]]);
|
||||
# ifdef YYPRINT
|
||||
YYPRINT (yyout, yytoknum[[yytype]], yyvalue);
|
||||
# endif
|
||||
}
|
||||
else
|
||||
YYFPRINTF (yyout, "nterm %s (", yytname[[yytype]]);
|
||||
|
||||
switch (yytype)
|
||||
{
|
||||
m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
|
||||
default:
|
||||
break;
|
||||
}
|
||||
YYFPRINTF (yyout, ")");
|
||||
}
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user