我是 Prolog 的新手,并试图做一个程序来检查某些值是否可以是日期,但我不知道我能用这种语言做什么。我不知道命令。
例如,我想获取字符串的长度,但我不知道这是否可能。
有人可以给我看 Prolog 命令的列表吗?我正在为 Java 使用 tuProlog。
顺便说一句,我想做的程序是这样的:接收两个或三个参数并检查是否是某种类型的日期(例如:10/2000、2011/09、11/03/1191 等)。
您可以在此位置查看 tuProlog 的用户指南 第 4.4 节地址内置谓词。
这个链接也可能有帮助。 在 Prolog 中处理字符串
对于解析,鉴于 tuProlog 中的库之一是用于 DCG: Prolog DCG 演示
您还可以在 Stackoverflow 中搜索 Prolog 和 dcg 以查看其他人的问题和答案。
SICStus Prolog的文档描述了它的标准库。我不完全确定它的哪些部分是或不是 Prolog 实现的标准,但它可能会对您有所帮助。
tuProlog 的用户指南很容易找到:文档。第 5 章包含可供您使用的 Prolog 命令。
根据您的问题,我推断您将日期作为字符串接收,并且您不确定日期字符串以哪种格式到达。
我会考虑text_term/2
将字符串转换为一个术语(我不确定 100%,我使用的 Prolog 系统有一个不同命名的谓词)。然后,您可以通过将 Term 与所需结构的 Term 统一来测试它是否包含一个或两个斜杠(或者是另一种格式或根本不是日期):
Term = D/M/Y
并测试这是否是有效日期:
text_term(Text,Term),
( Term = D/M/Y, valid_date(D,M,Y) ->
true
; Term = M/D/Y, valid_date(D,M,Y) ->
true
; ...
是“->
如果-那么”,;
是“否则”。您需要编写一个谓词来测试我valid_date/3
在上面所说的有效日期。