0

プロローグで簡単なシェルを書こうとしています。現在、read/1 を使用してユーザーに入力を問い合わせています。

ただし、解決したい問題が2つあります。

1) ユーザーは用語のみを入力できます。

クエリでは、ユーザーが用語を入力する必要があり、入力がピリオドで終わる必要があります。これは、ユーザーが「変数を値に設定」などのコマンドを入力できるようにするための制限です (この文字列を解析します)。プロローグでそのような文字列を読み取る方法はありますか? (可能であれば、リストの表現、引用符、または終了ピリオドなどのオーバーヘッドなしで?)

2) ユーザーが何か間違ったもの (スペースなど) を入力すると、構文エラーが発生してシェルが終了します。これらのエラーを処理し、プログラムの終了を回避するための迅速かつ適切な方法は何ですか?

すべてのヘルプは大歓迎です!

4

2 に答える 2

2

get_char/1入力の読み取りは用語に限定されませんが、および を使用して、文字単位またはバイト単位で実行できますget_byte/1。まったく魅力的ではなく、操作も簡単ではありません。例として、標準入力から単語のリストを読み取る述語を作成者が定義しているThe Art of Prolog の小さなスニペットを見ることができます (いくつかの特定の手順の定義が欠落しています。彼のニーズの基礎)。

Prolog は、 によるエラー処理をサポートしてcatch/3います。これを使用して、読み取り操作中に発生したエラーをキャッチし、適切に対応することができます。

于 2012-01-07T02:02:59.067 に答える