[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] Use b4_type_names for the union type.,
Akim Demaille <=