]> git.saurik.com Git - bison.git/commitdiff
skeletons: avoid empty switch constructs
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 8 Apr 2013 09:13:22 +0000 (11:13 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 8 Apr 2013 09:17:09 +0000 (11:17 +0200)
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.

data/c.m4
data/glr.cc
data/lalr1.cc

index a1dc2c583a4f5f6b654c10928648a708c7d2aa49..bcafe422600e477fe456dde7761e22a0970596fa 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -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])[
 }
 
 
index 49b4fa1079a5b69b90e34d05d5a14ccf4cebfb3d..73d0f28dd0d120a32645b0076554e0fc6d082b3e 100644 (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])[
   }
 
 
index 68de8b40fec7a2a85aac72998857acd075287b4b..750c3a4bd923aa153b884208567b9f39411a1515 100644 (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