Определение конвейера компилятора - PullRequest
1 голос
/ 20 марта 2011

Может ли кто-нибудь объяснить мне этот термин абстрактно, а затем привести небольшой пример того, как это работает. На мой взгляд, это как-то связано с внешним и внутренним компонентами компилятора и тем, как выполняются фазы. У меня есть проблемы, чтобы описать это своими словами.

Спасибо за ваши ответы Matthias

1 Ответ

5 голосов
/ 21 марта 2011

Компилятор выполняет преобразование языка: ввод осуществляется на языке A, а вывод - на языке B (и обычно к типу языков и результату преобразования предъявляются некоторые требования).Чтобы сделать это, входные данные проходят через различные этапы внутри компилятора - эти этапы образуют конвейер.
Наиболее часто используемое разделение состоит из 3 этапов: внешний конец - средний конец - внутренний конец
внешний интерфейс отвечаетдля анализа входного языка и выполнения синтаксических и семантических проверок (чтобы убедиться, что входная программа соответствует спецификации языка A), а затем преобразует его в промежуточный язык.Средний конец берет промежуточное представление и обычно выполняет несколько (не зависящих от языка) шагов оптимизации (хотя это можно пропустить).После завершения Middle End полученная преобразованная программа на промежуточном языке передается на сервер, который преобразует ее в язык B, обычно также выполняет некоторые оптимизации, специфичные для языка B.
Каждый из трех этапов также состоит из нескольких этапов.И все вместе формирует конвейер компилятора, так как это в основном то, как программы проходят через систему, преобразующуюся по пути.

...