Un compilador es un software que traduce los programas escritos de un lenguaje de programación (de alto nivel) a otro lenguaje de programación (lenguaje de maquina) que es de bajo nivel y es mas entendible y de fácil proceso para la máquina.


El compilador hace este proceso en diferentes fases, toma el código fuente del programa, después comienza el proceso de análisis el cual se divide en: análisis del léxico, en donde se identifican los diferentes tokens en el código fuente, en esta parte no se analizan si están bien o mal el código, solo se identifican todos los tokens que hay en el Código fuente , análisis de la sintaxis, que especifica las reglas para crear un programa apropiado en este lenguaje, es decir comprueba que la secuencia de códigos cumplan las reglas de gramática y genera un árbol sintáctico, y después la semántica, esto lo hace para entender las instrucciones y organizarla de forma que haga sentido al traducir la información del lenguaje de programación, utilizando el árbol sintáctico para comprobar las restricciones de tipo de dato y otras limitaciones semánticas y preparar así la generación de Código intermedio después comienza el proceso de síntesis en el cual genera un código intermedio entre estos dos lenguajes, lo optimiza y genera un código en el lenguaje de máquina.