]> git.saurik.com Git - bison.git/commitdiff
Use b4_type_names for the union type.
authorAkim Demaille <demaille@gostai.com>
Tue, 26 Aug 2008 18:25:58 +0000 (20:25 +0200)
committerAkim Demaille <demaille@gostai.com>
Thu, 13 Nov 2008 05:20:59 +0000 (06:20 +0100)
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
data/lalr1.cc

index 3ea95f18124d9c8f215f269145f0b062a6f5e4c3..cd1254c6489945c1b2f5103e57c8ed798bed142a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-11-13  Akim Demaille  <demaille@gostai.com>
+
+       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  <demaille@gostai.com>
 
        Define the "identifier" of a symbol.
index 01b8166acb404b43517a179f993742f730079060..83fcfdd63a5422be3f1b4735b83d1aa5bda687f3 100644 (file)
@@ -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 _b4_char_sizeof_dummy@{sizeof([b4_symbol([$1], [type_name])])@}; // b4_symbol([$1], [tag])])dnl
-])
+m4_map([b4_char_sizeof_], [$@])dnl
+      char _b4_char_sizeof_dummy@{sizeof([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;],