Prolog-关闭SWI-prolog时的无限循环

时间:2019-01-07 00:54:12

标签: prolog

我已经在序言中编写了以下代码:

go :- write(">>"), read(X), process(X).

并使用process / 1进行各种操作。 要捕获我添加的所有未知命令:

process(Y) :- write("unknown command.\n"), go.

问题是,通过在程序正常结束之前关闭窗口来退出SWI-prolog时,它陷入无限循环。 我试图退出时搜索swi-prolog调用,但是找不到以将其包含在代码中。 在这方面的任何帮助或替代解决方法,将不胜感激。 预先感谢!

1 个答案:

答案 0 :(得分:4)

您还需要处理术语end_of_file

在最后一个Prolog术语之后,即仅读取布局或注释直到文件或流的末尾时,read/1产生术语end_of_file

由于(在许多当前系统中)(在标准输入上)读取文件末尾时要执行的操作是reset,因此后续读取也将产生该术语。因此,您的程序会循环运行,同时抱怨它不知道命令end_of_file