From: Akim Demaille Date: Wed, 9 Sep 2009 21:09:22 +0000 (+0200) Subject: lalr1.cc: factor the yytranslate_ invocation in make_SYMBOLS. X-Git-Tag: v2.7.90~772 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/2b08bcebf082a2417ef5706b5ae0664ce844f16e?ds=inline 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. --- diff --git a/ChangeLog b/ChangeLog index 70e89b77..1182da7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-09-16 Akim Demaille + + 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 TODO: statistics. diff --git a/data/c++.m4 b/data/c++.m4 index 3157e47b..22b3375a 100644 --- a/data/c++.m4 +++ b/data/c++.m4 @@ -178,21 +178,22 @@ m4_define([b4_public_types_declare], /// Default constructor. inline symbol_type (); - /// Constructor. - inline symbol_type (]b4_args([int t], + /// Constructor for tokens with semantic value. + inline symbol_type (]b4_args([token_type t], [const semantic_type& v], 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]))[); /// The symbol type. int type; - /// Return the type corresponding to this state. + /// The symbol type. inline int type_get_ () const; - /// Its token. + /// The token. inline token_type token () const; }; ]b4_symbol_constructor_declare]) @@ -269,20 +270,20 @@ m4_define([b4_public_types_define], inline ]b4_parser_class_name[::symbol_type::symbol_type (]b4_args( - [int t], + [token_type t], b4_locations_if([const location_type& l]))[) : super_type (]b4_locations_if([l])[) - , type (t) + , type (yytranslate_ (t)) { } inline ]b4_parser_class_name[::symbol_type::symbol_type (]b4_args( - [int t], + [token_type t], [const semantic_type& v], b4_locations_if([const location_type& l]))[) : super_type (v]b4_locations_if([, l])[) - , type (t) + , type (yytranslate_ (t)) { } diff --git a/data/lalr1.cc b/data/lalr1.cc index ac2fa35b..1a2777e9 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -29,7 +29,7 @@ m4_define([b4_integral_parser_table_declare], ]) # b4_integral_parser_table_define(TABLE-NAME, CONTENT, COMMENT) -# --------------------------------------------- +# ------------------------------------------------------------- # Define "parser::yy_" which contents is CONTENT. m4_define([b4_integral_parser_table_define], [ const b4_int_type_for([$2]) @@ -321,7 +321,7 @@ do { \ /// The state. state_type state; - /// Return the type corresponding to this state. + /// The type (corresponding to \a state). inline int type_get_ () const; }; diff --git a/data/variant.hh b/data/variant.hh index ae26f5b8..31af62b3 100644 --- a/data/variant.hh +++ b/data/variant.hh @@ -262,7 +262,7 @@ b4_args(b4_symbol_if([$1], [has_type], [const b4_symbol([$1], [type])& v]), 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_locations_if([l]))); }