0

我是 Prolog 的新手,并试图做一个程序来检查某些值是否可以是日期,但我不知道我能用这种语言做什么。我不知道命令。

例如,我想获取字符串的长度,但我不知道这是否可能。

有人可以给我看 Prolog 命令的列表吗?我正在为 Java 使用 tuProlog。

顺便说一句,我想做的程序是这样的:接收两个或三个参数并检查是否是某种类型的日期(例如:10/2000、2011/09、11/03/1191 等)。

4

3 回答 3

2

您可以在此位置查看 tuProlog 的用户指南 第 4.4 节地址内置谓词。

这个链接也可能有帮助。 在 Prolog 中处理字符串

对于解析,鉴于 tuProlog 中的库之一是用于 DCG: Prolog DCG 演示

您还可以在 Stackoverflow 中搜索 Prolog 和 dcg 以查看其他人的问题和答案。

于 2011-10-28T06:17:58.380 回答
1

SICStus Prolog文档描述了它的标准库。我不完全确定它的哪些部分是或不是 Prolog 实现的标准,但它可能会对您有所帮助。

于 2011-10-27T22:21:14.027 回答
1

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在上面所说的有效日期。

于 2011-10-28T06:05:24.730 回答