2011-04-01 103 views
1

我將用戶輸入重定向到文件see('entradasaida.txt')。這很好。 雖然,當我嘗試從流輸入文件SWI讀給我這個錯誤:SWI Prolog讀取輸入流錯誤

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

我發現我的錯誤。 文件entradasaida.txt包含一些不以句點('。')結尾的行。 因此,read命令與該消息反應(錯誤:entradasaida.txt:2:0:語法錯誤:操作員期望)。