从标准输入中解析

时间:2012-12-19 21:23:38

标签: prolog swi-prolog

如何解析标准输入(不缓冲)?如果我理解正确,phrase/2需要一个列表,而来自phrase_from_file/2的{​​{1}}需要一个文件。

我使用普通谓词(不是DCG)和使用内置插件(如library(pure_input)get_char/2解决了我的问题,但最后实现看起来与我在C中编写的解决方案非常相似

如果我能偷偷摸摸一个非常相关的问题:什么是SWI-Prolog的标准输入? read_line_to_codes/2read_line_to_codes)需要输入流(例如,与library(readutil)不同)。我用以下谓词得到它:

get/1

。 。 。这当然有效,但感觉有点黑客攻击。是否可以有多个开放输入流?我怎么知道哪一个是操作系统的标准输入(在我的情况下是Linux)?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找适当的流命名。这里有一个可能有用的示例:

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

我找到的最详细的说明页面是here