Язык DECL
1. Основные компоненты языка DECL
1.1. Обычные константы:
Это последовательность букв и цифр. Они не могут начинаться с цифры, буквы X (с X начинаются переменные) и иметь внутри пробелы. Примеры констант: ИВАН1, А21, АА_ _, _125. (Не правильные буквосочетания - XX_1, 23_BB, 2G4A). При этом константы, записанные большими и маленькими буквами, считаются различными, например, ИВАН и Иван - это различные константы.
1.2. Строковые константы:
Любые символы в кавычках. Например: "Введите текст +>", "Нажмите ENTER". Внутри не может быть других кавычек.
1.3. Числа:
Целые числа: положительные и отрицательные, например, 125, -33. Дробные числа: 0.25, 12.44.
1.4. Знаки арифметических операций:
+ (сложить), * (умножить), - (вычитание), DIV (деление), < (больше), <= (больше или равно), = (равно), # (неравенство).
1.5 Внутрисистемные коды N+ N-:
1+ - создается новая вершина без имени;
1- - вершина без имени используется.
Внутрисистемные коды соответствуют определенным вершинам без мнемонических обозначений. Причем, кодов 1- может быть множество. Они соответствуют одной и той же вершине РСС. Но если опять встретится код 1+, то заводится новая вершина и последующие 1- подсоединяются к ней.
В качестве внутрисистемного кода может быть использовано любое целое число (не более 300) с знаками + и -, например, 125+, 125-,..., 125-. Такие коды сопоставляются безымянным объектам, которые постоянно порождаются и используются в БЗ.
1.6. Переменные:
X<целое число="">, например, X1, X25,... Они соответствуют х-вершинам РСС.
1.7. Символ пустого места "_" (нижняя черточка):
Он соответствует объекту, который не играет роли, и ставится на аргументных местах, которые не участвуют в обработке.
Пример: БРАТ(ИВАН1,_) - неважно, кто брат для ИВАН1. Если на месте "_" поставить X1, то это значит, что нужно искать брата.
1.8. Элементарные фрагменты (ЭФ) или просто фрагменты:
Это именованные предикаты, которые имеют вид:
<имя отношения="">(<арг>,<арг2>,...,<аргn>/<код фрагмента="">),
где <арг1>,<арг2>,...,<аргn> - аргументные места, на которых могут стоять константы или переменные. Они соответствуют объектам предметной области. Код фрагмента соответствует комплексному объекту, т.е. упомянутым объектам вместе с их отношением, которые рассматриваются как единое целое. Код фрагмента может отсутствовать. Тогда ЭФ примет более простой вид:
<имя отношения="">(<арг1>,<арг2>,...,<аргn>).
Внутри ЭФ не должно быть пробелов.
1.9. Расширенная семантическая сеть:
(РСС) или просто семантическая сеть - это множество ЭФ, разделенных пробелами (внутри ЭФ их не должно быть).
Пример 1.1. "Иван умный и способный" представляется с помощью РСС:
ИМЯ(ИВАН,1+) УМНЫЙ(1-) СПОСОБНЫЙ(1-),
где 1+ и 1- соответствуют одному и тому же человеку.
Пример 1.2. ИВАН1 связан с ИВАН2 (но это не играет роли) представляется с помощью РСС: _(ИВАН1,ИВАН2), где на месте отношения стоит символ пустого места.
Пример 1.3. Для представления арифметических выражений используется бэкусовская нормальная форма. Равенство 25+X1+3=X2 представляется в виде +(25,X1,X4) +(X4,3,X2).
Другое равенство 2*X1+34=88 представляется в виде: *(2,X1,X2) +(X2,34,88), где X2 сопоставляется результату 2*X1.
Предыдущий раздел|Следующий раздел