Icon project 8912809d77d657b57b9e74ab50903dbdc2bb8795297cd4da9d47b022b8366facПроект АСУ-2501

Компилятор на основе запросов FSICC для функционального языка

Направление

Автоматизированные системы обработки информации и управления

Вид проекта

практико-ориентированный

Цель проекта

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

Основные задачи проекта на этапах реализации

– создание компилятора 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 семестра

Целевая аудитория (потребители)

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