procesadores de lenguajes tema 1: introducción. procesadores de lenguajes 5º ingeniería...
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/1.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/2.jpg)
Í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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/3.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/4.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/5.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/6.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/7.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/8.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/9.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/10.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/11.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/12.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/13.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/14.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/15.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/16.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/17.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/18.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022082405/5665b4621a28abb57c911358/html5/thumbnails/19.jpg)
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