2
有没有办法让SWI Prolog退出任何语法或解析错误?我正在编写测试并自动运行测试,并且如果出现语法错误,我并不总是注意到错误消息。退出SWI中的所有错误Prolog
有没有办法让SWI Prolog退出任何语法或解析错误?我正在编写测试并自动运行测试,并且如果出现语法错误,我并不总是注意到错误消息。退出SWI中的所有错误Prolog
假设您的意思是源文件编译错误,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.
谢谢,这对我来说,'consult/1'和'ensure_loaded/1'。我发现有必要使用': - initialization(ensure_loaded(some_file))。'而不是': - 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