我一直在通過Learn Prolog Now!進行自學,現在我正在學習有關定義語句的文法。我在實際會議的任務中遇到了一些困難。 The task讀取:立即學習Prolog! DCG練習示例
正式語言Ñ b 2米Ç2米 d Ñ由下列形式的所有字符串的:依次不間斷的塊的一個秒的完整塊 b的隨後的ç秒的完整塊,隨後的 d秒的完整塊, S,從而使所述一個和 d塊是完全相同的長度,並且Ç和 d塊也完全一樣的長度和分別小號還包括一個偶數的Ç S和 d的。例如,ε, abbccd,和 aaabbbbccccddd都屬於一個Ñ b 2米Ç2米 d Ñ。寫一個生成這種語言的DCG。
我能夠編寫生成ň d ñ規則,B 2米Ç2米,甚至ň b 2米和c 2米 d ñ ...但我似乎無法將所有這些規則加入到n b 2m c 2m d n。以下是我的規則,可以生成n d n和b 2m c 2m。
s1 --> [].
s1 --> a,s1,d.
a --> [a].
d --> [d].
s2 --> [].
s2 --> c,c,s2,d,d.
c --> [c].
d --> [d].
是一個ň b 2米Ç2米 d ň真的CFG,並有可能只使用了什麼的教訓教(沒有額外的參數或代碼寫DCG等)?如果是這樣,任何人都可以提供一些指導我如何加入這些,以便我可以解決給定的任務?
謝謝Xonix。這是有效的,但不幸的是它使用的概念直到後來才被覆蓋(代碼塊,剪切等)。我誠實地認爲僅僅使用簡單的規則是不可能的,或者如果是這樣,這是不值得的,因爲在「現實世界」中,人們會利用其他概念,像你在樣本中做的那樣。 – Timothy 2010-06-08 19:58:10