boost-spirit-qi

    5熱度

    1回答

    我無法獲得語法工作,所以我簡化了它,直到它只解析一個整數。仍然無法讓它工作。這是下面的語法: template<typename Iterator> struct rangeGrammar : qi::grammar<Iterator, int()> { rangeGrammar() : rangeGrammar::base_type(number) {

    3熱度

    4回答

    對於字母數字的詞,我的詞法如下。 attributes = lexeme [+(boost :: spirit :: qi :: alpha | boost :: spirit :: qi :: digit)]; 我希望有一個語法規則,可以跳過任何其他不適用於此規則的字符,並將這些字符放入向量中。 例如:輸入:STR1 + STR2%STR3()STR4 = STR5 + STR6 outpu

    1熱度

    2回答

    我是一個精神初學者 我想使用spirit將一個英制字符串值解析爲一個結構體。 輸入應該接受以下語法: 5'3"1/2 5'1/2 3"1/2 的struct imp_constant看起來是這樣,請注意以下流運算符,因爲這符不,我會打印結果: struct imp_constant { explicit imp_constant(unsigned i

    5熱度

    1回答

    我試圖使用升壓精神框架來定義我自己的語法,我定義這樣的匹配規則: value = ( char_('"') >> (*qi::lexeme[ char_('\\') >> char_('\\') | char_('\\') >> char_('"') | graph - char_('"') | char_('

    2熱度

    1回答

    我正在嘗試將一個簡單的命令行解析器與SPIRIT放在一起,而沒有語義操作。 我正在使用BOOST 1.52,但我想避免使用C++ 11功能。語法的語法如下: [-p num1] [-j] [--jobs num2] str1 str2 可選參數的順序可以是任意的。我成功解析了可選參數。一旦我添加了額外的強制性兩個字符串分析器,就會中斷。當我嘗試明確寫下「rstart」屬性並避免使用「auto」

    4熱度

    1回答

    如何在規則開始時檢測到錯誤?例如,請考慮文檔中包含的Mini XML example。如果我喂解析器是這樣的: <element>this is an error<element> 然後我得到: 錯誤!期待在這裏:「」 錯誤!期待在這裏:「」 解析失敗。 這很好,但再考慮餵養它: element>this is an error</element> 我也得到了非常通用並沒有那麼有用: 解析

    2熱度

    2回答

    我有一個格式爲「$ number_of_elements $ e1 $ e2 $ e3」格式的文件。我創建了以下解析器: #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix.hpp> #include <boost/fusion/include/boost_tuple.hpp> int

    5熱度

    1回答

    如果我有一個符號表: struct MySymbols : symbols<char, MyEnum::Fruits> { MySymbols() : symbols<char, MyEnum::Fruits>(std::string("MySymbols")) { add("apple", MyEnum::Apple) ("orange

    4熱度

    2回答

    代碼: typedef std::string::const_iterator iterator; namespace parsers { namespace spirit = ::boost::spirit; namespace ascii = ::boost::spirit::ascii; namespace phoenix = ::boost::phoeni

    4熱度

    1回答

    我正在嘗試編寫一個數學表達式的解析器,其中命名變量爲boost::spirit(版本1_51_0)中的nullaries,我完全是新的。我定義typedef boost::function<double()> Value和我的規則將被宣佈像這樣:qi::rule<Iterator, Value()> expression, term, others, ...; 我定義上nullaries二元算這個