OberonCore
https://forum.oberoncore.ru/

Новый компилятор
https://forum.oberoncore.ru/viewtopic.php?f=61&t=6363
Страница 1 из 4

Автор:  kekc_leader [ Воскресенье, 03 Март, 2019 03:11 ]
Заголовок сообщения:  Новый компилятор

Изображение
https://tehnokom.su/ido331-e2/

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

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

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

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

Автор:  Валерий Лаптев [ Воскресенье, 03 Март, 2019 07:01 ]
Заголовок сообщения:  Re: Новый компилятор

1. На чем пишете.
2. "Начат синтаксический анализатор" - это джуны, что ли пишут?
Где грамматика?
Почему не используется CoCo/R или ANTLR?

Автор:  Trurl [ Воскресенье, 03 Март, 2019 09:45 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  SovietPony [ Воскресенье, 03 Март, 2019 12:08 ]
Заголовок сообщения:  Re: Новый компилятор

Trurl писал(а):
Зачем? Это только усложнит дело.
С каких это пор автоматизация усложняет дело? Но судя по уже имеющемуся исходнику, лексер/парсер будут ручными.

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

Автор:  Валерий Лаптев [ Воскресенье, 03 Март, 2019 12:35 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  Comdiv [ Воскресенье, 03 Март, 2019 15:23 ]
Заголовок сообщения:  Re: Новый компилятор

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

Автор:  Пётр Кушнир [ Воскресенье, 03 Март, 2019 15:49 ]
Заголовок сообщения:  Re: Новый компилятор

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

Автор:  Info21 [ Воскресенье, 03 Март, 2019 17:32 ]
Заголовок сообщения:  Re: Новый компилятор

Пусть люди учатся.

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

Автор:  Валерий Лаптев [ Воскресенье, 03 Март, 2019 18:46 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  Comdiv [ Воскресенье, 03 Март, 2019 20:05 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  Comdiv [ Воскресенье, 03 Март, 2019 20:19 ]
Заголовок сообщения:  Re: Новый компилятор

Валерий Лаптев писал(а):
3. Поэтому нормальный способ - с помощью генератора сгенерить болванку парсера, а потом уже пилить эту болванку до шедевра.
Посмотрел, что сгенерировал ANTLR4 для грамматики Oberon, и могу уверенно заявить, что пытаться допиливать эту болванку - это безумная затея, даже если предположить, что ANTLR4 сгенерировал бы код на Oberon, а не на "практически любом языке".

Автор:  kekc_leader [ Понедельник, 04 Март, 2019 03:11 ]
Заголовок сообщения:  Re: Новый компилятор

SovietPony писал(а):
Какая версия Оберона ожидается? Оригинальный, второй или седмой?

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор:  Валерий Лаптев [ Понедельник, 04 Март, 2019 09:41 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  Rifat [ Понедельник, 04 Март, 2019 09:57 ]
Заголовок сообщения:  Re: Новый компилятор

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

Автор:  Comdiv [ Понедельник, 04 Март, 2019 12:58 ]
Заголовок сообщения:  Re: Новый компилятор

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

Автор:  kekc_leader [ Понедельник, 04 Март, 2019 17:50 ]
Заголовок сообщения:  Re: Новый компилятор

Валерий Лаптев писал(а):
Ключевое слово ПОТОМ... :)

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

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

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

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

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

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

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

Автор:  Comdiv [ Понедельник, 04 Март, 2019 23:52 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

Автор:  Trurl [ Вторник, 05 Март, 2019 10:21 ]
Заголовок сообщения:  Re: Новый компилятор

Мне тоже кажется, повторять «Построение компиляторов» смысла особого нет. Вот написать что-то типа Фрейзера-Хансона полезно было бы.

Автор:  kekc_leader [ Вторник, 05 Март, 2019 19:49 ]
Заголовок сообщения:  Re: Новый компилятор

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

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

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

Автор:  Info21 [ Вторник, 05 Март, 2019 21:08 ]
Заголовок сообщения:  Re: Новый компилятор

Бог в помощь.

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