2017-04-16 67 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也将成功用于其他条款。

相关问题