OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 03:11 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 146
Откуда: г. Рига, Латвийская ССР
Изображение
https://tehnokom.su/ido331-e2/

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

Недавно группа рижских компиляторостроителей пополнилась ещё двумя новыми программистами. Теперь над проектом работают шесть человек. Цель проекта — написать хороший компилятор Оберона, книгу о построении компиляторов, приблизить программирование к народу и продвинуть его в массы. Практическое применение компилятора в том числе состоит в использовании его в качестве средства для программирование роботов, приложений, веб-сайтов, операционных систем, мобильных приложений и т. д.

К участию в проекте приглашаются все желающие.

https://github.com/kekcleader/oberon
https://freeoberon.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 07:01 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
1. На чем пишете.
2. "Начат синтаксический анализатор" - это джуны, что ли пишут?
Где грамматика?
Почему не используется CoCo/R или ANTLR?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 09:45 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Валерий Лаптев писал(а):
Почему не используется CoCo/R или ANTLR?

Зачем? Это только усложнит дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 12:08 

Зарегистрирован: Воскресенье, 09 Декабрь, 2018 15:14
Сообщения: 54
Откуда: Equestria
Trurl писал(а):
Зачем? Это только усложнит дело.
С каких это пор автоматизация усложняет дело? Но судя по уже имеющемуся исходнику, лексер/парсер будут ручными.

Какая версия Оберона ожидается? Оригинальный, второй или седмой?
Какая схема кодогенерации? Дедовская однопроходная или через построение дерева?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 12:35 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
Trurl писал(а):
Валерий Лаптев писал(а):
Почему не используется CoCo/R или ANTLR?

Зачем? Это только усложнит дело.
Точно джуны пишут... :))))
Успехов в освоении компиляторостроения... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 15:23 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 945
Откуда: Киев
По-моему, использовать ANTLR для создания транслятора языка уровня Oberon может только тот, кто плохо понимает, что делает и зачем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 15:49 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
Как обычно это и бывает в этом вашем ИТ, теоретически, на словах, уже давно всё придумано и можно просто взять готовое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 17:32 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Пусть люди учатся.

Но Трурля всегда надо внимательно слушать ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 18:46 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
Comdiv писал(а):
По-моему, использовать ANTLR для создания транслятора языка уровня Oberon может только тот, кто плохо понимает, что делает и зачем.

1. Не транслятора, а парсера.
2. АНТЛР, как и коко-ры, в настоящее время универсальны и позволяют получить парсер для любого языка.
И практически на любом языке.
3. Поэтому нормальный способ - с помощью генератора сгенерить болванку парсера, а потом уже пилить эту болванку до шедевра.
Но если люди хотят вручную - пусть учатся.
У меня студенты в 1 семестре 3 курса вполне себе используют АНТЛР для генерации парсера...
Я вот сам вынашиваю мысли переписать коко-ры для С++ на современном С++.
Тоже неплохая учеба... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 20:05 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 945
Откуда: Киев
Валерий Лаптев писал(а):
1. Не транслятора, а парсера.
Тут нет противоречия.
Цитата:
2. АНТЛР, как и коко-ры, в настоящее время универсальны и позволяют получить парсер для любого языка.
Все заинтересованные лица знают, что такое ANTLR, а некоторые имеют опыт использования. К слову, ANTLR даёт не только parser.
Цитата:
3. Поэтому нормальный способ - с помощью генератора сгенерить болванку парсера, а потом уже пилить эту болванку до шедевра.
Либо с тех пор, как я его пробовал ANTLR невероятно вырос, либо смотрите моё 1-е сообщение. Готовые parser'ы Oberon имеются в изобилии, если хочется взять готовое для доделывания.

Цитата:
Но если люди хотят вручную - пусть учатся.
Это нужно не только и не столько для обучения. Например, gcc изначально использовал bison для parser C, а затем перешёл на рукописный. Заверяю, это не потому, что занимались этим "джуны".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Воскресенье, 03 Март, 2019 20:19 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 945
Откуда: Киев
Валерий Лаптев писал(а):
3. Поэтому нормальный способ - с помощью генератора сгенерить болванку парсера, а потом уже пилить эту болванку до шедевра.
Посмотрел, что сгенерировал ANTLR4 для грамматики Oberon, и могу уверенно заявить, что пытаться допиливать эту болванку - это безумная затея, даже если предположить, что ANTLR4 сгенерировал бы код на Oberon, а не на "практически любом языке".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 03:11 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 146
Откуда: г. Рига, Латвийская ССР
SovietPony писал(а):
Какая версия Оберона ожидается? Оригинальный, второй или седмой?

Версия Оберона пока не определена. Это дело отдельного научного разбора. Очень может быть, что будут поддерживаться многие версии, вплоть до КП. Если сделать такой проект, который мы делаем, то «докрутить» его до Оберона-2 или КП, наверное, не составит проблемы не только для участников проекта, а для любого, кто захочет это сделать, ведь будет подробная книга (учебник/документация).

Как говорится, «пусковая линия» — это вариант языка Оберон-07. Возможно затем будут добавлены некоторые типы данных (по ключу в компиляторе): INTEGER'ы различных размеров, возможно указатели на массивы для динамических массивов. Пока что мы не видим очевидной пользы в привязанных к записям процедурах.

Представляется, что с точки зрения чего-то нового в науке важнее сделать динамическую подгружаемость модулей.

SovietPony писал(а):
Какая схема кодогенерации? Дедовская однопроходная или через построение дерева?

Для начала однопроходная, методом рекурсивного спуска. А затем — тот же метод рекурсивного спуска, но для построения абстрактного синтаксического дерева. Перход от первого ко второму представляется для нас, во-первых, достаточно простым и, во-вторых, необходимым с точки зрения методологии преподавания.

Пётр Кушнир писал(а):
Как обычно это и бывает в этом вашем ИТ, теоретически, на словах, уже давно всё придумано и можно просто взять готовое.

Берите. Мы собственно колесо не изобретаем, берём наработки, в первую очередь Вирта. Берём лучшее, описываем, показываем, развиваем. Книжки годной что-то не видно готовой, да и компилятора Оберона на достаточное количество платформ не видно! Есть Блекбокс на 486, Ofront на Си, да и в общем-то всё. Такой язык — и пропадает. Поэтому этот проект и нужен, нужно привлекать людей к работе над компилятором. Для этого нужен чистый, понятный, красивый проект и к нему добротная книга. В науке всегда есть куда двигаться, забудьте эту чушь про то, что всё уже до вас сделано.

Валерий Лаптев писал(а):
1. На чем пишете.

Пишем на Обероне. Хоть бы потрудились ссылку на репозиторий открыть, поглядеть.

Comdiv писал(а):
По-моему, использовать ANTLR для создания транслятора языка уровня Oberon может только тот, кто плохо понимает, что делает и зачем.

Здесь полностью согласен с Комдивом. Тот, кто думает, что в компиляторе самое сложное написать парсер, тот ничего не понимает в теме. Это как раз самое простое и приятное. Вместо этого нам предлагают взять какую-то мейнстримную хреновину и париться с ней, заставляя её работать. Хватает и на работе этого добра.

Валерий Лаптев писал(а):
Почему не используется CoCo/R или ANTLR?

Может ещё атомный реактор задействовать в написании компилятора? Для надёжности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 09:41 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
Comdiv писал(а):
Цитата:
Но если люди хотят вручную - пусть учатся.
Это нужно не только и не столько для обучения. Например, gcc изначально использовал bison для parser C, а затем перешёл на рукописный. Заверяю, это не потому, что занимались этим "джуны".

Ключевое слово ПОТОМ... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 09:57 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 830
Откуда: Казань
Когда я писал компилятор, то написание лексического анализатора заняло примерно 1 день, написание синтаксического анализатора заняло тоже примерно 1 день. По грамматике языке написать синтаксический анализатор довольно легко. Другие части компилятора заняли гораздо больше времени: генерация машинного кода, генерация PE формата и т.д..
Если же использовать какой-нибудь ANTLR, то, во-первых, это как из пушки по воробьям, так как они расчитаны на парсинг сложных LR грамматик, а язык Оберон специально был создан таким, чтобы его грамматика была LL(1). Для парсинга C++ может быть и рационально использовать эти утилиты. Во-вторых, цель этих утилит сгенерировать очень быстрый код, который основывается на конечном автомате. Вручную понять, что делает, такой код бывает очень сложно, зато он быстрый. И скачать утилиту, понять как её вызывать, написать грамматику в формате, который утилита принимает, использовать сгенерированные исходники тоже занимает время. И для языка Оберон время на использование подобных утилит будет больше, чем ручное написание парсера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 12:58 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 945
Откуда: Киев
kekc_leader писал(а):
Книжки годной что-то не видно готовой
Книга есть и всем известна. Другое дело, что книга по полному описанию более сложного компилятора не помешает.
kekc_leader писал(а):
Перход от первого ко второму представляется для нас, во-первых, достаточно простым
Не является этот переход простым. Если планируется дерево, лучше сразу использовать дерево.
kekc_leader писал(а):
необходимым с точки зрения методологии преподавания
На мой взгляд, с точки зрения обучения больше подходят небольшие учебные проекты, на которых опробываются разные подходы. Оберон многие считают учебным, но на самом деле, для того чтобы прочувствовать разные способы создания транслятора он избыточен.
kekc_leader писал(а):
да и компилятора Оберона на достаточное количество платформ не видно! Есть Блекбокс на 486, Ofront на Си, да и в общем-то всё.
Не видно, если закрыть глаза. Очень плотно закрыть. Тут, видимо, мотивация, для которой уместна известная картинка:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 17:50 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 146
Откуда: г. Рига, Латвийская ССР
Валерий Лаптев писал(а):
Ключевое слово ПОТОМ... :)

Бросьте эту идею. Писать синтаксический анализатор для Оберона несамостоятельно — это полная глупость. Эту тему (ANTLR и прочее) я предлагаю закрыть, потому что нет смысла тратить время на пустопорожние разговоры.

Comdiv писал(а):
Книга есть и всем известна. Другое дело, что книга по полному описанию более сложного компилятора не помешает.

Да, мы её используем. В книге «Построение компилятора» всё очень сжато, необходима определённая усидчивость, чтобы в ней самостоятельно разобраться. Поэтому и видим смысл в более подробной и удобной книге.

Comdiv писал(а):
На мой взгляд, с точки зрения обучения больше подходят небольшие учебные проекты, на которых опробываются разные подходы. Оберон многие считают учебным, но на самом деле, для того чтобы прочувствовать разные способы создания транслятора он избыточен.

Цель проекта не чисто образовательная. Первая цель собственно сделать хороший компилятор, для этого нужна хорошая книга, чтобы люди могли с большей лёгкостью подключаться к проекту.

Comdiv писал(а):
Не видно, если закрыть глаза. Очень плотно закрыть. Тут, видимо, мотивация, для которой уместна известная картинка

Эта картинка тут не при чём, занимайтесь своим делом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Понедельник, 04 Март, 2019 23:52 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 945
Откуда: Киев
kekc_leader писал(а):
Да, мы её используем. В книге «Построение компилятора» всё очень сжато, необходима определённая усидчивость, чтобы в ней самостоятельно разобраться. Поэтому и видим смысл в более подробной и удобной книге.
На мой взгляд, «Построение компиляторов» - это очень понятная книга. Желание сделать более понятную(удобную?) книгу, да ещё и на примере более сложного языка - это сильная заявка. Тем не менее, на данный момент ни мотивация не прояснена достаточно чётко, ни условия участия в проекте не прояснены. Вы это ещё опишете на своём сайте?

kekc_leader писал(а):
Эта картинка тут не при чём, занимайтесь своим делом.
Моё дело, в том числе, указать на перспективы проекта. Будущее не предопределено, но, иногда, выбранное направление подсказывает конечный пункт с самого начала, но в силу определённых причин может игнорироваться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 10:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Мне тоже кажется, повторять «Построение компиляторов» смысла особого нет. Вот написать что-то типа Фрейзера-Хансона полезно было бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 19:49 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 146
Откуда: г. Рига, Латвийская ССР
Ещё раз, товарищи, о целях проекта:
Мы пишем новый хороший компилятор, но к тому же это и учебный проект, к тому же общедоступный для понимания.
Под хорошим компилятором в данном контексте понимается такой компилятор, который:
[*] Компилирует в машинный код, а не в другой язык программирования
[*] Доступен на многих распространённых платформах
[*] Достаточно прост во внутреннем устройстве и понимании
[*] Развивается и поддерживается крупным сообществом разработчиков
[*] Активно используется людьми

Книга Вирта хорошо и понятно написана, но тяжела в освоении для тех людей, кто ещё не обладает достаточно большими знаниями и опытом в сфере программирования. Наша книга, хотя и будет во многом похожа на книгу Вирта, будет носить немного другой характер.

Трансляция в другой язык программирования уничтожает львинную долю преимуществ Оберона как надёжной системы. Во многих случаях это допустимый компромисс, но если мы хотим добиться признания Оберона, вывода его «в люди», то все его преимущества должны быть показаны с лучшей стороны. Люди должны видеть доказательство Оберона как надёжной системы, а не только умозрительное заключение, что он «мог бы быть вполне надёжен, если бы компилировался напрямую в машинный код». Блэкбокс есть, но он ограничен архитектурой 486-х процессоров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Новый компилятор
СообщениеДобавлено: Вторник, 05 Март, 2019 21:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Бог в помощь.


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

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


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

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


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

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