[ Qt | C++ ] Учебная продукционная система
- Obj <ИМЯ> - создает объект в секции данных с именем <ИМЯ>
- $<ИМЯ> = <ФУНКЦИЯ | ИМЯ | ПЕРЕМЕННАЯ> - создает переменную в секции переменных со значением равным имени объекта, которое получается либо из функции, либо из другой переменной, либо прямым указанием.
- PartOf <ИМЯ1> <ИМЯ2>- создает объекту <ИМЯ1> связь "Часть объекта" к объекту <ИМЯ2>
- DoOn <ИМЯ1> <ИМЯ2>- создает объекту <ИМЯ1> связь "Действие над" к объекту <ИМЯ2>
- InProp <ИМЯ1> <ИМЯ2>- создает объекту <ИМЯ1> связь "В состоянии" к объекту <ИМЯ2>
- OwnIt <ИМЯ1> <ИМЯ2>- создает объекту <ИМЯ1> связь "Владеет" к объекту <ИМЯ2>
- ...
- if : <УСЛОВИЕ1>, ..., <УСЛОВИЕN> : <ДЕЙСТВИЕ1>, ..., <ДЕЙСТВИЕN>
Создаются объекты, между ними прокладываются связи. После чего добавляют правила и они эти данные используют для создания новых объектов или постоения новых, удаления старых связей. Система постоена так, что данные и код раздельны, то есть данные хранятся отдельно от правил и переменных, поскольку подразумевается раздельно хранение. Можно, скажем, хранить файл с огромным количеством правил под разные данные, но один тип задач, а при поступлении в систему данных она сама выбере на основе каких данных можно сделать вывод имеющимися правилами.
Посте того как все данные и правила погружены запускается процесс активизации продукций, в этот момент происходт проход по всем условиям правила и поиска всех возможных вариантов его удовлетворения и каждый из таких вариантов заставляет правило выполнить действия.