错误:流user_input:8:5语法错误:Prolog中应为运算符

时间:2018-12-14 14:24:28

标签: prolog swi-prolog

我必须在Prolog中编写一个简单的专家系统来安排课程安排。在此代码部分中,我希望该用户向系统添加一个讲师。为此,读取两个输入值,但出现此错误。

addinstructor() :-    
    read(id),
    read(courseid),     
    assert(instructor(id, courseid)),    
    write("added").

查询:

?- addinstructor().
5
cse102.    

然后,我得到了操作员预期的错误。 如何解决此问题以使我的代码正常工作?

1 个答案:

答案 0 :(得分:2)

谓词read/1读取Prolog术语而不是原始数据。 Prolog条款以句号结尾。

因此,如果您输入5而不是输入5.,则不会收到错误消息。

例如,不要使用Term reading and writing中的谓词。 read/1,您应使用Primitive character I/O中的谓词来读取字符或使用Predicates that operate on strings来读取字符串,例如read_string/3

要回答有关如何实现此问题的下一个问题,请参阅Prolog - Write out facts and reading a users input,然后再访问this