Метод раскрутки
Компилятор – это весьма большая и сложная программа; на написание и отладку компилятора на языке ассемблера можно истратить слишком много времени. Для того, чтобы как-то справиться с этой проблемой, был придуман метод раскрутки, суть которого заключается в следующем.
Пусть есть компилятор KA: P→A, гдеP– некоторый язык более высокого уровня, чем язык ассемблера. Тогда напишемKP: L→A, а затем применим компиляторKAк компиляторуKP, т.е. получимKA=KA(KP): L→A. Такая схема проиллюстрирована с помощью Т-диаграмм на слайде и называетсяраскруткой(bootstrapping2); компиляторKP как бы "раскручивается" с помощью компилятораKA.
Описанная схема может быть использована при написании компилятора некоторого языка на нем самом. Пусть у нас есть компилятор некоторого подмножества S языкаLв языкA, написанный на языкеA,KA: S→A. Тогда мы можем написатьKL: L→Aи получим новый компиляторKA = KA(KL). Мы используем это подмножествоSдля того, чтобы написать компилятор языкаLв языкA,KS: L→A. Если теперь мы применим компиляторKAк программеKS, то получимKA=KA(KS): L→A.
Впервые такая схема была применена в 1960 году при реализации языка Neliac. В 1971 году Вирт написал с использованием раскрутки транслятор языкаPascal, причем самый первый компилятор был оттранслирован вручную. Количество шагов раскрутки было больше 1, т.е. была построена последовательность языков и построена последовательность компиляторов:KA: S1→A, KA1=KA(KS1: S2→A), ...
Раскрутку можно использовать и в следующей ситуации. Пусть у нас есть недостаточно эффективный компилятор KA: L→A. Можно написать более эффективный компиляторKL: L→A, а затем применить раскрутку.
- Лекция 3. Основы компиляторов
- Основные задачи компиляторов
- Интерпретатор
- Компилятор
- Объектная программа
- Трансляция в ассемблер
- T-диаграммы
- Методики создания компилятора
- Метод раскрутки
- Кросс-транслятор
- Виртуальная машина
- Компиляция "на лету"
- Фазы компиляции
- Лексический анализ
- Синтаксический анализ
- Видозависимый анализ
- Оптимизация кода
- Генерация кода
- Внешний и внутренний интерфейсы
- Просмотры
- Техника "заплат"
- Литература к лекции