OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 16 Ноябрь, 2019 02:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 19:38 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Не понял. Вы хотите написать транслятор на Обероне, а потом транслировать этот транслятор в Lua? И в чем профит?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 19:44 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 946
Откуда: Киев
Транслятор уже написан. Тем, кому захочется использовать его совместно с Lua(лично мне это не нужно), останется написать/отредактировать генератор в Lua. В том и выгода - уже не нужно писать парсер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 19:45 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 946
Откуда: Киев
Пётр Кушнир писал(а):
Не нужно никаких трансляторов из одной экосистемы в другую. Это всё бесперспективно в плане сфер применения.
...
Экосистемы отторгают друг друга, такой мир.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 19:49 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Comdiv писал(а):
Транслятор уже написан. Тем, кому захочется использовать его совместно с Lua(лично мне это не нужно), останется написать/отредактировать генератор в Lua. В том и выгода - уже не нужно писать парсер.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 19:59 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 946
Откуда: Киев
Так зачем же тогда его писать на Lua? :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 20:02 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
ilovb писал(а):
Имхо, нужно вообще на нативную компиляцию забить. Сделать компилер в байткод и тупейшую стековую машину на Go и юзать по полной гошную экосистему. Дергать Go посредством виртуальных модулей и все.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 20:12 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Comdiv писал(а):
Так зачем же тогда его писать на Lua? :D

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

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


Последний раз редактировалось ilovb Четверг, 22 Декабрь, 2016 20:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 20:16 

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 20:18 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 946
Откуда: Киев
ilovb писал(а):
Comdiv писал(а):
Так зачем же тогда его писать на Lua? :D

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 22 Декабрь, 2016 20:28 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Ну я об этом и говорю.
Только мне это предлагать бесполезно. Я в Обероне для себя профита не вижу.
Мне нужен более практичный язык для моделирования и экспериментов. Что-то между Go и Lua.
Хочу чтобы терминаторы на меня работали. Ленивый стал. От рутины кодинга тошнит уже.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 09:17 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
Александр Ильин писал(а):
perloid писал(а):
в Go много чего есть ну и что.
...
дальше накрутить используя в том числе готовые либы Go, можно что угодно.

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


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


Последний раз редактировалось perloid Пятница, 23 Декабрь, 2016 09:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 09:26 

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


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 09:30 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
Итак допустим я собрался писать транслятор oberon-2 -> Go
на oberon-2 под XDS т.к. это наиболее простой инструмент который копилируется и запускается без каких либо проблем - есть какие то модули для парсинга oberon исходного кода?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 09:33 

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


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 09:54 

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


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


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 10:35 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 10:37 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2316
Откуда: Россия, Томск
perloid писал(а):
Comdiv писал(а):
к сожалению он реализован на C (так веть?)
Сходите по ссылке, да посмотрите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Пятница, 23 Декабрь, 2016 10:50 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 946
Откуда: Киев
perloid писал(а):
к сожалению он реализован на C (так веть?)
В C честно говоря не хочется погружатся. слишком трудозатратно.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Суббота, 24 Декабрь, 2016 14:32 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
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.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Воскресенье, 25 Декабрь, 2016 10:24 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
Comdiv писал(а):
perloid писал(а):
к сожалению он реализован на C (так веть?)
В C честно говоря не хочется погружатся. слишком трудозатратно.

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


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

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

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


Последний раз редактировалось perloid Воскресенье, 25 Декабрь, 2016 10:38, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB