* 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>
+
+ 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>
TODO: statistics.
2009-09-16 Akim Demaille <demaille@gostai.com>
TODO: statistics.
/// Default constructor.
inline symbol_type ();
/// 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]))[);
[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;
b4_locations_if([const location_type& l]))[);
/// The symbol type.
int type;
- /// Return the type corresponding to this state.
inline int type_get_ () const;
inline int type_get_ () const;
inline token_type token () const;
};
]b4_symbol_constructor_declare])
inline token_type token () const;
};
]b4_symbol_constructor_declare])
inline
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
inline
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
b4_locations_if([const location_type& l]))[)
: super_type (]b4_locations_if([l])[)
b4_locations_if([const location_type& l]))[)
: super_type (]b4_locations_if([l])[)
+ , type (yytranslate_ (t))
{
}
inline
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
{
}
inline
]b4_parser_class_name[::symbol_type::symbol_type (]b4_args(
[const semantic_type& v],
b4_locations_if([const location_type& l]))[)
: super_type (v]b4_locations_if([, l])[)
[const semantic_type& v],
b4_locations_if([const location_type& l]))[)
: super_type (v]b4_locations_if([, l])[)
+ , type (yytranslate_ (t))
])
# 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.
m4_define([b4_integral_parser_table_define],
[ const b4_int_type_for([$2])
# Define "parser::yy<TABLE-NAME>_" which contents is CONTENT.
m4_define([b4_integral_parser_table_define],
[ const b4_int_type_for([$2])
/// The state.
state_type state;
/// The 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;
};
[const b4_symbol([$1], [type])& v]),
b4_locations_if([const location_type& l])))
{
[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])));
}
b4_symbol_if([$1], [has_type], [v]),
b4_locations_if([l])));
}