Chomsky Hierarchy和LL(*)解析器

时间:2009-01-14 08:57:13

标签: parsing compiler-construction antlr theory chomsky-hierarchy

我想解析一种编程语言。我读了很多关于正式语言和Chomsky层次结构和ANTLR的内容。但我无法找到有关如何将ANTLR v3作为LL(*)递归下降解析器接受的语言与chomsky层次结构相关联的信息。

乔姆斯基类型如何与LL(*)混合?非常感谢任何信息(在线,书籍,论文)。

编辑:ANTLR的语法/语义谓词和回溯如何映射到此?

2 个答案:

答案 0 :(得分:12)

乔姆斯基的层次结构基本上是:

  1. 常规语言
  2. 无上下文语法
  3. 上下文敏感语法
  4. 递归可枚举(图灵完备)语法
  5. LL语法(和解析器)是无上下文语法的子集。使用它们是因为常规语言对于编程而言太弱,并且因为一般的无上下文解析器是O(n ^ 3),这对于解析程序而言太慢。 实际上,使用辅助函数扩充解析器确实使其更强大。 The Wikipedia entry on LL parsers解释了其中一些内容。The Dragon Book被认为是关于编译器的领先教科书,可以进一步解释。

答案 1 :(得分:4)

LL(*)是无上下文语言的子集。然而,一个不同的问题是antlr可以解析什么,给出谓词和回溯,这扩展了它的能力。

请注意,如果我们谈论LL(*),那意味着ANTLR v3,而不是2。