Un compilador es un programa de software que se encarga de traducir un programa que ha sido escrito en un lenguaje de alto nivel en lenguaje de máquina. Sin embargo, la traducción no es inmediata. Es decir, antes de traducirlo a código máquina, el compilador traduce el código fuente del programa a código ensamblador y, una vez hecho esto, con la ayuda de un enlazador lo traduce a código máquina para que el ordenador pueda crear el ejecutable correspondiente.
Un compilador consta de una parte frontend y otra parte backend. En la parte frontend, el compilador valida y procesa los datos de entrada. En la parte backend, el compilador crea el ejecutable.
- Analizador léxico (elimina espacios, comentarios, convierte el input en tokens, etc.).
- Analizador sintáctico (crea un árbol AST con los tokens recibidos).
- Analizador semántico (comprueba que el árbol AST sea válido).
- Generador de código intermedio (como puede ser lenguaje ensamblador).
- Optimizador de código
- Generador de código

Para seguir aprendiendo…
European Valley: ¿Qué es un Compilador en programación?
Teldat: ¿Cómo se compila un compilador?
Linux Terminal: man cc (manual sobre compilador cc).