1
我試圖解析一種自定義語言(與JSON不太相似),並且我決定嘗試使用boost表達式,因爲它看起來很有趣。是語法錯誤報告可能與boost :: xpressive語法?
但是,當xpressive匹配失敗時,它只會失敗。有什麼方法可以實現某種錯誤報告?就像'表達式匹配到第47個字符(我可以從中得到行號)。
我可以查看一下如何可以定製每個子表達式以查找其他標記或匹配,然後查找它想要的並在此情況下報告錯誤,但似乎這將是一種非常複雜的方式正在做。
是否有任何功能表達(或任何人都可以提出一種方法),可以讓我做到這一點?
謝謝。
謝謝。我過去使用過flex/bison,這很好用,我知道其他的解析器生成器像ANTLR(我甚至用python寫過)。對於這個問題,語言的簡單性意味着無需手動編寫遞歸下降解析器並且報告錯誤(我可以這樣做)。但XPressive是在C++中,沒有額外的構建步驟(在多個操作系統上構建時可能會很痛苦),如果可能的話,我想使用它。我嘗試了boost :: spirit,但編譯器錯誤的額外複雜性和長度/不可編輯性讓我失望。 – DaedalusFall 2011-02-14 13:12:44