Страница 1 из 1

frontend и backend компилятора

Добавлено: 22.07.20 21:44
БудДен
Назвать как их?

Re: frontend и backend компилятора

Добавлено: 23.07.20 03:04
Лис [Вежливый]
Парсинг и кодогенерация (парсер и кодогенератор)
Анализ и синтез (анализатор и синтезатор)
Словозабор и кодоуклад (словозаборник и кодоукладчик)

Re: frontend и backend компилятора

Добавлено: 23.07.20 05:57
Павиа
Передник и задник будем называть тексторез и кодоукладчик.

Re: frontend и backend компилятора

Добавлено: 23.07.20 13:05
БудДен
Фронтенд строит дерево разбора и, возможно, даже связывает его, а не просто слова разбирает. Также он проводит проверку правильности.

Вы слишком революционны для меня. Я бы хотел быть более-менее понятным.

Как насчёт "фасада" для фронтенда?

Про кодогенератор вроде норм, единственное, я не точно знаю полный набор его функций.

Re: frontend и backend компилятора

Добавлено: 23.07.20 18:33
Лис [Вежливый]
> Как насчёт "фасада" для фронтенда?

А зачем? Как насчёт фронтенда для frontend-а ?

Re: frontend и backend компилятора

Добавлено: 23.07.20 22:10
БудДен
Тоже сойдёт, но вдруг есть что получше?

Re: frontend и backend компилятора

Добавлено: 23.07.20 23:39
Лис [Вежливый]
строит дерево разбора и, возможно, даже связывает его
Я смело выделю это в отдельный этап и назову его "переваривание" (Digestion - https://ru.qwe.wiki/wiki/Digestion).
Изображение

словозаборник -> перевариватель -> кодоукладчик

Слышал, программисты так и говорят: "кишки́ компилятора".

могло бы быть
ухо -> мозг -> горло
но программисты не говорят "мозги компилятора", и продукт компиляции не попадает с выхода на вход этого же компилятора.

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

У Мельчука, например, это "Смысл <-> Текст", стрелочки в обе стороны.

Re: frontend и backend компилятора

Добавлено: 24.07.20 06:28
Павиа
Как насчёт "фасада" для фронтенда?
Точно нет. Перевод вещ сложная, дословно переводить нет смысла. А использовать, то чему есть устоявшеся норма. Вас не поймут.
Тут баланс нужен. Лучше всё же закладывать смысл, а не просто не пойми что.
Фасад -это штукотурка отделка. У компилятора её нет у сайта ещё с натяжкой.

Re: frontend и backend компилятора

Добавлено: 30.07.20 08:06
440440
Парсер и кодогенератор. Парсер осуществляет разбор исходного кода - лексический (на уровне грамматики) и синтаксический (на уровне семантики).
Фасад - есть такой шаблон проектирования. В целом конечно фасад немного не то, по смыслу. Скорее именно генератор.

Re: frontend и backend компилятора

Добавлено: 30.07.20 21:45
БудДен
Я уже писал выше, что я не очень точно знаю, где границы фронтенда и бекенда. Можно посмотреть их в Compiler.Mod

Re: frontend и backend компилятора

Добавлено: 26.01.21 22:28
БудДен
Вопрос более чем назрел. Будет пока что фронтенд. Недоря называет его синтаксическим анализатором, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора. Хм, может надо "голова, тело, хвост"?

Re: frontend и backend компилятора

Добавлено: 27.01.21 06:26
Павиа
, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические.
frontend и backend компилятора
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.

Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ

начальный этап -фронтэнд
конечный этап -бэкэнд

Над голова, тело хвост надо подумать.

Re: frontend и backend компилятора

Добавлено: 27.01.21 07:14
Павиа
Подготовка - фронт
обработка - бэк
завершение - доводка

Подготовительный этап - основной этап - завершающий этап.
Стадия подготовки - стадия обработки - стадия доводки

Фронт и бэк вне конкуренции 5 и 3 букв.

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

Re: frontend и backend компилятора

Добавлено: 27.01.21 10:36
БудДен
Павиа писал(а):
27.01.21 06:26
, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические.
Да, Вы правы. Я пытался взять терминологию из русского языка, но ошибся. Ветелинар - это тоже грамматическая ошибка. Значит, нужно пере-переводить грамматические анализаторы на синтаксические или парсеры. А лексические можно оставить.
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.
В ЯОС нет папок (все исходники лежат в одной директории, так истерически сложилось), но там есть модули и файлы с модулями: *Frontend*.Mod, *Backend.Mod*, *SemanticChecker*.Mod и т.п.


Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ
Разборщик недостаточно специфичен, в остальном интересно, но сейчас обсуждается более высокий уровень.
Пока примерно так:

Фронтенд = Лексер + Парсер (но это не точно)
Середина = Смыслоуловитель (SemanticChecker - на самом деле и смыслоуловитель, и semanticChecker неточно передают происходящее - в лисокомпиляторе он разрешает имена в "символы", проверяет правильность смыслов и даже делает некоторые оптимизации) + Генератор промежуточного кода
Бекенд - преобразует промежуточный код в платформо-специфичный

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

И самое главное! Я не знаю всех нюансов, может вдруг оказаться, что где-то чёткость разбиения на эти этапы нарушена, тогда вообще лучше называть Этап1, Этап2, Этап3, чтобы названия были в явном виде условными, а не вводящими в заблуждение.

Re: frontend и backend компилятора

Добавлено: 27.01.21 11:02
БудДен
В общем, похоже, что надо описать структуру компилятора и прочитать все исходники, тогда будет ясно, какая часть чем занимается и можно будет лучше придумать перевод. Но пока всё же переводим frontend как голову, а backend - как хвост. Я практически уверен, что эти названия условны. Например, в лисокомпиляторе смыслоуловитель не входит во frontend, а вот тут - входит. Если искать картинки, то большинство из них всё же относят семантический анализатор к фронтэнду. Это кажется мне странным, ведь если цель выделения фронтэнда и бекэнда состоит в смене не только платформы, но и входного языка, то семантический анализатор для разных языков будет иметь много общего (хотя и не всё). Видимо, картинки описывают компилятор одного языка для нескольких платформ, а не компилятор нескольких языков для нескольких платформ. Лисокомпилятор сейчас понимает только АО, но в нём существовали фронтэнды для Явы и C# (возможно, что я даже сам часть из них выкидывал. Т.е. у него точно должно быть не меньше трёх частей - сменная голова, тело и сменный хвост.

Список модулей лисокомпилятора:

Код: Выделить всё

 LisScanner.Mod LisУтилитыДляПереводаКода.Mod LisSyntaxTree.Mod 
 LisОтлПеч.Mod LisGlobal.Mod LisParser.Mod LisFormats.Mod 
 LisFingerprinter.Mod 
 LisГенЗагСлов.Mod LisПереводчик.Mod LisPrintout.Mod LisSemanticChecker.Mod 

 LisFormats.Mod LisSections.Mod LisBinaryCode.Mod LisFrontend.Mod LisBackend.Mod 
  LisRasshirenieOpcijjKompiljatora.Mod LisTextCompiler.Mod LisOberonFrontend.Mod 

 LisAssembler.Mod LisIntermediateCode.Mod LisInterfaceComparison.Mod LisTextualSymbolFile.Mod 
 LisIntermediateBackend.Mod LisCodeGenerators.Mod LisAMD64Assembler.Mod LisGenericObjectFile.Mod 

 LisAMDBackend.Mod LisARMInstructionSet.Mod LisARMBackend.Mod LisCompiler.Mod 

Re: frontend и backend компилятора

Добавлено: 04.02.21 21:44
Сандро
БудДен писал(а):
26.01.21 22:28
Хм, может надо "голова, тело, хвост"?
Я у себя чаще всего пишу "шапка, тело, тапки"
Вот пробная версия внешнего вида редактора кода: (там как раз "шапка, тело, тапки)
Если пощёлкать по стрелочкам - увидим свёртываемость частей кода...

Re: frontend и backend компилятора

Добавлено: 04.02.21 23:15
БудДен
Пишет "the debug view was expired"

Тут не по вертикали процесс идёт, а по горизонтали. Уже сделал голову и хвост, получилось
одно из сообщений об ошибке "не удалось подключить голову". "Ошибка хвоста" тоже забавно звучит.

Re: frontend и backend компилятора

Добавлено: 10.05.21 13:25
БудДен
Вероятно, что слово "кодогенератор" лучше, чем "хвост", хотя оно намного длиннее. Возможно, их можно использовать как синонимы, где хвост будет применяться внутри, а кодогенератор - во внешнем контексте.

Re: frontend и backend компилятора

Добавлено: 10.05.21 16:34
MihalNik
БудДен писал(а):
10.05.21 13:25
Вероятно, что слово "кодогенератор" лучше, чем "хвост", хотя оно намного длиннее. Возможно, их можно использовать как синонимы, где хвост будет применяться внутри, а кодогенератор - во внешнем контексте.
Так тут длинная часть это генератор.

Re: frontend и backend компилятора

Добавлено: 10.05.21 16:35
БудДен
кодород? В общем, я уже забил на это, оставил "хвост".