Часто путают транслятор с языка программирования и систему программирования. Хотя «система программирования»- понятие гораздо большее, чем транслятор.
Транслятор - это программа, которая переводит (с англ. translate) с нотации одного языка в нотацию другого языка.
Трансляторы могут быть интерпретаторами (interpreter), т.е. совмещать анализ исходной программы с ее выполнением. Различие тут в том, что результатом работы интерпретатора будет не машинный код, а последовательность обращений к библиотеке функций интерпретатора.
Интерпретатор в отличие от компилятора может выбирать одну за другой инструкции и сразу их выполнять. При интерпретации (это важно!!!), в отличии от трансляции или компиляции, может быть начато выполнение программы, которая содержит синтаксические ошибки.
Кросс-трансляторы (кросс-компиляторы) - это вид трансляторов, которые переводят программу, записанную в нотации одного языка программирования и выполняющуюся в одной инструментальной среде, на одной ЭВМ, которая характеризуется своим операционным окружением и/или архитектурой, в код вычислительной системы другой среды другой ЭВМ.
Редактор внешних связей моделирует размещение объектных модулей в ОП и разрешает все связи между ними.
Иногда трансляторы в качестве результата трансляции выдают модуль на ассемблере соответствующей машины.
В вышерассмотренную схему можно добавит этап оптимизации программы, причем оптимизация может происходить до этапа трансляции (т.е. в терминах исходного языка) и/или после трансляции (в терминах машинного кода). Например, до трансляции вычислить все const-ые выражения. Этот этап особенно важен для класса машин, относящихся к mainframe-ам.
Этап трансляции. Каждый транслятор при обработке программы выполняет следующие действия:
• лексический анализ;
• синтаксический анализ;
• семантический анализ и генерация кода.