bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Use b4_type_names for the union type.


From: Akim Demaille
Subject: [PATCH] Use b4_type_names for the union type.
Date: Thu, 13 Nov 2008 05:24:04 -0000

The union used to compute the size of the variant used to iterate over the
type of all the symbols, with a lot of redundancy.  Now iterate over the
lists of symbols having the same type-name.

        * data/lalr1.cc (b4_char_sizeof_): New.
        (b4_char_sizeof): Use it.
        Adjust to be called with a list of numbers instead of a single
        number.
        Adjust its caller for new-line issues.
---
 ChangeLog     |   13 +++++++++++++
 data/lalr1.cc |   20 +++++++++++++-------
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3ea95f1..cd1254c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2008-11-13  Akim Demaille  <address@hidden>
 
+       Use b4_type_names for the union type.
+       The union used to compute the size of the variant used to iterate over 
the
+       type of all the symbols, with a lot of redundancy.  Now iterate over the
+       lists of symbols having the same type-name.
+       
+       * data/lalr1.cc (b4_char_sizeof_): New.
+       (b4_char_sizeof): Use it.
+       Adjust to be called with a list of numbers instead of a single
+       number.
+       Adjust its caller for new-line issues.
+
+2008-11-13  Akim Demaille  <address@hidden>
+
        Define the "identifier" of a symbol.
        Symbols may have several string representations, for instance if they
        have an alias.  What I call its "id" is a string that can be used as
diff --git a/data/lalr1.cc b/data/lalr1.cc
index 01b8166..83fcfdd 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -307,7 +307,14 @@ m4_define([_b4_char_sizeof_dummy],
 dummy[]_b4_char_sizeof_counter])
 
 
-# b4_char_sizeof(SYMBOL-NUM)
+# b4_char_sizeof_(SYMBOL-NUM)
+# ---------------------------
+# A comment describing this symbol.
+m4_define([b4_char_sizeof_],
+[      // b4_symbol([$1], [tag])
+])
+
+# b4_char_sizeof(SYMBOL-NUMS)
 # --------------------------
 # To be mapped on the list of type names to produce:
 #
@@ -315,12 +322,12 @@ dummy[]_b4_char_sizeof_counter])
 #    char dummy2[sizeof(type_name_2)];
 #
 # for defined type names.
-# $3 is doubly-quoted, do not quote it again.
 m4_define([b4_char_sizeof],
-[m4_ifval(b4_symbol([$1], [type_name]),
+[b4_symbol_if([$1], [has_type_name],
 [
-      char address@hidden([b4_symbol([$1], [type_name])])@}; // 
b4_symbol([$1], [tag])])dnl
-])
+m4_map([b4_char_sizeof_], address@hidden)dnl
+      char address@hidden([b4_symbol([$1], [type_name])])@};
+])])
 
 
 m4_pushdef([b4_copyright_years],
@@ -510,8 +517,7 @@ do {                                                        
    \
 ]b4_variant_if(
 [    /// An auxiliary type to compute the largest semantic type.
     union union_type
-    {]m4_map([b4_char_sizeof], m4_defn([b4_symbol_numbers]))[
-    };
+    {]m4_map([b4_char_sizeof], m4_defn([b4_type_names]))[};
 
     /// Symbol semantic values.
     typedef variant<sizeof(union_type)> semantic_type;],
-- 
1.6.0.2.588.g3102





reply via email to

[Prev in Thread] Current Thread [Next in Thread]