c++: be compatible with the pre-3.6 way to get a symbol's kind

Reported by Pramod Kumbhar.
https://lists.gnu.org/r/bug-bison/2020-05/msg00025.html

* data/skeletons/c++.m4: here.
This commit is contained in:
Akim Demaille
2020-05-03 15:00:00 +02:00
parent 6e2de439e6
commit eea56d70d9

View File

@@ -259,14 +259,14 @@ m4_define([b4_public_types_declare],
struct token struct token
{ {
]b4_token_enums[ ]b4_token_enums[
/// Backward compatibility alias. /// Backward compatibility alias (Bison 3.6).
typedef token_kind_type yytokentype; typedef token_kind_type yytokentype;
}; };
/// Token kind, as returned by yylex. /// Token kind, as returned by yylex.
typedef token::yytokentype token_kind_type; typedef token::yytokentype token_kind_type;
/// Backward compatibility alias. /// Backward compatibility alias (Bison 3.6).
typedef token_kind_type token_type; typedef token_kind_type token_type;
/// Symbol kinds. /// Symbol kinds.
@@ -357,7 +357,7 @@ m4_define([b4_symbol_type_define],
Base::clear (); Base::clear ();
} }
/// Backward compatibility. /// Backward compatibility (Bison 3.6).
symbol_kind_type type_get () const YY_NOEXCEPT; symbol_kind_type type_get () const YY_NOEXCEPT;
/// Whether empty. /// Whether empty.
@@ -409,12 +409,15 @@ m4_define([b4_symbol_type_define],
/// \a empty when empty. /// \a empty when empty.
symbol_kind_type kind () const YY_NOEXCEPT; symbol_kind_type kind () const YY_NOEXCEPT;
/// Backward compatibility (Bison 3.6).
symbol_kind_type type_get () const YY_NOEXCEPT;
/// The symbol kind. /// The symbol kind.
/// \a ]b4_symbol_prefix[YYEMPTY when empty. /// \a ]b4_symbol_prefix[YYEMPTY when empty.
symbol_kind_type kind_; symbol_kind_type kind_;
}; };
/// Backward compatibility for a private implementation detail. /// 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. /// "External" symbols: returned by the scanner.
@@ -534,6 +537,12 @@ m4_define([b4_public_types_define],
{ {
return kind_; return kind_;
} }
]b4_inline([$1])[]b4_parser_class[::symbol_kind_type
]b4_parser_class[::by_kind::type_get () const YY_NOEXCEPT
{
return this->kind ();
}
]]) ]])