Правая часть прод-и. Манипулятор.
< правая часть > :: = action { < операции > }
< операция > :: = < присваивание > |
< манипулятор > |
< операция управления > |
< операция И / Ф >
< присваивание > :: = < П - переменная > = < сост.стр. >
р3 <= ‘ abc’. Pr7 (s). < P4
p3 <= abc < строка, возвр-я Pr7 (s) > < стр. счит-я из р4 слева >
Все компоненты берутся на момент операции присваивания. Если повторить эту операцию еще раз, очередное значение Р3 м. оказывается совсем другим, потому что Р4 может изменить свое значение.
Присваивание с константой используется для формирования фраз естественного языка.
< манипулятор > :: = < создать факт > |
< удалить факт > |
< изменить факт >
Примечание: первые 2 варианта коренным образом отличаю продукцию СИИ от реляционной СУБД.
< создать факт > :: = ( \ < имя факта > : [ { слоты } ]
< нев. слот > :: < имя слота > [ = < значение > ]
( \ el1: ) - факт с именем el/ без слотов
( \ факт3 : время = 17 )
Операция удаления несколько сложнее, потому что возможно удаление не одного конкретного ф-та, а множества ф-тов, соответствующих заданному образцу.
<удал.факт > :: = [ ^ ] ( < шаблон имени факта >
[ < спец. нер-р > ]
[ < шаблон имени слота > ]
(13 \ : * = *) - удалить факт 13, имя некоторого слота с какими-либо значениями.
( > del { : = F1, F2 } \ :) - удалить все факты, кроме F1 и F2, и все удаленные имена добавить и переменную Del слева
^ ( * \ : тип = не,
зн_вых => V1
зн_вых => V2
{ _equal ( $V1, $V2 ) }) - удалить все неисправные инверторы ( у которых вх = вых ) записываются значения вх&вых
< изм. факт > :: = [ ^ ] ( < табл.им.фактов >
[ { специализатор } ] :
[ < слоты > ] )
< слоты > :: = \ < новый слот > |
< шаблон удаленного слота > / |
< шаблон слота >
Чтобы сформировать образец для поиска объектов для изменения, убираются < новые слоты > и убираются \ и шаблонов для удаления
( IO : OFF \
\ ON )
(IO : OFF) - образец для поиска
^ ( * : высота = * { > 5000 },
\ автопилот = да ) - для всех ф-тов, у которых есть слот высота со значением > 5000 добавить слот Автопилот со значением ДА.