我最近對製作計算機語言很感興趣。 BNF & yacc讓我瘋狂。然後,我看到PEG,和我通過它graceful.I吸引想了解更多關於後援細節是:有關PEG所需的一些信息
1 how does PEG work (algorithm)
2 is there any tools about it on C/C++/Lua
非常thanks.◉-◉
我最近對製作計算機語言很感興趣。 BNF & yacc讓我瘋狂。然後,我看到PEG,和我通過它graceful.I吸引想了解更多關於後援細節是:有關PEG所需的一些信息
1 how does PEG work (algorithm)
2 is there any tools about it on C/C++/Lua
非常thanks.◉-◉
這個問題過於寬泛,把全部答案在此框中,但你可能要在這裏開始:
「解析表達式語法」是用於指定語言上下文無關文法的替代品。
從根本上說,PEG語法是一種解析語言的程序......它使程序員更容易理解,而上下文無關文法是生成語言所有文本的模式。從上下文無關語法到解析器的翻譯是不完善和難以理解的,這使得初學者在實踐中難以使用CFG。
解析PEG語法有很多不同的算法,但它們都等價於簡單的算法:先嚐試第一種替代方法,如果不行,則嘗試下一種。
這似乎更容易,對吧?它主要是,但是初學者仍然有很多空間遇到PEG解析器的困難。不同之處在於他們如何處理歧義。
當您使用基於CFG的解析器生成器,並且您的語法不明確時,會得到一堆難以理解和修復的錯誤和警告。
當您使用不明確的PEG語法時,一切看起來都不錯,但是如果您沒有真正理解您的語法不明確以及原因,您將得到與您期望的語法不同的語法分析結果。