![]() |
![]() |
Верхний уровень представления знаний в ESTA ( expert system for text animation ) состоит из секций. Первая секция в любой БЗ должна называться START . Секция включает имя, текстовое описание и число параграфов. Если параграф включает логическое условие ( Boolean expression ), тогда условие выполняется вначале.
ESTA обрабатывает параграфы в секции последовательно. Если условия являются истинными или параграф не включает логическое условие вообще, список действий выполняется в порядке, данном в параграфе.
Когда начинается консультация (команда BeginConsultation), ESTA начинает с выполнения логических условий в параграфах секций START. Секция START включает три параграфа: первый включает в себя заголовок секции и список двух действий, разделенных запятыми. Второй параграф включает в себя только одно действие. Последний параграф включает отдельное действие без предшествующего логического условия.
Вычисление логического условия обычно должно использовать параметры. Если параметры не имеют значения, ESTA будет устанавливать переменную для ввода пользователем, основываясь на объявлении параметра. Параметры подобны переменным, которые определяют поток управления между секциями. Любой параметр имеет описательное поле и тип поля; далее число полей, опираясь на тип параметра может быть использовано, чтобы описать сам параметр. Параметр может иметь один из следующих типов: логический, текстовый, числовой и параметр категории. Любой параметр позволяет задать переменным значения следующими путями: ответом на вопрос, как результат некоторых правил или как присвоение результата от некоторых действий
Пример
Title
Sections
Section START: ‘work out where the cinema is located'
if (cinema = ‘odeon') do city_centre
if (cinema = ‘palace') do suburb
Section city_centre: ‘accessing a city centre cinema'
if (distance >= 10') advice ‘Use your car'
if (distance >= 3' and distance < 10) advice ‘Walk'
...
Parameters
parameter cinema: ‘cinema'
type category
options
odeon,
palace.
question ‘Which cinema is showing the film?'
Синтаксис секции :
<section> ::= section<section_name>[:]<description_text><paragraph_list>
<paragraph_list> ::= <paragraph>[<paragraph_list>]
<paragraph> ::= [if<boolean_expression>]<action> | [if<boolean_expression>](<actions>)
<actions> ::= <action>[,<actions>]
<action> ::= advice | assign | call | chain | do | do_section_of | exit | stop
![]() |
![]() |