我正在设计一个无上下文的语法来生成这种语言:
{ w in {a,b}* | w is of the form uvu^R, where u and v are any strings in {a,b}* }
我将前两个字符串定义为:
U -> aU | bU | _
V -> aV | bV | _
然后将这些结合起来:
S -> UV
但是我如何将逆转表达为无上下文语法?
答案 0 :(得分:2)
你需要利用语法的无上下文(到目前为止你所呈现的只是一个常规语法):
U-> aUa | bUb | a | b | _
会匹配“ababa”和“aabaa”之类的内容,但不会匹配“aabba”。
我会留给你改变你的需要 - 但请记住,你指定的语言可能u
是空字符串,因此它会在{a,b}*
中生成所有字符串