An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation.1 A "good" IR must be accurate – capable of representing the source code without loss of information2 – and independent of any particular source or target language.1 An IR may take one of several forms: an in-memory data structure, or a special tuple- or stack-based code readable by the program.3 In the latter case it is also called an intermediate language.
"Intermediate form" redirects here. For the use of the term in biology, see Transitional fossil.
A canonical example is found in most modern compilers. For example, the CPython interpreter transforms the linear human-readable text representing a program into an intermediate that allows and re-arrangement before execution. Use of an intermediate representation such as this allows compiler systems like the and to be used by many different source languages to for many different target .