Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Boost.Spirit.Qi не работает пример


Автор: NumLock 19.4.2011, 14:56
В общем, суть такова. Второй день пытаюсь разобраться со спиритом и не понимаю, почему не работает нижеприведенный код. Сообщения компилятора на мысль не наталкивают. Сделано все, вроде, "по учебнику".

Код

#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;
}

Автор: NumLock 19.4.2011, 16:29
Исправил
Код

... base_type<start>

на
Код

... base_type(start)


Не помогло.

Автор: NumLock 20.4.2011, 09:16
Поговорил сам с собой.  smile 

Если кому интересно, то дело было в том, что 9-ой строке нужны были скобки после 
Код

std::vector<std::string>
.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)