Продукционная модель

Грамматика Бекуса-Наура продукционной модели:

< правило> ::= (ЕСЛИ{<антецедент>}ТО{<консеквент>})

<антецедент> ::= <ассоциативная тройка>

<консеквент> ::= <ассоциативная тройка>

<ассоциативная тройка> ::= (<атрибут><объект><значение>)

<атрибут>, <объект> и <значение> должны быть специальными терминами предметной области.

Пример.

“Нефть, вытекающая в воду, порождает разводы на ее поверхности”.

Продукция: (ЕСЛИ(нарушение вода разводы)ТО(вещество утечка нефть))

Для программной реализации продукции можно использовать структуру следующего вида:

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 ;