PROLOG:“语法错误:预期运算符” 错误:c:/users/zulfekarali/Desktop/KBS/kbs.pl:2:3:语法错误:操作员预期 % c:/Users/ZulfekarAli/Desktop/KBS/kbs.pl 编译0.00秒,27条 -------- 域 疾病,适应症 = 符号 患者,姓名 = 字符串 谓词 假设(字符串,疾病) 症状(名称,适应症) 响应(字符) 去 条款 去 :- write("病人叫什么名字?"), 读取(患者), 假设(患者,疾病), write(Patient,"可能有 ",Disease,"."),nl. 去 :- write("对不起,我好像做不到"),nl, write("诊断疾病。"),nl. 症状(患者,发烧):- write(",患者,"是否发烧(y/n)?"), 响应(回复), 回复='y'。 症状(患者,皮疹):- write("",Patient," 有皮疹 (y/n) 吗?"), 响应(回复), 回复='y'。 症状(患者,头痛):- write("",Patient," 是否头痛 (y/n) ?"), 响应(回复), 回复='y'。 症状(患者,流鼻涕):- write("",Patient," 有流鼻涕 (y/n) 吗?"), 响应(回复), 回复='y'。 症状(患者,结膜炎):- write("",Patient," 是否患有结膜炎 (y/n) ?"), 响应(回复), 回复='y'。 症状(患者,咳嗽):- write("",Patient," 是否有咳嗽 (y/n) ?"), 响应(回复), 回复='y'。 症状(患者,body_ache):- write("",Patient," 有 body_ache (y/n) 吗?"), 响应(回复), 回复='y'。 症状(患者,发冷):- write("",Patient," 有发冷 (y/n) 吗?"), 响应(回复), 回复='y'。 症状(患者,喉咙痛):- write("",Patient," 有喉咙痛 (y/n) 吗?"), 响应(回复), 回复='y'。 症状(患者,打喷嚏):- write("",Patient," 是否打喷嚏 (y/n) ?"), 响应(回复), 回复='y'。 症状(患者,肿大的腺体):- 写(“患者”是否有肿胀的腺体(y/n)?“), 响应(回复), 回复='y'。 假设(患者,麻疹):- 症状(病人,发烧), 症状(病人,咳嗽), 症状(患者,结膜炎), 症状(患者,流鼻涕), 症状(患者,皮疹)。 假设(患者,german_measles):- 症状(病人,发烧), 症状(患者,头痛), 症状(患者,流鼻涕), 症状(患者,皮疹)。 假设(患者,流感):- 症状(病人,发烧), 症状(患者,头痛), 症状(患者,body_ache), 症状(患者,结膜炎), 症状(患者,寒战), 症状(患者,喉咙痛), 症状(患者,流鼻涕), 症状(病人,咳嗽)。 假设(患者,common_cold):- 症状(患者,头痛), 症状(病人,打喷嚏), 症状(患者,喉咙痛), 症状(患者,流鼻涕), 症状(患者,寒战)。 假设(患者,腮腺炎):- 症状(病人,发烧), 症状(患者,肿大的腺体)。 假设(患者,chicken_pox):- 症状(病人,发烧), 症状(患者,寒战), 症状(患者,body_ache), 症状(患者,皮疹)。 假设(患者,麻疹):- 症状(病人,咳嗽), 症状(病人,打喷嚏), 症状(患者,流鼻涕)。 响应(回复):- 读字符(回复), 写(回复),nl。
问问题
5467 次
2 回答
1
domains
disease,indication = symbol
Patient,name = string
predicates
hypothesis(string,disease)
symptom(name,indication)
response(char)
go
clauses
我认为这段代码应该用%
符号注释以修复语法错误。
在这里,作为另一个问题,您可能希望!
在谓词的最后一个 cut ( ) ,否则 Prolog 由于回溯将在go
第一个成功时尝试第二个。
go :-
write("What is the patient's name? "),
readln(Patient),
hypothesis(Patient,Disease),
write(Patient,"probably has ",Disease,"."),nl,!.
于 2014-03-11T13:38:35.650 回答
1
由于多种原因,您提供的代码是无效的 SWI-Prolog 代码。
1
在第一次出现go:-
.
2
write/[3,4]
SWI-Prolog 中不存在谓词。
3
谓词readln/1
存在于 library 中readln
。即使这个模块是自动加载的,最好:- use_module(library(readln)).
在文件顶部使用声明来明确依赖。
更重要的是,readln/1
返回列表,但hypothesis/2
似乎symptom/2
预期非列表输入。
4
原子readln/1
元素与字符串的其他参数之间存在不匹配。write/[3,4]
于 2014-04-04T21:54:52.383 回答