Разработчик: Данила Байгушев (8-9 класс). Научный руководитель: Илья Дединский (МФТИ).

Демонстрация работы: vimeo.com/92868984

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

Разработанная система трансляции (Small Compiler Collection, SCC) имеет модульную структуру и напоминает известную систему компиляции GCC. Такой подход позволяет легко добавлять в систему новые языки. Основная идея – хранение всех программ в универсальном внутреннем представлении, использующем абстрактные синтаксические деревья (AST). Система представляет собой совокупность модулей, позволяющих получать из текста программы дерево AST, и наоборот. Такой способ позволяет для добавления нового языка L всего лишь написать два модуля – фронт-энд (front-end, ответственен за преобразование из данного языка L в AST) и бэк-энд (back-end, ответственен за преобразование из AST в данный язык L) и таким образом получить возможность трансляции из любого высокоуровневого языка L1 в любой высокоуровневый или низкоуровневый язык L2 из имеющихся в коллекции системы. Следует отметить, что GCC позволяет транслировать только с высокоуровневого языка в низкоуровневый, так как при трансляции в GCC теряется часть информации, и поэтому пригоден только для компиляции в машинный код, а не для "перевода" с одного языка высокого уровня на другой.

В качестве «стандартного» языка программирования был выбран язык C. На основе его подмножества был создан скриптовый язык высокого уровня (SCC_C). Также был немного переработан язык Shakespeare (SCC_spl) - в него была добавлена поддержка функций, которые отсутствуют в стандартном Shakespeare, при этом удалось сохранить полную обратную совместимость со стандартным языком. Также была сохранена характерная «литературная» стилистика синтаксиса языка.

Для исполнения программ был разработан программно реализованный софт-процессор стеково-регистровой архитектуры. Также был реализован компилятор из SCC_asm в пригодный для этого процессора код (SCC_exe). Для увеличения скорости исполнения программ был разработан вариант софт-процессора с возможностью JIT-компиляции бинарного кода (SCC_bin), полученного из SCC_asm, в опкоды семейства процессоров Intel 80x86 (32-bit).

Материалы по проекту и полный текст: ded32.net.ru/news/2013-06-21-73
Презентация: dl.dropbox.com/u/1557330/Baigushev%20-%20SCC/BaigushevSCC.pdf
Статья: dl.dropbox.com/u/1557330/Baigushev%20-%20SCC/BaigushevSCC-WP.pdf
Репозиторий проекта: github.com/discharged-spider/SCC

.

Loading more stuff…

Hmm…it looks like things are taking a while to load. Try again?

Loading videos…