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