作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这对我来说似乎很好,但它总是给出错误......我不明白为什么。
letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}.
谢谢。
最佳答案
最简单的方法是确保您的语法从一开始就正确获取字符。在这种情况下,您不需要使用 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
也会成功。
关于prolog - 定子句语法,如何检查字符串是否为字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436616/
我是一名优秀的程序员,十分优秀!