boost-spirit-qi

    2熱度

    1回答

    我想分析以下字符串:id=1;entry1=[A,B,D];entry2=[bla,blubb];factor=[1,5]! 我的解析器: struct Entry { uint32_t id; std::vector<std::string> entry1; std::vector<std::string> entry2; bool useFactor

    0熱度

    1回答

    我有我的解析器解析不平等,工作正常以下規則: rel = sum [ _val = _1 ] >> *(('<' >> sum [_val = _val < _1]) | ('>' >> sum [_val = _val > _1])); 現在,我想補充的<=和>=運營商。所以我嘗試以下方法: rel = sum [ _val = _1 ] >> *(('<'

    2熱度

    1回答

    我有這樣的語法傳遞給phrase_parse() double_[push_back(phoenix::ref(v), _1)] >> *(*blank >> double_[push_back(phoenix::ref(v), _1)]) 第二個表達式開始*(*blank,找出0或多次出現的 「雙」。在我的情況下,我想確保它恰好匹配6次。是否有可能以助推的精神來做到這一點?

    1熱度

    1回答

    我在過去的幾個月中經常使用spirit::qi。但是,這次我得到了一個段錯誤,我真的無法理解。 我已經將它減少到極小的測試用例,語法定義是12行代碼。 這種感覺很像earlier question,但在那裏的解決方案,將.alias()添加到一些終端,以便qi不復制它們,似乎並沒有解決這個問題。 我擔心這裏有一些基本的東西我不知道,因爲我已經設法讓語法更加複雜,而不是完全按照我期望的方式進行測試。

    1熱度

    2回答

    具體而言,使用語法g,我該如何解析字符串s?我應該給我什麼論據?我嘗試了很多電話,總是遇到錯誤。 此外,由於我不確定哪一個我稍後會用到,使用phrase_parse會有什麼區別嗎? namespace qi = boost::spirit::qi; int main() { My_grammar<std::string::const_iterator> g; std::str

    1熱度

    1回答

    解析器 namespace qi = boost::spirit::qi; template<typename T> class action { public: action(std::vector<std::shared_ptr<part>>& parts) : m_parts{ parts } {} void

    3熱度

    2回答

    我正在爲一種輸入文件編寫解析器。輸入文件看起來像: [CalculationBlock] CalculationTitle="Test Parser Input System" , MatchingRadius=25.0, StepSize=0.01,ProblemType=RelSchroedingerEqn MaxPartialWaveJ=800, SMatConv=10E-8 Part

    1熱度

    1回答

    我正在繼續學習Boost精神庫,並對我無法編譯的示例產生comile問題。示例的來源可以在這裏找到:source place。 您也可以看看這個代碼,並在Coliru #include <boost/config/warning_disable.hpp> #include <boost/spirit/include/lex_lexertl.hpp> //#define BOOST_SPIRI

    2熱度

    1回答

    我試圖解析單獨的形式「A + C」或「A」的附加表達式。一些測試後,我意識到,這個問題顯然是我使用可選的解析器,所以爲了舉例: qi::rule<string::iterator, string()> Test; Test = ( qi::string("A")[qi::_val= qi::_1] >> -( qi::string("B")[qi::_val +

    1熱度

    1回答

    我在靈魂:: qi的頭上,需要一些幫助。我試圖解析一個短語的形式爲: (wheels=4 & chassis=metal & engine=(cylinders=8 & volume=6209)) ...到嵌套結構: class dict : public std::map<std::string, boost::variant<dict, std::string>> ...其中car_d