我想創建這樣的語言得到接受一個DCG:如何在Prolog中創建此DCG?
- Ç
- bbbcbbb
- bbacbba
- abacaba
- aababacaababa
正如你可以看到這個手段有一個特定的順序a和b,然後是一個c,然後又是與c之前完全相同的順序。如果不符合這些條件,則將失敗。
我目前在這裏與我的做法(的作品,但也承認錯誤的話)
s --> x, s, x.
s --> [c].
x --> [a].
x --> [b].
你們有人能幫我什麼,我需要改變嗎?我不知道如何繼續下去。非常感謝。
這個設計也很好地通過'phrase(s,L)產生解決方案。' – lurker
@mbratch:這比運氣好多了。查看所有解的規範方法是「長度(L,N),短語(s,L)」。現在,他們也按長度排序。請參閱http://stackoverflow.com/questions/6524722/prolog-combining-dcg-grammars-with-other-restrictions/6525089#6525089 – false
Lefty Gomez說:「我寧願比幸運更幸運。」 ;)但不管如何,上面的代碼按長度順序生成「a,b」序列並在移動到下一個長度之前完成每個長度的置換集合是一個很好的偶然事件。我仍然在學習很多DCG的細微差別,所以這和@ CapelliC的帖子對我來說都非常有啓發性。 – lurker