6

如何解析标准输入(无缓冲)?如果我理解正确,phrase/2需要一个列表,并且phrase_from_file/2需要library(pure_input)一个文件。

我使用普通谓词(不是 DCG)和使用像get_char/2and之类的内置函数解决了我的问题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)?

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 回答