gpt4 book ai didi

prolog - 在 prolog 中读取用户输入字符串

转载 作者:行者123 更新时间:2023-12-01 12:45:34 25 4
gpt4 key购买 nike

我是 Prolog 的初学者。我正在使用 swi prolog(刚开始使用它),我需要将用户输入字符串拆分为一个列表。我尝试了以下代码,但收到一条错误消息,指出“在子句正文中完全停止?无法重新定义,/2”

write('Enter the String'),nl,read('I').
tokenize("",[]).
tokenize(I,[H|T]):-fronttoken(I,H,X),tokenize(X,T).

有人可以帮我解决这个问题吗...

最佳答案

从您的错误消息中,很明显您正在使用 SWI-Prolog。然后你可以使用它的库支持:

?- read_line_to_codes(user_input,Cs), atom_codes(A, Cs), atomic_list_concat(L, ' ', A).
|: hello world !
Cs = [104, 101, 108, 108, 111, 32, 119, 111, 114|...],
A = 'hello world !',
L = [hello, world, !].

为了更直接地处理“字符串”(实际上,字符串是代码列表),我在 string 的帮助下构建了我的拆分器//1
:- use_module(library(dcg/basics)).

%% splitter(+Sep, -Chunks)
%
% split input on Sep: minimal implementation
%
splitter(Sep, [Chunk|R]) -->
string(Chunk),
( Sep -> !, splitter(Sep, R)
; [], {R = []}
).

作为一个 DCG,它应该用短语/2 来调用
?- phrase(splitter(" ", Strings), "Hello world !"), maplist(atom_codes,Atoms,Strings).
Strings = [[72, 101, 108, 108, 111], [119, 111, 114, 108, 100], [33]],
Atoms = ['Hello', world, !] .

关于prolog - 在 prolog 中读取用户输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353000/

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