skeletons: avoid empty switch constructs

Reported by Rob Conde.
http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html

* data/c.m4 (b4_symbol_actions): Rename as...
(_b4_symbol_actions): this.
(b4_symbol_actions): New wrapper.
Do not emit empty switches.
Adjust all b4_symbol_actions callers.
This commit is contained in:
Akim Demaille
2013-04-08 11:13:22 +02:00
parent e83be476a5
commit 3cf3393bd4
3 changed files with 24 additions and 35 deletions

View File

@@ -440,15 +440,15 @@ m4_define([b4_case],
$2
break;])
# b4_symbol_actions(FILENAME, LINENO,
# SYMBOL-TAG, SYMBOL-NUM,
# SYMBOL-ACTION, SYMBOL-TYPENAME)
# -------------------------------------------------
# _b4_symbol_actions(FILENAME, LINENO,
# SYMBOL-TAG, SYMBOL-NUM,
# SYMBOL-ACTION, SYMBOL-TYPENAME)
# --------------------------------------------------
# Issue the code for a symbol action (e.g., %printer).
#
# Define b4_dollar_dollar([TYPE-NAME]), and b4_at_dollar, which are
# invoked where $<TYPE-NAME>$ and @$ were specified by the user.
m4_define([b4_symbol_actions],
m4_define([_b4_symbol_actions],
[b4_dollar_pushdef([(*yyvaluep)], [$6], [(*yylocationp)])dnl
case $4: /* $3 */
b4_syncline([$2], [$1])
@@ -458,6 +458,20 @@ b4_syncline([@oline@], [@ofile@])
b4_dollar_popdef[]dnl
])
# b4_symbol_actions(KIND)
# -----------------------
# Emit the symbol actions for KIND ("printers" or "destructors").
# Dispatch on "yytype".
m4_define([b4_symbol_actions],
[m4_ifval(m4_defn([b4_symbol_$1]),
[[switch (yytype)
{
]m4_map([_b4_symbol_actions], m4_defn([b4_symbol_$1]))[
default:
break;
}]],
[YYUSE (yytype);])])
# b4_yydestruct_generate(FUNCTION-DECLARATOR)
# -------------------------------------------
@@ -487,12 +501,7 @@ b4_parse_param_use[]dnl
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
default:
break;
}
]b4_symbol_actions([destructors])[
}]dnl
])
@@ -530,12 +539,7 @@ b4_parse_param_use[]dnl
# else
YYUSE (yyoutput);
# endif
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
[ default:
break;
}
]b4_symbol_actions([printers])[
}

View File

@@ -167,12 +167,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
std::ostream& yyoutput = debug_stream ();
std::ostream& yyo = yyoutput;
YYUSE (yyo);
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
[ default:
break;
}
]b4_symbol_actions([printers])[
}

View File

@@ -422,12 +422,7 @@ do { \
std::ostream& yyo = debug_stream ();
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
[ default:
break;
}
]b4_symbol_actions([printers])[
}
@@ -454,12 +449,7 @@ do { \
if (yymsg)
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
default:
break;
}
]b4_symbol_actions([destructors])[
}
void