gpt4 book ai didi

prolog - 使用phrase_from_file读取文件行

转载 作者:行者123 更新时间:2023-12-02 07:20:46 25 4
gpt4 key购买 nike

我一直在尝试使用 phrase_from_file 和语法规则来解析包含整数行的文件

line --> I,line,{integer(I)}.
line --> ['\n'].

因此:phrase_from_file(line,'input.txt')。

它失败了,我在试图追踪它时很快就迷路了。我什至尝试打印 I,但它甚至没有到达那里。

编辑::由于下面的解决方案都不符合我的需求(使用 read/1 假设您正在阅读术语,有时编写 DCG 可能需要太长的时间),我蚕食了 this我用谷歌搜索的代码,主要变化是添加了:

read_rest(-1,[]):-!.

read_word(C,[],C) :- ( C=32 ;
C=(-1)
) , !.

最佳答案

如果您使用phrase_from_file/2,有一种非常简单的方法可以在读取实际文件之前测试您的程序。只需使用 phrase/2 调用相同的非终结符即可。因此,目标

phrase(line,"1\n2").

与调用相同

phrase_from_file(line,fichier)

当fichier是包含以上3个字符的文件时。因此,您可以使用 phrase/2 以非常紧凑的方式进行测试和实验。

@Jan Burse 已经提到了更多问题。 SWI 读取字符代码。所以你必须写

newline --> "\n".

换行符。然后你仍然需要自己解析整数。但使用 phrase/2 可以更轻松地测试所有这些。好处是您可以切换到读取文件而无需更改实际的 DCG 代码。

关于prolog - 使用phrase_from_file读取文件行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com