chset
#include <boost/spirit.hpp> using namespace boost::spirit; struct Grammar : grammar<Grammar> { std::vector<std::string>& strs; // 略 template<typename ST> struct definition { typedef rule<ST> rule_t; rule_t bad; rule_t good; definition(const Grammar& self){ bad = chset<>("abcde")[push_back_a(self.strs)]; good = (chset<>("abcde") >> eps_p)[push_back_a(self.strs)]; } const rule_t& start() const{ return good; } }; };
なぜかchset<>()にactorを指定してもうまく動作してくれない.
適当にeps_pでもうしろにつけちゃれ!って思ってつけてみたらうまくいった.
それだけです.
しかもこれかなり前にわかったネタw