boost-spirit-x3

    1熱度

    1回答

    我想解析一個文件,並將數據複製到一個類對象內的向量。我採取了員工示例,並將其修改爲我正在嘗試執行的操作。正在解析的文件看起來像這樣(但多行)... 1 0.2 0.3 0.4 我添加了一個向量爲結構的員工和我在phrase_parse線越來越斷言失敗。 static assertion failed: Attribute does not have the expected size. st

    2熱度

    1回答

    我正在考慮自永遠以來(自從Uni上的編譯器類以來,我主要已經忘記了)編寫基本上我的第一個解析器。 由於我使用C++,我正在考慮使用Boost Spirit。然後我注意到有「常規」2.5.2,並且有一些名爲Spirit X3的代碼有一些神奇的子集。 我也注意到Boost Spirit X3在兩年前已經發布/討論/預發佈,但Boost Spirit的正式版本是2.5.2。最後,我讀: Where is

    1熱度

    1回答

    我試圖使用Boost 1.65.1中的Spirit X3來創建解析器。我減少了我的問題,下面的小例子用更簡單的結構: #include <boost/config/warning_disable.hpp> #include <boost/spirit/home/x3.hpp> #include <boost/fusion/include/adapt_struct.hpp> #include

    2熱度

    2回答

    我最終得到了這些移動錯誤很多,我不太清楚爲什麼除了解析字符串的方式之外。刪除與「虛擬」相關的所有內容,並返回錯誤。 有人提到使用attr_gen(在文檔中找不到),通過這樣做,我可以通過這些「traits :: move_to」編譯錯誤,但解析器仍然失敗。我已經標記了我爲了編譯而添加的行,但不要認爲「< ---」是必要的。 #define BOOST_SPIRIT_X3_DEBUG #incl

    2熱度

    1回答

    假設我們想要解析像這樣的遞歸塊。當「skip_comments_tag」以塊爲前綴時,我們會以遞歸方式跳過此塊中的所有註釋(/*...*/)。 { {} { skip_comments_tag{ {} /*comments*/ { /*comments*/ } } } } 很容易想出一個遞歸解析器,如Colir

    1熱度

    1回答

    有時我在解析器之間有緊密的耦合/循環依賴關係。我可能有這樣的事情: parser.hpp #pragma once namespace parser { using a_type = x3::rule<class a_class>; a_type const a = "a"; using b_type = x3::rule<class b_class>;

    1熱度

    1回答

    我正在努力提升精神x3,並且對一點不清楚。我有一個具有非常不同和重複行的文件。前幾行可能是註釋。接下來的1000行可能是座標,下一千行可能是int的列表等等... 我的問題是如何識別行並知道該行使用哪個解析器。例如,這裏有兩個解析器函數.... template <typename Iterator> bool parse_ints(Iterator first, Iterator last,

    2熱度

    1回答

    我基於我的應用程序關閉這個例子,並得到完全相同的結果。出於某種原因,輸入字符串的內容全部被解析爲融合結構'comments',並且沒有任何東西被解析爲融合結構'numbers'。所以不知道我在哪裏錯了。 namespace client { namespace ast { struct number { int num1; int num2;

    2熱度

    1回答

    從升壓精神X3教程: 首先,讓我們創建一個代表僱員一個結構: namespace client { namespace ast { struct employee { int age; std::string surname; std::string forename; double salary; }; }}

    3熱度

    1回答

    我嘗試將float或int的簡單列表解析爲變體的向量。我在Windows上使用boost 1.64(mingw 64bit)。 下面是一個小例子: #include <boost/spirit/home/x3/support/ast/variant.hpp> #include <boost/fusion/adapted/struct.hpp> #include <boost/spirit/ho