Akim Demaille wrote:

> Wrt to the symbol constructor, you are right to be worried: I don't
> consider it (so far?) to be part of the public API.  I do understand
> something like it is needed, but I don't like that it looks safe
> to use.
> 
> Would you be ok with parser::unsafe_make_symbol, or something like
> this?

Sure, though for my taste "unsafe" sounds a bit harsh, perhaps
"unchecked"? If you put in the next release, I'll change my code to
use it.

Here's what I had as "make_token" in my patches, now renamed as
"unchecked_make_symbol", perhaps you can use it as is:

In b4_symbol_constructor_declare:

  static inline
  symbol_type
  unchecked_make_symbol (token_type type, b4_locations_if([const location_type& 
l, ])semantic_type&& v = { });

In b4_symbol_constructor_define:

  b4_parser_class_name::symbol_type
  b4_parser_class_name::unchecked_make_symbol (token_type type, 
b4_locations_if([const location_type& l, ])semantic_type&& v)
  {
    return symbol_type (type, std::move (v)b4_locations_if([, l]));
  }

Cheers,
Frank

Reply via email to