code_type(Code, Type) が acharacter code
と his の間の関係を保持していることを示す、関連する説明を既に見つけていclassification
ます。
Prolog のシンボルは C (または Java) のシンボルとは異なるため、マニュアルは少し誤解を招くと思います。[_a-zA-Z][_a-zA-Z0-9]*
これらの後者は、引用した読み取り可能な説明と同等の のような正規表現で説明できます。
c9
は有効な C 記号ですが、そうで9c
はありません (数字で記号を開始することはできません)。
文字のすべての「プロパティ」を検査するには (文字コード (整数) とエンコードされた文字 (ローカライズ) の違いを認識していると思います)、次を使用できます。
?- char_type(v,T).
T = alnum ;
T = alpha ;
T = csym ;
T = csymf ;
T = ascii ;
T = graph ;
T = lower ;
T = lower('V') ;
T = to_lower('V') ;
T = to_upper(v) ;
false.
その後v
、を開始できC symbol
ます。
?- char_type('7',T).
T = alnum ;
T = csym ;
T = ascii ;
T = digit ;
T = graph ;
T = to_lower('7') ;
T = to_upper('7') ;
T = digit(7) ;
T = xdigit(7).
ここで失敗csymf
すると、 を7
開始できませんC symbol
。
を開始できるすべての文字を取得するにはC symbol
、次を使用できます
?- forall(char_type(X,csymf),write(X)).
ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ
true.
ロケールによっては、結果が私の結果と異なる可能性があると思います。