procesadores de lenguajes tema 1: introducción. procesadores de lenguajes 5º ingeniería...

19
Procesadores de Lenguajes Tema 1: Introducción

Upload: nilda-cardenas

Post on 23-Jan-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Procesadores de Lenguajes

Tema 1: Introducción

Page 2: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Índice

Definición de compilador Tipos de compiladores Historia de los compiladores Estructura de un compilador Especificación de compiladores Aplicaciones de los compiladores

Page 3: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Definición 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.

Page 4: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Definición de compilador

Ventajas de los compiladores frente a los interpretes– Solo se compilan una vez– Ejecución más rápida– Optimización de código e Información del error

más detallada.

Page 5: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Definición de compilador

Ventajas de los Interpretes frente a los Compiladores– Menor coste espacial– Mayor interactividad en desarrollo– Añadir código “en caliente”

Page 6: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Tipos de Compiladores

Ensamblador Compilador cruzado Compilador con montador Autocompilador Metacompilador Decompilador

Page 7: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Historia de los compiladores

¿Qué fue primero el compilador o el programa? FORTRAN: Primer lenguaje de alto nivel ALGOL: Lenguaje estructurado en módulos Separación Front-End y Back-End para compilar

lenguajes en distintas máquinas Creación del lenguaje intermedio UNCOL Definición de las distintas fases de creación de

compiladores

Page 8: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compiladorA

nális

is L

éxic

o

Gestíon de errores

Tabla de símbolos

Aná

lisis

Sem

ántic

o

Aná

lisis

Sin

táct

ico

Gen

erac

ión

de

Cód

igo

Inte

rmed

io

Opt

imiz

ació

n de

C

ódig

o in

term

edio

Gen

erac

ión

y O

ptim

izac

ión

de c

ódig

o fin

al

Page 9: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Análisis sintáctico– 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

Page 10: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Análisis Sintáctico– Recibe los tokens del analizador léxico y

comprueba que están ordenados conforme a la gramática

Page 11: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Análisis Semántico– Comprueba la validez del programa– Comprobación de tipos en operadores

Page 12: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Generación de código intermedio– Codifica el lenguaje fuente en un lenguaje

intermedio entre el lenguaje objeto – Permite la separación entre front-end y back-end– Utilización de código de 3 direcciones (A=B+C)– Instrucciones condicionales y saltos

Page 13: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Optimización de código intermedio– Permite realizar mejoras en el código intermedio– Eliminación de saltos consecutivos– Factorizaciones– Eliminar código inútil– Optimización de bucles

Page 14: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Generación de código objeto– Generar una secuencia de instrucciones en

código ensamblador o máquina a partir del código intermedio

– A=B+C LOAD B ADD C STORE A

Page 15: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Tabla de símbolos– 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

Page 16: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Manejo de errores– Mensajes de error que el compilador emite cuando

encuentra una inconsistencia en cualquiera de las fases de compilación

– Normalmente en una compilación no se muestran todos los errores producidos:

Ocultación de otros errores Avalancha de errores

– Se puede Pararse al encontrar cualquier error Intentar recuperar todos los errores de una pasada

Page 17: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Estructura de un compilador

Análisis léxicoAnálisis sintácticoAnálisis semantico

Generación de código intermedio

Fuente

Optimización de código intermedioGeneración de código objeto

Optimización de código objeto

CódigoIntermedio

Código objeto

BACK-END

FRONT-END

Page 18: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Especificación de un compilador

Especificación léxica:– Tokens mediante expresiones regulares

Especificación sintáctica:– Gramáticas independientes del contexto

Especificación semántica:– Lenguaje natural

Page 19: Procesadores de Lenguajes Tema 1: Introducción. Procesadores de Lenguajes 5º Ingeniería Informática UNED Carlos Fernández Llatas Índice Definición de

Aplicaciones de las técnicas de compilación

Interfaces textuales Manejo de ficheros de texto estructurado Procesadores de texto Diseño e interpretación de lenguajes Gestión de bases de datos Procesamiento del lenguaje natural Traducción de formatos de ficheros Cálculo simbólico Reconocimiento sintáctico de formas