¿Cómo funciona un compilador?