OberonCore
https://forum.oberoncore.ru/

Восток - Транслятор Oberon-07
https://forum.oberoncore.ru/viewtopic.php?f=115&t=6217
Страница 1 из 3

Автор:  Дмитрий Дагаев [ Воскресенье, 21 Январь, 2018 12:37 ]
Заголовок сообщения:  Восток - Транслятор Oberon-07

Проект "Восток", автор Comdiv.
Цитата:
Транслятор Oberon-07.

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

Написан на собственном входном языке. Генерирует совместимый с gcc, clang и tcc код на С.

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


https://github.com/ComdivByZero/vostok
https://comdivbyzero.blogspot.ru/search/label/%22%D0%92%D0%BE%D1%81%D1%82%D0%BE%D0%BA%22
Ранее на форуме упоминался вскользь, но проект развивается, 392 коммита.

Автор:  Иван Денисов [ Воскресенье, 21 Январь, 2018 14:19 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

На форуме ZX есть обсуждение Востока.
https://zx.oberon2.ru/forum/viewtopic.p ... 2116#p2116
Там есть пример как откомпилировать модуль.

Откомпилировал "Привет мир", в целом выглядит достойно. Ни на чем более сложном пока не испытывал.

Автор:  Comdiv [ Воскресенье, 21 Январь, 2018 19:14 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Могу расшифровать эти слова в описании - "устойчивый к ошибкам".
Помимо стандартного для Оберона контроля за целостностью памяти, по возможности диагностируются другие ошибки: арифметическое переполнение целых и дробей, переполнение множеств, использование неинициализированных переменных, частичная проверка FOR и WHILE, правильность вызова встроенных процедур. Часть диагностируется во время трансляции. Переполнение при смене знака целого невозможно, что в ряде случаев упрощает логику и о чём на практике часто забывают.

Автор:  ilovb [ Воскресенье, 21 Январь, 2018 22:02 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Вопрос (не было времени потыкать):
На винде это можно компилить через TDM GCC?

Автор:  Comdiv [ Воскресенье, 21 Январь, 2018 23:05 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Теоретически - да. На практике не пробовал. Точно знаю, что работает в связке с Tiny C Compiler.

Автор:  Trurl [ Воскресенье, 21 Январь, 2018 23:13 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

С mingw работает, с clang тоже.

Автор:  Comdiv [ Воскресенье, 21 Январь, 2018 23:24 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Здорово, что работает.

Сейчас установил TDM GCC в WINE - работает, но как и в случае с tcc требуется явно указывать компилятор -cc gcc, так как TDM не создаёт cc.exe

Автор:  ilovb [ Понедельник, 22 Январь, 2018 11:39 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Comdiv, как думаете, сишный интерфейс IUP сложно будет заюзать?
Интересует в первую очередь динамическая линковка.
Если это легко сделать, то опишите в двух словах, плиз (на функции с переменным числом параметров не обращайте внимания там - они не обязательные).

Автор:  Comdiv [ Понедельник, 22 Январь, 2018 14:12 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Привязка к библиотекам Си делается следующим образом:
1. В неком каталоге Decl пишется на Обероне модуль Iup.mod с пустыми процедурами
2. Модуль транслируется в Си в некий каталог Impl с помощью команды "o7c to-c Iup Impl -m Decl"
3. Полученные *.h *.c файлы редактируются для вызова соответствующих функций Си
4. Модуль IupHello, который использует Iup собираем командой "o7c to-bin IupHello IupHello.exe -infr . -m . -i Decl -c Impl -cc 'gcc -liup' "
Команды в примере приблизительны.

На мой взгляд, для iup.h и iup_config.h за день можно сделать прямолинейную привязку к Оберону. Если поднапрячься, то и остальное.

Автор:  ilovb [ Понедельник, 22 Январь, 2018 14:19 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Понятно. Спасибо.

Ну на обвязку у меня некоторый опыт есть уже: https://github.com/Spirit-of-Oberon/cp- ... od/Lib.cps

Автор:  ilovb [ Понедельник, 22 Январь, 2018 14:25 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

comdiv, пардон за глупые вопросы (это наверно где-то написано...)
Короткий вопрос: Гошный сервер я на винде заведу? Он там через что оберон (в смысле сишный выхлоп) компилит?

Автор:  Comdiv [ Понедельник, 22 Январь, 2018 14:36 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Нет, я это не описывал.
Вчера я подправил сервер для работы в Windows. Под WINE работало, но без timeout на выполняемые задачи, как это есть в GNU/Linux.
Сервер использут транслятор Оберона, с указанием компилятора Си - tcc, так как он самый быстрый. Если tcc не установлен, то сервер нужно подправить. Если не забуду, вечером добавлю ему опцию по выбору компилятора Си.

Автор:  ilovb [ Понедельник, 22 Январь, 2018 14:44 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

OK, понял. Было бы хорошо иметь поддержку tdm-gcc из коробки на винде. Это довольно популярный пакет mingw

Автор:  Comdiv [ Понедельник, 22 Январь, 2018 16:19 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Учту. Как я понимаю, после установки tdm в командной строке становится доступным gcc.
Вообще, я собирался сделать перебор компиляторов, но пока руки не дошли.

Автор:  ilovb [ Понедельник, 22 Январь, 2018 16:48 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Хотя наверно не стоит заморачиваться на tdm. Я похоже отстал от жизни. Он что-то давно не обновлялся (с 15 года)
Лучше таки наверно оригинальный дистрибутив mingw поддерживать (если поддерживать вообще)

Автор:  Comdiv [ Вторник, 23 Январь, 2018 01:40 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Серверу добавлен параметр -сс для выбора компилятора Си для сбора промежуточного исполнимого файла. По умолчанию - по прежнему, tcc.

Автор:  Comdiv [ Вторник, 23 Январь, 2018 01:42 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Смотрю - iup даже нет в репозитории Ubuntu. Чем он так приглянулся?

Автор:  Trurl [ Вторник, 23 Январь, 2018 10:11 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

А разве Vostok там есть?

Автор:  ilovb [ Вторник, 23 Январь, 2018 10:20 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

Comdiv:
Не знаю что там с репозиторием (автору скорее всего просто пофиг, т.к. это изначально университетская разработка для своих нужд как я понял).
На убунте я его запускал. Работает.

А так это просто маленький но мощный гуй без претензий на красивый внешний вид.
Достаточно легко программируется. Есть родной Lua API.

Там в поставке есть архив с примерами на Lua и C. Можно потыкать/поправить/посмотреть

Бинарники качать тут: https://sourceforge.net/projects/iup/fi ... ecutables/
Примеры тут: https://sourceforge.net/projects/iup/fi ... 20Sources/

В бинарниках лежит простенькая среда для запуска примеров

Автор:  Trurl [ Вторник, 23 Январь, 2018 10:52 ]
Заголовок сообщения:  Re: Восток - Транслятор Oberon-07

ilovb писал(а):
это изначально университетская разработка для своих нужд как я понял.

Не совсем для своих. Библитека делалась для Petrobras. Точнее, для Petrobras делались какие-то программы, а для них была нужна графическая библиотека.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/