Транслятор представляет собой программу, выполняющую анализ
исходного кода на некотором языке программирования и формирующую
объектный модуль. Процесс преобразования исходного кода называется
трансляцией. Вместо термина «транслятор», часто употребляется слово
«компилятор», и соответственно процесс преобразования называется
компиляцией. Не вдаваясь в описание лишних подробностей, будем считать
эти названия синонимами и в дальнейшем изложении использовать их исходя
из своих пристрастий.
Для многих транслятор представляется как некий черный ящик,
которому программист много раз на день доверяет выстраданную им
программу. При общении программиста с транслятором возможны два варианта
исхода: удачный, при котором на выходе транслятора формируется
объектный модуль, и неудачный, когда транслятор обнаруживает в программе
различные ошибки. Давайте заглянем в черный ящик, именуемый
транслятором, и посмотрим, каким образом он работает. Конечно же, нашему
взгляду будут доступны только общие принципы его функционирования, но
мы их рассмотрим с той степенью детализации, чтобы можно было самим
разработать нечто подобное.
Трансляция программы производится в несколько этапов.
- 1. Лексический анализ.
2. Синтаксический анализ.
3. Генерация кода.
На каждом из этих этапов выполняется
вполне определенная работа. В общем случае проблема компиляции
заключается в поиске соответствия написанных программистом предложений
структурам, определенным грамматикой, и генерации соответствующего кода
для каждого предложения.
Итак, файл исходной программы подготовлен, после чего мы
некоторым образом передаем его транслятору для обработки. Происходить
это может двумя способами: посредством командной строки (возможно, с
использованием утилиты make.exe) либо в интегрированной среде. По сути,
для транслятора оба эти способа одинаковы, так как ядро транслятора для
обработки этих файлов будет одно. Единственное отличие в том, что в
первом случае программист явно формирует все необходимые ключи и
параметры командной строки, а во втором случае он это делает неявно,
путем настройки параметров интегрированной среды.