感谢来自用户'sehe'的帮助,我现在处于可以编译我的ast文件的位置 。将语义动作添加到Boost Spirit分析器时编译时出错
(请在这里看到:https://stackoverflow.com/a/29301655/1835623)
现在从JEDEC文件中提取的数据字段我需要解析这样的长相之一:
“12345 0000100101010111010110101011010”
我已经建立了一个解析器要消费这些领域:
std::string input("12345 010101010101010101010");
std::string::iterator st = input.begin();
qi::parse(st, input.end(), qi::ulong_ >> ' ' >> *qi::char_("01"));
显然不是那么复杂。现在我的问题是我想使用语义动作将ulong_和二进制字符串分配给一些局部变量。这是我做过什么:
using boost::phoenix::ref;
std::string input("12345 010101010101010101010");
std::string::iterator st = input.begin();
uint32_t idx;
std::string sequence;
qi::parse(st, input.end(),
qi::ulong_[ref(idx) = qi::_1] >>
' ' >>
*qi::char_("01")[ref(sequence) += qi::_2]);
但不幸的是,这并不甚至编译和错误消息我得到 是没有帮助的(至少我)?我猜这是简单的...但我现在绝望地卡住了。 ?:-(
是否有人有一个想法是什么,我做错了
如果包括SSCCE人就要有一个更好的时间猜测的错误。因为他们可能对你没有帮助,但这种缺乏通常不会有帮助。你碰巧在这里有我,但大多数人会忽略这些问题。并有很好的理由。 – sehe 2015-03-31 12:33:03
你是对的,我刚刚省略了一个完整的例子,因为我猜这肯定是我这次错过的小事。但我会按照你的建议,下次更详细。感谢您指出了这一点! – fhw72 2015-03-31 13:04:08