[英]Could these patterns be matched by regular expression or context free grammar?
這是編譯器的練習。 我們被問到是否可以將以下模式與正則表達式或無上下文語法匹配:
注意,n可以是任何正整數。 (否則太簡單了)
在文本中只能出現3個字符'abc'來解析。
我很困惑,因為據我所見,這些模式中沒有一個可以通過正則表達式和上下文無關語法來描述。
關鍵問題是:你需要多少和什么樣的記憶?
在問題1的情況下,你需要以某種方式保存數軌跡a
終端為你解析b
端子。 因為你知道你需要一對一,所以堆棧顯然已經足夠了(你可以將a
放在堆棧上並用每個b
彈出一個)。 由於下推自動機相當於表達能力的CFG,因此您可以為問題1創建CFG。
在問題2的情況下,PDA在問題1中使用的技術應該提示您可以用於問題2的技術.PDA可以構建輸入的前半部分的堆棧,然后在其反向出現時將其彈出在。
在問題3的情況下,如果你使用的堆棧技術用於計數的數目a
端子和b
端子,這一切都很好,但什么發生在你的堆棧內存? 這夠了嗎? 不,你會需要存儲號碼的a
s ^別的地方,所以CFG無法表達這種語法。
這是針對問題2的一個簡單CFG的嘗試(它驗證了一個空輸入,但你會得到這個想法):
S -> a S a
S -> b S b
S -> c S c
S -> ɛ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.