2017-04-16 11 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は他の言葉でも成功するでしょう。

関連する問題