A compiler is a program that converts code written in one language into another language. Usually, the main purpose of compiling is to enable the program to run without an interpreter, and that means converting it into machine code. However, compiling to an intermediary language (such as C) for which there already exists a machine code compiler is also done. This is probably more common with esoteric programming languages than with normal languages.
Several compilers have been written in esoteric programming languages. Perhaps the most interesting of these is awib.