Пролог SWI Прочитать Входной Поток Ошибка - PullRequest
1 голос
/ 02 апреля 2011

Я перенаправляю пользовательский ввод в файл 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 Ответ

1 голос
/ 03 апреля 2011

Я нашел свою ошибку. Файл entradasaida.txt содержит несколько строк, которые не заканчиваются точкой ('.'). Таким образом, команда чтения реагирует на это сообщение (ОШИБКА: entradasaida.txt: 2: 0: синтаксическая ошибка: ожидается оператор).

...