logo
Материал / 03

Компилятор

Компилятор переводит программы с одного языка на другой. Входом компилятора служит цепочка символов, составляющая исходную программу на языке программирования L1. Выход компилятора (объектная программа) также представляет собой цепочку символов, но принадлежащую другому языкуL2, например, языку некоторого компьютера. При этом сам компилятор написан на языкеL3, возможно, отличающемся от первых двух. Будем называть языкL1 исходным языком, языкL2 – целевым языком, а языкL3 – языком реализации. Таким образом, можно говорить о компиляторе как об отображении множестваL1в множествоL2, т.е.KL3: L1L2.

Отметим, что далеко не всегда исходные программы корректны с точки зрения исходного языка. Более того, некорректные программы подаются на вход компилятору значительно чаще, чем корректные – таков уж современный процесс разработки программ. Поэтому крайне важной частью процесса трансляции является точная диагностика ошибок, допущенных во входной программе.

Существует огромное количество различных языков программирования, начиная с таких традиционных языков программирования как FortranиPascalи кончая современными объектно-ориентированными языками такими, какC# иJava. Практически каждый язык программирования имеет какие-то особенности с точки зрения создателя транслятора. Однако мы начнем с рассмотрения разнообразных целевых языков компиляторов.