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

Переводим термины и придумываем новые, в т.ч. для ЯОС
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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

Сообщение БудДен » 26.01.21 22:28

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

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

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

Сообщение Павиа » 27.01.21 06:26

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

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

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

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

Павиа
Сообщения: 136
Зарегистрирован: 23.05.19 21:28

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

Сообщение Павиа » 27.01.21 07:14

Подготовка - фронт
обработка - бэк
завершение - доводка

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

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

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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

Сообщение БудДен » 27.01.21 10:36

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


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

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

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

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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 

Аватара пользователя
Сандро
Сообщения: 86
Зарегистрирован: 07.10.18 14:39

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

Сообщение Сандро » 04.02.21 21:44

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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

Сообщение БудДен » 04.02.21 23:15

Пишет "the debug view was expired"

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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

Сообщение БудДен » 10.05.21 13:25

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

MihalNik
Сообщения: 244
Зарегистрирован: 05.11.18 11:02

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

Сообщение MihalNik » 10.05.21 16:34

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

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

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

Сообщение БудДен » 10.05.21 16:35

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

Ответить