2017-04-16 6 views

Antwort

3

Der einfachste Weg wäre sicherzustellen, dass Ihre Grammatik von Anfang an Zeichen erhält. In diesem Fall müssen Sie (oder besser char_code/2) nicht für die Konvertierung verwenden.

:- set_prolog_flag(double_quotes, chars). 

letter(C) --> [C], { atom_length(C,1), a @=< C, C @=< z }. 

Dies sollte in jedem System funktionieren. In SWI gibt es char_type/2 auch:

letter(C) --> [C], { atom_length(C,1), char_type(C, lower) }. 

Dies wird auch akzeptieren, weitere Kleinbuchstaben neben a..z wie Umlaute.

Beachten Sie das Ziel atom_length(C,1), die dafür sorgt, dass es nur Zeichen gibt. Sonst wäre letter//1 auch für andere Begriffe erfolgreich.

Verwandte Themen