boost.spiritパーサーを使用して解析する方法を学習しようとしています。私はVisualStudio 2015でWindows 8.1を使用しています。boost.spiritインストールドキュメントからテストプログラムをコンパイルしてインストールしました。boost.spirit.parserを使用しているときにコンパイルエラーを解読できません
私はpaserの使用についてboost.orgのチュートリアルに従っています。
'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>> '
すべてのヘルプは大歓迎されます:私はrule.hppライン304から次のエラーメッセージを取得するコンパイルすると
#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;
}
:私はダブルを解析するために、次のコードを作成しました。ありがとう
'myrule%= double_;' :-D ...私は、標準のC++ライブラリ(そうではない)にそれを作るのを待つことができません。 – 6502
@ 6502なぜそれが起こるのでしょうか(また、EDSL構文の選択にはほとんど間違いがありません。%% 'は風変わりですが、そのセマンティクスはありません;ここでそれを使用する理由はありません) – sehe