该语言何时被称为无上下文?

时间:2013-11-22 07:08:54

标签: compiler-construction language-agnostic programming-languages context-free-grammar

当一种语言被认为上下文免费时?

此外,上下文无关语言上下文无关语法之间有什么区别?

2 个答案:

答案 0 :(得分:4)

Context Free Language是一种语言(即可能是无限的字符串集),可以由Context Free Grammar生成。通常,也可以使用非上下文无关语法生成完全相同的语言,但这是无关紧要的:如果存在生成语言的单个无上下文语法,则语言无上下文。

无上下文语法是一种语法,其中每个产品在左侧都有一个非终端。它是无上下文的,因为生产中的非终端可以扩展而不考虑它出现的上下文。上下文相关语法可能在作品的左侧有多个符号,因此包括非终端只有在正确的上下文中才能展开的情况。

答案 1 :(得分:0)

pumping lemma for context-free languages的概念。这是一个引理,它提供了所有无上下文语言共享的属性。

如果存在CFG

G

,则语言(L)被称为无上下文语言(CFL)。

L = L(G)

即,CFL可以由Context Free Grammar生成。

wiki说: -

  

在形式语言理论中,无上下文语言(CFL)是一种语言   由一些无上下文语法(CFG)生成。不同的CF语法   可以生成相同的CF语言,或相反,生成给定的CF语言   可以由不同的CF语法生成。重要的是要   区分语言的属性(内在属性)   特定语法的属性(外在属性)。

     

所有无上下文语言的集合与集合相同   由下推自动机接受的语言,这些语言就是这些语言   适合解析。实际上,鉴于CFG,有一种直接的方法   为语法产生一个下推自动机(和相应的   语言),虽然走另一条路(产生一个语法给出一个   自动机)并不直接。