Установка

March 2, 2026 · View on GitHub

Транслятор Oberon-07.

Цель - создание транслятора из некоторых диалектов Oberon в читаемый, устойчивый к ошибкам код для ряда промышленных языков программирования, таких как: C, C++, Javascript и других, а также в машинный код, не исключая посредников вроде LLVM.

Выдаёт код на:

  • Общем подмножестве С и С++, совместимом с gcc, clang, tcc, CompCert, MS VS.
  • Java стандарта 8
  • JavaScript стандарта ECMAScript 5
  • Oberon-07, Active Oberon и Component Pascal
  • Диаграммы активности Plant UML

Основной код транслятора написан на его входном языке - Обероне. Привязки к библиотекам - на соответствующих выходных языках.

Код транслятора доступен под лицензией LGPL, а библиотеки, тесты и примеры - под Apache License.

Установка

snap:

/usr/bin/sudo snap install vostok --classic --beta &&
/usr/bin/sudo snap alias vostok ost

deb:

Добавить репозиторий в систему и выполнить команду:

/usr/bin/sudo apt install vostok-bin

Homebrew:

brew install vostok-space/oberon/vostok

npm

/usr/bin/sudo npm install --global vostok-oberon

Сборка в POSIX:

init.sh собирает из предварительно сгенерированных C-файлов 0-ю версию транслятора Оберона result/bs-ost, которая уже может обслуживать остальные сборочные задачи: генерацию исполнимого кода транслятора result/ost непосредственно из исходных кодов на Обероне и тестирование.

./init.sh

Короткая справка по главным целям и переменным сборочного скрипта:

result/bs-ost run make.Help -infr . -m source

Сборка транслятора:

result/bs-ost run make.Build -infr . -m source

Тестирование:

result/bs-ost run 'make.Test; make.Self; make.SelfFull' -infr . -m source

Сборка в Windows:

Сборка c явным указанием Tiny C Compiler, каталог с исполняемым файлом которого должен быть прописан в переменной окружения PATH:

> init.cmd
> result\bs-ost run make.Build -infr . -m source -cc tcc

Тестирование с автопоиском компилятора C (tcc, gcc, clang, vc):

> result\bs-ost run 'make.Test; make.Self; make.SelfFull' -infr . -m source

Установка в POSIX:

Копирование исполнимого файла в /usr/local/bin/ и библиотек в /usr/local/share

/usr/bin/sudo result/ost run make.Install -infr . -m source

Использование:

Справка о способах использования транслятора доступна при его запуске без параметров или с командой help в более подробном варианте:

ost help

Пример непосредственного запуска кода:

ost run 'Out.Int(999 * 555, 0); Out.Ln'

После команды run, указан код на Обероне, который нужно выполнить. Такой же код можно выполнить без установки транслятора в систему:

result/ost run 'Out.Int(999 * 555, 0); Out.Ln' -infr .

Параметр '-infr .' указывает путь к инфраструктуре, которая включает в себя путь, по которому, в том числе, содержится библиотечный модуль Out.

Пример сборки исполняемого файла:

ost to-bin ReadDir.Go result/Dir -m example
result/Dir

Помимо параметров командной строки из предыдущего примера здесь указано название итогового исполнимого файла - result/Dir, что обязательно для команды to-bin, а также дополнительный путь для поиска модулей -m example, где и находится файл ReadDir.mod, в котором содержится модуль ReadDir, который содержит экспортированную процедуру без параметров - Go.

Запуск демонстрационного веб-сервера по 8080-му порту с возможностью редактировать и исполнять код в браузере:

cd demo-server
go build server.go
./server

Обсуждение:

Обсуждение ведётся на следующих площадках: forum.oberoncore.ru, telegram

Новости:

Блог о проекте