(deftemplate illness
(slot sickness)
(multislot keywords))
(deffacts qestion-refrences
(illness (sickness stunted-Groth)(keywords stunted groth))
(illness (sickness pale-Yellow) (keywords pale yellow))
(illness (sickness reddish-Brown)(keywords reddish brown))
(illness (sickness stunted-Root)(keywords stunted root)))
(deffunction askquestion (?question)
(printout t ?question)
(bind ?answer (read))
(if (lexemep ?answer)
then (bind ?answer (lowcase ?answer)))
?answer)
(defrule determineSickness
(bind ?f (askquestion "whot Does the plant seem to have ? "))
(illness (keywords ?kw) (sickness ?sk))
(while (not (subsetp ?kw ?f))
(bind ?f (askquestion "whot Does the plant seem to have ? ")))
=>
(assert ?sk))
То, что я пытаюсь сделать, это просто спросить у пользователя, что не так с их установкой, и использовать ключевые слова для определения проблемы, а затем утвердить проблему. Однако я продолжаю получать следующую ошибку.Как отладить «Проверить соответствующий синтаксис для defrule» в движке правил Clips?
Defining defrule: determineSickness
[PRNTUTIL2] Syntax Error: Check appropriate syntax for defrule.
ERROR:
(defrule MAIN::determineSickness
(bind ?f (
FALSE
CLIPS>
спасибо большое за помощь. также спасибо за [это] (http://stackoverflow.com/a/27363761/3738647). – user373864q