В общем, суть такова. Второй день пытаюсь разобраться со спиритом и не понимаю, почему не работает нижеприведенный код. Сообщения компилятора на мысль не наталкивают. Сделано все, вроде, "по учебнику".
Код | #include <vector> #include <string> #include <boost/spirit/include/qi.hpp>
namespace qi = boost::spirit::qi; namespace ascii = boost::spirit::ascii;
template <typename Iterator> struct my_grammar : qi::grammar<Iterator, std::vector<std::string>, ascii::space_type > { my_grammar() : my_grammar::base_type<start> { start = "[\\" >> ascii::string[cout << _val] >> "\\]"; } qi::rule<Iterator, std::vector<std::string>(), ascii::space_type> start; };
int main(int argc, char* argv[]) { std::string text = "\\[ tra-ta-ta \\]"; my_grammar<std::string::iterator> gram; qi::parse(text.begin(), text.end(), gram, ascii::space); return 0; }
|
|