mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
lalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS.
* data/c++.m4, data/lalr1.cc (parser::symbol_type): Change the constructor to take a token_type instead of the (internal) symbol number. Call yytranslate_. * data/variant.hh (b4_symbol_constructor_define_): Therefore, don't call yytranslate_ here.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,3 +1,13 @@
|
|||||||
|
2009-09-16 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
|
lalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS.
|
||||||
|
* data/c++.m4, data/lalr1.cc (parser::symbol_type): Change the
|
||||||
|
constructor to take a token_type instead of the (internal) symbol
|
||||||
|
number.
|
||||||
|
Call yytranslate_.
|
||||||
|
* data/variant.hh (b4_symbol_constructor_define_): Therefore,
|
||||||
|
don't call yytranslate_ here.
|
||||||
|
|
||||||
2009-09-16 Akim Demaille <demaille@gostai.com>
|
2009-09-16 Akim Demaille <demaille@gostai.com>
|
||||||
|
|
||||||
TODO: statistics.
|
TODO: statistics.
|
||||||
|
|||||||
19
data/c++.m4
19
data/c++.m4
@@ -178,21 +178,22 @@ m4_define([b4_public_types_declare],
|
|||||||
/// Default constructor.
|
/// Default constructor.
|
||||||
inline symbol_type ();
|
inline symbol_type ();
|
||||||
|
|
||||||
/// Constructor.
|
/// Constructor for tokens with semantic value.
|
||||||
inline symbol_type (]b4_args([int t],
|
inline symbol_type (]b4_args([token_type t],
|
||||||
[const semantic_type& v],
|
[const semantic_type& v],
|
||||||
b4_locations_if([const location_type& l]))[);
|
b4_locations_if([const location_type& l]))[);
|
||||||
|
|
||||||
inline symbol_type (]b4_args([int t],
|
/// Constructor for valueless tokens.
|
||||||
|
inline symbol_type (]b4_args([token_type t],
|
||||||
b4_locations_if([const location_type& l]))[);
|
b4_locations_if([const location_type& l]))[);
|
||||||
|
|
||||||
/// The symbol type.
|
/// The symbol type.
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
/// Return the type corresponding to this state.
|
/// The symbol type.
|
||||||
inline int type_get_ () const;
|
inline int type_get_ () const;
|
||||||
|
|
||||||
/// Its token.
|
/// The token.
|
||||||
inline token_type token () const;
|
inline token_type token () const;
|
||||||
};
|
};
|
||||||
]b4_symbol_constructor_declare])
|
]b4_symbol_constructor_declare])
|
||||||
@@ -269,20 +270,20 @@ m4_define([b4_public_types_define],
|
|||||||
|
|
||||||
inline
|
inline
|
||||||
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
|
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
|
||||||
[int t],
|
[token_type t],
|
||||||
b4_locations_if([const location_type& l]))[)
|
b4_locations_if([const location_type& l]))[)
|
||||||
: super_type (]b4_locations_if([l])[)
|
: super_type (]b4_locations_if([l])[)
|
||||||
, type (t)
|
, type (yytranslate_ (t))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
|
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
|
||||||
[int t],
|
[token_type t],
|
||||||
[const semantic_type& v],
|
[const semantic_type& v],
|
||||||
b4_locations_if([const location_type& l]))[)
|
b4_locations_if([const location_type& l]))[)
|
||||||
: super_type (v]b4_locations_if([, l])[)
|
: super_type (v]b4_locations_if([, l])[)
|
||||||
, type (t)
|
, type (yytranslate_ (t))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ m4_define([b4_integral_parser_table_declare],
|
|||||||
])
|
])
|
||||||
|
|
||||||
# b4_integral_parser_table_define(TABLE-NAME, CONTENT, COMMENT)
|
# b4_integral_parser_table_define(TABLE-NAME, CONTENT, COMMENT)
|
||||||
# ---------------------------------------------
|
# -------------------------------------------------------------
|
||||||
# Define "parser::yy<TABLE-NAME>_" which contents is CONTENT.
|
# Define "parser::yy<TABLE-NAME>_" which contents is CONTENT.
|
||||||
m4_define([b4_integral_parser_table_define],
|
m4_define([b4_integral_parser_table_define],
|
||||||
[ const b4_int_type_for([$2])
|
[ const b4_int_type_for([$2])
|
||||||
@@ -321,7 +321,7 @@ do { \
|
|||||||
/// The state.
|
/// The state.
|
||||||
state_type state;
|
state_type state;
|
||||||
|
|
||||||
/// Return the type corresponding to this state.
|
/// The type (corresponding to \a state).
|
||||||
inline int type_get_ () const;
|
inline int type_get_ () const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ b4_args(b4_symbol_if([$1], [has_type],
|
|||||||
[const b4_symbol([$1], [type])& v]),
|
[const b4_symbol([$1], [type])& v]),
|
||||||
b4_locations_if([const location_type& l])))
|
b4_locations_if([const location_type& l])))
|
||||||
{
|
{
|
||||||
return symbol_type (b4_args([yytranslate_ (token::b4_symbol([$1], [id]))],
|
return symbol_type (b4_args([token::b4_symbol([$1], [id])],
|
||||||
b4_symbol_if([$1], [has_type], [v]),
|
b4_symbol_if([$1], [has_type], [v]),
|
||||||
b4_locations_if([l])));
|
b4_locations_if([l])));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user