Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Трансляторы: определение, назначение, виды. Основные этапы трансляции программы

Определение 1

Транслятор — это программа, преобразующая программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.

Сущность понятия «транслятор». Виды трансляторов

Программу, которая написана на языке высокого уровня, перед применением необходимо преобразовать в программу на машинном языке, то есть в машинных кодах. Этот процесс носит название трансляции, или компиляции. По типу выходных данных существуют следующие основные виды трансляторов:

  1. Трансляторы, компилирующие окончательный исполняемый код.
  2. Трансляторы, компилирующие интерпретируемый код, для выполнения которого требуется дополнительное программное обеспечение.

Окончательным исполняемым кодом считаются приложения, которые реализованы как EXE-файлы, DLL-библиотеки, COM-компоненты. К интерпретируемому коду могут быть отнесены байт-коды JAVA-программ, исполняемых при посредстве виртуальной машины JVM.

Языки, которые формируют окончательный исполняемый код, именуются компилируемыми языками. К ним относятся языки С, C++, FORTRAN, Pascal. Языки, которые реализуют интерпретируемый код, носят название интерпретируемых языков. К таким языкам могут быть отнесены языки Java, LISP, Perl, Prolog.

Практически всегда код, который получается в результате процесса трансляции, создаётся из набора программных модулей. Программным модулем является определенным образом сформированный код на языке высокого уровня. Процесс трансляции в таком случае может исполняться как единое целое, то есть как компиляция и редактирование связей, или как два раздельных этапа, а именно, вначале компиляция объектных модулей, а далее обращение к редактору связей, который создаёт итоговый код. Последний вариант считается более удобным для формирования программ. Его реализовали в трансляторах языков С и С++.

Объектный код, который создаётся компилятором, состоит из области данных и области машинных команд, обладающих адресами, далее согласуемых редактором связи (иногда именуемым). Редактор связи распределяет в едином адресном пространстве все, по отдельности, откомпилированные, объектные модули и разные, подключаемые статически, библиотеки. Исполняемой формой программы является код, получаемый в результате трансляции исходной программы.

«Трансляторы: определение, назначение, виды. Основные этапы трансляции программы» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Процесс трансляции

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

При реализации трансляции осуществляется анализ исходной программы, а затем синтез исполняемой формы этой программы. В зависимости от количества просмотров исходной программы, исполняемых компилятором, трансляторы подразделяются на следующие типы:

  1. Трансляторы однопроходного типа.
  2. Трансляторы двухпроходного типа.
  3. Трансляторы, выполняющие более двух проходов.

Основным достоинством однопроходного компилятора считается высокая скорость компиляции, а главным недостатком является формирование, как правило, не очень эффективного кода.

Широко распространены двухпроходные компиляторы, поскольку они дают возможность на первом проходе осуществить анализ программы и сформировать информационные таблицы, которые используются при втором проходе для создания объектного кода.

На рисунке ниже изображены основные этапы, исполняемые в процессе трансляции исходной программы.

Этапы трансляции. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Этапы трансляции. Автор24 — интернет-биржа студенческих работ

Фаза анализа программы включает в свой состав следующие шаги:

  1. Лексический анализ.
  2. Синтаксический анализ.
  3. Семантический анализ.

При осуществлении анализа исходной программы транслятор поочерёдно выполняет просмотр текста программы, представленной в виде набора символов, осуществляя разбор структуры программы.

На этапе лексического анализа реализуется выделение главных составных компонентов программы, называемых лексемами. Лексемами считаются ключевые слова, идентификаторы, символы операций, комментарии, пробелы и разделители. Лексический анализатор осуществляет выделение лексем, а также определение типа каждой лексемы. Причём на этапе лексического анализа формируется таблица символов, в которой все идентификаторы получают свои адреса. Это даёт возможность в ходе дальнейшего анализа вместо конкретного значения (строки символов) применять его адрес в таблице символов.

На этапе синтаксического анализа осуществляется разбор найденных лексем для получения семантически ясных синтаксических элементов, обрабатываемых далее семантическим анализатором. Таким образом, синтаксическими единицами могут выступать выражения, объявление, оператор языка программирования, вызов функции.

При реализации семантического анализа осуществляется обработка синтаксических элементов (единиц) и формирование промежуточного кода. В зависимости от того, присутствует или отсутствует фаза оптимизации, итогом семантического анализа могут являться промежуточный код или уже окончательно сформированный объектный модуль.

Наиболее общими задачами, решаемыми семантическим анализатором, считаются следующие задачи:

  1. Нахождение ошибок времени компиляции.
  2. Заполнение таблицы символов, которая была создана на этапе лексического анализа, определёнными значениями, несущими дополнительные информационные данные о каждом элементе таблицы.
  3. Выполнение замены макросов их определениями.
  4. Реализация директив времени компиляции.
Дата написания статьи: 29.09.2021
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot