如何解析标准输入(不缓冲)?如果我理解正确,phrase/2
需要一个列表,而来自phrase_from_file/2
的{{1}}需要一个文件。
我使用普通谓词(不是DCG)和使用内置插件(如library(pure_input)
和get_char/2
解决了我的问题,但最后实现看起来与我在C中编写的解决方案非常相似
如果我能偷偷摸摸一个非常相关的问题:什么是SWI-Prolog的标准输入? read_line_to_codes/2
(read_line_to_codes
)需要输入流(例如,与library(readutil)
不同)。我用以下谓词得到它:
get/1
。 。 。这当然有效,但感觉有点黑客攻击。是否可以有多个开放输入流?我怎么知道哪一个是操作系统的标准输入(在我的情况下是Linux)?
答案 0 :(得分:2)
我认为您正在寻找适当的流命名。这里有一个可能有用的示例:
?- read_line_to_codes(user_input,L).
|: a line
L = [97, 32, 108, 105, 110, 101].
我找到的最详细的说明页面是here。