2
我想解析文本文件中的浮點數並將其插入符號表中;解析器和符號表由spirit :: qi提供。將boost :: phoenix :: bind與boost :: spirit :: qi :: symbols :: add一起使用
這裏是我的代碼:
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>
#include <stdint.h>
#include <iostream>
#include <string>
template<typename VTYPE>
struct VTable : boost::spirit::qi::symbols<char, VTYPE> {
VTable() {} // empty
};
int main() {
using boost::spirit::qi::_1;
using boost::spirit::qi::eps;
using boost::spirit::qi::rule;
using boost::spirit::qi::ascii::space;
using boost::spirit::qi::space_type;
using boost::spirit::qi::real_parser;
using boost::spirit::qi::int_parser;
using boost::spirit::qi::strict_real_policies;
VTable<double> floatDecs;
floatDecs.add("hallo", 15.26)("duDa", 18.5);
const std::string some = "some";
rule<std::string::iterator, double> value = real_parser<double, strict_real_policies<double>>() [ boost::phoenix::bind(&VTable<double>::add, floatDecs, boost::phoenix::cref(some), _1) ];
std::cout << boost::spirit::qi::phrase_parse(test.begin(), test.end(), value, space);
return 0;
}
在這裏的問題在於升壓::鳳::綁定,但我不知道如何解決這個問題(我是相當新的這個庫)。
[如何在語法中添加qi :: symbols?](http://stackoverflow.com/questions/8780604/how-to-add-qisymbols-in-grammariterator-雙倍) –
sehe
@se答案中的綁定表達式比我的可怕性要小得多:p。 – 2013-01-14 10:54:01
你真的認爲有些[]是數組嗎?這看起來不像我會好像它會編譯 – FatalFlaw