![]() |
![]() |
Грамматика Бекуса-Наура продукционной модели:
< правило> ::= (ЕСЛИ{<антецедент>}ТО{<консеквент>})
<антецедент> ::= <ассоциативная тройка>
<консеквент> ::= <ассоциативная тройка>
<ассоциативная тройка> ::= (<атрибут><объект><значение>)
<атрибут>, <объект> и <значение> должны быть специальными терминами предметной области.
Пример.
“Нефть, вытекающая в воду, порождает разводы на ее поверхности”.
Продукция: (ЕСЛИ(нарушение вода разводы)ТО(вещество утечка нефть))
Для программной реализации продукции можно использовать структуру следующего вида:
typedef struct DECNODE_TYPE
{
int openand1,operand2; // Правая пара операторов
int comp 1; // Оператор сравнения
int operator 1; // Оператор объединения нескольких правил
int operand 3, operand 4; // Вторая пара операторов
int comp 2; // Оператор сравнения
ACTION * act _ true ; // Список действий при выполнении
ACTION * act _ false ; // и невыполнении условий
DECNODE _ TYP * dec _ true ; // Ветви при выполнении
DECNODE _ TYP * dec _ false ; // и невыполнении условий
} DECNODE , * DECNODE _ PTR ;
![]() |
![]() |