Created by Ronaldo Gomez
over 5 years ago
|
||
Hasta este punto hemos tratado al compilador como una caja simple que mapea un programa fuente a un programa destino con equivalencia semántica. Si abrimos esta caja un poco podremos ver que hay dos procesos en esta asignación: análisis y síntesis.
La parte del análisis divide el programa fuente en componentes e impone una estructura gramatical sobre ellas. Después utiliza esta estructura para crear un representación intermedia del programa fuente Si la parte del análisis detecta que el programa fuente está mal formado en cuanto a la sintaxis, o que no tiene semántica consistente, entonces debe proporcionar mensajes informativos para que el usuario pueda corregirlo. La parte del análisis bien recolecta información sobe el programa fuente la almacena en una estructura de datos llamada tabla de símbolos, la cual se pasa junto con la representación intermedia a la parte de la síntesis.
La parte de la síntesis construye el programa destino deseado a partir de la representación y de la información en la tabla de símbolos. A la parte del análisis se le llama comúnmente el front-end del compilador; la parte de la síntesis (propiamente la traducción) es el back-end.
Si examinamos el proceso de compilación con más detalle, podremos ver que opera como una secuencia de fases, cada una de las cuales transforma una representación del programa fuente en otro.
En la practica varias fases pueden agruparse, y las representaciones intermedias entre las fases agrupadas no necesitan construirse de manera explícita. La tabla de símbolos, que almacena información sobre todo el programa fuente, se utiliza en todas las fases del compilador.
Algunos compiladores tiene una fase de optimización código independiente de la máquina, entre el front-end y el back-end. El propósito de esta optimización es realizar transformaciones sobre la representación intermedia, para que el back-end pueda producir un mejor programa destino de lo que hubiera producido una representación intermedia sin optimizar . Como la optimización es opcional, puede faltar una de las dos fases de optimización,
Want to create your own Notes for free with GoConqr? Learn more.