Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Spirit Karma: Alternative generator
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2016-03-01 09:51:24

> I am construction karma::rule<OutputIterator, std::string()> which I
> would like to be either a string or quoted string if the string contains
> spaces.
> Now I think that the rule should be something like:
> rule = (&true[...] << string) | (lit("\"") << string << lit("\""));
> but I've failed to write proper semantic action. How could I obtain
> std::string object reference to write something like:
> (obj.find(" ") == std::string::npos)
> ? Or maybe is there a better way to do the same?

Please keep in mind that semantic actions are executed 'lazily'. That means
that you need to use a function object which executes the semantic code in
its operator()(). The easiest way is to use phoenix::function for that.
Please see the corresponding documentation.

Regards Hartmut

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at