15 #include <boost/spirit/include/classic_core.hpp>
16 #include <boost/spirit/include/classic_push_back_actor.hpp>
29 void operator()(
const char)
const { conjInfo_.back().mode_ = mode_; }
36 typedef scanner_policies<skip_parser_iteration_policy<nothing_parser, iteration_policy>, match_policy, action_policy>
41 bool decayParser(
const string& iValue, vector<ConjInfo>& oStrings) {
44 Rule_1 label = ((+alnum_p) >> *ch_p(
':') >> *ch_p(
'_') >> *alnum_p)[push_back_a(oStrings)];
45 Rule_1 conj = (ch_p(
'@') >> !((ch_p(
'b') >> ch_p(
'a') >> ch_p(
'r')[
ModeSetter(oStrings, ConjInfo::kBar)]) |
47 ch_p(
'-')[
ModeSetter(oStrings, ConjInfo::kMinus)]));
49 return parse(iValue.c_str(), ((
label >> !conj) % blank_p), nothing_p).
full;