- •1. Теория направленных отношений.
- •1.1. Основные понятия.
- •2.2. Языки и схемы направленных отношений.
- •2. Сетевое представление направленных отношений.
- •2.1. Формальное определение сетевого представления НО.
- •2.2. Графическая интерпретация сетевого представления.
- •2.3. Вычисление НО на основе КССГ.
- •2.4. Стратегии вычисления НО.
- •3.2. Синтаксис языка и семантика S-FLOGOL.
- •4.1. Базовые средства языка.
- •4.2. Средства схемной надстройки языка S-FLOGOL.
- •4.3. Системные отношения.
- •5. Интегрированная среда разработки программ.
- •5.1. Центральный модуль.
- •5.2. Текстовый редактор.
- •5.3. Графический редактор.
- •5.4. Вычисление запроса.
- •5.5. Отладка программ.
- •Список литературы
Для использования системных отношений необходимо либо включать явно объявление системного отношения, либо подключить специальный модуль System, поставляемой в составе системы программирования.
5. Интегрированная среда разработки программ.
Для поддержки разработки, исполнения и отладки программ на языке S-FLOGOL используется оригинальная интегрированная среда программирования FLIDE [7,8]. Все модули программы объединяются в программный проект, который создается (загружается) в центральном модуле среды программирования.
Программы на языке S-FLOGOL могут быть представлены в виде модулей следующих типов: текстовые модули, сетевые модули, дедуктивные модули и объектные модули (объектные модули используются для
оптимизации компиляции и далее не рассматриваются).
Текстовые модули (расширение FLT) содержат программы, построенные с использованием текстовой грамматики языка. Для их ввода и редактирования используется оригинальный текстовый редактор.
Сетевые модули (расширение FLN) содержат программы в виде сетевой грамматики. Для работы с сетевыми модулями используется графический редактор.
Дедуктивные модули (расширение FLD) предназначены для выполнения логического вывода средствами теории направленных отношений [5]. Работы с этими модулями также выполняется при помощи графического редактора.
Для входа в систему необходимо запустить файл FLIDE.exe (в этой же директории должен находится файл tgrammar.txt и папка Demo, содержащая
одноименный проект (Demo.FLP) с демонстрационными примерами).
5.1. Центральный модуль.
Центральный модуль системы программирования позволяет создавать
программные проекты, а также добавлять новые или созданные ранее модули в проект и удалять модули из проекта. Физически модули
располагаются в папке с именем проекта, которая помещается в ту папку, где располагается исполнимый файл системы (FIPE.exe).
Окно центрального модуля имеет следующий вид:
37
Для создания нового проекта необходимо нажать кнопку
, и ввести имя проекта. Для загрузки проекта необходимо установить курсор на папку с проектом, нажать кнопку
и выбрать файл проекта (расширение .FLP). Для закрытия пректа следует установить курсор на папку с именем проекта и нажать кнопку
. Для сохранения проекта и всех его модулей используется кнопка
. Для быстрого открытия недавно использовавшихся проектов можно использовать список недавно открытых проектов, доступный через меню «Файл».
Для добавления нового модуля необходимо установить курсор на
папку с соответсвующим названием типа модуля и нажать кнопку
на
панели инстрментов. После ввода имени модуль с указанным именем будет добавлен в дерево модулей проекта. Для удаления модуля из проекта следует выделить нужный модуль в дереве модулей и нажать кнопку
. Заметим, что физически модуль на диске удален не будет. Для сохранения модуля под другим именем необходимо выделить модуль и в меню «Файл»
выбрать пункт «Сохранить как». При этом в дереве модулей проекта модуль
со старым именем будет заменен на модуль с новым именем.
38
Для просмотра и редактирования любого программного модуля необходимо выбрать его двойным щелчком левой кнопки мыши в дереве модулей проекта. В зависимости от типа модуля для его просмотра и редактирования будет открыт текстовый или графический редактор.
5.2. Текстовый редактор.
Текстовый редактор предназначен для текстового ввода программ и компиляции запросов на языке S-FLOGOL [11]. В основу редактора положена оригинальная технология текстового ввода, минимизирующая ручной ввод и позволяющая полностью исключить синтаксические ошибки и значительно снизить количество семантических ошибок в программе [13]. Ручной ввод (с контролем синтаксической корректности) допускается лишь для идентификаторов имен отношений, переменных термов и переменных
свертки, а также для натуральных числел. Все действия по вводу и редактированию программы (кроме ручного ввода) выполняются при помощи мыши и горячих клавиш (см. табл. «Горячие клавиши» в конце раздела).
Ввод синтаксических конструкций осуществляется следующим образом. Изначально в поле ввода располагается исходный текст программы, представляющий правую часть грамматического правила «Модуль». Далее, установив курсор (щелчком левой кнопки мыши) на любом из нетерминальных элементов (символов) в тексте программы, пользователь выбирает одно из возможных правил, определенных в грамматике для этого нетерминального элемента. После чего в текст программы вместо находящегося под курсором элемента встраивается последовательность элементов, представляющих правую часть выбранного правила. Таким образом выполняется элементарный шаг построения программы. Далее выбирается следующий нетерминальный элемент и выбирается правило его определения, и так далее, пока в тексте программы не останется
нетерминальных элементов.
Для упрощения ввода и улучшения восприятия текста программы в редакторе используется автоматическое структурирование [12] и
специальная система раскраски и выделения текста:
–нетерминальне элементы выделяются красным цветом,
–терминальные элементы выделяются жирным шрифтом,
39
–числовые константы и имена отношений отображаются темно-синим цветом, а имена переменных термов – светло-синим цветом,
–символ рекурсивного вызова ‘@’ отображается розовым цветом,
–комментарии к тексту выделяются зеленым цветом.
Окно текстового редактора имеет следующий вид:
Определение элементов. В общем случае для определения некоторого нетерминального элемента следует установить на него курсор, нажать правую кнопку мыши и выбрать из контекстного меню нужную альтернативу. Если вместо правой кнопки мыши использовать двойной щелчок левой кнопки или клавишу Пробел, то будет выбрана первая в списке альтернатива.
Помимо указанного способа, альтернативы можно выбирать при помощи сочетания клавиш Alt+i, где i – номер альтернативы в списке. Для
удобства использования горячих клавиш доступные для текущего элемента
альтернативы отображаются в панели статуса внизу окна.
Удаление элементов. Для удаления элемента следует установить на
него курсор и нажать кнопку
(или нажать клавишу Del).
40
Ввод выражений. Выражения языка вводятся следующим образом. При установке курсора на представляющий выражение элемент пользователю становится доступным выбор префиксных и инфиксных операций, определенных для выражения данного типа. Соответствующие знаки операций отображаются в списке, расположенном в правой части экрана редактора. После выбора двойным щелчком левой кнопки мыши нужной операции в текст программы после элемента-выражения, к которому применяется выбранная операция, встраивается знак операции, за которым следует новый (не определенный) нетерминальный элемент-выражение того же типа.
Поскольку порядок ввода выражения определяется пользователем, то его древовидное внутреннее представление однозначно определяет порядок
вычисления этого выражения. Для отображения этого порядка производится автоматическая расстановка скобок, учитывающая приоритет используемых в выражении операций.
Опциональные элементы. Для скрытия опционального элемента следует установить на него курсор и выбрать в контекстном меню пункт
«восстановить» или нажать кнопку
.
Для восстановления скрытых опций предусмотрен специальный режим отображения скрытых опций, вызываемый нажатием кнопки
, в котором в текст программы встраиваются все скрытые элементы. Для восстановления скрытого элемента следует установить на него курсор и выбрать в контекстном меню пункт «восстановить» или нажать кнопку
.
Помимо указанного способа можно также использовать контекстно-
зависимые списки опциональных символов, располагающихся в рамках
текущей вводимой конструкции, например, имени отношения, условной конструкции и т.д. Для каждого опционального элемента в списке
указывается текущее значение его скрытости, обозначаемое символами «+»
и «-» для скрытых и не скрытых элементов, соответственно. При двойном щелчке на элементе списка, в зависимости от текущего состояния скрытости,
выполняется действие «скрыть» или «восстановить». Применение
контекстно-зависимых списков опций позволяет существенно повысить скорость ввода программ.
41
Ручной ввод. Для элементов ручного ввода по двойному щелчку открывается специальное окно, в котором следует ввести идентификатор или числовую константу. После подтвержения завершения ввода выполняется автоматическое распознавание корректности введенного значения, и в случае, если значение не корректно, выдается соответсвующее предупреждение. При редактировании идентификаторов отношений, переменных термов и свертки предоставляется выбор идентификатора из списка идентификаторов, находяхихся в текущей области видимости.
Списки. Для работы со списками в редкаторе определены традиционные операции добавления, удаления и перемещения элементов списка. Вследстве того, что операнды выражений, в которых используются только связки равного приоритета, завязаны в списки, операции над
списками позволяют перемещать операнды относительно символов операций как элементы списка относительно разделителя. Для работы над списками предусмотрена специальная группа инстументов работы со списками (
).
Выбор и компиляция запроса и выполнение запроса. Для компиляции запроса прежде всего необходимо выбрать и выделить нужное описание отношения в качестве запроса к системе. Для этого нужно установить курсор на любой элемент описания соответсвующего отношения и нажать кнопку
(или клавишу Q). Далее для выполнения компиляции выбранного запроса следует нажать кнопку
(или клавишу F9). После завершения компиляции запроса полученная в результате компиляции программа в форме КССГ будет записана в сетевой модуль (с именем выделеного в качестве запроса
отношения), и затем добавлена в дерево модулей проекта. Для просмотра
результата компиляции и выполнения запроса необходимо либо нажать
кнопку
(или клавишу F10), либо выбрать соответствующий сетевой модуль в списке модулей проекта, в результате чего откроется графический редактор, в котором можно внести необходимые коррективы и выполнить
запрос (см. далее).
42
