ВВЕДЕНИЕ 4
Глава 1. Исследование особенностей и процессов разработки синтаксически- управляемых трансляторов 7
1.1 Особенности синтаксически-управляемой трансляции 7
1.2 Анализ инструментов разработки синтаксически-управляемых трансляторов 10
1.3 Обзор аналогов разрабатываемой системы визуального прототипирования синтаксически-управляемых трансляторов 15
Глава 2. Алгоритмическое обеспечение визуального прототипирования синтаксически управляемых трансляторов 20
2.1 Алгоритм генерации промежуточного представления кода LLVM по входной спецификации GNU Bison 20
2.2 Применение алгоритма генерации промежуточного представления кода LLVM как инструмента визуального прототипирования трансляторов 22
Глава 3. Программное обеспечение визуального прототипирования синтаксически-управляемых трансляторов 25
3.1 Задачи и функции программной системы 26
3.2 Структура программной системы 27
3.3 Основные особенности программы 35
3.4 Применение программной среды визуального прототипирования синтаксически-управляемых трансляторов 44
ЗАКЛЮЧЕНИЕ 47
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 48
ПРИЛОЖЕНИЕ А
Компиляторы составляют существенную часть программного обеспечения ЭВМ. Это связано с развитием языков программирования высокого уровня, которые являются основным средством разработки программ. Кроме того, постоянно растущая потребность в компиляторах обусловлена активным развитием архитектур ЭВМ. Возникновение новых архитектур и совершенствование старых требует создание новых компиляторов для многих языков программирования. В то же время, возрастает потребность в алгоритмических и программных средствах разработки компиляторов. Ведутся исследования в области синтаксически- управляемой трансляции, направленные на оптимизацию алгоритмов восходящего и нисходящего синтаксического разбора. Активно развиваются системы анализа, оптимизации и трансформации программ, такие как ккУМ. Ведётся разработка программного обеспечения генерации лексических и синтаксических анализаторов по заданной спецификации, такого как flex и GNU Bison.
Не смотря на имеющиеся алгоритмические и программные инструменты, разработка компиляторов является весьма трудоемким процессом. Это усугубляется тем, что данные программные инструменты не имеют средств визуальной разработки. Существуют инструменты визуальной разработки синтаксических анализаторов, такие как Visual Lang Lab и Visual BNF, которые частично устраняют этот недостаток, но имеют ограниченный функционал. В данных программных средствах отсутствует независимый лексический анализ и возможность контроля оптимизации и трансформации промежуточного кода. Кроме того, подобные инструменты с закрытым исходным кодом и, как правило, коммерческие. Возникает необходимость в открытом бесплатном программном инструменте, с поддержкой генераторов программных анализаторов и компиляторной инфраструктуры, для визуального прототипирования синтаксически-управляемых трансляторов.
Цель диссертационной работы состоит в создании интегрированной среды разработки Bison- и flex-спецификаций с генерацией промежуточного кода LLVM.
В работе ставятся и решаются следующие основные задачи:
1. Обзор существующих аналогов разрабатываемой системы.
2. Применение алгоритма генерации промежуточного кода LLVM по входной спецификации GNU Bison.
3. Реализация программного обеспечения визуальной разработки синтаксически-управляемых трансляторов.
Научная новизна заключается в алгоритмическом обеспечении процесса разработки транслятора. Впервые был задействован алгоритм генерации промежуточного кода LLVM по входным спецификациям GNU Bison как средство взаимодействия среды разработки трансляторов с компиляторной инфраструктурой.
Разработанное приложение может использоваться в учебном процессе при обучении студентов по «компиляторным курсам», и в отдаленной перспективе - при промышленной разработке компиляторов.
Диссертация состоит из аннотации, введения, 3 глав, заключения, списка использованных источников и приложения. Основное содержание работы изложено на 50 страницах текста, содержит 20 рисунков. Список использованных источников включает 23 наименования.
Основное содержание работы: во введении обоснована актуальность темы диссертационной работы, дана постановка цели и задач, а также краткое описание содержания диссертации.
В первой главе проанализирована предметная область диссертационной работы. Представлено обоснование темы и задач работы. Показана актуальность исследований в области построения визуальных средств разработки синтаксически-управляемых трансляторов.
Во второй главе представлена алгоритм кодогенерации промежуточного кода LLVM по входным спецификациям GNU Bison, как метод взаимодействия среды разработки с компиляторной инфраструктурой.
В третьей главе показывается практическая осуществимость построения предложенной модели взаимодействия. Дано описание программного обеспечения для редактирования и отладки визуального представления лексических и синтаксических анализаторов, и генерации кода промежуточного представления компиляторной инфраструктуры.
В заключении перечислены результаты диссертационной работы, показаны дальнейшие направления исследования, сформулированы основные выводы.
В приложении приводится список ошибок и сообщений отладчика в интегрированной среде разработки трансляторов.
В данной работе приведен анализ проблемы инструментов визуального прототипирования синтаксически-управляемых трансляторов. Предложена модель применения генерации промежуточного кода LLVM по входной спецификации GNU Bison. Рассматриваются возможности применения этого метода для взаимодействия с компиляторной инфраструктурой в программном обеспечении визуального построения синтаксически- управляемых трансляторов. Разработан программный продукт, позволяющий редактировать входные спецификации и генерировать синтаксические анализаторы, работающие в связке с компиляторной инфраструктурой.
В заключении необходимо отметить, что предложенные алгоритмы и реализации являются эффективным средством инструментальной поддержки визуального прототипирования синтаксически-управляемых трансляторов.
1. Богачук, А. Л. Инструментальная поддержка визуального прототипирования синтаксически-управляемых трансляторов / А. Л. Богачук // Actualscience. - 2016. - №12. - С108.
2. Вигерс, К. Разработка требований к программному обеспечению: учебное пособие / К. Вигерс, Дж. Битти. - СПб: БХВ-Петербург, 2004. - 254с.
3. Вирт, Н. Построение компиляторов: учебное пособие / Н. Вирт. - Москва: ДМК-Пресс, 2010. — 192 с.
4. Карпов, Ю.Г. Теория и технология программирования. Основы построения трансляторов: учебное пособие / Ю.Г. Карпов. - СПб.: БХВ- Петербург, 2005. — 272 с.
5. Компиляторы: принципы, технологии и инструментарий, 2-е изд.: учебное пособие / Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульфман. - Москва: издательский дом «Вильямс», 2008. - 1184 с.
6. Мартыненко, Б. К. Языки и трансляции: учебное пособие / Б.К. Мартыненко. - СПб.: Издательство С.-Петерб. ун-та, 2008. — 257 с.
7. Мозговой, М. В. Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход: учебное пособие / М. В. Мозговой - СПб.: Наука и Техника, 2006. — 272 с.
8. Молдованова, О. В. Языки программирования и методы трансляции. : учебное пособие / О.В. Молдованова. - Новосибирск/СибГУТИ, 2012. - 134с.
9. Опалева, Э. А., Самойленко В. П. Языки программирования и методы трансляции: учебное пособие / Э. А. Опалева, В. П. Самойленко. - СПб.:БХВ-Петербург, 2005. — 480 с.
10. Рейуорд-Смит, В. Дж. Теория формальных языков. Вводный курс: учебное пособие / В. Дж. Рейуорд-Смит. - Москва: Радио и связь, 1988. — 128 с.
11. Свердлов, С. З. Языки программирования и методы трансляции : учебное пособие / С.З. Свердлов. - СПб.: издательство «Питер», 2007. - 638с.
12. Серебряков, В. А. Основы конструирования компиляторов: учебное пособие / В.А. Серебряков, М.П. Галочкин. - Москва: издательство «Едиториал УРСС», 1999. - 193 с.
13. Серебряков, В. А. Теория и реализация языков программирования: учебное пособие / В.А. Серебряков, М.П. Галочкин. - Москва: издательство «М3 Пресс», 2006. - 10 с.
14. Страуструп Б. Язык программирования C++, 3-е изд.: учебное пособие / пер. с англ. - Москва: издательство «Бином», 1999. - 991 с.
15. ANTLR [Электронный ресурс] // Генератор синтаксических анализа торов. - Режим доступа: http://www.antlr.org/
16. flex: The Fast Lexical Analyzer [Электронный ресурс] // Генератор лексических анализаторов. - Режим доступа: http://flex.sourceforge.net/.
17. GNU Bison [Электронный ресурс] // Документация по GNU Bison. - Режим доступа: http://www.gnu.org/software/bison
18. GCC, the GNU Compiler Collection [Электронный ресурс] // Компилятор. - Режим доступа: https://gcc.gnu.org/
19. LLVM Documentation [Электронный ресурс] // Документация по LLVM. - Режим доступа: http://llvm.org/docs/
20. Scintilla Documentation [Электронный ресурс] // Документация по компоненту Scintilla. - Режим доступа:
http://www.scintilla.org/ScintillaDoc.html
21. VisualBNF [Электронный ресурс] // Генератор синтаксических анализаторов. - Режим доступа: http://www.intralogic.eu/VisualBNF
22. VisualLangLab - A Visual Parser-Generator IDE [Электронный ресурс] // Генератор синтаксических анализаторов. - Режим доступа: https://vll.java.net
23. wxWidgets [Электронный ресурс] // Документация по wxWidgets 3.0. - Режим доступа: http://docs.wxwidgets.org/3.0