6

(バッファリングなしで)標準入力を解析するにはどうすればよいですか?私が正しく理解していればphrase/2、リストが必要であり、phrase_from_file/2fromlibrary(pure_input)にはファイルが必要です。

get_char/2通常の述語(DCGではない)とandのような組み込みを使用して問題を解決read_line_to_codes/2しましたが、最終的には、実装はCで記述したソリューションと疑わしいほど似ています。

そして、私が非常に関連する質問をこっそりすることができれば:SWI-Prologの標準入力は何ですか?read_line_to_codeslibrary(readutil))には入力ストリームが必要です(get/1たとえば、とは異なります)。私は次の述語でそれを取得します:

input_stream(Stream) :-
    current_stream(Object, read, Stream),
    integer(Object).

。。。もちろん動作しますが、少しハッキングされたように感じます。複数の入力ストリームを開くことは可能ですか?オペレーティングシステム(私の場合はLinux)の標準入力がどれであるかをどのようにして知ることができますか?

4

1 に答える 1

2

ストリームの適切な命名を探していると思います。ここに役立つかもしれないサンプルがあります:

?- read_line_to_codes(user_input,L).
|: a line
L = [97, 32, 108, 105, 110, 101].

私が見つけた最も詳細な説明ページはここにあります。

于 2012-12-19T22:04:56.987 に答える