Проект АСУ-2501
Компилятор на основе запросов FSICC для функционального языка
Документы для скачивания
Руководители проекта
- Романенко Владимир Васильевичдоцент, к.т.н.
Аудитория
401 ФЭТ
Участники проекта
- Антонов Артем Максимовичгр. 433-1, каф. АСУ
- Вытнов Дмитрий Андреевичгр. 433-1, каф. АСУ
- Крылов Глеб Денисовичгр. 433-1, каф. АСУ
- Лукашев Кирилл Романовичгр. 433-1, каф. АСУ
- Мазур Михаил Сергеевичгр. 433-1, каф. АСУ
- Юрьев Артём Александровичгр. 433-1, каф. АСУ
Направление
Вид проекта
практико-ориентированный
Цель проекта
разработка компонента, выполняющего роль онлайн-интерпретатора или онлайн-компилятора для веб-разработчиков, а также разработка интерактивных демонстраций для ознакомления студентов и исследователей с современной архитектурой и принципами работы компиляторов
Основные задачи проекта на этапах реализации
– создание компилятора FSICC на основе запросов (query-based compiler) на языке Rust для функционального языка FSIC;
– создание языкового сервера (language server) на основе компилятора;
– создание онлайн-редактора на основе Monaco Editor с использованием языкового сервера с функциональностью по просмотру промежуточных представлений (intermediate representations), работы алгоритма вывода типов (type inference), используемых FSICC;
– создание интерактивных тренажеров для обучения студентов программированию.
Заинтересованные структуры
– кафедра АСУ ТУСУР;
– веб-разработчики, которым необходимы средства выполнения скриптов в веб-приложениях;
– студенты, изучающие программирование, а также специализированные дисциплины из предметной области разработки (в ТУСУР это «Теория языков программирования и методы трансляции», «Теория автоматов и формальных языков», «Лингвистическое и программное обеспечение САПР»).
– исследователи в области теории формальных языков и синтаксического анализа.
Потребные ассигнования
не требуются
Источники средств
нет
Актуальность тематики проекта
Традиционный подход по созданию компиляторов на основе единого конвейера (pipeline) применения трансформаций на исходный код программы создаёт трудности при разработке современных компиляторов, которые должны быть инкрементальными, а также предоставлять такие инструменты, как языковой сервер. Одним из решений проблемы по разделению ответственности между компилятором и языковым сервером является подход по созданию компилятора на основе запросов. Под этим подразумевается создание системы инкрементальных вычислений, которые будут вычисляться заново только в случае внесения изменений в зависимые подвычисления, где каждое действие трансформации исходного кода (парсинг, вычисление типа, кодогенерация) представляет собой отдельную вычислительную задачу.
Научная новизна проекта
Отсутствует. Проект практио-ориенторованный.
Практическая значимость проекта
С помощью библиотек, используемых языковым сервером для Rust (rust-analyzer, rowan, salsa), будет создана frontend-часть компилятора, ответственная за преобразование исходного кода в промежуточные представления, за вывод и проверку типов. Для стадии кодогенерации рассматриваются такие backend-разработки, как Cranelift и LLVM. Создание собственной backend-части кодогенерации выходит за рамки данного проекта. Основное взаимодействие с компилятором предполагается производить через веб-приложение, использующее Monaco Editor, редактор исходного кода с возможным подключением к языковому серверу через Language Server Protocol (LSP), который будет предоставлять всю функциональность по отображению промежуточных представлений и их преобразований, работы алгоритма вывода типов.
Реализация проекта позволит решить две практические задачи. Во-первых, включать средства выполнения скриптов в веб-приложения, разрабатываемые коллективом кафедры АСУ и другими подразделениями ТУСУР. Во-вторых, реализовать интерактивные тренажеры по обучению студентов младших курсов программированию.
Ожидаемые результаты
– компилятор FSICC на основе запросов (query-based compiler) на языке Rust для функционального языка FSIC;
– языковой сервер (language server) на основе компилятора;
– онлайн-редактор на основе Monaco Editor с использованием языкового сервера с функциональностью по просмотру промежуточных представлений (intermediate representations), работы алгоритма вывода типов (type inference), используемых FSICC;
– интерактивный тренажер для обучения студентов программированию.
Прогноз возможных сроков реализации проекта
4 семестра
Целевая аудитория (потребители)
студенты, изучающие программирование, а также специализированные дисциплины из предметной области разработки