我研究编译器已有一段时间了,我一直在寻找语法中“上下文”的含义,以及语法“无上下文”的含义,但没有结果。
那么有人可以帮忙吗?
我研究编译器已有一段时间了,我一直在寻找语法中“上下文”的含义,以及语法“无上下文”的含义,但没有结果。
那么有人可以帮忙吗?
Answers:
可以根据Chomsky层次结构中不同语法所允许的生产规则来解释上下文。
如果考虑无上下文语法,则它们的产生规则具有以下形式:
因此,您可以观察到这种规则的左侧部分仅由一个非终结符组成;因此,在不考虑非终结符“上下文”的情况下进行了非终结符的替换,即它所包围的其他符号。
另一方面,如果考虑上下文相关语法的生产规则,则它们具有以下形式:
其中是非末端的,而,和是非末端和末端的序列。α β γ
在这种情况下,要替换的非终结符的“上下文”(即和)会影响替换的效果,并且它是规则本身的一部分。γ
一般来说,即使是常规语言也可能具有上下文相关性,这意味着您可以在某种程度上确定符号可以在属于该语言的字符串中的其他符号附近出现的方式。
与上下文无关的语法的特定之处在于,当存在多种替换非终结符的方式时,通过在右侧使用具有相同非终结符的不同规则来应用,选择哪个规则永远不会取决于在推导过程中围绕此符号发生。
您可以将它们视为上下文无关的派生语言,简称上下文无关的语言。