Компилятор с языка программирования EL: усовершенствование и развитие
Реализация нового многопарадигменного (функционально-императивного) языка программирования El, разработанного на кафедре вычислительной техники Новосибирского государственного технического университета, в виде компилятора связана с необходимостью поиска способов решения ряда сложных проблем. Текущая версия компилятора лишь частично реализует функциональные возможности языка и генерирует далеко не оптимальные исполняемые коды. В настоящей работе рассматриваются задачи эффективной компиляции El-программы с учетом необходимости реализации новых высокоуровневых структур данных (двусторонние списки, векторы со специальными формами доступа и ряд других) и управляющих структур языка, которые позволяют единообразно определять циклические и ветвящиеся вычислительные процессы, а также заложенных в языке механизмов для явного управления изменчивостью переменных. Кратко рассмотрены задачи совершенствования и развития компилятора, организованного по классической мультиплатформенной схеме, в которой front-end (лексический, синтаксический и семантический анализаторы) преобразует транслируемую программу в псевдокод единого формата, а в качестве back-end, превращающего псевдокод в исполняемый код для разных платформ, используется эффективная инфраструктура построения компиляторов LLVM. Выполнение всех возможных операций над элементами высокоуровневых структур данных (списки, кортежи, векторы), а также над числами произвольной точности вынесено в библиотеку поддержки времени выполнения и, соответственно, может быть глубоко оптимизировано. Для этой структуры сформулированы намеченные пути решения задачи разработки и улучшения компилятора путем глубокого реформирования и оптимизации цепочки преобразований транслируемой программы, реализуемой front-end. На начальном этапе планируется реализовать новый компилятор для двух платформ: Linux и Windows.