Данный репозиторий содержит реализацию учебного транслятора
подмножества языка программирования Python
в язык программирования C++.
Транслятор выполнен в рамках курсовой работы по дисциплине «Системное программное обеспечение» 5 семестра БГТУ «ВОЕНМЕХ» им. Д.Ф. Устинова.
Целью курсовой работы является разработка транслятора, демонстрирующего полный цикл обработки исходного текста программы на языке программирования Python:
- лексический анализ;
- синтаксический анализ;
- семантическую обработку;
- генерацию эквивалентного кода на языке C++;
- визуализацию абстрактного синтаксического дерева (АСТ).
- Python 3.9.13 — входной язык трансляции (подмножество языка);
- C++17 — выходной язык трансляции;
- Flex — генерация лексического анализатора;
- Bison — генерация синтаксического анализатора (LALR(1)-парсер);
- Graphviz (dot) — визуализация синтаксического дерева;
- Make — автоматизация сборки и запуска;
- Python 3.9.13 — постобработка dot-файла АСТ (цветная визуализация).
lex.l— спецификатор лексического анализатора (Flex);bison.y— спецификатор синтаксического анализатора (Bison);ast_postproc.py— скрипт постобработки dot-файла для цветной визуализации АСТ;Makefile— инструкции автоматизации сборки и запуска;main.py— пример входной программы на Python;main.cpp— сгенерированный C++ код;ast.dot,ast.png— файл и изображение абстрактного синтаксического дерева;ast-color.dot,ast-color.png— цветная версия АСТ.
Управление сборкой и запуском проекта
осуществляется с помощью Makefile.
В таблице приведены основные цели и их назначение.
| Цель makefile | Назначение |
|---|---|
make translate |
Генерация лексического и синтаксического анализаторов, компиляция транслятора и его запуск на входном файле main.py |
make ast |
Построение изображения абстрактного синтаксического дерева (ast.png) |
make ast-color |
Генерация цветного АСТ с использованием скрипта ast_postproc.py |
make run |
Компиляция и запуск сгенерированного C++ кода (main.cpp) |
make clean |
Очистка всех сгенерированных файлов |
make rebuild |
Полная пересборка проекта (clean → translate → ast → ast-color) |
make rebuild
make run