bison-patches
[Top][All Lists]
Advanced

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

[PATCH 3/4] style: c++: s/type/kind/ where appropriate


From: Akim Demaille
Subject: [PATCH 3/4] style: c++: s/type/kind/ where appropriate
Date: Tue, 28 Apr 2020 08:49:21 +0200

These are internal details.  `type_get ()` is still there to ensure
backward compatibility, `kind ()` being the modern way.

* data/skeletons/c++.m4 (by_type, by_type::type): Rename as...
(by_kind, by_kind::kind_): this.
Adjust dependencies.
---
 TODO                    | 18 +---------------
 data/skeletons/c++.m4   | 48 ++++++++++++++++++++---------------------
 data/skeletons/lalr1.cc |  6 +++---
 3 files changed, 28 insertions(+), 44 deletions(-)

diff --git a/TODO b/TODO
index 7556b20a..5301ba83 100644
--- a/TODO
+++ b/TODO
@@ -1,9 +1,5 @@
 * Bison 3.6
 ** Questions
-*** C++
-We still have occurrences of `type` that should read `kind`, in
-basic_symbol.
-
 *** Java
 - Should i18n be part of the Lexer?  Currently it's a static method of
   Lexer.
@@ -30,9 +26,6 @@ basic_symbol.
 Beware that returning 0 is unclear: does it mean there are no possible
 lookahead, or that there are too many?
 
-** bistromathic
-Beware of portability of __attribute__.
-
 ** YYerror
 yacc.c should `#define YYERRCODE YYerror` in the *.c for sake of the
 projects that used it.  In particular
@@ -58,7 +51,7 @@ token vs terminal, variable vs non terminal.
 
 ** api.token.raw
 The YYUNDEFTOK could be assigned a semantic value so that yyerror could be
-used to report invalid lexemes.  See also the item "$undefined" below.
+used to report invalid lexemes.
 
 ** push parsers
 Consider deprecating impure push parsers.  They add a lot of complexity, for
@@ -489,15 +482,6 @@ move to partial orders (sounds like series/parallel orders 
to me).
 
 This is a prerequisite for modules.
 
-* $undefined
-From Hans:
-- If the Bison generated parser experiences an undefined number in the
-character range, that character is written out in diagnostic messages, an
-addition to the $undefined value.
-
-Suggest: Change the name $undefined to undefined; looks better in outputs.
-
-
 * Pre and post actions.
 From: Florian Krohm <address@hidden>
 Subject: YYACT_EPILOGUE
diff --git a/data/skeletons/c++.m4 b/data/skeletons/c++.m4
index 2f84be3f..8bc70fdf 100644
--- a/data/skeletons/c++.m4
+++ b/data/skeletons/c++.m4
@@ -380,30 +380,30 @@ m4_define([b4_symbol_type_define],
     };
 
     /// Type access provider for token (enum) based symbols.
-    struct by_type
+    struct by_kind
     {
       /// Default constructor.
-      by_type ();
+      by_kind ();
 
 #if 201103L <= YY_CPLUSPLUS
       /// Move constructor.
-      by_type (by_type&& that);
+      by_kind (by_kind&& that);
 #endif
 
       /// Copy constructor.
-      by_type (const by_type& that);
+      by_kind (const by_kind& that);
 
       /// The symbol kind as needed by the constructor.
       typedef token_kind_type kind_type;
 
       /// Constructor from (external) token numbers.
-      by_type (kind_type t);
+      by_kind (kind_type t);
 
       /// Record that this symbol is empty.
       void clear ();
 
       /// Steal the symbol kind from \a that.
-      void move (by_type& that);
+      void move (by_kind& that);
 
       /// The (internal) type number (corresponding to \a type).
       /// \a empty when empty.
@@ -411,14 +411,14 @@ m4_define([b4_symbol_type_define],
 
       /// The symbol kind.
       /// \a ]b4_symbol_prefix[YYEMPTY when empty.
-      symbol_kind_type type;
+      symbol_kind_type kind_;
     };
 
     /// "External" symbols: returned by the scanner.
-    struct symbol_type : basic_symbol<by_type>
+    struct symbol_type : basic_symbol<by_kind>
     {]b4_variant_if([[
       /// Superclass.
-      typedef basic_symbol<by_type> super_type;
+      typedef basic_symbol<by_kind> super_type;
 
       /// Empty symbol.
       symbol_type () {}
@@ -492,44 +492,44 @@ m4_define([b4_public_types_define],
     location = YY_MOVE (s.location);])[
   }
 
-  // by_type.
-  ]b4_inline([$1])b4_parser_class[::by_type::by_type ()
-    : type (symbol_kind::]b4_symbol_prefix[YYEMPTY)
+  // by_kind.
+  ]b4_inline([$1])b4_parser_class[::by_kind::by_kind ()
+    : kind_ (symbol_kind::]b4_symbol_prefix[YYEMPTY)
   {}
 
 #if 201103L <= YY_CPLUSPLUS
-  ]b4_inline([$1])b4_parser_class[::by_type::by_type (by_type&& that)
-    : type (that.type)
+  ]b4_inline([$1])b4_parser_class[::by_kind::by_kind (by_kind&& that)
+    : kind_ (that.kind_)
   {
     that.clear ();
   }
 #endif
 
-  ]b4_inline([$1])b4_parser_class[::by_type::by_type (const by_type& that)
-    : type (that.type)
+  ]b4_inline([$1])b4_parser_class[::by_kind::by_kind (const by_kind& that)
+    : kind_ (that.kind_)
   {}
 
-  ]b4_inline([$1])b4_parser_class[::by_type::by_type (token_kind_type t)
-    : type (yytranslate_ (t))
+  ]b4_inline([$1])b4_parser_class[::by_kind::by_kind (token_kind_type t)
+    : kind_ (yytranslate_ (t))
   {}
 
   ]b4_inline([$1])[void
-  ]b4_parser_class[::by_type::clear ()
+  ]b4_parser_class[::by_kind::clear ()
   {
-    type = symbol_kind::]b4_symbol_prefix[YYEMPTY;
+    kind_ = symbol_kind::]b4_symbol_prefix[YYEMPTY;
   }
 
   ]b4_inline([$1])[void
-  ]b4_parser_class[::by_type::move (by_type& that)
+  ]b4_parser_class[::by_kind::move (by_kind& that)
   {
-    type = that.type;
+    kind_ = that.kind_;
     that.clear ();
   }
 
   ]b4_inline([$1])[]b4_parser_class[::symbol_kind_type
-  ]b4_parser_class[::by_type::kind () const YY_NOEXCEPT
+  ]b4_parser_class[::by_kind::kind () const YY_NOEXCEPT
   {
-    return type;
+    return kind_;
   }
 ]])
 
diff --git a/data/skeletons/lalr1.cc b/data/skeletons/lalr1.cc
index cdf42c6c..81aff234 100644
--- a/data/skeletons/lalr1.cc
+++ b/data/skeletons/lalr1.cc
@@ -752,7 +752,7 @@ m4_if(b4_prefix, [yy], [],
     b4_symbol_variant([that.kind ()],
                       [value], [move], [YY_MOVE (that.value)])])[
     // that is emptied.
-    that.type = symbol_kind::]b4_symbol(-2, kind)[;
+    that.kind_ = symbol_kind::]b4_symbol(-2, kind)[;
   }
 
 #if YY_CPLUSPLUS < 201103L
@@ -968,7 +968,7 @@ b4_dollar_popdef])[]dnl
           {]b4_token_ctor_if([[
             symbol_type yylookahead (]b4_lex[);
             yyla.move (yylookahead);]], [[
-            yyla.type = yytranslate_ (]b4_lex[);]])[
+            yyla.kind_ = yytranslate_ (]b4_lex[);]])[
           }
 #if YY_EXCEPTIONS
         catch (const syntax_error& yyexc)
@@ -987,7 +987,7 @@ b4_dollar_popdef])[]dnl
       // to error recovery.  But do not keep the error token as
       // lookahead, it is too special and may lead us to an endless
       // loop in error recovery. */
-      yyla.type = ]symbol_kind::b4_symbol(2, kind)[;
+      yyla.kind_ = ]symbol_kind::b4_symbol(2, kind)[;
       goto yyerrlab1;
     }
 
-- 
2.26.2




reply via email to

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