0

私はPrologを初めて使用し、いくつかの値が日付になるかどうかを確認するプログラムを実行しようとしていますが、言語で何ができるかわかりません. コマンドがわかりません。

例として、文字列の長さを取得したいのですが、これが可能かどうかわかりません。

だれか Prolog コマンドのリストを見せてくれませんか? Java用のtuPrologを使用しています。

ところで、私がやりたいプログラムはこれです: 2 つまたは 3 つのパラメーターを受け取り、何らかのタイプの日付 (例: 10/2000、2011/09、11/03/1191 など) であるかどうかを確認します。

4

3 に答える 3

2

この場所で tuProlog のユーザー ガイドを確認できます 。セクション 4.4 では、組み込みの述語について説明しています。

このリンクも役立つ場合があります。 Prolog で文字列を操作する

tuProlog のライブラリの 1 つが DCG 用であることを考えると、構文解析については次のとおりです。 Prolog DCG プレゼンテーション

また、Stackoverflow で Prolog と dcg を検索して、他のユーザーの質問と回答を確認することもできます。

于 2011-10-28T06:17:58.380 に答える
1

tuProlog のユーザー ガイドは簡単に見つかります: Documentation。第 5 章には、自由に使用できる Prolog コマンドが含まれています。

あなたの質問から、日付を文字列として受け取り、日付文字列がどの形式で到着するかわからないと推測します。

文字列を用語に変換することを検討しますtext_term/2(100% 確信があるわけではありません。私が使用している Prolog システムには、そのための別の名前の述語があります)。次に、必要な構造の Term で Term を統合することにより、スラッシュが 1 つまたは 2 つ含まれているかどうか (または別の形式であるか、まったく日付ではないか) をテストできます。

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

于 2011-10-28T06:05:24.730 に答える
1

SICStus Prologドキュメントでは、その標準ライブラリについて説明しています。そのどの部分が Prolog 実装の標準であるか、標準でないかは完全にはわかりませんが、役立つかもしれません。

于 2011-10-27T22:21:14.027 に答える