mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
c++: improvements on symbol kinds
Instead of
/// (Internal) symbol kind.
enum symbol_kind_type
{
YYNTOKENS = 5, ///< Number of tokens.
YYSYMBOL_YYEMPTY = -2,
YYSYMBOL_YYEOF = 0, // END_OF_FILE
YYSYMBOL_YYERROR = 1, // error
YYSYMBOL_YYUNDEF = 2, // $undefined
YYSYMBOL_TEXT = 3, // TEXT
YYSYMBOL_NUMBER = 4, // NUMBER
YYSYMBOL_YYACCEPT = 5, // $accept
YYSYMBOL_result = 6, // result
YYSYMBOL_list = 7, // list
YYSYMBOL_item = 8 // item
};
generate
/// Symbol kinds.
struct symbol_kind
{
enum symbol_kind_type
{
YYNTOKENS = 5, ///< Number of tokens.
S_YYEMPTY = -2,
S_YYEOF = 0, // END_OF_FILE
S_YYERROR = 1, // error
S_YYUNDEF = 2, // $undefined
S_TEXT = 3, // TEXT
S_NUMBER = 4, // NUMBER
S_YYACCEPT = 5, // $accept
S_result = 6, // result
S_list = 7, // list
S_item = 8 // item
};
};
* data/skeletons/c++.m4 (api.symbol.prefix): Define to S_.
Adjust all the uses.
(b4_public_types_declare): Nest the enum inside 'struct symbol_kind'.
* data/skeletons/glr.cc, data/skeletons/lalr1.cc,
* tests/headers.at, tests/local.at: Adjust.
This commit is contained in:
@@ -700,7 +700,7 @@ b4_parse_error_case([verbose], [[
|
||||
]b4_parser_class[::by_state::type_get () const YY_NOEXCEPT
|
||||
{
|
||||
if (state == empty_state)
|
||||
return ]b4_symbol_prefix[YYEMPTY;
|
||||
return symbol_kind::]b4_symbol_prefix[YYEMPTY;
|
||||
else
|
||||
return YY_CAST (symbol_kind_type, yystos_[+state]);
|
||||
}
|
||||
@@ -725,7 +725,7 @@ b4_parse_error_case([verbose], [[
|
||||
b4_symbol_variant([that.type_get ()],
|
||||
[value], [move], [YY_MOVE (that.value)])])[
|
||||
// that is emptied.
|
||||
that.type = ]b4_symbol_prefix[YYEMPTY;
|
||||
that.type = symbol_kind::]b4_symbol_prefix[YYEMPTY;
|
||||
}
|
||||
|
||||
#if YY_CPLUSPLUS < 201103L
|
||||
@@ -1089,7 +1089,7 @@ b4_dollar_popdef])[]dnl
|
||||
error, discard it. */
|
||||
|
||||
// Return failure if at end of input.
|
||||
if (yyla.type_get () == ]b4_symbol_prefix[YYEOF)
|
||||
if (yyla.type_get () == symbol_kind::]b4_symbol_prefix[YYEOF)
|
||||
YYABORT;
|
||||
else if (!yyla.empty ())
|
||||
{
|
||||
@@ -1131,8 +1131,9 @@ b4_dollar_popdef])[]dnl
|
||||
yyn = yypact_[+yystack_[0].state];
|
||||
if (!yy_pact_value_is_default_ (yyn))
|
||||
{
|
||||
yyn += ]b4_symbol_prefix[YYERROR;
|
||||
if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == ]b4_symbol_prefix[YYERROR)
|
||||
yyn += symbol_kind::]b4_symbol_prefix[YYERROR;
|
||||
if (0 <= yyn && yyn <= yylast_
|
||||
&& yycheck_[yyn] == symbol_kind::]b4_symbol_prefix[YYERROR)
|
||||
{
|
||||
yyn = yytable_[yyn];
|
||||
if (0 < yyn)
|
||||
@@ -1244,7 +1245,8 @@ b4_dollar_popdef])[]dnl
|
||||
for (int yyx = 0; yyx < YYNTOKENS; ++yyx)
|
||||
{
|
||||
symbol_kind_type yysym = YY_CAST (symbol_kind_type, yyx);
|
||||
if (yysym != ]b4_symbol_prefix[YYERROR && yysym != ]b4_symbol_prefix[YYUNDEF
|
||||
if (yysym != symbol_kind::]b4_symbol_prefix[YYERROR
|
||||
&& yysym != symbol_kind::]b4_symbol_prefix[YYUNDEF
|
||||
&& yyparser_.yy_lac_check_ (yysym))
|
||||
{
|
||||
if (!yyarg)
|
||||
@@ -1266,7 +1268,7 @@ b4_dollar_popdef])[]dnl
|
||||
int yychecklim = yylast_ - yyn + 1;
|
||||
int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
|
||||
for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
|
||||
if (yycheck_[yyx + yyn] == yyx && yyx != ]b4_symbol_prefix[YYERROR
|
||||
if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::]b4_symbol_prefix[YYERROR
|
||||
&& !yy_table_value_is_error_ (yytable_[yyx + yyn]))
|
||||
{
|
||||
if (!yyarg)
|
||||
|
||||
Reference in New Issue
Block a user