Análisis y codificación: de las dos partes del proceso de compilación, análisis y síntesis, se ha visto hasta el momento la primera. pero si el compilador solo hiciera esta parte, meramente serviría para
De las dos partes del proceso de compilación, análisis y síntesis, se ha visto hasta el momento la primera. Pero si el compilador solo hiciera esta parte, meramenteserviría para comprobar que la sentencia analizada del lenguaje fuente es correcta; pero no haria ninguna traducción.
Se puede decir que el engarse entre el análisis y la síntesis se puedemencionar dos aspectos:
.lenguaje intermedio.
.Generación de código.
En un copilador suele existir los dos componentes , no es imprescindible
LENGUAJE INTERMEDIO:Cabria considerar la compilación en dos pasos: primero de lenguaje fuente (LF) a lenguaje Intermedio (LI) y , de LI a lenguaje Objeto (LO).
Cuando la disparidad entre los LF y LO es muy elevada,surge la conveniencia de diseñar y usar un LI que facilite el proceso.
Las ventajas mayores de empleo de un LI son las siguientes:
.Facilitar la base de optimización de uncopilador.
.Aumentar la portabilidad del compilador de una maquina a otra.
.Facilitar la división del proyecto en fases.
GENERACION DE CODIGO .
Una vez que se tiene elLI hace falta generar el código objeto para la maquina objeto deseada que en el caso normal de no tratarse de un copilador cruzado es el mismo código, con el que esta escrito el copilador.1.– Se va analizando secuencialmente cada símbolo de entrada. S es operando se apila y sigue con este mismo paso, pero con el símbolo siguiente, si el símbolo de entrada es un operador, se va al paso2 .
2.– Si el símbolo en cuestión es un operador se aplica a los dos símbolos superiores a los de la pila. Así si se tenia en la pila AB, los dos elementos superiores, y llega al operadorentonces se debe generar LOAD A, seguido de MULT B y de STORE T .
OPTIMIZACION DE CODIGO
La fase optimizadota de un compilador tiene por misión adecuar correctamente el código objeto...
Regístrate para leer el documento completo.