Определение 6.16. Синтаксис адреса образца

<адрес-образца>::=?<имя-переменной> <- <образец>

Стрелка влево (<-) — необходимая часть синтаксиса. Переменная, связан­ная с адресом факта или объекта, может сравниваться с другой переменной или использоваться внешней функцией. Переменная, связанная с адресом факта или объекта, может быть также использована для последующего ограничения полей в образце условного выражения. Однако нельзя связы­вать переменную в условном выражении not.

В качестве примера приведем простое правило, которое удаляет все факты data.

Пример 6.23. Правило del-data-facts

(defrule del-data-facts

?data-facts <- (data $?)

=>

(retract?data-facts))

На этом рассмотрение синтаксиса и способов использования условного элемента образец (pattern СЕ) можно считать завершенным. Как вы уже успели убедиться, это довольно сложная конструкция языка CLIPS. Утешением может послужить то, что остальные условные элементы (test, and, or, not, exists, forall и logical) гораздо проще используют образцы в качестве основы. Их рассмотрением мы и займемся в следующих разделах.

6.5.2. Условный элемент test

Условный элемент test предоставляет возможность наложения дополни­тельных ограничений на слоты фактов или объектов. Элемент test удовле­творяется, если вызванная в нем функция возвращает значение не-false. Как и в случае предикатных ограничений образца в условном элементе test, можно использовать переменные, уже связанные со своими значе­ниями. Внутри элемента test могут быть выполнены различные логические операции, например сравнения переменных.

Определение 6.17. Синтаксис условного элемента test

<ycлoвный-элeмeнт-test >::= (test <вызов-функции>)

Выражение test вычисляется каждый раз при удовлетворении других условных элементов. Это означает, что условный элемент test будет вычис­лен больше одного раза, если обрабатываемое выражение может быть удов­летворено более чем одной группой данных. Использование условного элемента test может стать причиной автоматического добавления правилу некоторых условных выражений. Кроме того, CLIPS может автоматически переупорядочивать условные элементы test (см. разд. 6.5.9).

Приведенное ниже правило находит пару фактов data, причем разница между значениями первых полей этих фактов должна быть больше или равной 3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: