在Prolog中逐行读取文件 [英] Read a file line by line in Prolog

查看:131
本文介绍了在Prolog中逐行读取文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想读取一个纯文本文件并将谓词应用于每行(这些谓词包含执行输出的write).我该怎么办?

I'd like to read a plain text file and apply a predicate to each line (the predicates contain write which does the output). How would I do that?

推荐答案

在SWI-Prolog中,最干净的解决方案是编写描述什么是行"的DCG,然后为每行调用谓词.使用库(pio)将DCG应用于文件.

In SWI-Prolog, the cleanest solution is to write a DCG that describes what a "line" is, then call a predicate for each line. Use library(pio) to apply the DCG to a file.

编辑:根据要求,请考虑:

EDIT: As requested, consider:

:- use_module(library(pio)).

lines([])           --> call(eos), !.
lines([Line|Lines]) --> line(Line), lines(Lines).

eos([], []).

line([])     --> ( "\n" ; call(eos) ), !.
line([L|Ls]) --> [L], line(Ls).

样本用法:?- phrase_from_file(lines(Ls), 'your_file.txt').

这篇关于在Prolog中逐行读取文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆