Vous êtes sur la page 1sur 19

Procesadores de Lenguajes

Tema 1: Introduccin
ndice

Definicin de compilador
Tipos de compiladores
Historia de los compiladores
Estructura de un compilador
Especificacin de compiladores
Aplicaciones de los compiladores

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Definicin de compilador

Traductor: Programa que toma como entrada


un texto escrito (llamado fuente) y da como
salida otro texto (llamado objeto).
Compilador: Traductor cuyo fuente es un
lenguaje de alto nivel y cuyo objeto es un
lenguaje de bajo nivel.
Interprete: Compilador que ejecuta al mismo
tiempo que traduce.

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Definicin de compilador

Ventajas de los compiladores frente a los


interpretes
Solo se compilan una vez
Ejecucin ms rpida
Optimizacin de cdigo e Informacin del error
ms detallada.

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Definicin de compilador

Ventajas de los Interpretes frente a los


Compiladores
Menor coste espacial
Mayor interactividad en desarrollo
Aadir cdigo en caliente

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Tipos de Compiladores

Ensamblador
Compilador cruzado
Compilador con montador
Autocompilador
Metacompilador
Decompilador

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Historia de los compiladores

Qu fue primero el compilador o el programa?


FORTRAN: Primer lenguaje de alto nivel
ALGOL: Lenguaje estructurado en mdulos
Separacin Front-End y Back-End para compilar
lenguajes en distintas mquinas
Creacin del lenguaje intermedio UNCOL
Definicin de las distintas fases de creacin de
compiladores

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Anlisis Lxico

Anlisis Sintctico

Procesadores de Lenguajes
Anlisis Semntico

Generacin de
Cdigo Intermedio
Geston de errores

Tabla de smbolos
Optimizacin de
Cdigo intermedio

5 Ingeniera Informtica UNED


Generacin y
Optimizacin de
cdigo final
Estructura de un compilador

Carlos Fernndez Llatas


Estructura de un compilador

Anlisis sintctico
Comprueba los valores unitarios del programa
(tokens):
Palabras reservadas(do, while, if, )
Palabras no especificas(identificadores, constantes)
Formados por tipo y lexema

Int contador
Identificador = tipo
contador = lexema

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Anlisis Sintctico
Recibe los tokens del analizador lxico y
comprueba que estn ordenados conforme a la
gramtica

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Anlisis Semntico
Comprueba la validez del programa
Comprobacin de tipos en operadores

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Generacin de cdigo intermedio


Codifica el lenguaje fuente en un lenguaje
intermedio entre el lenguaje objeto
Permite la separacin entre front-end y back-end
Utilizacin de cdigo de 3 direcciones (A=B+C)
Instrucciones condicionales y saltos

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Optimizacin de cdigo intermedio


Permite realizar mejoras en el cdigo intermedio
Eliminacin de saltos consecutivos
Factorizaciones
Eliminar cdigo intil
Optimizacin de bucles

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Generacin de cdigo objeto


Generar una secuencia de instrucciones en
cdigo ensamblador o mquina a partir del
cdigo intermedio
A=B+C
LOAD B
ADD C
STORE A

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Tabla de smbolos
Tabla donde se registran los identificadores,
constantes, funciones y otros objetos
especificados en el programa fuente
El compilador desarrolla funciones comunes de
acceso a ella

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Manejo de errores
Mensajes de error que el compilador emite cuando
encuentra una inconsistencia en cualquiera de las fases de
compilacin
Normalmente en una compilacin no se muestran todos los
errores producidos:
Ocultacin de otros errores
Avalancha de errores
Se puede
Pararse al encontrar cualquier error
Intentar recuperar todos los errores de una pasada

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Estructura de un compilador

Anlisis lxico FRONT-END


Fuente Anlisis sintctico
Anlisis semantico
Generacin de cdigo intermedio

Cdigo
Intermedio

BACK-END Optimizacin de cdigo intermedio Cdigo


Generacin de cdigo objeto objeto
Optimizacin de cdigo objeto

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Especificacin de un compilador

Especificacin lxica:
Tokens mediante expresiones regulares
Especificacin sintctica:
Gramticas independientes del contexto
Especificacin semntica:
Lenguaje natural

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas


Aplicaciones de las tcnicas de
compilacin

Interfaces textuales
Manejo de ficheros de texto estructurado
Procesadores de texto
Diseo e interpretacin de lenguajes
Gestin de bases de datos
Procesamiento del lenguaje natural
Traduccin de formatos de ficheros
Clculo simblico
Reconocimiento sintctico de formas

Procesadores de Lenguajes 5 Ingeniera Informtica UNED Carlos Fernndez Llatas