我第一次尝试使用 Spirit 库。到目前为止,我很享受它,但我发现自己无法从预定义的规则构建语法,即使在尝试受文档启发的示例时也是如此!
这是我的问题的核心:
#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&)'</p>
注:候选人是:
注意:模板 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_);
非常感谢任何可以提供帮助的人。
(升压版本为 1.48)