我想學會使用boost.spirit解析器進行解析。我使用Windows 8.1和VisualStudio 2015.我已經安裝併成功編譯了boost.spirit安裝文檔中的測試程序,所以我的安裝提升看起來很好。使用boost.spirit.parser時無法解譯編譯錯誤
我一直在關注使用paser的boost.org上的教程。我創建了下面的代碼來解析雙:
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
template <typename Iterator>
bool myParser(Iterator first, Iterator last) {
using qi::double_;
qi::rule<Iterator, double(), ascii::space_type> myrule;
myrule %= double_;
bool r = parse(first, last, myrule, ascii::space);
return r;
}
int main() {
std::string dstr = std::string("2.1");
bool r = myParser(dstr.begin(), dstr.end());
return 0;
}
我編譯時收到以下錯誤消息從rule.hpp線304:
'bool boost::function4<R,T0,T1,T2,T3>::operator()(T0,T1,T2,T3) const': cannot convert argument 4 from 'const boost::spirit::unused_type' to 'const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::space,boost::spirit::char_encoding::ascii>> '
任何幫助將不勝感激。謝謝
'myrule%= double_;':-D ...我迫不及待地想要讓它進入標準C++庫(不)。 – 6502
@6502爲什麼會發生這種情況(對於EDSL語法的選擇錯誤很少,'%='很古怪,但它的語義也是這樣;根本沒有理由在這裏使用) – sehe