我是Prolog的新手,并尝试做一个程序来检查某些值是否可以作为日期,但我不知道该怎么处理该语言。我不知道命令。
例如,我想得到一个字符串的长度,但我不知道这是否可行。
有人可以给我看一个Prolog命令列表吗?我正在使用tuProlog for Java。
顺便说一句,我想要做的程序是:接收两个或三个参数并检查是否是某种类型的日期(例如:10 / 2000,2011 / 09,11 / 03/1191等)
答案 0 :(得分:2)
您可以查看tuProlog at this location的用户指南 第4.4节讨论了内置谓词。
此链接也可能有所帮助。 Working with strings in Prolog
对于解析,假设tuProlog中的一个库用于DCG: Prolog DCG presentation
您还可以搜索Stackoverflow for Prolog和dcg以查看其他人的问题和答案。
答案 1 :(得分:1)
documentation SICStus Prolog描述了其标准库。我不完全确定Prolog实现的哪些部分或不是标准部分,但它可能对您有帮助。
答案 2 :(得分:1)
tuProlog的用户指南很容易找到:Documentation。第5章包含您可以使用的Prolog命令。
根据您的问题,我推断您收到日期为字符串,而您不确定日期字符串的格式是什么。
我会看text_term/2
将字符串转换为一个术语(我不是100%肯定,我使用的Prolog系统有一个不同命名的谓词)。然后,您可以通过将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
; ...
->
是“if-then”,;
是“else”。
您需要编写一个测试有效日期的谓词,我在上面调用了valid_date/3
。