cost 119 ms
使用 Boost Spirit X3 解析 Html

[英]Parse Html with Boost Spirit X3

我正在嘗試編寫一個解析器來使用 boost spirit x3 解析 html,我在下面編寫了解析器: 問題是這些代碼無法編譯。 錯誤是: 致命錯誤 C1202:遞歸類型或 function 依賴上下文太復雜我知道出現此錯誤是因為我的解析器 html_element_ 引用了 tag_block_ ...

為具有多個構造函數的結構提升 x3 語法

[英]boost x3 grammar for structs with multiple constructors

試圖找出如何解析具有多個構造函數或重載構造函數的結構。 例如,在這種情況下,范圍結構包含范圍或 singleton 范圍的開始/結束相等的情況。 案例 1:看起來像 案例 2: 對於范圍情況 工作但是 毫不奇怪,與簽名不匹配並且無法編譯。 不確定修復方法是什么? ...

嘗試使用 boost spirit x3 解析嵌套表達式

[英]Trying to parse nested expressions with boost spirit x3

我的最終目標是編寫一個 hlsl 着色語言解析器。 我對解析的第一次體驗是跟隨鮑勃·尼斯特羅姆 (bob nystrom) 的“制作解釋器”。 我目前面臨的問題是我正在嘗試解析“鏈式成員訪問”序列(或多個“點運算符”).... 顯然,我可以將其解析為一個列表 % 序列作為字符串向量,但我試圖通過嵌套 ...

何時在 Boost 精神中使用 x3::lit

[英]When to use x3::lit in Boost spirit

我開始使用 Boost Spirit x3 解析庫 - 我對此感到非常興奮。 我不清楚的一件事是何時以及為什么應該使用x3::lit 。 據我了解,這是因為我們不能期望像']' >> double_這樣的表達式在 C++ 句法規則中按預期解釋。 但我的解釋似乎不正確,因為官方文檔顯示了 ...

使用boost spirit規則時如何避免語法歧義?

[英]how to avoid ambiguity of grammar when using boost spirit rule?

我正在使用 boost.spirit.x3 為腳本語言構建語法,我在 boost 中找到了一個名為cal9的示例,我需要類似的東西但它缺少 if-else 語句解析。 所以我將以下代碼添加到 calc9 的 statement_def.cpp 之上的語句定義中。 但是在解析if_statement ...

Boost Spirit X3:無法創建具有可選列表的 AST

[英]Boost spirit X3: Unable to create an AST that has a optional list

我正在嘗試解析后跟分號的可選列表(這是一個簡化的示例)。 下面是一個示例程序: 但是它無法編譯並出現錯誤: usr/include/boost/spirit/home/x3/support/ast/variant.hpp:184:17:錯誤:'operator=' 不匹配(操作數類型是 'boo ...

使用 Boost::Spirit::X3 解析復數

[英]Parse complex numbers with Boost::Spirit::X3

我想編寫一個Boost::Spirit::X3解析器來解析具有以下可能輸入格式的復數: "(X+Yi)" "Yj" "X" 到目前為止,我最好的嘗試如下(在 Coliru 上打開):#include <complex> #include <iostream> #includ ...

誤解重復指令 - 它應該失敗,但沒有

[英]Misunderstanding repeat directive - it should fail, but doesn't

我想寫一個語法(高度簡化): 和 由於稍后再次需要解析的文字(真正的語法更復雜,並非所有內容都可以立即轉換為數字),因此文字必須完全存儲為 AST 中的字符串(更准確地說是 iterator_range)以供以后使用(帶下划線) . 現在的問題是文字表達式可能比它們應該的更長(關於稍后的實 ...

使用 Spirit X3 在規則級別獲取自定義錯誤

[英]Getting custom error on rule level using Spirit X3

在閱讀規則級別的自定義錯誤之后? #657我想我會勇敢,適應並將其與 sehe 的方法相結合, 如何讓 which() 在提升精神 x3 期望失敗中正常工作? . 不幸的是,我沒有讓它工作 - 我迷路的地方,見coliru 。 即使使用x3::expect[] , expectation_fai ...

Boost spirit x3 - 具有編譯時間已知解析器的惰性解析器,指的是先前匹配的值

[英]Boost spirit x3 - lazy parser with compile time known parsers, referring to a previously matched value

靈感來自 sehe 在Boost spirit x3 -lazy parser 上的回答,我試圖將其調整為我自己的一個問題(這是另一個故事)。 我要實現的語法有幾種方法來表示以 2、8、10 和 16 為基數的數字文字。我希望將上述方法減少到可以忍受的最低限度。 在 AST,我喜歡通過使用x3::r ...

Boost Spirit x3 - 解析器無法識別行尾

[英]Boost Spirit x3 - parser doesn't recognize end of line

我正在嘗試解析 an.obj 文件,但我無法弄清楚如何使 x3 在行尾停止。 我的代碼如下所示: 語法應該采用以“#”開頭的注釋並打印所有內容直到行尾。 相反,解析器會打印所有內容,直到文件末尾。 另外,我如何打包 *(~char_('\r\n'))[printText] 以便將行內容作為字符串? ...

Spirit.X3:將本地數據傳遞給解析器

[英]Spirit.X3: passing local data to a parser

Boost.Spirit 文檔中的示例似乎分為兩種情況: 1/ 在函數中定義解析器:語義操作可以訪問局部變量和數據,因為它們是局部 lambda。 喜歡這里的push_back : https ://www.boost.org/doc/libs/master/libs/spirit/doc/x ...

使 boost::spirit::symbol 解析器不貪婪

[英]Make boost::spirit::symbol parser non greedy

我想制作一個匹配 ie int的關鍵字解析器,但不匹配integer中的int和剩下的eger 。 我使用x3::symbols來自動獲取表示為枚舉值的已解析關鍵字。 最小的例子:#include <boost/spirit/home/x3.hpp> #include <boost ...

spirit::x3 解析器在測試中將 move_to 作為 std::string,但在另一個應用程序中使用 Char

[英]spirit::x3 parser does move_to as std::string in test, but does it with Char in another app

我有以下測試在測試應用程序中運行良好,但在我的大代碼中它無法編譯。 發生的事情是解析器試圖將Char而不是std::string交給我。 我已經尋找任何可能的原因我會得到不同的結果,但無濟於事。 這是有效的代碼。 感謝 sehe 提供std::variant適配器。 這里和這里 在專門的move ...

為什么我的組件編譯為容器但 spirit::x3::int_parser 卻沒有?

[英]Why does my component compile as a container but spirit::x3::int_parser does not?

我一直致力於更好地理解編譯時代碼,尤其是在涉及 spirit::x3 的地方。 我有一個 class my_uuid ,它使用 x3::rule 編譯時運行良好。 但由於Iterator是在 scope 之外聲明的,因此它僅適用於std::string::iterator 。 所以我想我只是創建一 ...

將 'with<>' 應用於船長解析器以獲取上下文

[英]apply 'with<>' to a skipper parser to get context

到目前為止的代碼,有一些噪音,但主要是相關的。 在那,我在我的真實應用程序中做了很多類似這樣的瘋狂的事情,這段代碼編譯並運行,只有問題的東西被評論: 更新:我發布了沒有編譯的代碼,對不起。 現在看來這不會成功。 我的目標是使用eol_count程序中的代碼保持行計數器處於活動狀態。 在 x3 ski ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM