Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FLOGOL IDE (отчёт).pdf
Скачиваний:
13
Добавлен:
28.06.2014
Размер:
923.8 Кб
Скачать

Горячие клавиши текстового редактора:

Клавиша

Назначение

Пробел

Выбор первой альтернативы / Редактирование элементов

 

ручного ввода

Alt + i

Выбор i-й альтернативы

Del

Удаление (очистка нетерминального/скрытие опционального)

 

элемента

Ctrl+i

Выбор i-й операции при вводе выражения

,

Добавление терма через операцию соединения

Влево

Перемещение курсора на один элемент влево

Вправо

Перемещение курсора на один элемент вправо

Вверх

Перемещение курсора на предыдущее доменное выражение

Вниз

Перемещение курсора на следующее доменное выражение

Home

Перемещение курсора в начало доменного выражения

End

Перемещение курсора в конец доменного выражения

Ins

Вставка нового доменного выражения

Ctrl+Вправо

Перемещение элемента списка вправо (для доменных

 

выражений – вниз)

Ctrl+Влево

Перемещение элемента списка вправо (для доменных

 

выражений – вверх)

`

Перевод курсора в расширенный режим выделения

BackSpace

Сворачивание нетерминального элемента

Ctrl+Z

Откат

Q

Выделение/сброс запроса

F9

Компиляция запроса

F10

Вызов графического редактора для выполнения запроса

5.3. Графический редактор.

Графический редактор системы предназначен формирования сетевых программ в виде КССГ графическим способом. Кроме того, графический редактор используется для управления процессом выполнения программы и отображения отладочной информации и результатов вычисления запроса.

Окно разделено на три основные части: дерево объектов, поле

редактирования сетей и окно для вывода текстовых сообщений. Построение программы. Для построения программы, представляющей

собой КССГ, необходимо задать терминальный и нетерминальный базисы

грамматики, выделить среди элементов нетерминального базиса аксиому и определить правила для всех элементов нетерминального базиса.

43

Дерево объектов. Все операции по формированию грамматики, кроме редактирования тел правил, выполняются в дереве объектов программы. Добавление любого объекта производится путем установки курсора на папку,

содержащую объекты данного класса, и нажатием кнопки (Добавить). Изменение свойств объекта дерева производится установкой курсора на

нужном объекте и нажатием кнопки (Изменить). Для удаления объекта

необходимо установить на нем курсор и нажать кнопку (Удалить). Установка курсора производится щелчком левой кнопки мыши по

изображению нужного объекта в дереве.

Для добавления элемента терминального базиса необходимо добавить объект в папку Конструкторы, Константы или Системные.

Выбор папки определяет ограничения на возможную интерпретацию

элементов сетей соответствующего сорта. Вид окна для ввода элемента базиса на примере конструктора приведен на следующем рисунке.

44

Элементы базиса определяют возможные сорта элементов сетей.

Общие свойства сорта, такие как имя и комментарий, доступны для

редактирования при любой интерпретации; доступность других свойств зависит от выбранной интерпретации.

В папку конструкторы добавляются элементы, интерпретируемые как

конструкторы на эрбрановском универсуме. Помимо общих свойств сорта для конструкторов допускается изменение только входной арности.

Папки Константы и Системные предназначены для поддержки системных типов данных и системных отношений, их обрабатывающих. Напомним, что системными типами данных являются натуральные числа, списки и строки. В папке Константы расположены генераторы констант системных типов, именами которых являются конструкции соответствующих

констант. Для записи списков используется скобочная нотация, например, список может быть записан как [A,[B,C]], где A,B и C – конструкторы на эрбрановском универсуме.

Папка Правила предназначена для добавления сортов в нетерминальный базис и определяющих их правил в грамматику. Для

добавления правила нового сорта необходимо установить курсор на папку правила и добавить объект. При этом в появившемся окне следует указать все известные для данного правила свойства, такие как арность,

функциональность, тотальность и др. После ввода свойств нового сорта в

45

папку Правила будет добавлена новая вершина, имя которой будет совпадать с только что введенным именем нового нетерминального сорта.

Для добавления правила для уже существующего нетерминального сорта нужно установить курсор на любом правиле, определяющим данный сорт и добавить объект. Все правила в дереве сортируются по имени,

поэтому новое правило будет добавлено рядом с уже имеющимся.

В случае, если определено несколько правил для одного сорта, для идентификации вершин дерева к имени сорта добавляется номер правила через точку, например, Add.1 и Add.2 . Заметим, что номера правил не входят в их имена и указанные правила по-прежнему определяют сорт Add. Для размещения правил различных сортов по отдельным папкам используйте режим группировки, включаемый кнопкой .

Особыми правилами являются запросы к системе, располагающиеся в папке Запросы. Основным отличием запросов от обычных правил является то, что они не описывают общую логику решения задачи, а используются для указания исходных данных для ее решения. Например, для отношения сложения, описанного на S-FLOGOL в виде Add={Null,x : x} Add={Succ(x),y : Succ(@(x,y))}, можно сформулировать запросы Query1 = {Succ(Null), Null: x},

Query2={Succ(Null),Succ(Null): x} и др.

Один из введенных запросов выбирается в качестве запроса на вычисление. Заметим, что запрос не может определяться более, чем одним правилом. В случае, если это необходимо, создайте промежуточное правило обычным способом и используйте его при построении запроса на вычисление.

Область редактирования графического редактора предназначена для

формирования сетей – правых частей правил КССГ (далее просто сетей).

Напомним, что при добавлении правила в дереве объектов редактора соответствующая ему сеть создается пустой. Для редактирования сети

установите курсор в дереве объектов на нужное правило – при этом в

области редактирования будет отображена соответствующая сеть. Выделение любых объектов сети производится при помощи щелчка

левой кнопкой мыши. Кроме этого, разрешается выделять группу объектов

путем удерживания во время щелчков по объектам клавиши Ctrl. Кроме

46

указанного способа можно также использовать выделение объектов рамкой, для чего требуется нажать левую кнопку мыши и перемещать ее так, чтобы образующийся прямоугольник полностью покрывал требуемые объекты. После отпускания кнопки мыши все объекты, попавшие в рамку, станут выделенными. Снять выделение в обычном режиме можно, щелкнув мимо любого отображенного объекта. В режиме группового выделения повторный щелчок по любому объекту снимает с него выделение.

Для добавления элемента сети установите требуемый сорт добавляемого элемента в списке сортов (), после чего кнопка включения режима добавления элемента () перейдет в нажатое состояние, и щелкните левой кнопкой мыши по области редактирования в том месте изображения сети, где предполагается разместить новый элемент.

Примечание. Для добавления числовых констант не обязательно сначала добавлять в грамматику генератор соответствующего натурального числа с системной интерпретацией – достаточно воспользоваться инструментом, вызываемым кнопкой (). При нажатии данной кнопки система запросит число, автоматически добавит соответствующий сорт в грамматику, установит его в списке сортов и включит режим добавления элемента.

При добавлении элемента сети одновременно добавляются и все точки, входящие в его входной и выходной кортежи, поэтому после щелчка мыши элемент, имеющий арность (2,1) будет выглядеть следующим образом:

Для удаления элемента сети выделите его и нажмите кнопку .

Для отождествления точек выделите их и нажмите кнопку . Точка – результат отождествления будет размещена в геометрическом центре выделенных точек.

47

Для «расщепления» точки, полученной операцией отождествления,

выделите ее и нажмите кнопку . Точки – результат «расщепления» разместятся на своих позициях по умолчанию относительно связанных с ними элементов.

И для расщепления, и для отождествления точек можно использовать горячую клавишу «пробел». Действие данной клавиши зависит от возможности выполнения этих операций и определяется доступностью указанных выше кнопок панели инструментов.

В процессе редактирования удобно использовать системный буфер, работа с которым производится при помощи традиционно обозначенных кнопок . Следует помнить, что буфер работает только в пределах одной запущенной копии программы.

Помещать в буфер можно только элементы сетей, так как точки, связанные с помещенными в буфер элементами, будут помещены туда автоматически. То же правило относится и к удалению элементов сетей.

Для удобства позиционирования в графическом редакторе используется координатная сетка, определяющая допустимое положение и размеры элементов сетей. Включение и выключение режима отображения координатной сетки производится при помощи кнопки .

Для любой точки сети система автоматически выбирает место ее размещения. Если требуется разместить точку в особом месте и гарантировать неизменность ее положения во время редактирования сети,

нужно зафиксировать точку, нажав кнопку . Режим отображения зафиксированных точек включается кнопкой .

Изменение масштаба изображение производится при помощи списка

доступных масштабов (), а также кнопок ,

устанавливающих, соответственно, стопроцентный масштаб и вычисляемые

масштабы «уложить», «по ширине» и «по высоте». Кнопка предназначена для подбора размеров сети на основе размеров и положения ее элементов.

Для автоматического размещения объектов сетей в графическом

редакторе реализована соответствующая подсистема силового размещения объектов [18]. Для запуска расстановки нажмите кнопку (или F5). Для останова расстановки нажмите кнопку . Пошаговая расстановка

48