我的简单prolog代码抛出语法错误:运算符预期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的简单prolog代码抛出语法错误:运算符预期相关的知识,希望对你有一定的参考价值。
正如标题所示,我的prolog代码抛出了语法错误。我不确定我做错了什么。我使用Swi作为我的IDE,我尝试用它来解决问题,但无济于事。继承我错误的简单prolog代码
?-
| male(bob)
| male(jeff)
|
| female(jane)
| female(erica)
|
| father(bob,jane)
| mother(erica, jane)
|
| ?-mother(erica,X).
ERROR: Syntax error: Operator expected
ERROR: male(bob)
ERROR: ** here **
ERROR:
male(jeff)
female(jane)
female(erica)
father(bob,jane)
mother(erica, jane)
?-mother(erica,X) .
答案
Prolog开发分为两个阶段:编写程序并在Prolog shell中与它进行交互。这两个阶段是分开的。你不是在shell中编写你的程序,至少不是直接编写。
将您的事实保存在一个名为family.pl
的文件中(在每个事实的最后都加上一个点.
!),然后启动Prolog shell。在shell中,您可以使用加载程序
?- consult(family).
要么
?- consult('family.pl').
请注意,在第一种情况下,您不使用.pl
扩展名,但在第二种情况下,如果您使用扩展名,则应在文件名周围使用单引号('
)。
现在您可以运行查询:
?- mother(erica, X).
X = jane.
还有一些其他方法可以加载文件,例如将文件名放在方括号[]
之间而不是使用consult
,或者(对于许多Prolog系统)只需在命令行上添加文件名。
另一答案
prolog中的语句以点结尾:
male(jeff).
female(jane).
female(erica).
father(bob,jane).
mother(erica, jane).
以上是关于我的简单prolog代码抛出语法错误:运算符预期的主要内容,如果未能解决你的问题,请参考以下文章
编程新手。构建简单的银行应用程序 - 令牌“;”上的语法错误, 预期。 - Eclipse 中的错误(包括代码)