SWI Prolog读输入流错误

时间:2011-04-01 21:00:24

标签: prolog syntax-error

我将用户输入重定向到文件see('entradasaida.txt')。这很好用。 虽然,当我尝试从该流输入文件中读取时,swi给出了这个错误:

ERROR: entradasaida.txt:3:0: Syntax error: Operator expected.

为什么呢?我该如何解决这个错误?

liste(A) :-
    see(A),
    nl,
    read(B),
    escreva(B),
    seen.

escreva(A) :-
    write(A),
    nl,
    A==end-of-file, !.

escreva(_) :-
    read(A),
    escreva(A).


18 ?- liste('entradasaida.txt').
ERROR: entradasaida.txt:2:0: Syntax error: Operator expected
19 ?- trace.
true.

[trace] 19 ?- liste('entradasaida.txt').
   Call: (6) liste('entradasaida.txt') ? creep
   Call: (7) see('entradasaida.txt') ? creep
   Exit: (7) see('entradasaida.txt') ? creep
   Call: (7) nl ? creep

   Exit: (7) nl ? creep
   Call: (7) read(_G627) ? creep
ERROR: entradasaida.txt:3:0: Syntax error: Operator expected
   Exception: (7) read(_G648) ? creep
Exception: (6) liste('entradasaida.txt') ? creep

1 个答案:

答案 0 :(得分:1)

我发现了自己的错误。 entradasaida.txt文件包含一些不以句点('。')结尾的行。 因此,read命令对该消息作出反应(错误:entradasaida.txt:2:0:语法错误:操作员期望)。