我想解析一种编程语言。我读了很多关于正式语言和Chomsky层次结构和ANTLR的内容。但我无法找到有关如何将ANTLR v3作为LL(*)递归下降解析器接受的语言与chomsky层次结构相关联的信息。
乔姆斯基类型如何与LL(*)混合?非常感谢任何信息(在线,书籍,论文)。
编辑:ANTLR的语法/语义谓词和回溯如何映射到此?
答案 0 :(得分:12)
乔姆斯基的层次结构基本上是:
LL语法(和解析器)是无上下文语法的子集。使用它们是因为常规语言对于编程而言太弱,并且因为一般的无上下文解析器是O(n ^ 3),这对于解析程序而言太慢。 实际上,使用辅助函数扩充解析器确实使其更强大。 The Wikipedia entry on LL parsers解释了其中一些内容。The Dragon Book被认为是关于编译器的领先教科书,可以进一步解释。
答案 1 :(得分:4)
LL(*)是无上下文语言的子集。然而,一个不同的问题是antlr可以解析什么,给出谓词和回溯,这扩展了它的能力。
请注意,如果我们谈论LL(*),那意味着ANTLR v3,而不是2。