Я пытаюсь использовать Духовную библиотеку впервые.Я наслаждаюсь этим до сих пор, но я не могу построить грамматику из предопределенных правил, даже когда пробую примеры, в значительной степени основанные на документации!
Вот суть моей проблемы:
#include <boost/spirit/home/qi.hpp>
using boost::spirit::qi::ascii::space_type;
using boost::spirit::qi::grammar;
using boost::spirit::qi::phrase_parse;
template<typename P>
bool test_parser(char const* input, P const& p) {
char const* f(input);
char const* l(f + strlen(f));
return parse(f, l, p) && f == l;
}
struct my_grammar : grammar<char const*, space_type> {
my_grammar() : base_type(r) {
r = boost::spirit::qi::int_;
}
rule<char const*, space_type> r;
} g;
bool b = test_phrase_parser("5", g);
И это было то, что компилятор говорит:
ошибка: нет соответствующей функции для вызова 'test_phrase_parser (const char [6], ph_files_parsing :: process_parsing :: test_method () ::my_grammar &) '
примечание: кандидат:
примечание: шаблон bool test_phrase_parser (const char *, const P &)
Все работает нормально, если я заменяю
bool b = test_phrase_parser("5", g);
от
bool b = test_phrase_parser("5", boost::spirit::qi::int_);
Большое спасибо всем, кто может помочь.
(Boost версия 1.48)