frontend и backend компилятора
Re: frontend и backend компилятора
Вопрос более чем назрел. Будет пока что фронтенд. Недоря называет его синтаксическим анализатором, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора. Хм, может надо "голова, тело, хвост"?
Re: frontend и backend компилятора
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические., но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.frontend и backend компилятора
Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ
начальный этап -фронтэнд
конечный этап -бэкэнд
Над голова, тело хвост надо подумать.
Re: frontend и backend компилятора
Подготовка - фронт
обработка - бэк
завершение - доводка
Подготовительный этап - основной этап - завершающий этап.
Стадия подготовки - стадия обработки - стадия доводки
Фронт и бэк вне конкуренции 5 и 3 букв.
Дракона можно убивать по частям: голова, тело, хвост,- но это не вызывают правильных откликов в умах обывателей.
Как хвастливый(хвостливый) удав из мультика про слонёнка.
обработка - бэк
завершение - доводка
Подготовительный этап - основной этап - завершающий этап.
Стадия подготовки - стадия обработки - стадия доводки
Фронт и бэк вне конкуренции 5 и 3 букв.
Дракона можно убивать по частям: голова, тело, хвост,- но это не вызывают правильных откликов в умах обывателей.
Как хвастливый(хвостливый) удав из мультика про слонёнка.
Re: frontend и backend компилятора
Да, Вы правы. Я пытался взять терминологию из русского языка, но ошибся. Ветелинар - это тоже грамматическая ошибка. Значит, нужно пере-переводить грамматические анализаторы на синтаксические или парсеры. А лексические можно оставить.
В ЯОС нет папок (все исходники лежат в одной директории, так истерически сложилось), но там есть модули и файлы с модулями: *Frontend*.Mod, *Backend.Mod*, *SemanticChecker*.Mod и т.п.Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.
Я бы оставил
Разборщик недостаточно специфичен, в остальном интересно, но сейчас обсуждается более высокий уровень.Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ
Пока примерно так:
Фронтенд = Лексер + Парсер (но это не точно)
Середина = Смыслоуловитель (SemanticChecker - на самом деле и смыслоуловитель, и semanticChecker неточно передают происходящее - в лисокомпиляторе он разрешает имена в "символы", проверяет правильность смыслов и даже делает некоторые оптимизации) + Генератор промежуточного кода
Бекенд - преобразует промежуточный код в платформо-специфичный
Голова-тело-хвост хороши тем, что они ни к чему особо не обязывают, и при необходимости между ними можно ещё воткнуть какую-нибудь шею и задницу. Но они плохи тем, что да, не порождают ассоциаций, т.к. новые термины.
И самое главное! Я не знаю всех нюансов, может вдруг оказаться, что где-то чёткость разбиения на эти этапы нарушена, тогда вообще лучше называть Этап1, Этап2, Этап3, чтобы названия были в явном виде условными, а не вводящими в заблуждение.
Re: frontend и backend компилятора
В общем, похоже, что надо описать структуру компилятора и прочитать все исходники, тогда будет ясно, какая часть чем занимается и можно будет лучше придумать перевод. Но пока всё же переводим 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 компилятора
Я у себя чаще всего пишу "шапка, тело, тапки"
Вот пробная версия внешнего вида редактора кода: (там как раз "шапка, тело, тапки)
Если пощёлкать по стрелочкам - увидим свёртываемость частей кода...
Re: frontend и backend компилятора
Пишет "the debug view was expired"
Тут не по вертикали процесс идёт, а по горизонтали. Уже сделал голову и хвост, получилось
одно из сообщений об ошибке "не удалось подключить голову". "Ошибка хвоста" тоже забавно звучит.
Тут не по вертикали процесс идёт, а по горизонтали. Уже сделал голову и хвост, получилось
одно из сообщений об ошибке "не удалось подключить голову". "Ошибка хвоста" тоже забавно звучит.
Re: frontend и backend компилятора
Вероятно, что слово "кодогенератор" лучше, чем "хвост", хотя оно намного длиннее. Возможно, их можно использовать как синонимы, где хвост будет применяться внутри, а кодогенератор - во внешнем контексте.
Re: frontend и backend компилятора
кодород? В общем, я уже забил на это, оставил "хвост".