在解析字符串列表時,當前規則允許逗號位於句子的末尾,並且不允許逗號在單詞之間,這顯然是不正確的。如何修改當前規則?如何修改Prolog中的句子分析規則?
complexsentence --> [] ; simplesentence, complexsentence;
simplesentence, delimiter, complexsentence.
simplesentence --> noun, verb.
delimiter --> [,].
noun --> [sun].
verb --> [shines].
% TEST: phrase(complexsentence, [sun,shines]). %must be TRUE
% TEST: phrase(complexsentence, [sun,',',shines]). %must be TRUE
% TEST: phrase(complexsentence, [sun,shines,',']). %must be FALSE
更新: 試圖解決它像這樣。它的工作原理
complexsentence --> [] ; simplesentence,complexsentence.
simplesentence --> noun,verb;
noun,verb,delimiter,noun;
noun,verb,delimiter,noun,verb.
delimiter -->[,].
noun-->[sun].
verb-->[shines].
% TEST: phrase(complexsentence, [sun,shines]). % TRUE
% TEST: phrase(complexsentence, [sun,',',shines]). % FALSE
% TEST: phrase(complexsentence, [sun,shines,',']). %FALSE
爲什麼第二種情況是「必須爲真」嗎?爲什麼'[]'是一個有效的'complexsentence'? – lurker
他需要這個來獲得解決方案,但它會更直觀(我認爲)說'simplesentence'而不是' ]'。 –
個@DanielLyons是的,這就是我在想'complexsentence - > simplesentence.'都會比'complexsentence更多的意義 - > [] .' – lurker