2017-10-28 9 views
1

ファイルを読み込んだ後、最初のファイルの結果に従って別のファイルを書きたいのですが、最初のファイルを読み込んだらすぐにプログラムは終了します。私はなぜそれが起こったの原因を捜したが、私は何も発見していない。私は誰かが私を助けることができるかどうかを知りたいです。Swi Prologスクリプトが正しく実行されない

これはコードです:

main :- 
    current_prolog_flag(argv, Argv), 
    [H|_T] = Argv, 
    readPlainText(H), 
    getList(L), 
    open('result.txt',write,X), 
    write(X, L), nl(X), 
    close(X), 
    halt. 
main :- 
    halt(1). 

、スクリプトが後のコードのこの部分を実行停止します。

readPlainText(X) :- 
    open(X, read, Stream), 
    readWords(Stream), 
    close(Stream). 

私は、コンソールから実行しています:

swipl -s leer.pl --quiet menciones.txt 

EDIT:私は問題がat_end_of_streamのためだと思う。

readWords(InStream) :- 
    \+ at_end_of_stream(InStream), 
    readWord(InStream, W), 
    write(W), nl, 
    addWordToDatabase(W), 
    readWords(InStream). 

答えて

1

再帰終了がありません。そして、あなたは(possibily readWords/1ゴールで発生したエラーをテストでき

readWords(_InStream). 

:EOFのハンドラを - それは後に -

readWords(InStream) :- 
    ( \+ at_end_of_stream(InStream) 
    -> readWord(InStream, W), 
     write(W), nl, 
     addWordToDatabase(W), 
     readWords(InStream) 
    ; true 
). 

それとも、あなたのreadWords/1そのまま維持し、追加することができますしてみてくださいたとえば、addWordToDatabase/1にある)、現在は隠れたままです。

関連する問題