2014-05-16 6 views
0

CLIPS를 사용하여 가계도에서 둘 이상의 가족 구성원 간의 관계를 어떻게 알 수 있습니까? 이 규칙을 시도했지만 작동하지 않습니다. 구문 오류가 있습니다.CLIPS 전문가 시스템에서 관계를 찾으십시오.

오류를 피하기위한 힌트가 있습니까?

(defrule Family 
    (FamilyTree ?L-name ?F-name) 
     => 
     (assert(FamilyTree ?L-name ?F-name(read)) 
     (printout t ?L-name "is parent of" ?F-name crlf))) 
+0

정확한 오류를 포함해야합니다. – stevesliva

+0

[PRNTUTIL2] 구문 오류 : 패턴 탈형에 적합한 구문을 확인하십시오. – Rana

+0

(Assert (FamilyTree? L-name? F-name (read)) 뒤에 괄호가 누락 되었습니까? – Evans

답변

0

질문에 중요한 정보가 누락 된 것 같습니다. 게시 한 코드 스 니펫이 올바르게로드되었습니다. FamilyTree deftemplate을 추가하면 설명 된 오류가 발생합니다. 규칙에 deftemplate 사실을 사용하는 경우 슬롯 이름을 지정해야하는 사실을 탈피하기위한 구문을 사용해야합니다.

CLIPS> (clear) 
CLIPS> 
(defrule Family 
    (FamilyTree ?L-name ?F-name) 
    => 
    (assert(FamilyTree ?L-name ?F-name(read)) 
    (printout t ?L-name "is parent of" ?F-name crlf))) 
CLIPS> (clear) 
CLIPS> (deftemplate FamilyTree (slot last-name) (slot first-name)) 
CLIPS> 
(defrule Family 
    (FamilyTree ?L-name ?F-name) 
    => 
    (assert(FamilyTree ?L-name ?F-name(read)) 
    (printout t ?L-name "is parent of" ?F-name crlf))) 

[PRNTUTIL2] Syntax Error: Check appropriate syntax for deftemplate patterns. 

ERROR: 
(defrule MAIN::Family 
    (FamilyTree ?L-name 
CLIPS>