Programa que puede leer un
programa en un
lenguaje(Fuente) y traducirlo
en un programa equivalente
en otro lenguaje.
¿Que procesos sigue la
compilación?
La compilación se divide en 2 fases, cada
fase se subdivide en 3 fases: Las dos fases raíz
son análisis y síntesis.
¿Qué pasa en las fases raiz?
En la fase de síntesis el significado obtenido se escribe
en el lenguaje objeto. A la parte del análisis se le llama
comúnmente el front-end del compilador
¿Cuales son las 3 subfases de la fase de síntesis?
1. Generación de código intermedio. 2.
optimización de código 3. generación de código
¿Qué pasa en cada una de las
subfases de la fase de síntesis?
Generación de código intermedio: Durante la traducción
de un programa fuente a un programa destino un
compilador produce representaciones intermedias que
pueden tener variedad de formas. Una de ellas es un
arbol sintáctico. Después del análisis semántico y
sintáctico del programa fuente muchos compiladores
generan una representación intermedia similar al código
maquina que se puede considerar como un programa
para una maquina abstracta. Esta representación
intermedia debe tener dos propiedades importantes:
debe ser fácil de producir y fácil de traducir en la
máquina destino
Optimización de código: En esta fase se mejora el código
en cuanto al consumo de recursos (tiempo y memoria)
Generación de código: Se genera por fin el código objeto,
normalmente código máquina relocalizable o ensamblador.
Analisis : Se analiza el programa fuente para
dividirlo en componentes y extraer de algún modo el significado
¿Cuáles son las 3 subfases de la fase de análisis?
¿Qué pasa en cada una de las
subfases de la fase de análisis?
Analisis léxico: Lee el programa fuente de
iz-de caracter por caracter y los agrupa en
componentes y los agrupa en componentes
léxicos, que son secuencias de caracteres
que tienen un significado colectivo
Análisis sintáctico: agrupa los componentes léxicos
de forma jerarquica en agrupaciones con un
significado colectivo
Análisis semántico: se verifica que los
componentes se ajusten de manera significativa
Si el programa destino es un programa
ejecutable en lenguaje maquina entonces el
usuario puede ejecutarlo para procesar
las entradas y producir salidas
(resultados)
¿Qué diferencias hay entre
interprete y compilador?
Por lo general el programa destino en
lenguaje maquina que produce un
compilador es más rápido que un
interprete al momento de asignar las
entradas a las salidas pero el interprete
puede ofrecer mejores diagnósticos de
error que un compilador ya que ejecuta
un programa fuente instrucción por
instrucción.