]> git.saurik.com Git - bison.git/commitdiff
* data/c.m4 (b4_null, b4_case): Define.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 12 Sep 2006 17:26:02 +0000 (17:26 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 12 Sep 2006 17:26:02 +0000 (17:26 +0000)
* src/output.c (prepare_symbols): Use b4_null.
(user_actions_output): Use b4_case.

ChangeLog
data/c.m4
src/output.c

index 16802bb43d374b930ec4e930a77dab954026f874..0e17efaad142da2b331a6689d963138b68c1e4ac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-12  Paolo Bonzini  <bonzini@gnu.org>  (tiny change)
+
+       * data/c.m4 (b4_null, b4_case): Define.
+       * src/output.c (prepare_symbols): Use b4_null.
+       (user_actions_output): Use b4_case.
+
 2006-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 
        * data/glr.c (b4_shared_declarations): Put start-header first,
index 2ef88b159b3dcf05dd1666a468e85bd33e1732e3..ffb04c202fa2bc87136615ad603a733285c86c5e 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -81,7 +81,6 @@ m4_define([b4_identification],
 ])
 
 
-
 ## ---------------- ##
 ## Default values.  ##
 ## ---------------- ##
@@ -100,7 +99,6 @@ m4_define_default([b4_location_initial_line],   [1])
 ## Pure/impure interfaces.  ##
 ## ------------------------ ##
 
-
 # b4_user_args
 # ------------
 m4_define([b4_user_args],
@@ -137,11 +135,11 @@ m4_define([b4_parse_param_use],
 ])dnl
 ])
 
+
 ## ------------ ##
 ## Data Types.  ##
 ## ------------ ##
 
-
 # b4_ints_in(INT1, INT2, LOW, HIGH)
 # ---------------------------------
 # Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise.
@@ -173,6 +171,17 @@ m4_define([b4_int_type_for],
 [b4_int_type($1_min, $1_max)])
 
 
+## ---------##
+## Values.  ##
+## ---------##
+
+# b4_null
+---------
+# Return a null pointer constant.  NULL infringes on the user name
+# space in C, so use 0 rather than NULL.
+m4_define([b4_null], [0])
+
+
 ## ------------------ ##
 ## Decoding options.  ##
 ## ------------------ ##
@@ -458,6 +467,13 @@ b4_define_user_code([stype])
 ## User actions.  ##
 ## -------------- ##
 
+# b4_case(LABEL, STATEMENTS)
+# --------------------------
+m4_define([b4_case],
+[  case $1:
+$2
+    break;])
+
 # b4_symbol_actions(FILENAME, LINENO,
 #                   SYMBOL-TAG, SYMBOL-NUM,
 #                   SYMBOL-ACTION, SYMBOL-TYPENAME)
index 5aa029ec49f46eba51a0843bfeafbe44f43ea859..1a7769df6b084ea9cd1d9a7b10f2c7527cf1cf9c 100644 (file)
@@ -176,9 +176,7 @@ prepare_symbols (void)
        obstack_1grow (&format_obstack, ',');
        j += width;
       }
-    /* Add a NULL entry to list of tokens (well, 0, as NULL might not be
-       defined).  */
-    obstack_sgrow (&format_obstack, " 0");
+    obstack_sgrow (&format_obstack, " ]b4_null[");
 
     /* Finish table and store. */
     obstack_1grow (&format_obstack, 0);
@@ -290,20 +288,16 @@ user_actions_output (FILE *out)
 {
   rule_number r;
 
-  fputs ("m4_define([b4_actions], \n[[", out);
+  fputs ("m4_define([b4_actions], \n[", out);
   for (r = 0; r < nrules; ++r)
     if (rules[r].action)
       {
-       fprintf (out, "  case %d:\n", r + 1);
-
-       fprintf (out, "]b4_syncline(%d, ",
+       fprintf (out, "b4_case(%d, [b4_syncline(%d, ", r + 1,
                 rules[r].action_location.start.line);
        escaped_output (out, rules[r].action_location.start.file);
-       fprintf (out, ")[\n");
-       fprintf (out, "    %s\n    break;\n\n",
-                rules[r].action);
+       fprintf (out, ")\n[    %s]])\n\n", rules[r].action);
       }
-  fputs ("]])\n\n", out);
+  fputs ("])\n\n", out);
 }
 
 /*--------------------------------------.