OberonCore
https://forum.oberoncore.ru/

Транслятор кода
https://forum.oberoncore.ru/viewtopic.php?f=30&t=5983
Страница 2 из 3

Автор:  ilovb [ Четверг, 22 Декабрь, 2016 19:38 ]
Заголовок сообщения:  Re: Транслятор кода

Не понял. Вы хотите написать транслятор на Обероне, а потом транслировать этот транслятор в Lua? И в чем профит?

Про затраты тоже странное утверждение. Вы считаете, что обработку текста на Lua писать затратнее чем на Обероне? Серьезно?

Автор:  Comdiv [ Четверг, 22 Декабрь, 2016 19:44 ]
Заголовок сообщения:  Re: Транслятор кода

Транслятор уже написан. Тем, кому захочется использовать его совместно с Lua(лично мне это не нужно), останется написать/отредактировать генератор в Lua. В том и выгода - уже не нужно писать парсер.

Автор:  Comdiv [ Четверг, 22 Декабрь, 2016 19:45 ]
Заголовок сообщения:  Re: Транслятор кода

Пётр Кушнир писал(а):
Не нужно никаких трансляторов из одной экосистемы в другую. Это всё бесперспективно в плане сфер применения.
...
Экосистемы отторгают друг друга, такой мир.

Зависит от обстановки. Иногда неизвестно заранее, какие ещё платформы понадобятся, поэтому можно писать основную логику на Обероне и переводить его в доступные. Если понадобится ещё одна платформа, недоступная ранее, дописываем соответствующий генератор и экономим время, нужное для переписывания.
Универсальный транслятор сам может стать платформой при определённых усилиях.
Ещё одна причина, почему транслятор может быть полезен, это неготовность многих коллег, особенно начальства опираться на экзотический для них язык. Наличие транслятора, который производит читаемый код в их любимый язык, способен успокоить их волнения на тему риск-менеджмента.

Автор:  ilovb [ Четверг, 22 Декабрь, 2016 19:49 ]
Заголовок сообщения:  Re: Транслятор кода

Comdiv писал(а):
Транслятор уже написан. Тем, кому захочется использовать его совместно с Lua(лично мне это не нужно), останется написать/отредактировать генератор в Lua. В том и выгода - уже не нужно писать парсер.

Парсер Оберона не такая уж сложная задача, чтобы париться по этому поводу. Тем более что парсеров обероновых как грязи.

Автор:  Comdiv [ Четверг, 22 Декабрь, 2016 19:59 ]
Заголовок сообщения:  Re: Транслятор кода

Так зачем же тогда его писать на Lua? :D

Автор:  Пётр Кушнир [ Четверг, 22 Декабрь, 2016 20:02 ]
Заголовок сообщения:  Re: Транслятор кода

ilovb писал(а):
Имхо, нужно вообще на нативную компиляцию забить. Сделать компилер в байткод и тупейшую стековую машину на Go и юзать по полной гошную экосистему. Дергать Go посредством виртуальных модулей и все.

Go хорошо сделали и в нативном коде, писать что-нибудь хуже это уже несерьёзно. Google денег дал и всё стало хорошо, всего делов.

Автор:  ilovb [ Четверг, 22 Декабрь, 2016 20:12 ]
Заголовок сообщения:  Re: Транслятор кода

Comdiv писал(а):
Так зачем же тогда его писать на Lua? :D

Чтобы избавиться от всей лишней чепухи. У вас будет LuaJit.exe и один файлик O2.lua (транслятор)
Поддерживать нужно только этот небольшой исходник на Lua (который всегда готов к правке и выполнению).
А вы предлагаете таскать за собой (и поддерживать) еще и парсер (на другом языке).

ps. Я надеюсь вы не считаете, что конкретная наличная реализация чего-либо сразу имеет некую ценность?

Автор:  ilovb [ Четверг, 22 Декабрь, 2016 20:16 ]
Заголовок сообщения:  Re: Транслятор кода

Пётр Кушнир писал(а):
ilovb писал(а):
Имхо, нужно вообще на нативную компиляцию забить. Сделать компилер в байткод и тупейшую стековую машину на Go и юзать по полной гошную экосистему. Дергать Go посредством виртуальных модулей и все.

Go хорошо сделали и в нативном коде, писать что-нибудь хуже это уже несерьёзно. Google денег дал и всё стало хорошо, всего делов.

Не ну я писал в том контексте, что если кого приспичило кодить именно на Обероне. А так оно да... проще всего осваивать гугловый капитал и не заморачиваться.

Автор:  Comdiv [ Четверг, 22 Декабрь, 2016 20:18 ]
Заголовок сообщения:  Re: Транслятор кода

ilovb писал(а):
Comdiv писал(а):
Так зачем же тогда его писать на Lua? :D

Чтобы избавиться от всей лишней чепухи. У вас будет LuaJit.exe и один файлик O2.lua (транслятор)
Поддерживать нужно только этот небольшой исходник на Lua (который всегда готов к правке и выполнению).
А вы предлагаете таскать за собой (и поддерживать) еще и парсер (на другом языке).

Переведите парсер на другом языке в парсер на Lua и используйте "только этот небольшой исходник на Lua (который всегда готов к правке и выполнению)"

Автор:  ilovb [ Четверг, 22 Декабрь, 2016 20:28 ]
Заголовок сообщения:  Re: Транслятор кода

Ну я об этом и говорю.
Только мне это предлагать бесполезно. Я в Обероне для себя профита не вижу.
Мне нужен более практичный язык для моделирования и экспериментов. Что-то между Go и Lua.
Хочу чтобы терминаторы на меня работали. Ленивый стал. От рутины кодинга тошнит уже.

А в этой теме пишу просто от скуки.

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

Александр Ильин писал(а):
perloid писал(а):
в Go много чего есть ну и что.
...
дальше накрутить используя в том числе готовые либы Go, можно что угодно.

- Ну и что?
- А то, что "готовые либы" будут использовать те фишки, которые вы из Оберона будете использовать "не готовы".


так либы обертки все равно надо писать в стиле oberon.
цель не усложнить oberon - а еще более упростить Go

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

ilovb писал(а):
Коллеги, рекомендую забить на Go и сделать ставку на LuaJit.
Это будет проще и эффективнее. Lua очень гибкий язык. LuaJit очень эффективный компилятор.
Кроме того LuaJit имеет удобный FFI. Транслятора можно написать на Lua с использованием гениальной библиотеки LPEG.


проблема в том что в lua нет типов. придется самому пилить статический анализатор. потом еще чтото потом еще чтото - уходит много времени в пустую.
а в Go уже есть проверка типов и т.п. - он наиболее близок по идеологии. разве что добавлены ненужные сущности и конструкции

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

Итак допустим я собрался писать транслятор oberon-2 -> Go
на oberon-2 под XDS т.к. это наиболее простой инструмент который копилируется и запускается без каких либо проблем - есть какие то модули для парсинга oberon исходного кода?

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

Comdiv писал(а):
Если под готовым подразумевается транслятор в Си, который можно доделать для трансляции в Go, то можете глянуть этот проект: Восток. Собирается просто. Текущий объём исходного кода - около 9000 строк, из них треть - это GeneratorC.mod. Этот модуль можно скопировать под именем GeneratorGo.mod и подредактировать для языка Go. Полагаю, что его объём может сократиться в 2-3 раза из-за большей близости языков. Но есть и проблемы, например, схема экспорта в Go через заглавную 1-ю букву, эта идея прекрасна с любой стороны.


к сожалению он реализован на C (так веть?)
В C честно говоря не хочется погружатся. слишком трудозатратно.

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

perloid писал(а):
ilovb писал(а):
Коллеги, рекомендую забить на Go и сделать ставку на LuaJit.
Это будет проще и эффективнее. Lua очень гибкий язык. LuaJit очень эффективный компилятор.
Кроме того LuaJit имеет удобный FFI. Транслятора можно написать на Lua с использованием гениальной библиотеки LPEG.


проблема в том что в lua нет типов. придется самому пилить статический анализатор. потом еще чтото потом еще чтото - уходит много времени в пустую.
а в Go уже есть проверка типов и т.п. - он наиболее близок по идеологии. разве что добавлены ненужные сущности и конструкции


Вы уверены, что понимаете какой должен получиться результат в итоге?
Проверка типов будет в вашем трансляторе. От целевого языка тут ничего не зависит.

Автор:  Александр Ильин [ Пятница, 23 Декабрь, 2016 10:35 ]
Заголовок сообщения:  Re: Транслятор кода

perloid писал(а):
Итак допустим я собрался писать транслятор oberon-2 -> Go
на oberon-2 под XDS т.к. это наиболее простой инструмент который копилируется и запускается без каких либо проблем - есть какие то модули для парсинга oberon исходного кода?
Берёте исходники ОС Oberon, там есть весь компилятор, начиная с парсера.

Автор:  Александр Ильин [ Пятница, 23 Декабрь, 2016 10:37 ]
Заголовок сообщения:  Re: Транслятор кода

perloid писал(а):
Comdiv писал(а):
к сожалению он реализован на C (так веть?)
Сходите по ссылке, да посмотрите.

Автор:  Comdiv [ Пятница, 23 Декабрь, 2016 10:50 ]
Заголовок сообщения:  Re: Транслятор кода

perloid писал(а):
к сожалению он реализован на C (так веть?)
В C честно говоря не хочется погружатся. слишком трудозатратно.

Нет, он написан на Обероне. Это можно было бы узнать, перейдя в каталог с говорящим названием source. Я писал в сообщении о модуле GeneretorC.mod, который нужно изменить для генерации в Go вместо Си. Сишные исходники, как правило, идут с расширениями .h и .c, но никак не .mod.

Автор:  Димыч [ Суббота, 24 Декабрь, 2016 14:32 ]
Заголовок сообщения:  Re: Транслятор кода

https://github.com/congdm/AyaCompiler/wiki/Niklaus-Wirth-was-right-after-all
https://github.com/congdm/AyaCompiler/wiki/What-I-had-learned-from-this-compiler-(part-2)

Выводы человека, сделавшего Oberon для Win64.

Автор:  perloid [ Воскресенье, 25 Декабрь, 2016 10:24 ]
Заголовок сообщения:  Re: Транслятор кода

Comdiv писал(а):
perloid писал(а):
к сожалению он реализован на C (так веть?)
В C честно говоря не хочется погружатся. слишком трудозатратно.

Нет, он написан на Обероне. Это можно было бы узнать, перейдя в каталог с говорящим названием source. Я писал в сообщении о модуле GeneretorC.mod, который нужно изменить для генерации в Go вместо Си. Сишные исходники, как правило, идут с расширениями .h и .c, но никак не .mod.


хорошо, ознакомился - но выглядит он как будто был переведен с C.

https://habrahabr.ru/company/pt/blog/210772/
из инструментов я нашел ANTLR (Java) и Roslyn (.NET) - но они слишком сложны и требуют совершенно другого рантайма (что не очень то рационально для простого транслятора).

попробую написать свое.

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