2016-11-27 5 views
2

構文や構文解析エラーでSWI Prologを終了する方法はありますか?テストを書いて自動的に実行していますが、構文エラーがあればエラーメッセージに気づくとは限りません。SWI Prologのすべてのエラーで終了

答えて

2

ソースファイルのコンパイルエラーを意味すると仮定すると、load_files/2述部は、最初のエラーで停止するオプションを欠いています。構文エラーの場合は、message_hook/3述部を定義してabort/0またはhalt/1を呼び出すことが考えられます。何かのように:

:- multifile user:message_hook/3. 

user:message_hook(syntax_error(Culprit), _, _) :- 
    % maybe print Culprit for some debugging information 
    abort. 
+0

ありがとう、これは私の 'consult/1'と' ensure_loaded/1'で動作しました。 ': - ensure_loaded(some_file).'の代わりに': - initialization(ensure_loaded(some_file))。 'を使う必要があることがわかりました。そうでなければフックは呼び出されませんでした(SWI 7.2.3)。また、['message_hook/3'](http://www.swi-prolog.org/pldoc/doc_for?object=message_hook/3)のSWIドキュメントは、それが動的でマルチファイルとして定義されなければならないと言います。 – tangle