Страницы

Восток. Самотрансляция в Javascript

Сообщения о трансляторе переехали в отдельный блог.

Генератор Javascript достиг того состояния, которое позволяет транслятору получить работоспособную версию себя в Javascript виде. Для этого понадобилось не так уж много после прохождения малых тестов, и основная часть проблем была связана с моим незнанием Javascript и библиотек для него.

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

Восток. Генератор JavaScript кода

Сообщения о трансляторе переехали в отдельный блог.

Сделан ещё один шаг в направлении многоцелевого транслятора Оберона - была добавлена возможность генерации кода в JavaScript. Обеспечена возможность прохождения простых тестов, но для трансляции самого транслятора генератор кода предстоит доработать.

Генератор JavaScript кода был был переделан из генератора Java кода, который в свою очередь был переделан из генератора C кода. Так что артефакты переделок продолжают накапливаться.

Модуль Оберона отображается на безымянную функцию, автоматическое исполнение которой приводит к появлению объекта модуля в специальном объекте o7, который, также, хранит дополнительные функции для более удобной поддержки языка. Как и для Java, переменные примитивных типов, участвующие как фактические параметры-переменные преобразовываются в одноэлементные массивы. Локальные и безымянные записи в духе прототипного ООП отображаются на функции-конструкторы. Для присваивания значения записей генерируются необходимые функции. Для кодирования типа CHAR используются целые числа.

Обновление: достигнута возможность самотрансляции