2012-12-19 17 views
6

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

私は(ないDCG)通常の述語を使用してget_char/2read_line_to_codes/2のようなビルトインを使用して私の問題を解決しますが、最後に実装では、私はC.

にしてIF書かれていた液に怪しい似ていますSWI-Prologの標準入力は何ですか? read_line_to_codeslibrary(readutil))には入力ストリームが必要です(たとえば、get/1とは異なります)。私は次の述語でそれを得る:

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

。 。どちらがうまくいくのですか?複数の入力ストリームを開くことは可能ですか?どちらがオペレーティングシステムの標準入力であるか(私の場合はLinux)を知る方法は?

答えて

2

あなたはストリームの適切な名前を探していると思います。便利なサンプルがあります:

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

最も詳しい説明ページはhereです。

+0

私はこのページを十分に慎重に読んだと思っていました...これは私の標準的な入力質問に本当に答えるものです。私は標準入力を解析するためにDCGを使用できるかどうかまだ分かりません。 –

+1

はい、 'repeat、read_line_to_codes(user_input、L)、phrase(your_grammar、L) 'のようなループを使用してください。 – CapelliC

関連する問題