bison-patches
[Top][All Lists]
Advanced

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

[PATCH 1/5] c++: avoid using the obsolete names


From: Akim Demaille
Subject: [PATCH 1/5] c++: avoid using the obsolete names
Date: Sun, 12 Sep 2021 12:05:45 +0200

* data/skeletons/c++.m4: Don't define obsolete identifiers in the case
of glr2.cc.  Let's not start with technical debt.
* data/skeletons/glr2.cc, data/skeletons/lalr1.cc,
* data/skeletons/variant.hh: Use token_kind_type, not token_type.
* tests/c++.at, tests/local.at: Use value_type, not semantic_type.
---
 data/skeletons/c++.m4     | 29 ++++++++++++++++++-----------
 data/skeletons/glr2.cc    |  2 +-
 data/skeletons/lalr1.cc   |  8 ++++----
 data/skeletons/variant.hh |  4 ++--
 tests/c++.at              |  4 ++--
 tests/local.at            |  2 +-
 6 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4
index 97905d19..31ddb255 100644
--- a/data/skeletons/c++.m4
+++ b/data/skeletons/c++.m4
@@ -227,6 +227,8 @@ m4_define([b4_value_type_declare],
 # Define the public types: token, semantic value, location, and so forth.
 # Depending on %define token_lex, may be output in the header or source file.
 m4_define([b4_public_types_declare],
+[m4_if(b4_skeleton, ["glr2.cc"],
+[b4_value_type_declare],
 [[#ifdef ]b4_api_PREFIX[STYPE
 # ifdef __GNUC__
 #  pragma GCC message "bison: do not #define ]b4_api_PREFIX[STYPE in C++, use 
%define api.value.type"
@@ -236,7 +238,8 @@ m4_define([b4_public_types_declare],
 ]b4_value_type_declare[
 #endif
     /// Backward compatibility (Bison 3.8).
-    typedef value_type semantic_type;]b4_locations_if([
+    typedef value_type semantic_type;
+]])[]b4_locations_if([
     /// Symbol locations.
     typedef b4_percent_define_get([[api.location.type]],
                                   [[location]]) location_type;])[
@@ -262,16 +265,16 @@ m4_define([b4_public_types_declare],
     /// Token kinds.
     struct token
     {
-      ]b4_token_enums[
+      ]b4_token_enums[]m4_if(b4_skeleton, ["glr2.cc"], [], [[
       /// Backward compatibility alias (Bison 3.6).
-      typedef token_kind_type yytokentype;
+      typedef token_kind_type yytokentype;]])[
     };
 
     /// Token kind, as returned by yylex.
-    typedef token::yytokentype token_kind_type;
+    typedef token::token_kind_type token_kind_type;]m4_if(b4_skeleton, 
["glr2.cc"], [], [[
 
     /// Backward compatibility alias (Bison 3.6).
-    typedef token_kind_type token_type;
+    typedef token_kind_type token_type;]])[
 
     /// Symbol kinds.
     struct symbol_kind
@@ -383,10 +386,10 @@ m4_define([b4_symbol_type_define],
       std::string name () const YY_NOEXCEPT
       {
         return ]b4_parser_class[::symbol_name (this->kind ());
-      }]])[
+      }]])[]m4_if(b4_skeleton, ["glr2.cc"], [], [[
 
       /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      symbol_kind_type type_get () const YY_NOEXCEPT;]])[
 
       /// Whether empty.
       bool empty () const YY_NOEXCEPT;
@@ -435,18 +438,18 @@ m4_define([b4_symbol_type_define],
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
-      symbol_kind_type kind () const YY_NOEXCEPT;
+      symbol_kind_type kind () const YY_NOEXCEPT;]m4_if(b4_skeleton, 
["glr2.cc"], [], [[
 
       /// Backward compatibility (Bison 3.6).
-      symbol_kind_type type_get () const YY_NOEXCEPT;
+      symbol_kind_type type_get () const YY_NOEXCEPT;]])[
 
       /// The symbol kind.
       /// \a ]b4_symbol_prefix[YYEMPTY when empty.
       symbol_kind_type kind_;
-    };
+    };]m4_if(b4_skeleton, ["glr2.cc"], [], [[
 
     /// Backward compatibility for a private implementation detail (Bison 3.6).
-    typedef by_kind by_type;
+    typedef by_kind by_type;]])[
 
     /// "External" symbols: returned by the scanner.
     struct symbol_type : basic_symbol<by_kind>
@@ -501,12 +504,14 @@ m4_define([b4_public_types_define],
     (void) v;
     ]b4_symbol_variant([this->kind ()], [value], [YY_MOVE_OR_COPY], [YY_MOVE 
(v)])])[}]])[
 
+]m4_if(b4_skeleton, ["glr2.cc"], [], [[
   template <typename Base>
   ]b4_parser_class[::symbol_kind_type
   ]b4_parser_class[::basic_symbol<Base>::type_get () const YY_NOEXCEPT
   {
     return this->kind ();
   }
+]])[
 
   template <typename Base>
   bool
@@ -566,11 +571,13 @@ m4_define([b4_public_types_define],
     return kind_;
   }
 
+]m4_if(b4_skeleton, ["glr2.cc"], [], [[
   ]b4_inline([$1])[]b4_parser_class[::symbol_kind_type
   ]b4_parser_class[::by_kind::type_get () const YY_NOEXCEPT
   {
     return this->kind ();
   }
+]])[
 ]])
 
 
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
index 4a0a8f9e..8978809a 100644
--- a/data/skeletons/glr2.cc
+++ b/data/skeletons/glr2.cc
@@ -304,7 +304,7 @@ m4_define([b4_shared_declarations],
   public: // FIXME: Private
     /// Convert a scanner token kind \a t to a symbol kind.
     /// In theory \a t should be a token_kind_type, but character literals
-    /// are valid, yet not members of the token_type enum.
+    /// are valid, yet not members of the token_kind_type enum.
     static symbol_kind_type yytranslate_ (int t);
 
 ]b4_parse_error_bmatch(
diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc
index 4c07dcaf..11fcf923 100644
--- a/data/skeletons/lalr1.cc
+++ b/data/skeletons/lalr1.cc
@@ -336,7 +336,7 @@ m4_define([b4_shared_declarations],
 
     /// Convert a scanner token kind \a t to a symbol kind.
     /// In theory \a t should be a token_kind_type, but character literals
-    /// are valid, yet not members of the token_type enum.
+    /// are valid, yet not members of the token_kind_type enum.
     static symbol_kind_type yytranslate_ (int t);
 
 ]b4_parse_error_bmatch(
@@ -637,9 +637,9 @@ m4_if(b4_prefix, [yy], [],
   ]b4_parser_class[::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
   {}
 
-  /*---------------.
-  | symbol kinds.  |
-  `---------------*/
+  /*---------.
+  | symbol.  |
+  `---------*/
 
 ]b4_token_ctor_if([], [b4_public_types_define([cc])])[
 
diff --git a/data/skeletons/variant.hh b/data/skeletons/variant.hh
index b657080f..2a490e8f 100644
--- a/data/skeletons/variant.hh
+++ b/data/skeletons/variant.hh
@@ -470,7 +470,7 @@ m4_define([_b4_symbol_constructor_define],
           b4_symbol_if([$1], [has_type],
                        [b4_symbol([$1], [type]) v]),
           b4_locations_if([location_type l]))[)
-        : super_type (]b4_join([token_type (tok)],
+        : super_type (]b4_join([token_kind_type (tok)],
                                b4_symbol_if([$1], [has_type], [std::move (v)]),
                                b4_locations_if([std::move (l)]))[)
 #else
@@ -479,7 +479,7 @@ m4_define([_b4_symbol_constructor_define],
           b4_symbol_if([$1], [has_type],
                        [const b4_symbol([$1], [type])& v]),
           b4_locations_if([const location_type& l]))[)
-        : super_type (]b4_join([token_type (tok)],
+        : super_type (]b4_join([token_kind_type (tok)],
                                b4_symbol_if([$1], [has_type], [v]),
                                b4_locations_if([l]))[)
 #endif
diff --git a/tests/c++.at b/tests/c++.at
index a9d393c2..0472c47c 100644
--- a/tests/c++.at
+++ b/tests/c++.at
@@ -969,7 +969,7 @@ m4_pushdef([AT_TEST],
 %code
 {
   #include <cstdlib>
-  int yylex (yy::parser::semantic_type *);
+  int yylex (yy::parser::value_type *);
 }
 
 %define parse.error verbose
@@ -1013,7 +1013,7 @@ m4_pushdef([AT_TEST],
 
 // 'a': valid item, 's': syntax error, 'l': lexical error.
 int
-yylex (yy::parser::semantic_type *lval)
+yylex (yy::parser::value_type *lval)
 {
   switch (int res = getchar ())
   {
diff --git a/tests/local.at b/tests/local.at
index adde4e4c..170e5da1 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -378,7 +378,7 @@ m4_pushdef([AT_TOKEN],
 
 
 m4_pushdef([AT_YYSTYPE],
-[AT_CXX_IF([AT_NAMESPACE[::]AT_PARSER_CLASS[::semantic_type]],
+[AT_CXX_IF([AT_NAMESPACE[::]AT_PARSER_CLASS[::value_type]],
                [AT_API_PREFIX[STYPE]])])
 m4_pushdef([AT_YYLTYPE],
 [AT_CXX_IF([AT_NAMESPACE[::]AT_PARSER_CLASS[::location_type]],
-- 
2.32.0




reply via email to

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