Введение в трансляцию
Лексема
Описание языка программирования
Вопросы разработки, использования и реализации языка программирования тесно связаны с проблемой точного описания (определения) языка. Для определения языка требуется задать множество основных символов языка и описать его синтаксис и семантику.
Синтаксис языка определяет правила составления конкретных программ как цепочек, состоящих из основных символов языка.
Семантика задает смысловые значения конструкций языка, а также интерпретацию различных синтаксических конструкций языковым процессором.
Различают несколько видов трансляторов: компиляторы, интерпретаторы, конверторы (рисунок 1).
Компилятор, обрабатывая исходную программу, создает эквивалентную программу на машинном языке, которая называется также объектной программой, или объектным кодом. Объектный код как правило записывается в файл, но не обязательно представляет собой готовую к исполнению программу. Для программы, состоящей из многих модулей, может образовываться много объектных файлов. Объектные файлы объединяются в исполняемый модуль с помощью специальной программы-компоновщика, которая входит в состав системы программирования.
Интерпретатор, распознавая как и компилятор, исходную программу, не формирует машинный код в явном виде. Для каждой операции, которая может потребоваться при исполнении исходной программы, в программе-интерпретаторе заранее заготовлена машинная команда или команды. «Узнав» очередную операцию в исходной программе, интерпретатор выполняет соответствующие команды, потом – следующие, и так всю программу. Интерпретатор – это переводчик и исполнитель исходной программы.
Существую трансляторы, переводящие программу не в машинный код, а на другой язык. Такие трансляторы иногда называют конверторами.
Транслятор в общем случае связан с тремя языками:
1. входной язык – с которого выполняется перевод
2. целевой (объектный) язык – на который выполняется перевод
3. инструментальный язык – на котором написан сам транслятор
4. Трансляторы удобно изображать в виде Т-диаграмм, которые предложил (Х.Брэтман) в 1961 г. Cлева на такой диаграмме записывается исходный язык, справа – объектный, снизу – инструментальный.
![]() | ![]() | ||||||
| |||||||
![]() | |||||||