如何解析标准输入(无缓冲)?如果我理解正确,phrase/2
需要一个列表,并且phrase_from_file/2
需要library(pure_input)
一个文件。
我使用普通谓词(不是 DCG)和使用像get_char/2
and之类的内置函数解决了我的问题read_line_to_codes/2
,但最终实现看起来与我用 C 编写的解决方案非常相似。
如果我可以偷偷问一个非常相关的问题:SWI-Prolog 中的标准输入是什么?read_line_to_codes
( library(readutil)
) 需要一个输入流(get/1
例如,与 不同)。我用以下谓词得到它:
input_stream(Stream) :-
current_stream(Object, read, Stream),
integer(Object).
. . . 这当然有效,但感觉有点被黑了。是否可以有多个打开的输入流?我怎么知道哪个是操作系统的标准输入(在我的例子中是 Linux)?