Нужно сделать небольшой парсер, работающий со строкой двухбайтных символов, решил заюзать boost::spirit. Если не использовать callbacks и определять грамматику непосредственно в вызове parse, то все работает. Чуть посложнее - уже не компилится. #include <iostream> #include <string> #include <boost/spirit/core.hpp> #include <boost/function.hpp> #include <boost/mem_fn.hpp> #include <boost/bind.hpp> using namespace std; using namespace boost; using namespace boost::spirit; typedef unsigned short int my_char; typedef basic_string<my_char> my_string; struct A { A () { typedef boost::function< void (const my_string::iterator&, const my_string::iterator&) > cp_t; cp_t hook_p = bind( mem_fn(&A::hook1), *this, _1, _2); r = chlit<my_char>('1') >> chlit<my_char>('2')[hook_p]; }; bool operator() (const my_string& ms) { return parse(ms.begin(), ms.end(), r).full; } void hook1 (const my_string::iterator& it1, const my_string::iterator& it2) { cout << "A::hook1 " << *it1 << endl; } rule<> r; }; int main(void) { my_char ar[] = {'1', '2', 0}; A()(my_string(ar)); }
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от ival
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум boost::signal disconnect по slot_function_type (2009)
- Форум Помогите с boost::spirit (2008)
- Форум [C++][boost::signals2] Каковы сигнатуры операторов operator () в плюсах? (2010)
- Форум [C++, boost::spirit::phoenix, std::get] Обернуть std::get в phoenix-овскую function (2011)
- Форум Как передать phoenix-функцию в качестуе параметра функции (2012)
- Форум [C++, boost::ublas] выражения со статическими константами приводят к ошибке компоновщика (2008)
- Форум boost.asio, boost.serialization (2010)
- Форум Изучаю Boost::singleton (2015)
- Форум Не компилируется std::not1(boost::mem_fn(...)) (2005)
- Форум C++/exceptions - деление на ноль не ловиццо, почему? (2006)