2014-01-19 33 views
0

有些人可以向我解釋爲什麼你不能使用正則表達式來描述遞歸結構。爲什麼不能用正則表達式來描述遞歸結構?

例如

  • A = * A 2 B
+3

這是正規語言正式定義的結果。見http://en.wikipedia.org/wiki/Regular_language –

+0

@ p.s.w.g小心!並非所有在標籤「正則表達式」下運行的東西都等同於正規語言,許多東西都更加強大。 – delnan

+1

@delnann雖然問題被標記爲「正則表達式」,並且沒有語言特定的問題,但是p.s.w.g'語句是適用的(並且在任何情況下都是完全準確的)。 –

回答

3

因爲一個正則表達式(在正則語言的意義上,至少)對應於有限狀態機。你需要無數個狀態來跟蹤任意級別的嵌套。

+0

「正則表達式」不再意味着「有限狀態機器」,除非你想進入一個長時間,沒有結果的術語火焰戰爭,只有一半的編程人羣。即使是回溯到同構的休息,更不用說其他擴展。 – delnan

+1

@delnan:我意識到這一點;)但除非進一步限定,我認爲「正則表達式」的意思是「正規語言」... –

+0

這是我的問題,這個假設。根據我的經驗,大多數人使用「正則表達式」來表示「我的語言支持的任何語言」,在大多數情況下,這至少是回溯。 – delnan