我已经在序言中编写了以下代码:
go :- write(">>"), read(X), process(X).
并使用process / 1进行各种操作。 要捕获我添加的所有未知命令:
process(Y) :- write("unknown command.\n"), go.
问题是,通过在程序正常结束之前关闭窗口来退出SWI-prolog时,它陷入无限循环。 我试图退出时搜索swi-prolog调用,但是找不到以将其包含在代码中。 在这方面的任何帮助或替代解决方法,将不胜感激。 预先感谢!
答案 0 :(得分:4)
您还需要处理术语end_of_file
。
在最后一个Prolog术语之后,即仅读取布局或注释直到文件或流的末尾时,read/1
产生术语end_of_file
。
由于(在许多当前系统中)(在标准输入上)读取文件末尾时要执行的操作是reset
,因此后续读取也将产生该术语。因此,您的程序会循环运行,同时抱怨它不知道命令end_of_file
。