Russian Language English Language

15 Модели, методы и инструментальные средства проектирования распределенных информационных систем

15.1 Особенности визуализации объектов графического интерфейса FLOGOL-системы функционально-логического программирования

15.2 Реализация динамики при визуализации сетевого представления схем направленных отношений

15.3 Контекстно-зависимый структурный редактор выражений системы функционально-логического программирования высокого уровня


Экспресс информация

Редколлегия журнала

Подписка на новости

Гостевая книга

Предоставление материалов

Письмо в редакцию

На начало


2003, Номер1, ( 3)



Place for sale
Контекстно-зависимый структурный редактор выражений системы функционально-логического программирования высокого уровня

BC/NW 2003г., №1(3)/ 15.3

КОНТЕКСТНО-ЗАВИСИМЫЙ СТРУКТУРНЫЙ РЕДАКТОР ВЫРАЖЕНИЙ СИСТЕМЫ ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ.

Бебчик Ал.М.

(Москва, Московский государственный институт радиотехники,

электроники и автоматики (технический университет), Россия)

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

 

Реализация рассматриваемого редактора выражений осуществлялась в рамках общего проекта FLOGOL-системы программирования. Язык функционально-логического программирования FLOGOL (Function and LOGic Oriented Languege) [1] базируется на теории направленных отношений [1,2]. Система включает следующие основные компоненты: программируемую информационную базу в форме системы модулей, объединенных в гамакообразную структуру, подсистему исполнения запросов и различного вида редакторы, поддерживающие процессы создания и изменения модулей и запросов.

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

Модули языка представлены в системе в трех формах: в текстовом представлении (исходные модули), во внутреннем представлении (объектные модули) и в графическом представлении. Внутреннее представление имеет вид взаимосвязанных объектов, отражающих как синтаксическую структуру модулей (в том числе и содержащихся в них выражений), так и дополнительные поля и методы, необходимые для редактирования модулей и формирования исполнительного кода запросов к FLOGOL-системе на вычисления. Внутреннее представление является основным, в нем отражаются все действия, связанные с построением и изменением остальных форм представления модулей. Текстовое представление рассматривается как средство документирования полностью разработанных модулей FLOGOL-программы. Специальное графическое представление, базирующееся на сетевой интерпретации схем направленных отношений [1,3], используется для визуализации, создания и редактирования отношений – основных семантических объектов языка.

Редактор выражений содержит развитый набор инструментов, предназначенных для редактирования выражений и настройки внешнего вида их отображения. Поскольку выражение имеет четко выраженный структурный характер, в редакторе предусмотрена возможность свернуть любое подвыражение некоторого типа в специальный элемент выражения – так называемый символ расширения. В рассматриваемой реализации символ расширения представляет собой заглавную букву латинского алфавита, соответствующую типу сворачиваемого выражения. Так, например, арифметическому выражению соответствует буква А, логическому – B, выражению для описания списка параметров – P, и так далее. Символы расширения выделяются в тексте программы жирным шрифтом и цветом. Цвет определяет степень завершенности ввода выражения: выражение «определено» (полностью определено), выражение «определено частично» и выражение «не определено». Выделение подвыражения осуществляется двойным щелчком по любому компоненту внешней связки этого подвыражения. Для выделенного подвыражения в окне редактирования реализованы следующие операции: удаление и замена его на символ расширения «не определено» соответствующего типа, копирование выделенного подвыражения в буфер, вырезание с копированием в буфер, вставка из буфера с замещением выделенного подвыражения, взаимная замена выделенного подвыражения и выражения из буфера. При этом для каждого типа выражений определен свой буфер обмена, что предоставляет большую гибкость при редактировании выражений. Для выделенного символа расширения «определено» или «частично определено» имеется возможность восстановить в окно редактирования свернутое выражение.

FLOGOL, являясь языком высокого уровня, предоставляет программисту развитые средства схемного описания функций и отношений и поддерживает современную технологию объектно-ориентированного программирования, адаптированную к стилю декларативного программирования. Наследование, виртуальные определения, инкапсуляция, индексирование имен и параметризация определяемых объектов, программное определение новых операций над отношениями – вот не полный перечень имеющихся в языке средств такого рода. Особую выразительную силу им придает то, что практически все программные объекты представляют собой различного типа выражения, построенные по единому шаблону, дающему возможность использования условных определений, определений путем разбора случаев, применения, в общем случае, вложенных операторов свертки по любым бинарным операциям для соответствующих типов выражений. Операторы свертки играют в языках декларативного типа ту же важную роль, что и операторы цикла в алгоритмических языках. Общий шаблон Выр [1] предполагает задание следующих параметров для каждого конкретного типа выражений в языке FLOGOL: первичных выражений соответствующего типа, префиксов, инфиксов и суффиксов. В этом шаблоне также используется специальный символ ‘@’, обозначающий подвыражение того же типа, что и определяемое выражение. Например, арифметическое выражение (АрВыр) задается шаблоном со следующим списком параметров: АрВыр=Выр[ПервАр,, {,DIV,MOD,+,- }] (префиксы и суффиксы не используются).

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

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

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

 

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

 

ЛИТЕРАТУРА

1.     Фальк В.Н. Теория направленных отношений и ее приложения // Дисс. … докт. техн. наук. М: – МЭИ. -2001.

2.     Кутепов В.П., Фальк В.Н. Направленные отношения: теория и приложения // Изв. РАН. Техническая кибернетика, 1994. № 4,5.

3.     Бебчик Ал.М., Бебчик Ан.М. Особенности визуализации объектов графического интерфейса FLOGOL-системы функционально-логического программирования // В наст. сборнике. – 2003.