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

时间:2018-05-22 19:26:10

标签: theory context-free-grammar deterministic lr chomsky-hierarchy

我正在学习计算机科学课程的chomsky hiearchy。我的教授已多次提到lrk语法,但他们没有在书中教过。根据我的理解,它们是确定性上下文无关语法的子集,可生成明确的语言。但它们与确定性CFG有何不同?

以下是我们在课堂上使用识别相关语法的设备进行的Chomsky层次结构:

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

另请注意(如果这个问题应该单独发布,请在评论中告诉我) - 线性限制的非确定性图灵机与决策者有何不同?

1 个答案:

答案 0 :(得分:1)

这里棘手的是,存在两个相互关联但并不完全相同的并行层次结构。有LR(k)语法,它们是具有某些属性的语法类别。我们知道

  

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

也就是说,随着k的增加,LR(k)类将包含越来越多的语法。

独立地有LR(k)语言,这些语言对于某些k选择都存在LR(k)语法。 Don Knuth有一个很酷的定理,它表明一种语言在且仅当具有LR(1)语法时,它对于某k具有LR(k)语法。因此,从这个意义上讲,LR(k)语言是“您可以为其编写LR(1)语法的语言。”

然后是确定性上下文无关语言(DCFL),您可以为其构建确定性PDA的语言。众所周知,DCFL与LR(k)语言完全相同-也就是说,当且仅当它具有LR(1)语法时,该语言才是确定性CFL。

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

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