Павиа писал(а): ↑27.01.21 06:26
, но я не очень понимаю, равен ли синтаксический анализатор сумме лексического и грамматического, или тут происходит просто смешение разных систем обозначения частей компилятора.
Тут у вас ошибка. Правила грамматик делятся на синтаксические и лексические.
Да, Вы правы. Я пытался взять терминологию из русского языка, но ошибся. Ветелинар - это тоже грамматическая ошибка. Значит, нужно пере-переводить грамматические анализаторы на синтаксические или парсеры. А лексические можно оставить.
Это абстрактные понятия, лучше названия давать конкретные. Поэтому модули называть конкретными и именами, а фронтэнд и бэкэнд оставить для имён папок.
В ЯОС нет папок (все исходники лежат в одной директории, так истерически сложилось), но там есть модули и файлы с модулями: *Frontend*.Mod, *Backend.Mod*, *SemanticChecker*.Mod и т.п.
Я бы оставил
Тексторез - лексер
Разборщик - парсер - грамматический анализ
Смыслоуловитель - семантический анализ
Разборщик недостаточно специфичен, в остальном интересно, но сейчас обсуждается более высокий уровень.
Пока примерно так:
Фронтенд = Лексер + Парсер (но это не точно)
Середина = Смыслоуловитель (SemanticChecker - на самом деле и смыслоуловитель, и semanticChecker неточно передают происходящее - в лисокомпиляторе он разрешает имена в "символы", проверяет правильность смыслов и даже делает некоторые оптимизации) + Генератор промежуточного кода
Бекенд - преобразует промежуточный код в платформо-специфичный
Голова-тело-хвост хороши тем, что они ни к чему особо не обязывают, и при необходимости между ними можно ещё воткнуть какую-нибудь шею и задницу. Но они плохи тем, что да, не порождают ассоциаций, т.к. новые термины.
И самое главное! Я не знаю всех нюансов, может вдруг оказаться, что где-то чёткость разбиения на эти этапы нарушена, тогда вообще лучше называть Этап1, Этап2, Этап3, чтобы названия были в явном виде условными, а не вводящими в заблуждение.