gpt4 book ai didi

Prolog DCG 使用 separotr 从文件中读取

转载 作者:行者123 更新时间:2023-12-03 22:58:40 25 4
gpt4 key购买 nike

我正在 Prolog 中迈出第一步,但我遇到了一个问题。

我正在尝试从文件中读取以逗号分隔的记录

upto_comma(Codes) --> string(Codes), ",", !.
list_w([W|Ws]) --> upto_comma(W), [W] ,list_w(Ws).
string([]) --> [].
string([H|T]) -->[H],string(T).

但我得到的只是一个包含单个字符的列表,而我想要的是一个元素列表。例如来自

cat,dog,table

我想要 [cat,dog,table] 而我得到了 [c,a,t,d,o,g,t,a,b,l,e].

我试图在

中更改 upto_comma
upto_comma(Atom) --> string(Codes), ",", !,{ atom_codes(Atom, Codes) }.

但没有任何改变。

我认为我误解了一些基本概念,有人可以帮忙吗?我正在使用 SWIProlog

最佳答案

你的语法遗漏了 list_w//1 的基本情况,我不明白为什么在 upto_comma(W) 之后你需要同样的东西。

我会这样写

list_w([W|Ws]) --> string(W), ",", !, list_w(Ws).
list_w([W]) --> string(W).

string([]) --> [].
string([H|T]) -->[H],string(T).

测试:

?- phrase(list_w(S),"cat,dog").
S = [[99, 97, 116], [100, 111, 103]] ;
false.

关于Prolog DCG 使用 separotr 从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895020/

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