bison-patches
[Top][All Lists]
Advanced

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

[PATCH] Dub make_TOKEN as a public type interface.


From: Akim Demaille
Subject: [PATCH] Dub make_TOKEN as a public type interface.
Date: Mon, 02 Mar 2009 15:31:02 -0000

        * data/c++.m4 (b4_symbol_constructor_declare)
        (b4_symbol_constructor_define): New empty stubs.
        (b4_public_types_declare, b4_public_types_define): Use them.
        * data/lalr1.cc (b4_symbol_constructor_declare)
        (b4_symbol_constructor_declare_)
        (b4_symbol_constructor_define_, b4_symbol_constructor_define):
        Move to...
        * data/variant.hh: here.
        Remove the "b4_variant_if" parts, as variant.hh is loaded only if
        needed.
        * data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
        b4_symbol_constructor_declare, as it is now done by
        b4_public_types_define and b4_public_types_declare.
---
 ChangeLog       |   17 +++++++++++++++
 data/c++.m4     |   15 +++++++++++-
 data/lalr1.cc   |   61 +-----------------------------------------------------
 data/variant.hh |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 91 insertions(+), 61 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index aefc596..bf24312 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
 2009-03-02  Akim Demaille  <address@hidden>
 
+       Dub make_TOKEN as a public type interface.
+       * data/c++.m4 (b4_symbol_constructor_declare)
+       (b4_symbol_constructor_define): New empty stubs.
+       (b4_public_types_declare, b4_public_types_define): Use them.
+       * data/lalr1.cc (b4_symbol_constructor_declare)
+       (b4_symbol_constructor_declare_)
+       (b4_symbol_constructor_define_, b4_symbol_constructor_define):
+       Move to...
+       * data/variant.hh: here.
+       Remove the "b4_variant_if" parts, as variant.hh is loaded only if
+       needed.
+       * data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
+       b4_symbol_constructor_declare, as it is now done by
+       b4_public_types_define and b4_public_types_declare.
+
+2009-03-02  Akim Demaille  <address@hidden>
+
        Coding style changes.
        * data/lalr1.cc (b4_symbol_constructor_declaration_)
        (b4_symbol_constructor_declarations)
diff --git a/data/c++.m4 b/data/c++.m4
index 7465d76..9ec967a 100644
--- a/data/c++.m4
+++ b/data/c++.m4
@@ -186,7 +186,7 @@ m4_define([b4_public_types_declare],
       /// Its token.
       inline token_type token () const;
     };
-]])
+]b4_symbol_constructor_declare])
 
 
 # b4_public_types_define
@@ -281,7 +281,18 @@ m4_define([b4_public_types_define],
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
-]])])
+]])[]dnl
+b4_symbol_constructor_define])
+
+
+# b4_symbol_constructor_declare
+# b4_symbol_constructor_define
+# -----------------------------
+# Declare/define symbol constructors for all the value types.
+# Use at class-level.  Redefined in variant.hh.
+m4_define([b4_symbol_constructor_declare], [])
+m4_define([b4_symbol_constructor_define], [])
+
 
 
 # b4_lhs_value([TYPE])
diff --git a/data/lalr1.cc b/data/lalr1.cc
index b0d14dc..642fd4e 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -114,60 +114,6 @@ m4_popdef([b4_at_dollar])dnl
 m4_popdef([b4_dollar_dollar])dnl
 ])])
 
-# b4_symbol_constructor_declare_(SYMBOL-NUMBER)
-# ---------------------------------------------
-# Declare the overloaded version of make_symbol for the (common) type of
-# these SYMBOL-NUMBERS.  Use at class-level.
-m4_define([b4_symbol_constructor_declare_],
-[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
-[    static inline
-    symbol_type
-    make_[]b4_symbol_([$1], [id]) (dnl
-b4_args(b4_symbol_if([$1], [has_type],
-                     [const b4_symbol([$1], [type])& v]),
-        b4_locations_if([const location_type& l])));
-
-])])])
-
-
-# b4_symbol_constructor_declare
-# -----------------------------
-# Declare symbol constructors for all the value types.
-# Use at class-level.
-m4_define([b4_symbol_constructor_declare],
-[b4_variant_if([
-    // Symbol constructors declarations.
-b4_symbol_foreach([b4_symbol_constructor_declare_])])])
-
-
-
-# b4_symbol_constructor_define_(SYMBOL-NUMBER)
-# --------------------------------------------
-# Define symbol constructor for this SYMBOL-NUMBER.
-m4_define([b4_symbol_constructor_define_],
-[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
-[  b4_parser_class_name::symbol_type
-  b4_parser_class_name::make_[]b4_symbol_([$1], [id]) (dnl
-b4_args(b4_symbol_if([$1], [has_type],
-                     [const b4_symbol([$1], [type])& v]),
-        b4_locations_if([const location_type& l])))
-  {
-    return symbol_type (b4_args([yytranslate_ (token::b4_symbol([$1], [id]))],
-                                b4_symbol_if([$1], [has_type], [v]),
-                                b4_locations_if([l])));
-  }
-
-])])])
-
-
-# b4_symbol_constructor_define
-# ----------------------------
-# Define the overloaded versions of make_symbol for all the value types.
-m4_define([b4_symbol_constructor_define],
-[b4_variant_if([
-  // Implementation of make_symbol for each symbol type.
-b4_symbol_foreach([b4_symbol_constructor_define_])])])
-
 
 # b4_yytranslate_define
 # ---------------------
@@ -287,7 +233,6 @@ do {                                                        
    \
   {
   public:
 ]b4_public_types_declare[
-]b4_symbol_constructor_declare[
     /// Build a parser object.
     ]b4_parser_class_name[ (]b4_parse_param_decl[);
     virtual ~]b4_parser_class_name[ ();
@@ -436,8 +381,7 @@ do {                                                        
    \
   };
 
 ]b4_lex_symbol_if([b4_yytranslate_define
-b4_public_types_define
-b4_symbol_constructor_define])[
+b4_public_types_define])[
 ]b4_namespace_close[
 
 ]b4_percent_define_flag_if([[global_tokens_and_yystype]],
@@ -587,8 +531,7 @@ b4_percent_code_get[]dnl
   | Symbol types.  |
   `---------------*/
 
-]b4_lex_symbol_if([], [b4_public_types_define
-b4_symbol_constructor_define])[
+]b4_lex_symbol_if([], [b4_public_types_define])[
 
   // stack_symbol_type.
   ]b4_parser_class_name[::stack_symbol_type::stack_symbol_type ()
diff --git a/data/variant.hh b/data/variant.hh
index d36d626..0c29f7f 100644
--- a/data/variant.hh
+++ b/data/variant.hh
@@ -217,3 +217,62 @@ m4_define([b4_symbol_value_template],
 [m4_ifval([$2],
           [$1.template as< $2 >()],
           [$1])])
+
+
+
+## ------------- ##
+## make_SYMBOL.  ##
+## ------------- ##
+
+
+# b4_symbol_constructor_declare_(SYMBOL-NUMBER)
+# ---------------------------------------------
+# Declare the overloaded version of make_symbol for the (common) type of
+# these SYMBOL-NUMBERS.  Use at class-level.
+m4_define([b4_symbol_constructor_declare_],
+[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
+[    static inline
+    symbol_type
+    make_[]b4_symbol_([$1], [id]) (dnl
+b4_args(b4_symbol_if([$1], [has_type],
+                     [const b4_symbol([$1], [type])& v]),
+        b4_locations_if([const location_type& l])));
+
+])])])
+
+
+# b4_symbol_constructor_declare
+# -----------------------------
+# Declare symbol constructors for all the value types.
+# Use at class-level.
+m4_define([b4_symbol_constructor_declare],
+[    // Symbol constructors declarations.
+b4_symbol_foreach([b4_symbol_constructor_declare_])])
+
+
+
+# b4_symbol_constructor_define_(SYMBOL-NUMBER)
+# --------------------------------------------
+# Define symbol constructor for this SYMBOL-NUMBER.
+m4_define([b4_symbol_constructor_define_],
+[b4_symbol_if([$1], [is_token], [b4_symbol_if([$1], [has_id],
+[  b4_parser_class_name::symbol_type
+  b4_parser_class_name::make_[]b4_symbol_([$1], [id]) (dnl
+b4_args(b4_symbol_if([$1], [has_type],
+                     [const b4_symbol([$1], [type])& v]),
+        b4_locations_if([const location_type& l])))
+  {
+    return symbol_type (b4_args([yytranslate_ (token::b4_symbol([$1], [id]))],
+                                b4_symbol_if([$1], [has_type], [v]),
+                                b4_locations_if([l])));
+  }
+
+])])])
+
+
+# b4_symbol_constructor_define
+# ----------------------------
+# Define the overloaded versions of make_symbol for all the value types.
+m4_define([b4_symbol_constructor_define],
+[  // Implementation of make_symbol for each symbol type.
+b4_symbol_foreach([b4_symbol_constructor_define_])])
-- 
1.6.2.rc0.35.g1b53





reply via email to

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