2016-01-24 61 views
-1

我最近对制作计算机语言很感兴趣。 BNF & yacc让我疯狂。然后,我看到PEG,和我通过它graceful.I吸引想了解更多关于后援细节是:有关PEG所需的一些信息

1 how does PEG work (algorithm) 

2 is there any tools about it on C/C++/Lua 

非常thanks.◉-◉

回答

1

这个问题过于宽泛,把全部答案在此框中,但你可能要在这里开始:

http://bford.info/packrat/

“解析表达式语法”是用于指定语言上下文无关文法的替代品。

从根本上说,PEG语法是一种解析语言的程序......它使程序员更容易理解,而上下文无关文法是生成语言所有文本的模式。从上下文无关语法到解析器的翻译是不完善和难以理解的,这使得初学者在实践中难以使用CFG。

解析PEG语法有很多不同的算法,但它们都等价于简单的算法:先尝试第一种替代方法,如果不行,则尝试下一种。

这似乎更容易,对吧?它主要是,但是初学者仍然有很多空间遇到PEG解析器的困难。不同之处在于他们如何处理歧义。

当您使用基于CFG的解析器生成器,并且您的语法不明确时,会得到一堆难以理解和修复的错误和警告。

当您使用不明确的PEG语法时,一切看起来都不错,但是如果您没有真正理解您的语法不明确以及原因,您将得到与您期望的语法不同的语法分析结果。

相关问题