在最近的测试中,我被要求识别以下语言是否没有上下文:
根据我的说法,它是无上下文的,可以被下面的上下文自由语法接受,其中S是起始符号,Y是非终结符号:
然而,我的回答被认为是错误的,所以显然这种语言不是没有上下文的。
我对自己的回答充满信心,但这种反应让我很困惑。我的理解是否正确?如果我错过了什么,请告诉我。
答案 0 :(得分:1)
语言不是上下文语言!你的语法错了!
根据语言描述0
后缀应小于1
和前缀0
的数量。但是使用你的语法你可以生成错误的字符串,如下所示:
第1步:始终将S
替换为S0
第2步:现在将S
替换为Y
S --> S0 --> S00 --> S000 --> Y000
现在,您可以将Y
替换为^
(nul),它会提供000
,此字符串不是您的语言。
将Y
替换为0Y1
,然后将Y
替换为^
:
Y000 ---> 0Y1000 ---> 01000
01000
字符串不是语言。所以你的语法不能生成相同的语言。