Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 5. S-FLOGOL-система функционально-логического программирования

.pdf
Скачиваний:
18
Добавлен:
28.06.2014
Размер:
721.37 Кб
Скачать

5.S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Вкачестве примера простых списковых конструкций можно приве-

сти квалифицированное имя, с использованием точки в качестве раздели-

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

 

Логическое условие

АрВыр

ОпСрав

АрВыр

 

 

ОпСрав

а)

Рис.3. Списковые конструкиции

Квалифицированное имя

Имя

.

б)

П.3. Инструментальные средства ввода.

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

но отнести следующие группы инструментов: управление альтернативами,

управление опциями, управление списками и управление отображением текста программы, а также группы управления условными конструкциями,

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

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

падающего списка, а также удалить выбранную альтернативу, обеспечив,

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

Эти же действия могут быть выполнены посредством контекстного меню,

вызываемого нажатием правой кнопки мыши на элементе программы.

Управление опциями производится при помощи кнопки панели ин-

струментов, которая становится доступной при установке курсора на эле-

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 31

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

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

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

Шрифт текста таких элементов имеет светло-серый цвет. При установке курсора на скрытую опцию становится доступным инструмент восстанов-

ления данной опции, при выборе которого скрытая опция вновь возвраща-

ется в текст программы и ее текст раскрашивается стандартным образом.

Для работы со списками панель инструментов содержит стандарт-

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

ления (вставки) нового элемента в список, удаления элемента из списка и перемещения смежных элементов.

Помимо описанных инструментов существует ряд дополнительных инструментов, которые делают ввод отдельных элементов программы бо-

лее естественным и удобным. К таким инструментам относится группа ин-

струментов ввода и редактирования выражений. Выражение языка, в тра-

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

которым применяются определенные операции. В языке S-FLOGOL реали-

зуются только бинарные инфиксные и унарные префиксные операции. Та-

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

в узлах которого расположены операции, а листьями являются элементы,

допустимые для выражения данного типа. Исходя из этого, процедура вво-

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

нели инструментов, расположенной у правой границы экрана, заполняется множество инструментов, содержащих значки операций, соответствующих

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 32

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

типу вводимого выражения. Программист выбирает нужную операцию,

после чего в случае выбора инфиксной операции в текст программы вклю-

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

Однако в языке S-FLOGOL предусмотрена возможность введения пользователем собственных бинарных и унарных связок. Для предоставле-

ния доступа к таким операциям на той же панели присутствуют два ин-

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

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

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

ственного выбора (операторы IF и СASE соответственно), а также специ-

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

струкции имеют собственные кнопки на панели инструментов выражения,

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

П.4. Управление отображением текста программы.

Важным вопросом технологии построения программ является способ отображения программы в поле редактирования. В традиционных техноло-

гиях ввода программ задача структурирования текста программы перекла-

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

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 33

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

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

проса Ал. Бебчиком предложен метод автоматического структурирования текста программы, основанный на ее древовидном внутреннем представ-

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

го определяется уровнем вложенности переносимого элемента и количе-

ством переносов, выполненных на пути к данному элементу. Однако суще-

ствуют случаи, когда перенос строки необходимо выполнить принуди-

тельно. Например, каждое новое описание отношения должно начинаться на новой строке. Для решения данного вопроса в формализованном пред-

ставлении грамматики выделено специальное свойство, отвечающее за принудительный перенос элементов схемы. Пример автоматического структурирования представлен на Рис. 4

MODULE RelComp=

SecComp =[9]__=

{~«0»((,I=1..>«0»)[I]x):«1»((,I=1..>«0»)[I]x)};

ParComp =[8]_#_=

{(,I=1..«0»>)[I]x,(,J=1..«1»>)[J]y):

«0»((,I=1..«0»>)[I]x), «1»((,J=1..«1»>)[J]y)

}

WHERE Дом END

Рис. 4 Структурирование представление текста программы

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 34

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

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

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

ятия и дальнейшего редактирования. В предлагаемой технологии данный вопрос решен за счет использования механизма свертывания определен-

ных полностью или частично элементов программы. Поскольку програм-

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

ставляется реализация операции свертывания раскрытого элемента (узла дерева) программы. При выполнении данной операции все элементы рас-

крытого узла заменяются его именем и данный узел приобретает специ-

альную цветовую раскраску. В дальнейшем, установив курсор на сверну-

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

ски восстанавливается.

Таким образом, в системе программирования S-FLOGOL предложена новая технология ввода программ, минимизирующая использование руч-

ного ввода и исключающая синтаксические ошибки в процессе ввода про-

граммы. В соответствии с требованиями технологии грамматика языка S- FLOGOL была переработана в альтернативно-списковую форму. Выпол-

ненная программная реализация структурного редактора, показала рабо-

тоспособность и эффективность предложенной технологии.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 35

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

ОГЛАВЛЕНИЕ

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО

 

ПРОГРАММИРОВАНИЯ.............................................................................

1

5.1. АРХИТЕКТУРА И ОБЩИЕ ПРИНЦИПЫ РЕАЛИЗАЦИИ FLOGOL-

 

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

1

5.2. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ S-

 

FLOGOL .......................................................................................................

6

5.2.1. Особенности языка S-FLOGOL...................................................

7

5.2.2. Технология решения задач в S-FLOGOL-системе .................

11

5.3. ОСОБЕННОСТИ РЕАЛИЗАЦИИ S-FLOGOL-СИСТЕМЫ

 

ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ.........................

16

5.3.1. Текстовый редактор....................................................................

17

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

20

ЛИТЕРАТУРА ..............................................................................................

24

ПРИЛОЖЕНИЕ ...........................................................................................

25

П.1. СПЕЦИАЛИЗИРОВАННАЯ ТЕХНОЛОГИЯ ВВОДА ФУНКЦИОНАЛЬНО-

 

ЛОГИЧЕСКИХ ПРОГРАММ. ...........................................................................

27

П.2.

АЛЬТЕРНАТИВНО-СПИСКОВАЯ ГРАММАТИКА..................................

28

П.3.

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ВВОДА..........................................

31

П.4.

УПРАВЛЕНИЕ ОТОБРАЖЕНИЕМ ТЕКСТА ПРОГРАММЫ. ....................

33

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 36