2
對我來說這似乎很好,但它總是給人錯誤的...我無法理解爲什麼。確定子句語法,如何檢查一個字符串是否是char?
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}.
謝謝。
對我來說這似乎很好,但它總是給人錯誤的...我無法理解爲什麼。確定子句語法,如何檢查一個字符串是否是char?
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}.
謝謝。
最簡單的方法是確保您的語法從一開始就獲得字符。在這種情況下,您不需要使用name/2
(或更確切地說char_code/2
)進行轉換。
:- set_prolog_flag(double_quotes, chars).
letter(C) --> [C], { atom_length(C,1), a @=< C, C @=< z }.
這應該在任何系統中工作。在SWI,還存在char_type/2
:
letter(C) --> [C], { atom_length(C,1), char_type(C, lower) }.
這將開還進一步接受小寫字符從像元音變音A..Z。
注意目標atom_length(C,1)
確保只有字符。否則,letter//1
也將成功用於其他條款。