【发布时间】:2012-06-19 18:17:19
【问题描述】:
我很难弄清楚这一点,尽管这是用其他语言做的最简单的事情之一:有没有一种简单的方法可以将文本文件的全部内容读入 Prolog 变量?
【问题讨论】:
标签: prolog swi-prolog dcg
我很难弄清楚这一点,尽管这是用其他语言做的最简单的事情之一:有没有一种简单的方法可以将文本文件的全部内容读入 Prolog 变量?
【问题讨论】:
标签: prolog swi-prolog dcg
用 DCG 简单说明你想要描述的内容,然后使用 library(pio) 从文件中解析:
:- use_module(library(pio)).
all([]) --> [].
all([L|Ls]) --> [L], all(Ls).
例子:
?- once(phrase_from_file(all(Ls), 'all.pl')).
Ls = [10, 58, 45, 32, 117, 115, 101, 95, 109|...].
【讨论】:
library(pio) 的巨大优势只有在您已经使用非终端进行处理时才会显示出来。 phrase_from_file/2 不会一口气读取整个文件内容,而是会进行一些内部缓冲:通过这种方式,可以在恒定空间中处理任意大小的文件。
在library(readutil) 中有一些内置函数:见read_file_to_codes 或read_file_to_terms
【讨论】: