SWI Prolog中所有错误退出

3

有没有一种方法可以使SWI Prolog在任何语法或解析错误时退出?我正在编写测试并自动运行它们,如果我有语法错误,我不总是注意到错误消息。

1个回答

2

假设您指的是源文件编译错误,load_files/2谓词缺少停止在第一个错误上的选项。一种可能的解决方案是定义message_hook/3谓词来调用abort/0halt/1以处理语法错误。例如:

:- multifile user:message_hook/3.

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

谢谢,这对我有用,使用consult/1ensure_loaded/1。我发现需要使用:- initialization(ensure_loaded(some_file)).而不是仅仅使用:- ensure_loaded(some_file).,否则钩子不会被调用(SWI 7.2.3)。此外,SWI文档中关于message_hook/3的说明说它必须定义为动态和多文件。 - tangle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接