Prolog 不同实现版本的差异解析
1. 语法与程序布局
- 语法选择 :Expert Systems Ltd.(ESL)的 Public Domain Prolog–2 版本 2.35 被学生广泛使用,若要选择与 DEC–10 兼容的语法,需在程序开头添加指令
:- state(token_class,_,dec10).
。否则,语法会稍有不同,例如%
不会引入注释,双引号界定的字符串(如"like this"
)也不等同于代码列表。由于 ESL 已停止运营,更新不能立即推出,但实现者(Tony Dodd)希望后续能发布更新。 - 注释 :早期的一些 Prolog 版本不将
%
识别为注释分隔符,但如今的实现版本已无此限制。部分 Prolog 允许/*...*/
注释嵌套,如 SWI 和 ALS Prolog,会将/* /* */ */
视为包含另一个注释的有效注释。然而,在其他测试过的 Prolog 以及 ISO 标准中,注释从第一个/*
开始,到第一个*/
结束,无论中间有何内容。这意味着不能用/* */
注释掉包含/* */
注释的 Prolog 代码。 - 空白字符 :Arity Prolog 4.0 不允许运算符紧跟左括号,否则运算符