réutilise variable analysée avec boost karma

J’ai une base de code qui est tout à fait équivalente au code ci-dessous. J’essaie de générer un fichier texte avec deux fois le contenu d’une variable. Je pense que la réponse se trouve dans les actions sémantiques et _a et _val mais je ne parviens pas à passer à travers même avec la documentation.

Comment allez-vous avoir: “toto” en str et sortie: toto quelques trucs toto

comment réutiliser une variable analysée dans le karma?

struct data { std::ssortingng str; }; BOOST_FUSION_ADAPT_STRUCT( data, (std::ssortingng, str) ) template  struct data: karma::grammar { data():data::base_type(start) { start = karma::ssortingng << karma::lit("some stuff") << karma::string; //Second string is in fact the first one } karma::rule start; }; 

Solution (selon les messages ci-dessous 🙂

 #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  namespace ast { struct data { std::ssortingng str; }; } BOOST_FUSION_ADAPT_STRUCT( ast::data, (std::ssortingng, str) ) namespace karma = boost::spirit::karma; namespace parser { template  struct data: karma::grammar { data():data::base_type(start) { start = karma::ssortingng[karma::_1 = boost::phoenix::at_c(karma::_val)] << karma::lit("some stuff") << karma::string[karma::_1 = boost::phoenix::at_c(karma::_val)] ; } karma::rule start; }; } main() { ast::data d; d.str = "toto"; std::ssortingng generated; typedef std::back_insert_iterator iterator_type; parser::data d_p; iterator_type sink(generated); karma::generate(sink, d_p, d); std::cout << generated << std::endl; } 

Cela devrait faire l’affaire:

 start = karma::ssortingng[karma::_1 = karma::_val] << karma::lit("some stuff") << karma::string[karma::_1 = karma::_val];