[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