
Untitled
By: a guest on
Jun 26th, 2012 | syntax:
None | size: 0.82 KB | hits: 11 | expires: Never
Boost::Spirit::Qi Auto-rules and conditional actions
struct GenderTally
{
std::vector<std::string> males;
std::vector<std::string> females;
};
m:Steve;
f:Dora;
f:Martha;
m:Joe;
...
BOOST_FUSION_ADAPT_STRUCT(
GenderTally,
(std::vector<std::string>, males)
(std::vector<std::string>, females)
);
rule<Iterator, std::string()> r = +alnum;
rule<Iterator, GenderTally()> g =
*( ("f:" >> r)[phx::push_back(at_c<0>(_val), _1)]
| ("m:" >> r)[phx::push_back(at_c<1>(_val), _1)]
);
struct Gender {
char gender;
std::string name;
};
typedef std::vector<Gender> GenderTally;
BOOST_FUSION_ADAPT_STRUCT(
Gender,
(char, gender)
(std::string, name)
);
rule<Iterator, std::string()> r = +alnum;
rule<Iterator, GenderTally()> g = *(char_('f') >> ':' >> r | char_('m') >> ':' >> r);