2. DEFINICION
Son programas de computadora que traducen de un lenguaje a
otro. Un compilador toma como entrada un programa escrito en
lenguaje fuente y produce un programa equivalente escrito en lenguaje
objeto.
Generalmente al lenguaje fuente se le asocia como leguaje de alto
nivel, mientras el lenguaje objeto se conoce como código de objeto
(código de maquina) escrito específicamente para una maquina objeto
4. TIPOS DE TRADUCTORES
Compilador: programa que convierte un archivo de lenguaje de
programación a su correspondiente en lenguaje objeto.
Ensamblador: programa que convierte de lenguaje nemónico a
lenguaje maquina.
Formadores de texto: toman como entrada una cadena de caracteres
que incluye el texto a componer y ordenes para identificar.
Interpretes: ejecutan las instrucciones del programa según se vallan
presentando. Permiten añadir código durante la ejecución.
5. FASES DE UN COMPILADOR
Conceptualmente un
compilador opera en fases, cada
una de las cuales transforma el
programa fuente de una
representación a otra.
6. ANALIZADOR LÉXICO:
Lee la secuencia de caracteres de izquierda a derecha del programa fuente
a grupa las secuencias de caracteres en unidades con significado propio.
7. ANALIZADOR SINTÁCTICO
Determina sí la secuencia de componentes léxicos sigue la sintaxis del
lenguaje y obtiene una estructura jerárquica del programa en forma de árbol.
8. ANALIZADOR SEMÁNTICO
Realiza las comprobaciones necesarias sobre el árbol sintáctico
para determinar el correcto significado del programa.
9. GENERACIÓN Y OPTIMIZACIÓN
DE CÓDIGO INTERMEDIO
Consiste en la calibración del árbol sintáctico donde ya no
aparecen construcciones de alto nivel. Generando un código
mejorado, llamado código intermedio.
Código Optimizado Código Intermedio
a [indice]=6 ti= indice*elem_size(a)
t2=&a+t1
t3=6
10. GENERACIÓN DE CÓDIGO
OBJETO
Toma como entrada la representación intermedia y genera el código objeto. La
optimización depende la maquina, es necesario conocer el conjunto de
instrucciones, entre otros.
MOV R0,t1 Valor de intex ->
MOV R1,&a Direccion de a -> R1
ADD R1,R0 Sumar R0 a R1
MOV *R1,6 Contante 6 ->direccion en R1
11. TABLA DE SÍMBOLOS
Es una estructura tipo diccionario con operaciones inserción,
borrado y búsqueda, que almacena información sobre los símbolos
que van apareciendo a la largo del programa, como son:
• Los identificadores (variables y funciones)
• Etiquetas
• Tipos de definiciones por el usuario (arreglos, registros, etc.)
Gestor de errores: detecta e informa de errores que se
producen durante le fase de análisis.