乔姆斯基层次结构:LR(k) 文法与确定性 CFG?

Chomsky Hierarchy: LR(k) grammars vs Deterministic CFGs?

我们正在学习计算机科学导论课程中的乔姆斯基层次结构。我的教授多次提到 lrk 文法,但书中没有讲授。根据我的理解,它们是生成明确语言的确定性上下文无关语法的子集。但它们与确定性 CFG 有何不同?

这是我们在 class 中使用识别相关语法的设备查看的乔姆斯基层次结构:

recursively enumerable - all turing machines
recursive - deciders/TMs that halt on every input
context sensitive - Linear-bounded non-deterministic Turing machine
context free - nondeterministic PDA
deterministic context free - deterministic PDA 
LRK grammar - deterministic PDA
regular - DFAs/NFAs

单独说明(如果这个问题应该分开,请在评论中告诉我 post)- 线性有界非确定性图灵机与决策者有何不同?

这里的棘手之处在于,有两个相关但不完全相同的平行层次结构。有 LR(k) 文法,它们是具有某些属性的文法 classes。我们知道

LR(0) ⊊ LR(1) ⊊ LR(2) ⊊ ...

也就是说,随着 k 的增加,classLR(k) 中包含越来越大的 classes 语法。

独立地,有 LR(k) 语言,这些语言对于某些 k 的选择存在 LR(k) 文法。 Don Knuth 有一个很酷的定理,它表明一种语言对于某些 k 具有 LR(k) 文法当且仅当它具有 LR(1) 文法时。所以从这个意义上说,LR(k) 语言是 "languages for which you can make an LR(1) grammar."

然后是确定性上下文无关语言 (DCFL),您可以为这些语言构建确定性 PDA。众所周知,DCFL 与 LR(k) 语言完全相同——也就是说,当且仅当存在 LR(1) 语法时,一种语言才是确定性 CFL。

那么这对于语言的层次结构意味着什么?它看起来像这样,从最不强大/最受限制到最强大/最不受限制:

  • 常规语言
    • 由右线性文法、左线性文法、DFA、NFA、正则表达式和前缀文法描述
  • 确定性 CFL
    • 由确定性 PDA 和 LR(k) 语法描述
  • (不确定的)CFL
    • 由(非)确定性 PDA 和 CFG 描述。
  • 上下文相关语言
    • 由线性有界自动机和上下文相关文法描述
  • 递归语言
    • 某些决策者接受的语言,语言和补语都是递归可枚举的语言
  • 递归可枚举语言
    • 无限制语法的语言;图灵机的语言;可以被图灵机验证的语言;普查员的语言;等等