Un compilador lee un programa escrito en un lenguaje de programación y lo traduce a un programa equivalente en otro lenguaje. Los compiladores realizan análisis del código fuente para detectar errores y generan una representación intermedia antes de producir el código objeto final. Existen diversos tipos de compiladores que se diferencian en su número de pasadas, capacidad de optimización y lenguajes fuente/objeto soportados.