从user_input读取会导致":|"出现在输出中

时间:2014-06-20 07:54:55

标签: prolog swi-prolog

我的代码正在使用read_line_to_codes/2read_stream_to_codes/2来阅读user_input。这就是这些读取的组织方式:

main :-
    read_line_to_codes(user_input, [A]),
    read_line_to_codes(user_input, B),
    /* Some parsing happens here */
    read_stream_to_codes(user_input, C),
    /* Some more parsing happens here and the code goes on */

我正在使用以下命令编译程序:

swipl -q -t main -o program -c program.pl

程序运行正常,但是由于在main中读取了这些内容,我得到一个带有|:|:个字符的输出(每当用户输入内容时,swipl控制台显示|:)。当我从程序中删除所有I / O代码时,它会在不输出这些字符的情况下运行。

有没有办法摆脱这种行为?

1 个答案:

答案 0 :(得分:1)

您必须使用prompt1/1谓词设置下一行的提示,或prompt/2更改为全局提示消息。

E.g。使用prompt1/1

?- read_line_to_codes(user_input, L).
|: test
L = [116, 101, 115, 116].

?- prompt1(''), read_line_to_codes(user_input, L).
test
L = [116, 101, 115, 116].

或使用prompt/2

?- prompt(Old, 'Give me: ').
Old = '|: '.

?- read_line_to_codes(user_input, L).
Give me: abc
L = [97, 98, 99].