2017-04-16 100 views

回答

3

最簡單的方法是確保您的語法從一開始就獲得字符。在這種情況下,您不需要使用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也將成功用於其他條款。

相關問題