OberonCore
https://forum.oberoncore.ru/

добавить в oo2c синтаксис КП
https://forum.oberoncore.ru/viewtopic.php?f=30&t=5927
Страница 1 из 3

Автор:  Kubanych [ Суббота, 22 Октябрь, 2016 13:00 ]
Заголовок сообщения:  добавить в oo2c синтаксис КП

Раз никто не собирается делать компилятор на x64 и arm для android,
может , лучше добавить в oo2c синтаксис Компонентного Паскаля.

Чтобы потом можно было,
присоединив в Android NDK делать мобильные приложения,
для 64 битных линуксов делать веб приложения (аналог wsgi или лучше),
а также запустить на raspberry pi.

Автор:  Oleg N. Cher [ Суббота, 22 Октябрь, 2016 13:48 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Транслятор Компонентного Паскаля в Си на базе Ofront от OMinc:


Я не сомневаюсь, что Оминки транслировали в Си с его помощью если не весь BlackBox, то большую его часть. Поддерживает практически полностью язык КП и возможности модуля SYSTEM (нет поддержки GETREG/PUTREG, но это логично), транслирует привязки (биндинги), понимает системные теги [union], [untagged], [align], совместимость на уровне исходников на КП с BlackBox очень хорошая.

Помимо этого проекта, есть ещё транслятор Оберона-2 в Си - Ofront+, поддерживающий некоторые возможности языка КП:


Я не имею возможности влиять на структуру этого форума, чтобы создали по этим проектам отдельный раздел. Могу только пригласить желающих обговорить детали Ofront+ и CPfront на форум zx.oberon2.ru. Также есть тематические англоязычная и русскоязычная рассылки.

Коммерческие перспективы использования данных проектов очень приветствую и буду всячески содействовать и участвовать, т.к. проекты эти для меня очень интересны. Илья Евгеньевич заинтересовался, мы по этой теме активно переписываемся в личке.

P.S. OO2C ковырять в данном направлении не вижу смысла. Впрочем, Вы сначала найдите программиста для исправления баги, найденной Артуром Ефимовым, а потом уже о более масштабных модификациях думайте.

Автор:  Trurl [ Суббота, 22 Октябрь, 2016 14:37 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Oleg N. Cher писал(а):
Я не сомневаюсь, что Оминки транслировали в Си с его помощью если не весь BlackBox, то большую его часть.

Зачем бы им это?

Автор:  Сергей Оборотов [ Суббота, 22 Октябрь, 2016 15:29 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Цитата:
P.S.

Одновременно тоже можно.

Автор:  Kemet [ Суббота, 22 Октябрь, 2016 17:04 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Kubanych писал(а):
...
Возьмите уже в конце- концов А2 - там и 64 бита и ARM, сейчас уже можно собирать проекты на базе Win/Unix A2, в том числе и консольные, для Виндовс и Линукс. Можно создавать монолитные программы, собрав все в исполняемый файл, можно с динамической подгрузкой, впрочем в первом варианте подгрузка также доступна.

Автор:  Oleg N. Cher [ Суббота, 22 Октябрь, 2016 17:36 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Trurl писал(а):
Зачем бы им это?
А зачем бы Илье Ермакову тащить рантаймы BlackBox на другие архитектуры? :-) А зачем ему КП на них? Может хватило бы Оберона-2? Сам удивляюсь. ;-)

Сергей Оборотов писал(а):
Одновременно тоже можно.
Можно. Просто некому. OO2C я в своё время "ниасилил" собрать для Windows, зато на Ofront'е научился делать программы для 8-битного Z80 с такой же лёгкостью, как и для 32/64 bit Windows & Linux.

Кто-то здесь осилил сборку OO2C. Но баги править всё ещё некому. Я ни-ни. ;-) Сложно. В Ofront'е хотя бы пол-Ofront'а взято из ETH Oberon (если не больше), а OO2C изнутри никто толком не знает. Но я был бы рад увидеть продолжение этого проекта, он тоже интересный.

Автор:  Trurl [ Суббота, 22 Октябрь, 2016 22:21 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Oleg N. Cher писал(а):
В Ofront'е хотя бы пол-Ofront'а взято из ETH Oberon (если не больше)

Да, там обычный OP2 с замененным кодогенератором. Но в блэкбоксе тот же OP2, только с измененным парсером.

Автор:  Oleg N. Cher [ Суббота, 22 Октябрь, 2016 23:00 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Я знаю это, Trurl. Все знают, кто ковырял. Я ковырял. ;-) OberonX тоже на OP2 (поверх ETH Oberon). И первый компилятор AO на базе OP2 сделан. Это Fox уже внутри другой.

Автор:  perloid [ Вторник, 20 Декабрь, 2016 13:10 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

http://www.excelsior.ru/products/xds

а данный "компилятор" продуцирует C/C++ код который по идее можно скомпилировать в android через NDK
на этом продукте собственно был написан компилятор java в нативный код

кто пробовал?

Автор:  Oleg N. Cher [ Вторник, 20 Декабрь, 2016 19:04 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Я пробовал. Не понравилось, что он выдаёт на выходе. Плюс закрытость и заброшенность. Для трансляции Оберона в Си предпочитаю Ofront+. Ну можно ещё voc попробовать.

Оба эти транслятора сделаны на базе Ofront Йозефа Темпла, который активно мэйнтейнится, в отличие от OO2C (OOC) и XDS-C.

Я делал попытку разрабатывать для Android SDK на GPCP (Gardens Point Component Pascal), но не слишком удачно - упёрся в ошибки в утилите для трансляции классов в символьные файлы.

Будут успешные результаты разработки софта на Обероне для Android - отпишитесь, пожалуйста. Очень интересно.

Автор:  perloid [ Среда, 21 Декабрь, 2016 09:01 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

А что именно не понравилось? Не оптимизиррованный или не рабочий код выдает?
Вроде как на данном инструменте написан компилятор для java.
Еще недавно они IDE для eclipse для него запилили на замену старой IDE - для заброшенного продукта это было бы странно.

Автор:  Oleg N. Cher [ Среда, 21 Декабрь, 2016 18:25 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Код, сгенерированный XDS-C, выглядит более запутанным и менее эффективным. Он описывает много статических структур. Я занимался на основе Ofront+ генерацией кода для восьмибитного процессора Z80, а там крайне важно получить компактность и обозримость. Впрочем, взгляните сами, архив прикладываю.

XDS-C поддерживается ровно в том объёме, который устраивает разработчика. Перспективы его туманны, как у закрытого протопиетарного продукта. Ofront+ мы разрабатываем своими силами.

А что использовать именно Вам - личный выбор конечно.

Вложения:
Ofront_XDS.zip [10.96 КБ]
Скачиваний: 94

Автор:  perloid [ Пятница, 23 Декабрь, 2016 09:18 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Oleg N. Cher писал(а):
Код, сгенерированный XDS-C, выглядит более запутанным и менее эффективным. Он описывает много статических структур. Я занимался на основе Ofront+ генерацией кода для восьмибитного процессора Z80, а там крайне важно получить компактность и обозримость. Впрочем, взгляните сами, архив прикладываю.

XDS-C поддерживается ровно в том объёме, который устраивает разработчика. Перспективы его туманны, как у закрытого протопиетарного продукта. Ofront+ мы разрабатываем своими силами.

А что использовать именно Вам - личный выбор конечно.


а Ofront+ написан на oberon? реально использовать этот проект для трансляции в Go ?

Автор:  Oleg N. Cher [ Суббота, 24 Декабрь, 2016 01:49 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Ofront, Ofront+ и voc написаны на Обероне, притом на первом, без связанных с типом процедур. На базе компилятора OP2, на котором основаны также ETH Oberon и BlackBox, только кодогенератор (бэк-энд) заточен на генерацию Си-кода. Адаптировать для генерации в другой выходной язык наверное будет несложно.

Автор:  perloid [ Среда, 28 Декабрь, 2016 09:27 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Еще вопрос - насколько безопасный код генерит Ofront+ по сравнению с XDS?
есть ли в Ofront+ проверки на ошибки типа выхода индекса за пределы массива и тп.?

Т.е. мне хочется более получать безопасный код по сравнению с написанием на С- предоставит ли мне данный транслятор эту возможность?

Автор:  Oleg N. Cher [ Среда, 28 Декабрь, 2016 18:46 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

perloid писал(а):
есть ли в Ofront+ проверки на ошибки типа выхода индекса за пределы массива и тп.?
В семействе Ofront (Ofront, Ofront+, voc) такая проверка есть. Для эффективности она опциональная (по умолчанию включена).

Также есть проверка границ значений вычисляемых выражений, т.е. в коде вида:
Код:
VAR s: SHORTINT; i: INTEGER;
BEGIN
  ...
  s := SHORT(i);
...
выражение может быть проверено, не выходит ли его значение за пределы типа SHORTINT. Эта проверка по умолчанию выключена.

Разумеется, реализована и охрана типа (check type guards).

perloid писал(а):
Т.е. мне хочется более получать безопасный код по сравнению с написанием на С- предоставит ли мне данный транслятор эту возможность?
Оберон-языки по своей структуре позволяют писать более безопасный код, предоставляя возможности для локализации опасных мест внутри системно-ориентированных модулей, в то время как Си не препятствует передавать ссылки на что угодно внутрь самых обычных рядовых функций. В Обероне строки имеют поле "длина". Так что тут вопрос даже, скорее, не к транслятору, а к языку.

Если Вас интересует, насколько надёжен генерируемый с помощью Ofront+ код, то он вполне приемлем. Хотя известные проблемы есть, не буду лукавить. Например, со сборщиком мусора. Он очень топорно адаптирован для 64 бит. Но это проблема реализации, надо поправить.

perloid писал(а):
по сравнению с XDS
Ага. Вот она, соль жизни ;-) Опасность XDS-C в том, что если упрётесь в его недостаток или баг носом, то это всё. Не лечится. А проблему в Ofront+ можно будет исправить. Если не я, так Вы сами, своими силами. Всё опенсоурс.

Автор:  perloid [ Среда, 28 Декабрь, 2016 20:39 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

застрял пока на этапе трансляции

скачал распаковал в папку

/home/user/bin/OfrontPlus

сижу под убунту x86_64

Код:
создал build.sh
cmod +x build.sh


в файле build.sh (полагаю что надо прописать так?)
который положил в директорию с примером /home/user/bin/OfrontPlus/Work
Код:
export PATH="$HOME/bin/OfrontPlus/Linux/Bin64:$PATH"
export OBERON=".:$HOME/bin/OfrontPlus/Linux/Lib/Sym64;$HOME/bin/OfrontPlus/Linux/Sym64"
#export OBERON=".:../Linux/Lib/Sym;../Linux/Sym"

ofront+ Hello.Mod



но вылазит ошибка
Код:
Hello.Mod  translating Hello
    line 1  pos 28  err 152  symbol file of imported module not found



что не так?

Автор:  Oleg N. Cher [ Четверг, 29 Декабрь, 2016 00:50 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Не находит символьного файла импортированной библиотеки (очевидно, Console.sym). Убедитесь, что путь к Lib/Sym64 указан правильно.

Ага, я вижу, что у вас там задан разделитель ";", а для линукса надо ":"

Также нужен ключик -m, указывающий, что этот модуль - главный.

Автор:  perloid [ Четверг, 29 Декабрь, 2016 09:53 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

спасибо.
действительно я чтото затупил.

Автор:  GameHunter [ Понедельник, 08 Октябрь, 2018 12:58 ]
Заголовок сообщения:  Re: добавить в oo2c синтаксис КП

Здравствуйте.

Каково на данный момент состояние Ofront+?
Включает ли он в себя все особенности Oberon-2?
Насколько хорошо адаптирован для целевой платформы Win-64 бит?
Есть ли встроенная поддержка комплексных чисел?

С уважением, GH.

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