Промежуточное представление
Материал из Википедии — свободной encyclopedia
Промежуточное представление (intermediate representation (IR)) — структура данных или код, используемый компилятором или виртуальной машиной для представления исходного кода. Промежуточное представление разработано, чтобы способствовать дальнейшей обработке, такой как оптимизация и трансформация кода.[1] «Хорошее» промежуточное представление должно быть точным — способным представить исходный код без потери информации[2] — и независимым от какого-либо конкретного источника кода или целевого языка.[1] Промежуточное представление может принимать одну из нескольких форм: структура данных расположенная в памяти (in-memory), или специальный кортеж- или стек-подобный код читаемый программой.[3] В последнем случае промежуточное представление также называется промежуточным языком (intermediate language).
Канонический пример может быть найден в большинстве современных компиляторов. Например, интерпретатор CPython преобразует линейный удобочитаемый человеком текст, представляющий программу в промежуточную графовую структуру, которая позволяет проанализировать поток данных и перестроить его перед выполнением. Использование такого промежуточного представления позволяет компилирующим системам подобным GNU Compiler Collection и LLVM быть использованными множеством различных исходных языков для генерации кода для множества различных целевых архитектур.