Я хотел бы отрегулировать свое отрицательное правило, чтобы он принимал любой символ, а не только р, и сохранял этот символ в переменной - PullRequest
0 голосов
/ 28 марта 2019

Привет, я создал программу клипов, и в своем отрицательном тесте я имитирую пропозициональный закон и хотел бы, чтобы программа принимала любой символ, а не только символ P.Я хочу, чтобы дефлектор срабатывал независимо от того, какой символ есть.

Я пытался поместить символ? Вместо P, но это пока не решило мою проблему.

(deftemplate andprop (slot symbol1)(slot symbol2))
(deftemplate orprop (slot symbol1)(slot symbol2))
(deftemplate implies (multislot premise)(multislot implication))
(deftemplate sentence (multislot sent))

(defrule read-from-user
=>
(printout t "Please enter a sentence: Use ~ for not and => for implies please " crlf)
(bind ?response (readline))
(assert (sentence(sent ?response))))

(defrule negative
(sentence(sent "~(~P)"))
=>
(printout t "HI " crlf))

ИтакЯ хочу, чтобы дефлектор сработал отрицательно независимо от символа, который находится в символе, так что только если символ P

1 Ответ

1 голос
/ 28 марта 2019

Я бы предложил использовать функцию $ explode $, чтобы разбить предложение на отдельные токены.

         CLIPS (6.31 2/3/18)
CLIPS> 
(deftemplate andprop 
   (slot symbol1)
   (slot symbol2))
CLIPS> 
(deftemplate orprop 
   (slot symbol1)
   (slot symbol2))
CLIPS>    
(deftemplate implies 
   (multislot premise)
   (multislot implication))
CLIPS> 
(deftemplate sentence 
   (multislot sent))
CLIPS> 
(defrule read-from-user
   =>
   (printout t "Please enter a sentence: Use ~ for not and => for implies please " crlf)
   (bind ?response (readline))
   (assert (sentence (sent (explode$ ?response)))))
CLIPS> 
(defrule negative
   (sentence (sent "~" "(" "~" ?symbol ")"))
   =>
   (printout t "HI " ?symbol crlf))
CLIPS> (run)
Please enter a sentence: Use ~ for not and => for implies please 
~(~P)
HI P
CLIPS> (reset)
CLIPS> (run)
Please enter a sentence: Use ~ for not and => for implies please 
~(~XYZ)
HI XYZ
CLIPS> (facts)
f-0     (initial-fact)
f-1     (sentence (sent "~" "(" "~" XYZ ")"))
For a total of 2 facts.
CLIPS> 
...