Правила
В языке CLIPS правила имеют следующий формат:
(defrule < имя правила> < необязательный комментарий > < необязательное объявление > < предпосылка_1 > < предпосылка_m > › < действие_1 > < предпосылка_n >)
Например:
(defrule chores "Things to do on Sunday" (salience 10) (today is Sunday) (weather is warm) › (assert (wash car)) (assert (chop wood))
В этом примере Chores – произвольно выбранное имя правила. Предпосылки в условной части правила:
(today is Sunday) (weather is warm)
Сопоставляются затем интерпретатором с базой фактов, а действия, перечисленные в выполняемой части правила (она начинается после пары символов ›), вставят в базу два факта:
(wash car) (chop wood)
В случае, если правило будет активизировано. Приведенный в тексте правила комментарий:
"Things to do on Sunday"
("Что сделать в воскресенье"), поможет в дальнейшем вспомнить, чего ради это правило включено в программу.
Выражение:
(salience 10)
Указывает на степень важности правила. Пусть, например, в программе имеется другое правило:
(defrule fun "Better things to do on Sunday" (salience 100) (today is Sunday) (weather is warm) › (assert (drink beer)) (assert (play guitar)))
Поскольку предпосылки обоих правил одинаковы, то при выполнении оговоренных условий они будут "конкурировать" за внимание интерпретатора. Предпочтение будет отдано правилу, у которого параметр salience имеет более высокое значение, в данном случае – правилу fun. Параметру salience может быть присвоено любое целочисленное значение в диапазоне [-10 000, 10 000]. Если параметр salience в определении правила опущен, ему по умолчанию присваивается значение 0.