2010-12-20 69 views
1

我設計一個上下文無關文法生成這個語言:上下文無關文法和逆轉

{ 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 

但是,我如何表達作爲上下文無關文法的逆轉?

回答

2

您需要使用語法的上下文岬(什麼你這麼遠呈現只是一個普通的語法)的:

U-> aUa | bUb | a | b | _ 

會匹配「貝巴」的東西,「 aabaa「,但不是」aabba「。

我會讓你改變這個以滿足你的需求 - 但請記住,你指定的語言有可能是u是空字符串,因此它會生成{a,b}*中的所有字符串。

+0

請原諒我在這個問題上的知識呢。在閱讀這篇文章時,我遇到了與您發佈的解決方案完全相同的解決方案,但並不完全理解它。例如,「ababa」會被拆分成u =「ab」v =「a」還是u^R =「ba」,只有一行語法? – mjuopperi 2010-12-20 21:20:09

+0

@ Gawwad:鑑於這種語法,對於「ababa」的解析將是:「aUa」 - >「a {bUb} a」 - >「a {b {a} b} a」'。 – 2010-12-20 21:26:55

+0

仔細閱讀您發佈的解決方案,我也能夠自己解決問題。我一直在處理有限自動機和正則表達式,所以這些工作起初看起來很奇怪。感謝您的幫助! – mjuopperi 2010-12-20 21:31:29