Связывающие ограничения

CLIPS предоставляет 3 связывающих ограничения, предназначенных для объединения отдельных ограничений и переменных в единое целое: & (логическое И), | (логическое ИЛИ) и ~ (логическое НЕ). Ограничение & удов­летворяется, если два соседних ограничения удовлетворяются. Ограничение | удовлетворяется, если любое из двух соседних ограничений удовлетворяется. Ограничение ~ удовлетворяется, если следующее за ним ограничение не удовлетворяется. Связывающие ограничения могут комбинироваться почти произвольным образом и в любом количестве. Ограничение ~ имеет наи­высший приоритет, далее следуют & и |. В случае одинакового приоритета ограничение вычисляется слева направо. Существует одно исключение из правил приоритета, которое применяется при связывании переменных. Ес­ли первое ограничение — это переменная и за ней следует &, то переменная является отдельным ограничением. Ограничение?x&red|blue вычисляется как?х& (red|blue), в то время как по правилам приоритета оно должно было вычисляться как (?x&red) (blue.

Связанные ограничения имеют следующий синтаксис:

Определение 6.9. Синтаксис связывающих ограничений

<элемент-1>& <элемент-2>... & Элемент -n>

<элемент-1>| <элемент-2>... | Элемент -n>

~ <элемент>

Здесь <элемент> должен быть переменной, связанной с простым или состав­ным полем, ограничением или связанным ограничением.

Таким образом, определения ограничений, приведенные в предыдущих разделах, можно расширить так:


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



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