diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2021-09-07 06:41:54 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2021-09-12 12:03:58 +0200 |
commit | 85f5e3b9d5188b093ad9e6b382b77044b9bdec1f (patch) | |
tree | f299f3c285697593ea649e1b72494627b9be4f4c | |
parent | c3a4686a0318333af08d3e6478a6313c03d8459b (diff) | |
download | bison-85f5e3b9d5188b093ad9e6b382b77044b9bdec1f.tar.gz |
c++: avoid using the obsolete names
* 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.
-rw-r--r-- | data/skeletons/c++.m4 | 29 | ||||
-rw-r--r-- | data/skeletons/glr2.cc | 2 | ||||
-rw-r--r-- | data/skeletons/lalr1.cc | 8 | ||||
-rw-r--r-- | data/skeletons/variant.hh | 4 | ||||
-rw-r--r-- | tests/c++.at | 4 | ||||
-rw-r--r-- | 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 @@ AT_DATA_GRAMMAR([[input.yy]], %code { #include <cstdlib> - int yylex (yy::parser::semantic_type *); + int yylex (yy::parser::value_type *); } %define parse.error verbose @@ -1013,7 +1013,7 @@ AT_DATA_SOURCE([scan.cc], // '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]], |