Prolog - 从命令行执行,加载多个文件,执行查询,退出

时间:2016-02-10 16:23:36

标签: command-line prolog multiple-files

我想从Windows命令行运行prolog文件(Load.pl),执行查询(将结果输出到文件)并退出。

我的Load.pl文件加载了多个源文件:

/**
Loading files
*/
consult('C:/MyPath/Prolog/Segments_5.pl').
consult('C:/MyPath/Prolog/Segments_Global.pl').
consult('C:/MyPath/Prolog/Produits.pl').
consult('C:/MyPath/Prolog/SelChemin.pl').
consult('C:/MyPath/Prolog/OutputFunctions.pl').

我正在使用的命令行是:

"C:\Program Files (x86)\swipl\bin\swipl.exe" -f 'C:/MyPath/Prolog/Load.pl' -g output_src('test.txt'),halt -t 'halt(1)'

我想要运行的查询是output_src('test.txt')

它的实现位于OutputFunctions.pl文件中:

output_src(Path) :-
    open(Path, write, Stream),
    (   propose_source(ListeSources), write(Stream, ListeSources), fail
    ;   true
    ),
    close(Stream).

当我打开prolog终端,并手动执行5 consult指令然后output_src指令它工作正常,但当它被命令行执行时,我收到一条错误消息我这个:

ERROR: Prolog initialisation failed:
ERROR: '<meta-call>'/1: Undefined procedure: output_src2/0

P.S。:我真的只是从prolog开始,我需要将它与一些.NET代码连接。

感谢您提供的任何帮助! 问候, 若埃尔

1 个答案:

答案 0 :(得分:2)

仔细查看错误消息:

ERROR: Prolog initialisation failed:
ERROR: ''/1: Undefined procedure: output_src2/0

请注意,它找不到output_src2/0,即arity 的谓词。

为什么它会搜索output_src2 arity为零?

可能是因为命令行标志:

-g output_src('test.txt'),halt 

应该阅读:

-g "output_src('test.txt'),halt"

或:

-g 'output_src(\'test.txt\'),halt'

确切的引用规则取决于您的shell和操作系统。