Sunteți pe pagina 1din 18

PROCESO DE

COMPILACIÓN
1. PROCESO DE COMPILACIÓN

• Un compilador :
Es un traductor en el que el lenguaje
fuente es un Lenguaje de Programación
de Alto Nivel, y el lenguaje objeto es
Lenguaje Ensamblador o Lenguaje
Máquina.
• Transformación:
Programa fuente en programa
ejecutable
PROCESO DE COMPILACIÓN

• La transformación muestra:
• Programa fuente:
 Escrito en un LP de alto nivel
• Compilador:
 Encargado de la traducción comprobar las llamadas a las librerías para q se ejecuten
correctamente

• Programa objeto:
 Programa traducido, puede o no estar en lenguaje maquina aun no es directamente ejecutable
• Programa ejecutable:
 traducción completa al lenguaje maquina.
 hecha por el enlazador(linker) o montados.
 Es directamente ejecutable.
• Enlazador:
 Encargado en insertar al programa objeto el código maquina de la funciones
de las librerías(archivos de biblioteca)usadas en el programa y de realizar el
proceso de montaje
2. ETAPAS DEL PROCESO DE COMPILACIÓN

• Análisis:
Divide al programa en sus elemento componentes y crea el código o programa
intermedio

• Síntesis:
Construye el código objeto a partir del código intermediario
FASES DE COMPILACION
3. ANÁLISIS
Analizador léxico (scaning):
El analizador léxico, lee el archivo fuente
carácter por carácter y forma grupos de
caracteres (lexemas ),con un significa
léxico mínimo, nominados Tokens, que son
tratados como entidad única.
El analizador léxico elimina los
componentes no esenciales del programa
fuente , e ignora los espacios en blanco,
los tabuladores, los caracteres de final de
línea , los comentarios y, en general, todo
lo que no sea necesario
ANÁLISIS

Análisis sintáctico:
El análisis sintáctico comprueba si llegan en el orden correcto y
proporcionado por la gramática libre de contexto que define el lenguaje
fuente mediante la construcción de arboles sintácticos.
Árbol sintáctico:
Organiza los Tokens, usando reglas recursivas conocidos como gramáticas de
libre contexto
ANALISIS SINTACTICO
¿Que es un analizador sintactico?
• Es la fase del analizador que se encarga de chequear el texto
de entrada en base a una gramática dada. Y en caso de que el
programa de entrada sea válido, suministra el árbol sintáctico
que lo reconoce.
• En teoría, se supone que la salida del analizador sintáctico es
alguna representación del árbol sintáctico que reconoce la
secuencia de tokens suministrada por el analizador léxico.
• En la práctica, el analizador sintáctico también hace:
 Acceder a la tabla de símbolos (para hacer parte del trabajo
del analizador semántico).
 Chequeo de tipos ( del analizador semántico).
 Generar código intermedio.
 Generar errores cuando se producen.
 En definitiva, realiza casi todas las operaciones de la
compilación. Este método de trabajo da lugar a los métodos de
compilación dirigidos por sintaxis.
ANÁLISIS

análisis semántico:
La salida de análisis semántico suele
ser un árbol semántico que no es mas
que un árbol sintáctico en el que cada
nodo ha adquirido su significado
Conjunto de reglas que especifican el
significado de cualquier sentencia
sintácticamente valida.
4. SÍNTESIS

Generación del código intermedio:


Una técnica para facilitar la tarea de creación de nuevos compiladores
consiste en dividir el compilador en dos partes.
Es una fase de análisis y una de sistesis,ya que están comunicadas con un
lenguaje intermedio.
Optimizacion de codigo:
Esta fase de síntesis esta presente en los compiladores mas sofisticados y su
propósito es producir un código objeto mas eficiente.
Reduciendo el espacio ocupado por el código generado.
Aumentando la rapidez de ejecucion.
Haciendo que se necesite menos memoria cuando se ejecute.
Generacion de código final:
En esta ultima fase de la compilación se genera el código objeto(generalmente
código de ensamblador o código maquina)a partir del código intermedio.
Se asisgna un espacio de memoria para cada nombre del programa
fuente(variables ,tipos,constantes,etc).
Se traduce cada una de las instrucciones en código intermedio a una secuencia de
instrucciones en código objeto que ejecuten la misma tarea.

S-ar putea să vă placă și