感謝來自用戶'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