【问题标题】:Exiting on all errors in SWI Prolog退出 SWI Prolog 中的所有错误
【发布时间】:2016-11-27 03:33:01
【问题描述】:

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

【问题讨论】:

    标签: prolog swi-prolog


    【解决方案1】:

    假设您的意思是源文件编译错误,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)。此外,message_hook/3 的 SWI 文档说它必须定义为动态和多文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多