frontend и backend компилятора
frontend и backend компилятора
Назвать как их?
- Лис [Вежливый]
- Сообщения: 563
- Зарегистрирован: 08.10.18 13:32
Re: frontend и backend компилятора
Парсинг и кодогенерация (парсер и кодогенератор)
Анализ и синтез (анализатор и синтезатор)
Словозабор и кодоуклад (словозаборник и кодоукладчик)
Анализ и синтез (анализатор и синтезатор)
Словозабор и кодоуклад (словозаборник и кодоукладчик)
Re: frontend и backend компилятора
Передник и задник будем называть тексторез и кодоукладчик.
Re: frontend и backend компилятора
Фронтенд строит дерево разбора и, возможно, даже связывает его, а не просто слова разбирает. Также он проводит проверку правильности.
Вы слишком революционны для меня. Я бы хотел быть более-менее понятным.
Как насчёт "фасада" для фронтенда?
Про кодогенератор вроде норм, единственное, я не точно знаю полный набор его функций.
Вы слишком революционны для меня. Я бы хотел быть более-менее понятным.
Как насчёт "фасада" для фронтенда?
Про кодогенератор вроде норм, единственное, я не точно знаю полный набор его функций.
- Лис [Вежливый]
- Сообщения: 563
- Зарегистрирован: 08.10.18 13:32
Re: frontend и backend компилятора
> Как насчёт "фасада" для фронтенда?
А зачем? Как насчёт фронтенда для frontend-а ?
А зачем? Как насчёт фронтенда для frontend-а ?
Re: frontend и backend компилятора
Тоже сойдёт, но вдруг есть что получше?
- Лис [Вежливый]
- Сообщения: 563
- Зарегистрирован: 08.10.18 13:32
Re: frontend и backend компилятора
Я смело выделю это в отдельный этап и назову его "переваривание" (Digestion - https://ru.qwe.wiki/wiki/Digestion).строит дерево разбора и, возможно, даже связывает его
словозаборник -> перевариватель -> кодоукладчик
Слышал, программисты так и говорят: "кишки́ компилятора".
могло бы быть
ухо -> мозг -> горло
но программисты не говорят "мозги компилятора", и продукт компиляции не попадает с выхода на вход этого же компилятора.
Если бы информация об авторах исходного текста в бинарном коде не терялась, а исходный код можно было бы целиком восстановить по метаинформации из бинарного, то тогда это не был бы процесс переваривания, а надо было бы искать более симметричную аналогию.
У Мельчука, например, это "Смысл <-> Текст", стрелочки в обе стороны.
Re: frontend и backend компилятора
Точно нет. Перевод вещ сложная, дословно переводить нет смысла. А использовать, то чему есть устоявшеся норма. Вас не поймут.Как насчёт "фасада" для фронтенда?
Тут баланс нужен. Лучше всё же закладывать смысл, а не просто не пойми что.
Фасад -это штукотурка отделка. У компилятора её нет у сайта ещё с натяжкой.
Re: frontend и backend компилятора
Парсер и кодогенератор. Парсер осуществляет разбор исходного кода - лексический (на уровне грамматики) и синтаксический (на уровне семантики).
Фасад - есть такой шаблон проектирования. В целом конечно фасад немного не то, по смыслу. Скорее именно генератор.
Фасад - есть такой шаблон проектирования. В целом конечно фасад немного не то, по смыслу. Скорее именно генератор.
Последний раз редактировалось 440440 05.08.20 08:32, всего редактировалось 1 раз.
Re: frontend и backend компилятора
Я уже писал выше, что я не очень точно знаю, где границы фронтенда и бекенда. Можно посмотреть их в Compiler.Mod
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 компилятора
кодород? В общем, я уже забил на это, оставил "хвост".