PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa...
Transcript of PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa...
![Page 1: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/1.jpg)
PROCESADORES DE LENGUAJES GRADO EN INGENIERÍA INFORMÁTICA
ESPECIALIDAD DE COMPUTACIÓN
TERCER CURSO
SEGUNDO CUATRIMESTRE
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO
![Page 2: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/2.jpg)
2
PROGRAMA
TEMA I.- INTRODUCCIÓN
TEMA II.- ANÁLISIS LEXICOGRÁFICO
TEMA III.- FUNDAMENTOS TEÓRICOS DEL ANÁLISIS SINTÁCTICO
TEMA IV.- ANÁLISIS SINTÁCTICO DESCENDENTE
TEMA V.- ANÁLISIS SINTÁCTICO ASCENDENTE
Ingeniería Informática Procesadores de Lenguajes
Universidad de Córdoba Escuela Politécnica Superior
![Page 3: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/3.jpg)
3
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Procesadores de Lenguajes Tema I.- Introducción
![Page 4: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/4.jpg)
4
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Procesadores de Lenguajes Tema I.- Introducción
![Page 5: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/5.jpg)
5
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Procesadores de Lenguajes Tema I.- Introducción
![Page 6: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/6.jpg)
6
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de
programación
Procesadores de Lenguajes Tema I.- Introducción
![Page 7: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/7.jpg)
7
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de
programación
Los programas fuentes no pueden ser ejecutados directamente
por los ordenadores
Procesadores de Lenguajes Tema I.- Introducción
![Page 8: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/8.jpg)
8
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de
programación
Los programas fuentes no pueden ser ejecutados directamente
por los ordenadores
Los ordenadores sólo ejecutan código escrito en lenguaje
máquina
Procesadores de Lenguajes Tema I.- Introducción
![Page 9: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/9.jpg)
9
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de
programación
Los programas fuentes no pueden ser ejecutados directamente
por los ordenadores
Los ordenadores sólo ejecutan código escrito en lenguaje
máquina
Problema: transformar el programa fuente en código ejecutable
Procesadores de Lenguajes Tema I.- Introducción
![Page 10: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/10.jpg)
10
• TRADUCCIÓN E INTEPRETACIÓN
Los algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de
programación
Los programas fuentes no pueden ser ejecutados directamente
por los ordenadores
Los ordenadores sólo ejecutan código escrito en lenguaje
máquina
Problema: transformar el programa fuente en código ejecutable
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Transformador Código ejecutable
![Page 11: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/11.jpg)
11
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformación:
Procesadores de Lenguajes Tema I.- Introducción
![Page 12: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/12.jpg)
12
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformación:
Traducción
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
![Page 13: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/13.jpg)
13
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformación:
Traducción
Un programa fuente (alto nivel) es convertido en
código ejecutable (bajo nivel) que puede ser
ejecutado independientemente.
Procesadores de Lenguajes Tema I.- Introducción
![Page 14: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/14.jpg)
14
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor
![Page 15: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/15.jpg)
15
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor
Errores de traducción
![Page 16: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/16.jpg)
16
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor Código ejecutable
![Page 17: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/17.jpg)
17
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor Código ejecutable
Datos de entrada
![Page 18: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/18.jpg)
18
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor Código ejecutable
Resultados
Datos de entrada
Errores de
ejecución
![Page 19: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/19.jpg)
19
• TRADUCCIÓN E INTEPRETACIÓN
Traducción
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Traductor Código ejecutable
Resultados
Datos de entrada
![Page 20: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/20.jpg)
20
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformaciones
Traducción
Interpretación o simulación: consta de tres fases que
se repiten sucesivamente
Procesadores de Lenguajes Tema I.- Introducción
![Page 21: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/21.jpg)
21
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformaciones
Traducción
Interpretación o simulación: consta de tres fases que
se repiten sucesivamente
1. Análisis del código fuente para determinar la
siguiente sentencia a ejecutar.
Procesadores de Lenguajes Tema I.- Introducción
![Page 22: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/22.jpg)
22
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformaciones
Traducción
Interpretación o simulación: consta de tres fases que
se repiten sucesivamente
1. Análisis del código fuente para determinar la
siguiente sentencia a ejecutar.
2. Generación del código que se ha de ejecutar.
Procesadores de Lenguajes Tema I.- Introducción
![Page 23: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/23.jpg)
23
• TRADUCCIÓN E INTEPRETACIÓN
Existen dos tipos de transformaciones
Traducción
Interpretación o simulación: consta de tres fases que
se repiten sucesivamente
1. Análisis del código fuente para determinar la
siguiente sentencia a ejecutar.
2. Generación del código que se ha de ejecutar.
3. Ejecución del código generado.
Procesadores de Lenguajes Tema I.- Introducción
![Page 24: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/24.jpg)
24
• TRADUCCIÓN E INTEPRETACIÓN
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Intérprete
![Page 25: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/25.jpg)
25
• TRADUCCIÓN E INTEPRETACIÓN
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Intérprete
Datos de entrada
![Page 26: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/26.jpg)
26
• TRADUCCIÓN E INTEPRETACIÓN
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Intérprete
Datos de entrada
Errores de interpretación
![Page 27: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/27.jpg)
27
• TRADUCCIÓN E INTEPRETACIÓN
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Intérprete
Resultados
Datos de entrada
Errores de
ejecución
![Page 28: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/28.jpg)
28
• TRADUCCIÓN E INTEPRETACIÓN
Interpretación
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Intérprete
Resultados
Datos de entrada
![Page 29: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/29.jpg)
29
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
![Page 30: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/30.jpg)
30
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
El código generado se
puede ejecutar
independientemente del
programa fuente y del
traductor.
Se traduce una vez y se
ejecuta muchas veces.
Interpretación
Dependencia
El código generado sólo
se puede ejecutar con
el intérprete y el
programa fuente.
Se interpreta y ejecuta
a la vez.
![Page 31: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/31.jpg)
31
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
Necesidades de memoria
El código generado se ha
de almacenar en
memoria.
Interpretación
Dependencia
Sin necesidad de memoria
El código generado no
se almacena en
memoria.
![Page 32: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/32.jpg)
32
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
Necesidades de memoria
Eficiencia
Una vez generado el
código, éste se ejecuta
con rapidez.
Interpretación
Dependencia
Sin necesidad de memoria
Menos eficiencia
El código se ha de
volver a generar para
volver a ser ejecutado.
![Page 33: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/33.jpg)
33
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
Necesidades de memoria
Eficiencia
Global
Posee una visión
completa del programa
pudiendo generar
mensajes de error más
detallados.
Interpretación
Dependencia
Sin necesidad de memoria
Menos eficiencia
Local
Posee una visión
parcial del programa,
ya que interpreta el
código sentencia a
sentencia.
![Page 34: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/34.jpg)
34
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
Necesidades de memoria
Eficiencia
Global
No interactividad
No permite la interacción
con el programa fuente
Interpretación
Dependencia
Sin necesidad de memoria
Menos eficiencia
Local
Interactividad
Permite una
interacción con el
programa durante su
desarrollo.
![Page 35: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/35.jpg)
35
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación
Procesadores de Lenguajes Tema I.- Introducción
Traducción
Independencia
Necesidades de memoria
Eficiencia
Global
No interactividad
No inclusión de código
durante la ejecución
Interpretación
Dependencia
Sin necesidad de memoria
Menos eficiencia
Local
Interactividad
Inclusión de código
durante la ejecución
v.g.: intérpretes de
Smalltalk, Lisp y
Prolog.
![Page 36: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/36.jpg)
36
• TRADUCCIÓN E INTEPRETACIÓN
Combinación de la traducción e interpretación:
son procesos complementarios
Procesadores de Lenguajes Tema I.- Introducción
![Page 37: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/37.jpg)
37
• TRADUCCIÓN E INTEPRETACIÓN
Combinación de la traducción e interpretación:
Interpretación + traducción
Se facilita la depuración del código:
la interpretación permite la interacción con el
programa durante su desarrollo.
El código depurado permite generar código
ejecutable más eficiente.
Procesadores de Lenguajes Tema I.- Introducción
![Page 38: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/38.jpg)
38
• TRADUCCIÓN E INTEPRETACIÓN
Combinación de la traducción e interpretación:
Interpretación + traducción:
Se facilita la depuración:
la interpretación permite la interacción con el
programa durante su desarrollo.
El código depurado permite generar código
ejecutable más eficiente.
Traducción + interpretación:
El programa fuente se traduce a código
intermedio.
El código intermedio puede ser interpretado en
diferentes entornos de ejecución.
V.g.: Java, C#, …
Procesadores de Lenguajes Tema I.- Introducción
![Page 39: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/39.jpg)
39
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Procesadores de Lenguajes Tema I.- Introducción
![Page 40: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/40.jpg)
40
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.
V.g.: APL, Lisp, Scheme, Prolog, Java, Smalltalk, etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 41: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/41.jpg)
41
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.
Lenguajes compilados:
Utilizan un traductor denominado “compilador” para
generar el programa ejecutable.
V.g.: Fortran, Pascal, Ada, C, C++
Procesadores de Lenguajes Tema I.- Introducción
![Page 42: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/42.jpg)
42
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.
Lenguajes compilados:
Utilizan un traductor denominado “compilador” para
generar el programa ejecutable.
No es una clasificación excluyente: existen lenguajes
que poseen intérpretes y compiladores:
Intérprete: utilizado para el desarrollo, depuración y
puesta a punto.
Compilador: genera el programa ejecutable.
V. g.: Visual Basic, Builder C++, etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 43: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/43.jpg)
43
Procesadores de Lenguajes Tema I.- Introducción
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
![Page 44: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/44.jpg)
44
• TIPOS DE TRADUCTORES
Preprocesador
Compilador
Ensamblador
Enlazador (“linker”)
Cargador (“loader”)
Procesadores de Lenguajes Tema I.- Introducción
![Page 45: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/45.jpg)
45
• TIPOS DE TRADUCTORES
Preprocesador
Programa inicial escrito en un lenguaje de alto nivel
extendido
Programa final escrito en un lenguaje de alto nivel
estándar
V.g.: “cpp” es un preprocesador del lenguaje C que
realiza las siguientes acciones:
Expandir macros: #define PI 3.141592
Incluir ficheros: #include <stdio.h>
Eliminar comentarios: /* Menú principal */
Etc.
Nota: también existen preprocesadores para embellecer
el programa fuente.
Procesadores de Lenguajes Tema I.- Introducción
![Page 46: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/46.jpg)
46
• TIPOS DE TRADUCTORES
Preprocesador
Compilador
Programa inicial escrito en un lenguaje de alto nivel
Programa final escrito en un lenguaje de bajo nivel
(máquina o ensamblador).
Procesadores de Lenguajes Tema I.- Introducción
![Page 47: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/47.jpg)
47
• TIPOS DE TRADUCTORES
Preprocesador
Compilador
Ensamblador
Programa inicial escrito en lenguaje ensamblador
Programa final escrito en código máquina
Nota: el ensamblador es un caso particular de
compilador.
Procesadores de Lenguajes Tema I.- Introducción
![Page 48: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/48.jpg)
48
• TIPOS DE TRADUCTORES
Preprocesador
Compilador
Ensamblador
Enlazador (“linker”)
Programa inicial escrito en código reubicable (posiciones de
memoria relativas)
Programa final escrito en código máquina absoluto o
ejecutable
Notas:
Además incluye el código de las funciones de las
bibliotecas utilizadas por el programa fuente.
Algunas veces genera código reubicable.
Procesadores de Lenguajes Tema I.- Introducción
![Page 49: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/49.jpg)
49
• TIPOS DE TRADUCTORES
Preprocesador
Compilador
Ensamblador
Enlazador
Cargador (“loader”):
Programa inicial escrito en código reubicable
Programa final escrito en código máquina ejecutable
Nota: no suele ser un programa independiente.
Procesadores de Lenguajes Tema I.- Introducción
![Page 50: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/50.jpg)
50
• TIPOS DE TRADUCTORES
Combinación de los tipos de traductores
Programa fuente
extendido
Procesadores de Lenguajes Tema I.- Introducción
![Page 51: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/51.jpg)
51
• TIPOS DE TRADUCTORES
Combinación de los tipos de traductores
Programa fuente
extendido
Preprocesador
Programa fuente
estándar
Procesadores de Lenguajes Tema I.- Introducción
![Page 52: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/52.jpg)
52
• TIPOS DE TRADUCTORES
Combinación de los tipos de traductores
Programa fuente
extendido
Preprocesador
Programa fuente
estándar
Procesadores de Lenguajes Tema I.- Introducción
Compilador
Programa objeto
(ensamblador)
![Page 53: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/53.jpg)
53
• TIPOS DE TRADUCTORES
Combinación de los tipos de traductores
Programa fuente
extendido
Preprocesador
Programa fuente
estándar
Procesadores de Lenguajes Tema I.- Introducción
Compilador
Programa objeto
(ensamblador)
Ensamblador
Código máquina
reubicable
![Page 54: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/54.jpg)
54
• TIPOS DE TRADUCTORES
Combinación de los tipos de traductores
Programa fuente
extendido
Preprocesador
Programa fuente
estándar
Procesadores de Lenguajes Tema I.- Introducción
Compilador
Programa objeto
(ensamblador)
Ensamblador
Código máquina
reubicable
Enlazador
Código máquina
ejecutable
Biblioteca
de
funciones
(código
reubicable)
![Page 55: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/55.jpg)
55
Procesadores de Lenguajes Tema I.- Introducción
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
![Page 56: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/56.jpg)
56
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Depurador
Generador del programa ejecutable
Perfilador
Entorno de desarrollo integrado
Procesadores de Lenguajes Tema I.- Introducción
![Page 57: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/57.jpg)
57
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Facilita la edición de los programas al mostrar las
estructuras de las sentencias de un lenguaje de
programación.
Evita la aparición de errores léxicos y, sobre todo,
sintácticos.
Procesadores de Lenguajes Tema I.- Introducción
![Page 58: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/58.jpg)
58
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Depurador
En realidad es un intérprete que permite ejecutar el
programa de forma supervisada.
Permite la ejecución paso a paso del programa.
Permite comprobar los valores de las variables,
establecer puntos de parada, etc.
V.g.: algunos depuradores de C son gdb, ddd, dbx,
dbxtool.
Procesadores de Lenguajes Tema I.- Introducción
![Page 59: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/59.jpg)
59
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Depurador
Generador del programa ejecutable
Analiza las dependencias del código las bibliotecas de
funciones para crear el código ejecutable.
V.g.: Install Shield, Setup Factory, etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 60: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/60.jpg)
60
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Depurador
Generador del programa ejecutable
Perfilador
Herramienta muy útil para la optimización de los
programas.
Permite conocer el perfil de ejecución de un programa.
Genera estadísticas sobre la ejecución del programa
relativas a uso de funciones, accesos a memoria, tiempos
de ejecución, etc.
Se pueden descubrir “los cuellos de botella”, es decir,
dónde se requiere más tiempo de ejecución.
Procesadores de Lenguajes Tema I.- Introducción
![Page 61: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/61.jpg)
61
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Editor basado en la estructura sintáctica del lenguaje de
programación
Depurador
Generador del programa ejecutable
Perfilador
Entorno de desarrollo integrado: incluye
un editor,
un compilador,
un enlazador,
un depurador,
etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 62: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/62.jpg)
62
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Procesadores de Lenguajes Tema I.- Introducción
![Page 63: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/63.jpg)
63
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Pasos
Procesadores de Lenguajes Tema I.- Introducción
![Page 64: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/64.jpg)
64
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis: se encarga de comprobar que el programa
fuente está bien escrito
Síntesis: se ocupa de la generación del código
ejecutable
Componentes auxiliares:
Administrador de la tabla de símbolos
Gestor de errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 65: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/65.jpg)
65
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Síntesis
Procesadores de Lenguajes Tema I.- Introducción
![Page 66: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/66.jpg)
66
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Síntesis
Procesadores de Lenguajes Tema I.- Introducción
![Page 67: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/67.jpg)
67
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Procesadores de Lenguajes Tema I.- Introducción
![Page 68: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/68.jpg)
68
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Generación de código intermedio
Procesadores de Lenguajes Tema I.- Introducción
![Page 69: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/69.jpg)
69
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Generación de código intermedio
Optimización de código intermedio
Procesadores de Lenguajes Tema I.- Introducción
![Page 70: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/70.jpg)
70
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Generación de código intermedio
Optimización de código intermedio
Generación de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 71: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/71.jpg)
71
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Generación de código intermedio
Optimización de código intermedio
Generación de código
Optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 72: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/72.jpg)
72
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 73: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/73.jpg)
73
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Administrador
de la Tabla
de símbolos
Gestor de
errores
Componentes léxicos
![Page 74: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/74.jpg)
74
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis sintáctico
Administrador
de la Tabla
de símbolos
Gestor de
errores
Árbol sintáctico
![Page 75: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/75.jpg)
75
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Administrador
de la Tabla
de símbolos
Gestor de
errores Árbol sintáctico anotado
![Page 76: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/76.jpg)
76
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Administrador
de la Tabla
de símbolos
Gestor de
errores
Código intermedio
![Page 77: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/77.jpg)
77
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código intermedio
Código intermedio optimizado
![Page 78: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/78.jpg)
78
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código intermedio
Código objeto
![Page 79: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/79.jpg)
79
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Optimización de código
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código intermedio
Programa objeto
![Page 80: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/80.jpg)
80
Procesadores de Lenguajes Tema I.- Introducción
C
Pascal
Ada
Fortran
Unix
Linux
Windows
4 Lenguajes de programación 4 Sistemas operativos = 16 compiladores
Mac OS
Necesidad de agrupar las fases de la compilación
![Page 81: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/81.jpg)
81
Procesadores de Lenguajes Tema I.- Introducción
Parte frontal
(Front end)
Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Optimización de código
Parte trasera
(Back end)
Optimización del código
intermedio
![Page 82: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/82.jpg)
82
Procesadores de Lenguajes Tema I.- Introducción
C
Parte trasera
de Linux Pascal
Ada
Fortran
Parte frontal
de C
Parte frontal
de Fortran
Parte frontal
de Pascal
Parte frontal
de Ada
Unix
Linux
Windows Parte trasera
de Windows
Parte trasera
de Unix C
Ó
D
I
G
O
I
N
T
E
R
M
E
D
I
O
4 Partes frontales + 4 Partes traseras = 8 Partes
4 Partes frontales 4 Partes traseras = 16 Compiladores
Mac OS Parte trasera
de Mac OS
![Page 83: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/83.jpg)
83
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Se encarga de comprobar que el programa fuente
está bien escrito.
Procesadores de Lenguajes Tema I.- Introducción
![Page 84: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/84.jpg)
84
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Procesadores de Lenguajes Tema I.- Introducción
![Page 85: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/85.jpg)
85
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
![Page 86: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/86.jpg)
86
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Administrador
de la tabla
de símbolos
Gestor de
errores
Componentes léxicos
![Page 87: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/87.jpg)
87
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
También denominado análisis lexicográfico, análisis
lineal, explorador o “scanner”.
Procesadores de Lenguajes Tema I.- Introducción
![Page 88: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/88.jpg)
88
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
También denominado análisis lexicográfico, análisis
lineal, explorador o “scanner”.
Única fase que tiene contacto con el código del
programa fuente: favorece la modularidad y la
interactividad.
Procesadores de Lenguajes Tema I.- Introducción
![Page 89: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/89.jpg)
89
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
También denominado análisis lexicográfico, análisis
lineal, explorador o “scanner”.
Única fase que tiene contacto con el código del
programa fuente: favorece la modularidad y la
interactividad.
Objetivo:
Leer el programa fuente carácter a carácter y
obtener los componentes léxicos o “tokens”
Procesadores de Lenguajes Tema I.- Introducción
![Page 90: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/90.jpg)
90
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
También denominado análisis lexicográfico, análisis
lineal, explorador o “scanner”.
Única fase que tiene contacto con el código del
programa fuente: favorece la modularidad y la
interactividad.
Objetivo:
Leer el programa fuente carácter a carácter y
obtener los componentes léxicos o “tokens”
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Analizador léxico Componentes léxicos
![Page 91: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/91.jpg)
91
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Componente léxico o “token”: agrupación de
caracteres con significado propio.
Palabras reservadas: if, else, while, …
Identificadores: dato, mayor, bandera, …
Operadores aritméticos: +, -, *, /, div, mod, …
Operadores relacionales: <, <=, >, >=, …
Signos de puntuación: {, }, (, ), ;, …
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 92: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/92.jpg)
92
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
if (divisor != 0.0) dividendo = divisor * cociente + resto ;
Componentes léxicos enviados al análisis sintáctico:
Procesadores de Lenguajes Tema I.- Introducción
Identificador: dividendo
Símbolo de asignación: =
Identificador: divisor
Operador aritmético de multiplicación: *
Identificador: cociente
Operador aritmético de adición: +
Identificador: resto
Delimitador de fin de sentencia: ;
Palabra clave IF: if
Los espacios en blanco son
suprimidos
Paréntesis izquierdo: (
Identificador: divisor
Operador relacional DISTINTO: !=
Número: 0.0
Paréntesis derecho: )
![Page 93: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/93.jpg)
93
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Tabla de símbolos
Procesadores de Lenguajes Tema I.- Introducción
cociente
divisor
dividendo
…
…
…
…
…
…
resto … …
… … …
Nombre Atributo 1 Atributo 2
…
…
…
…
…
…
![Page 94: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/94.jpg)
94
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Componentes léxicos eliminados
Los espacios en blanco, tabuladores y saltos de
línea.
Los comentarios.
Estos componentes léxicos
Favorecen la lectura y comprensión de los
programas.
Pero no son necesarios para generar el código
ejecutable.
Generalmente, el análisis léxico es una subrutina o
procedimiento auxiliar del análisis sintáctico.
Procesadores de Lenguajes Tema I.- Introducción
![Page 95: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/95.jpg)
95
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Se utilizan las expresiones regulares para definir las
características de los componentes léxicos.
A partir de las expresiones regulares, se genera el
analizador léxico que simula el funcionamiento de un
autómata finito determinista.
Nota
Véase el tema nº 2
Procesadores de Lenguajes Tema I.- Introducción
![Page 96: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/96.jpg)
96
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Ejemplo:
Expresión regular que denota los identificadores
del lenguaje C
(letra + subrayado) (letra + subrayado + dígito)*
Autómata finito determinista
Procesadores de Lenguajes Tema I.- Introducción
q o q 1
letra
subrayado
letra
subrayado
dígito
![Page 97: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/97.jpg)
97
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
![Page 98: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/98.jpg)
98
Procesadores de Lenguajes Tema I.- Introducción
Análisis léxico
Análisis sintáctico
Administrador
de la Tabla
de símbolos
Gestor de
errores
Árbol sintáctico
Programa fuente
![Page 99: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/99.jpg)
99
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis sintáctico
También denominado análisis jerárquico o gramatical
o “parser”.
Objetivos:
Comprobar la sintaxis del código fuente: utiliza
las reglas gramaticales del lenguaje fuente y los
componentes léxicos.
Generar una representación jerárquica
(figurada): árbol sintáctico.
Procesadores de Lenguajes Tema I.- Introducción
![Page 100: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/100.jpg)
100
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis sintáctico
Se utilizan gramáticas de contexto libre para
definir la sintaxis de las sentencias de los lenguajes
de programación.
A partir de la gramática de contexto libre, se genera
el analizador sintáctico que simula el funcionamiento
de un autómata con pila.
Nota
Véanse los temas nº 3, 4 y 5.
Procesadores de Lenguajes Tema I.- Introducción
![Page 101: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/101.jpg)
101
Procesadores de Lenguajes Tema I.- Introducción
<sentencia condicional simple>
IF
<condición> <sentencia> if
![Page 102: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/102.jpg)
102
Procesadores de Lenguajes Tema I.- Introducción
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
<sentencia>
!=
P. IZQUIERDO P. DERECHO ( )
if
![Page 103: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/103.jpg)
103
Procesadores de Lenguajes Tema I.- Introducción
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
!=
divisor 0.0
P. IZQUIERDO P. DERECHO ( )
if
![Page 104: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/104.jpg)
104
Procesadores de Lenguajes Tema I.- Introducción
<asignación> FIN DE SENTENCIA
;
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
!=
divisor 0.0
P. IZQUIERDO P. DERECHO ( )
if
![Page 105: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/105.jpg)
105
Procesadores de Lenguajes Tema I.- Introducción
<asignación>
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
dividendo
;
=
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
IDENTIFICADOR
!=
divisor 0.0
P. IZQUIERDO P. DERECHO ( )
if
![Page 106: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/106.jpg)
106
Procesadores de Lenguajes Tema I.- Introducción
<asignación>
<expresión>
FIN DE SENTENCIA
<expresión> ADICIÓN
ASIGNACIÓN
dividendo
+
;
=
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
IDENTIFICADOR
!=
divisor 0.0
P. IZQUIERDO P. DERECHO ( )
if
<expresión>
![Page 107: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/107.jpg)
107
Procesadores de Lenguajes Tema I.- Introducción
<asignación>
<expresión>
FIN DE SENTENCIA
<expresión> ADICIÓN
<expresión> <expresión> MULTIPLICACIÓN
ASIGNACIÓN
dividendo
*
+
;
=
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
IDENTIFICADOR
IDENTIFICADOR
!=
divisor 0.0
P. IZQUIERDO P. DERECHO ( )
if
resto
IDENTIFICADOR IDENTIFICADOR
cociente divisor
<expresión>
![Page 108: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/108.jpg)
108
Procesadores de Lenguajes Tema I.- Introducción
<asignación>
<expresión>
FIN DE SENTENCIA
<expresión> ADICIÓN
<expresión> <expresión> MULTIPLICACIÓN
ASIGNACIÓN
<sentencia condicional simple>
IF
<condición>
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
<sentencia>
IDENTIFICADOR
IDENTIFICADOR
P. IZQUIERDO P. DERECHO
IDENTIFICADOR IDENTIFICADOR
<expresión>
![Page 109: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/109.jpg)
109
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
![Page 110: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/110.jpg)
110
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Administrador
de la Tabla
de símbolos
Gestor de
errores
Árbol sintáctico anotado
![Page 111: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/111.jpg)
111
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Análisis
Análisis semántico
Comprueba si el significado de las sentencias es
correcto.
Utiliza el árbol sintáctico y la tabla de símbolos.
Algunos de los errores semánticos que pueden detectar:
Operandos y operadores incompatibles.
Diferencia de tipos entre los argumentos reales y los
argumentos formales.
Etc.
El análisis semántico suele estar integrado en el análisis
sintáctico.
![Page 112: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/112.jpg)
112
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Análisis
Síntesis
Se encarga de transformar la representación
obtenida durante el análisis en el código objeto o
ejecutable
Procesadores de Lenguajes Tema I.- Introducción
![Page 113: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/113.jpg)
113
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
![Page 114: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/114.jpg)
114
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
![Page 115: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/115.jpg)
115
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Administrador
de la Tabla
de símbolos
Gestor de
errores
Código intermedio
![Page 116: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/116.jpg)
116
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Genera una representación intermedia del código
fuente que ha de tener las siguientes características
Ha de ser fácil de generar a partir del código
fuente.
Ha de ser fácil de traducir al código objeto o
ejecutable
Código fuente Código objeto o ejecutable Código intermedio
![Page 117: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/117.jpg)
117
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Genera un representación intermedia del código
fuente
Es una fase opcional, pero muy recomendable.
“Redestinación” :
Al integrarse en la “parte frontal” del
compilador, favorece la generación de código
objeto para distintos entornos de ejecución.
Optimización independiente del entorno de
ejecución
![Page 118: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/118.jpg)
118
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Se utilizan definiciones dirigidas por la sintaxis o
esquemas de traducción que se incorporan al análisis
sintáctico.
Tipos de representaciones intermedias:
Notación postfija
Árboles sintácticos
Grafos dirigidos acíclicos
Código de tres direcciones:
Cuádruplas, triples y triples indirectos.
![Page 119: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/119.jpg)
119
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
if (divisor != 0.0) dividendo = divisor * cociente + resto ;
Representación intermedia en código de tres
direcciones:
100. if divisor = 0 goto 104
101. t1 := divisor * cociente
102. t2 := t1 + resto
103. dividendo := t2
104. …
![Page 120: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/120.jpg)
120
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
![Page 121: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/121.jpg)
121
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Administrador
de la Tabla
de símbolos Gestor de
errores
Optimización del código
intermedio
Código intermedio
optimizado
Generación de código
intermedio
![Page 122: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/122.jpg)
122
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código intermedio
Esta fase es opcional, pero también es recomendable
Objetivo:
Realizar una optimización del código intermedio
que sea independiente de la máquina en la que se
ejecute el código objeto.
La optimización es un problema NP-Completo
![Page 123: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/123.jpg)
123
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código intermedio
if (divisor != 0.0) dividendo = divisor * cociente + resto ;
Optimización de la representación intermedia en código
de tres direcciones:
100. if divisor = 0 goto 104
101. t1 := divisor * cociente
102. t2 := t1 + resto
103. dividendo := t2
104. …
100. if divisor = 0 goto 103
101. t1 := divisor * cociente
102. dividendo := t1 + resto
103. …
![Page 124: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/124.jpg)
124
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
![Page 125: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/125.jpg)
125
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de
código
Administrador
de la Tabla
de símbolos Gestor de
errores
Código objeto
Optimización del código
intermedio
Generación de código
intermedio
![Page 126: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/126.jpg)
126
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código
Objetivo
Traducir la representación intermedia a código
objeto o ejecutable (código máquina).
Ejemplo:
Se va a generar código objeto en ensamblador
Las operaciones aritmético – lógicas se han de
realizar sobre registros de máquina: R1, R2, …
Las proposiciones condicionales son generadas
mediante comparaciones (CMP) y saltos
condicionales (JE, JLE, …).
![Page 127: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/127.jpg)
127
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código
100. MOV divisor, R1
101. CMP #0, R1
102. JE 110
103. MOV cociente, R2
104. MUL R2, R1
105. MOV R1, t1
106. MOV t1, R3
107. MOV resto, R4
108. SUM R3, R4
109. MOV R4, dividendo
110. …
if (divisor != 0.0)
dividendo = divisor * cociente + resto ;
100. if divisor = 0 goto 103
101. t1 := divisor * cociente
102. dividendo := t1 + resto
103. …
![Page 128: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/128.jpg)
128
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
![Page 129: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/129.jpg)
129
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Optimización de
código
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código
intermedio
Programa objeto
![Page 130: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/130.jpg)
130
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código
Generar un código más eficiente:
Ejecución más rápida
Ocupar menos espacio de memoria.
La optimización es un problema NP-Completo
Optimizar las necesidades de tiempo y memoria de
forma conjunta suele ser difícil
Tiempo y memoria son dos factores contrapuestos.
La optimización absoluta no siempre se puede
alcanzar: sólo se producen mejoras, pero no se tiene
garantía de que sean óptimas.
![Page 131: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/131.jpg)
131
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código
Las mejores transformaciones son las que obtienen el
mayor beneficio con el menor esfuerzo
Criterios:
Se ha de preservar el significado del programa
Debe acelerar los programas de forma apreciable
Tiene que merecer la pena
![Page 132: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/132.jpg)
132
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código
Posibles mejoras del código:
No evaluación repetida de expresiones comunes
Evitar la propagación de copias
Supresión de código inactivo o “muerto”: análisis de
control de flujo.
Optimización de bucles: no evaluación de
expresiones constantes dentro de los bucles
Reutilización de registros de máquina.
Etc.
![Page 133: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/133.jpg)
133
Procesadores de Lenguajes Tema I.- Introducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Síntesis
Optimización del código
100. MOV divisor, R1
101. CMP #0, R1
102. JE 110
103. MOV cociente, R2
104. MUL R2, R1
105. MOV R1, t1
106. MOV t1, R3
107. MOV resto, R4
108. SUM R3, R4
109. MOV R4, dividendo
110. …
100. MOV divisor, R1
101. CMP #0, R1
102. JE 108
103. MOV cociente, R2
104. MUL R2, R1
105.MOV resto, R2
106. SUM R1, R2
107. MOV R2, dividendo
108. …
![Page 134: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/134.jpg)
134
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 135: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/135.jpg)
135
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 136: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/136.jpg)
136
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Optimización de
código
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código
intermedio
Programa objeto
![Page 137: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/137.jpg)
137
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
La tabla de símbolos contiene toda la información
relacionada con los identificadores del programa
fuente:
Variables y constantes
Funciones y procedimientos
Parámetros
Tipos de datos definidos
Etiquetas
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 138: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/138.jpg)
138
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
Se crea durante el análisis léxico
Es completada y utilizada durante todas las fases
del proceso de compilación
Se puede utilizar más de una tabla de símbolos para
controlar las reglas de ámbito del lenguaje de
programación.
Los depuradores pueden mostrar los valores de las
variables al consultar la tabla de símbolos.
Procesadores de Lenguajes Tema I.- Introducción
![Page 139: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/139.jpg)
139
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
V.g.: dato = 3;
Procesadores de Lenguajes Tema I.- Introducción
dato entero 3
Nombre Tipo Valor
…
…
![Page 140: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/140.jpg)
140
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
La información de las funciones o procedimientos
es más completa:
Número parámetros
Tipo y forma de paso de cada parámetro
Tipo de resultados (en las funciones)
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 141: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/141.jpg)
141
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
Las operaciones sobre la tabla de símbolos son:
Inserción
Consulta
Modificación
Se puede mejora la eficiencia en el uso de la tabla
de símbolos mediante:
Una buena organización de la tabla (v.g.: árbol
binario de búsqueda)
La codificación de las funciones de acceso en
lenguajes de bajo nivel (v.g.: ensamblador).
Procesadores de Lenguajes Tema I.- Introducción
![Page 142: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/142.jpg)
142
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 143: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/143.jpg)
143
Procesadores de Lenguajes Tema I.- Introducción
Programa fuente Análisis léxico
Análisis semántico
Análisis sintáctico
Generación de código
intermedio
Generación de código
Optimización de
código
Administrador
de la Tabla
de símbolos
Gestor de
errores
Optimización del código
intermedio
Programa objeto
![Page 144: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/144.jpg)
144
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
La gestión de errores es un proceso fundamental
Hay errores en todas las fases del proceso de traducción
Errores más frecuentes en las etapas de análisis:
Errores léxicos: identificador con un carácter no permitido
Errores sintácticos: sentencia de control mal escrita
Errores semánticos: uso de una variable en un contexto inadecuado
La gestión de errores debe:
Informar sobre el error,
y permitir, si es posible, que continúe la traducción para detectar más errores (recuperación del error).
Procesadores de Lenguajes Tema I.- Introducción
![Page 145: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/145.jpg)
145
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
1. Capacidad de detección de errores.
2. Tratamiento de los errores.
3. Recuperación del error.
4. Evitar la cascada de errores.
5. Información de los errores.
Procesadores de Lenguajes Tema I.- Introducción
![Page 146: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/146.jpg)
146
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
1. Capacidad de detección de errores.
Debe ser capaz de reconocer errores de todo
tipo: léxico, sintáctico, semántico, etc.
2. Tratamiento de los errores.
3. Recuperación del error.
4. Evitar la cascada de errores.
5. Información de los errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 147: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/147.jpg)
147
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
1. Capacidad de detección de errores
2. Tratamiento de los errores:
Al encontrar un error, intentará subsanarlo si es
posible.
Siempre informará de los cambios realizados,
para que la persona que programe tome la
decisión final.
3. Recuperación del error.
4. Evitar la cascada de errores.
5. Información de los errores
Procesadores de Lenguajes Tema I.- Introducción
![Page 148: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/148.jpg)
148
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
1. Capacidad de detección de errores
2. Tratamiento de los errores.
3. Recuperación del error:
Debe permitir que la traducción continúe,
sobre todo si no se desarrolla en un proceso
interactivo.
4. Evitar la cascada de errores.
5. Información de los errores.
Procesadores de Lenguajes Tema I.- Introducción
![Page 149: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/149.jpg)
149
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
1. Capacidad de detección de errores
2. Tratamiento de los errores.
3. Recuperación del error.
4. Evitar la cascada de errores
Debe informar de un error solamente una vez,
aunque aparezca varias veces, y no generar otros
errores.
5. Información de los errores.
Procesadores de Lenguajes Tema I.- Introducción
![Page 150: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/150.jpg)
150
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Componentes auxiliares
Gestor de errores
Las características de un buen gestor de errores :
5. Información de los errores: el mensaje de
error debe tener las siguientes características:
Localización: se debe indicar la línea del
código fuente en la que aparece el error.
Pertinencia: debe referirse al código del
programa y no a detalles internos de la
traducción
Comprensión: debe ser claro y sencillo
Procesadores de Lenguajes Tema I.- Introducción
![Page 151: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/151.jpg)
151
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Fases
Pasos
Procesadores de Lenguajes Tema I.- Introducción
![Page 152: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/152.jpg)
152
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Pasos
Número de veces que se procesa una representación del
programa fuente.
Cada paso requiere:
Lectura del código fuente
Procesamiento
Almacenamiento de la información generada
El número de pasos debe ser mínimo.
Procesadores de Lenguajes Tema I.- Introducción
![Page 153: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/153.jpg)
153
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Pasos
Las pasadas se suelen agrupar. Ejemplo:
Primera pasada: análisis léxico, sintáctico, semántico y
generación y optimización de código intermedio
Segunda pasada: generación y optimización de código.
Algunas veces es imprescindible realizar dos o más pasos:
Algol 68 y PL/I permiten utilizar las variables antes de
ser declaradas.
Si el lenguaje permite saltos incondicionales (v.g.:
instrucción “goto”)
La técnica de “backpatching” o “relleno de
retroceso” permite combinar dos pasadas en una
sola. Se requiere una tabla de “saltos”.
Procesadores de Lenguajes Tema I.- Introducción
![Page 154: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/154.jpg)
154
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Procesadores de Lenguajes Tema I.- Introducción
![Page 155: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/155.jpg)
155
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Se pueden generar automáticamente algunas partes del
proceso de traducción
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 156: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/156.jpg)
156
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 157: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/157.jpg)
157
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Las expresiones regulares pueden denotar a los
componentes básicos de los lenguajes de programación:
Identificadores
Números
Operadores aritméticos, lógicos y relacionales
Símbolos de puntuación
Comentarios
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 158: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/158.jpg)
158
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Las expresiones regulares pueden denotar a los
componentes básicos de los lenguajes de programación.
Existen herramientas automáticas para generar
analizadores léxicos a partir de las expresiones
regulares:
Lex, Flex, PCLex
ANTLR
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 159: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/159.jpg)
159
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
V.g.: Lex
lex.yy.c: contiene una función denominada “yylex()”
que realiza las funciones del analizador léxico.
yylex(): simula el funcionamiento de un autómata
finito determinista (AFD).
Procesadores de Lenguajes Tema I.- Introducción
Fichero con
expresiones
regulares
Lex
Analizador
léxico escrito
en lenguaje C
nombre.l lex.yy.c
![Page 160: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/160.jpg)
160
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 161: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/161.jpg)
161
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores sintácticos
Las gramáticas de contexto libre permiten generar
“casi” todas las estructuras sintácticas de los lenguajes
de programación.
Generadores:
YACC o Bison
LLGEN
CUP
ANTLR
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 162: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/162.jpg)
162
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores sintácticos
V.g.: YACC, Yet Another Compiler Compiler
y.tab.c: contiene una función denominada “yyparse()”
que realiza las funciones de analizador sintático.
yyparse(): simula el funcionamiento de un autómata
con pila.
Procesadores de Lenguajes Tema I.- Introducción
Fichero con una
gramática de
contexto libre
YACC nombre.y y.tab.c
Analizador
sintáctico escrito
en lenguaje C
![Page 163: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/163.jpg)
163
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 164: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/164.jpg)
164
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de código intermedio
Suelen estar integrados en los analizadores
sintácticos
Hay dos versiones que incorporan acciones
semánticas de generación de código intermedio:
Definiciones basadas en la sintaxis
Esquemas de traducción
Al crear el árbol sintáctico, se ejecutan las acciones
semánticas de generación de código intermedio
Procesadores de Lenguajes Tema I.- Introducción
![Page 165: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/165.jpg)
165
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 166: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/166.jpg)
166
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de código
Se utilizan transformaciones basadas en reglas que
tienen en cuenta:
Las características de las sentencias y
operaciones del código intermedio
Las características de la máquina donde se va a
ejecutar el código objeto: acceso a datos,
operaciones básicas
Las reglas utilizan plantillas de conversión.
Procesadores de Lenguajes Tema I.- Introducción
![Page 167: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/167.jpg)
167
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
Generadores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
Procesadores de Lenguajes Tema I.- Introducción
![Page 168: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/168.jpg)
168
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE
COMPILADORES
Tipos de herramientas de generación automática:
Máquinas de optimización de código
Se utilizan dispositivos para el análisis del flujo de
datos.
Se recoge información sobre la forma en que los
valores se transmiten de una parte a otra del programa
Ejemplos:
Análisis de “uso siguiente” o de “vida”: se comprueba en qué lugares se usa una variable y, especialmente, cuándo no se va a utilizar más.
Si una variable es utilizada frecuentemente entonces es preferible almacenarla en un registro de máquina.
Etc.
Procesadores de Lenguajes Tema I.- Introducción
![Page 169: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/169.jpg)
169
Procesadores de Lenguajes Tema I.- Introducción
TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORES
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
![Page 170: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/170.jpg)
170
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
La técnica de “bootstrapping” permite combinar compiladores ya creados para construir nuevos compiladores
Los lenguajes que aparecen en el proceso de compilación son:
Lenguaje fuente (F)
Lenguaje de implementación (I): lenguaje en el que está escrito el compilador
Lenguaje objeto (O)
El compilador se puede representar en forma de T
Procesadores de Lenguajes Tema I.- Introducción
F
I
O
Nota: si el lenguaje es ejecutable, se indicará con color rojo
![Page 171: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/171.jpg)
171
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Ejemplo: compilador gcc
Lenguaje fuente: lenguaje C
Lenguaje de implementación: lenguaje máquina de Unix (U)
Lenguaje objeto: lenguaje máquina de Unix (U)
Procesadores de Lenguajes Tema I.- Introducción
C
U
U
![Page 172: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/172.jpg)
172
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Si F = I entonces el compilador se denomina “autocompilador”
Ejemplo:
Lenguaje fuente: Lenguaje C
Lenguaje de implementación: Lenguaje C
Lenguaje objeto: Lenguaje máquina de Unix (U)
Procesadores de Lenguajes Tema I.- Introducción
C
C
U
Nota: habría que “compilar” este compilador para que se
pueda ejecutar, porque el lenguaje de implementación no es
ejecutable.
![Page 173: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/173.jpg)
173
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Si I O entonces el compilador se denomina “compilador
cruzado”, porque se genera código para una máquina diferente a la
que se ha compilado
Ejemplo:
Lenguaje fuente: Lenguaje C
Lenguaje de implementación: Lenguaje máquina de Unix (U)
Lenguaje objeto: Lenguaje máquina de Linux (L)
Procesadores de Lenguajes Tema I.- Introducción
C
U
L
![Page 174: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/174.jpg)
174
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 1: se pretende construir el siguiente compilador
Lenguaje fuente: Lenguaje L de alto nivel
Lenguaje de implementación: Lenguaje máquina (M)
Lenguaje objeto: Lenguaje máquina (M)
Procesadores de Lenguajes Tema I.- Introducción
L
M
M
Dificultad: es muy difícil escribir un programa
(compilador) directamente en código máquina
![Page 175: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/175.jpg)
175
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 1
Paso 1: se construyen dos compiladores auxiliares
Procesadores de Lenguajes Tema I.- Introducción
![Page 176: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/176.jpg)
176
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 1
Paso 1: se construyen dos compiladores auxiliares
Primer compilador
Lenguaje fuente: Lenguaje S, que es más simple que
el lenguaje L de alto nivel (V.g: un subconjunto de L o
ensamblador).
Lenguaje de implementación: Lenguaje máquina (M)
Lenguaje objeto: Lenguaje máquina (M)
Observación: este compilador se puede construir con
más facilidad porque S es más simple que L.
Procesadores de Lenguajes Tema I.- Introducción
S
M
M
1
![Page 177: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/177.jpg)
177
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 1
Paso 1: se construyen dos compiladores auxiliares
Segundo compilador
Lenguaje fuente: Lenguaje L de alto nivel
Lenguaje de implementación: Lenguaje S (que es más simple que el lenguaje L de alto nivel)
Lenguaje objeto: lenguaje máquina (M)
Procesadores de Lenguajes Tema I.- Introducción
L
S
M
2
![Page 178: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/178.jpg)
178
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 1
Paso 2: se compila el compilador 2 con el compilador 1, creándose el compilador final
Procesadores de Lenguajes Tema I.- Introducción
S
M
M
L
S
M L
M
M
1
2 Compilador
final
![Page 179: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/179.jpg)
179
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Forma general: A I B + I M N = A N B
Procesadores de Lenguajes Tema I.- Introducción
I
M
N
A
I
B A
N
B
![Page 180: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/180.jpg)
180
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Forma general: A I B + I M N = A N B
Procesadores de Lenguajes Tema I.- Introducción
I
M
N
A
I
B A
N
B
![Page 181: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/181.jpg)
181
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Si se desea construir un compilador escrito en un lenguaje
máquina M para un lenguaje de alto nivel L, entonces se
utilizan subconjuntos del lenguaje inicial.
Procesadores de Lenguajes Tema I.- Introducción
L
M
M
![Page 182: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/182.jpg)
182
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 2
Sean tres lenguajes de programación: L1 L2 L3
Se pretende construir el siguiente compilador
Lenguaje fuente: Lenguaje L3 de alto nivel
Lenguaje de implementación: Lenguaje máquina (M)
Lenguaje objeto: Lenguaje máquina (M)
Procesadores de Lenguajes Tema I.- Introducción
L3
M
M Compilador
final
![Page 183: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/183.jpg)
183
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 2:
Paso 1:
Se construyen los siguientes tres compiladores
Procesadores de Lenguajes Tema I.- Introducción
L1
M
M L2
L1
M L3
L2
M
1 2 3
![Page 184: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/184.jpg)
184
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 2
Paso 2:
Se compila el compilador 2 con el compilador 1: se
crea un compilador 4
Procesadores de Lenguajes Tema I.- Introducción
L1
M
M
L2
L1
M L2
M
M
1
2 4
![Page 185: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/185.jpg)
185
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo2
Paso 3:
Se compila el compilador 3 con el compilador 4: se
crea el compilador final
Procesadores de Lenguajes Tema I.- Introducción
L2
M
M
L3
L2
M L3
M
M
4
3 Compilador
final
![Page 186: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/186.jpg)
186
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 3:
Dado un compilador de un lenguaje L para una máquina
M, se quiere construir otro compilador para otra máquina N
Compilador original: L M M
Objetivo: L N N
Procesadores de Lenguajes Tema I.- Introducción
L
N
N L
M
M
Compilador
original
Compilador
final
![Page 187: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/187.jpg)
187
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 3
Paso 1:
Se construye el auto compilador L L N
Este compilador es más fácil de construir que el
compilador L N N
Procesadores de Lenguajes Tema I.- Introducción
L
L
N
1
![Page 188: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/188.jpg)
188
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 3
Paso 2:
Se compila el compilador obtenido en el paso 1 con el compilador original: se genera el compilador cruzado L M N
Procesadores de Lenguajes Tema I.- Introducción
L
M
L
L
N L
M
N
M
1 2 Compilador
original
![Page 189: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/189.jpg)
189
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Ejemplo 3
Paso 3:
Se compila el compilador obtenido en el paso 1 con el compilador obtenido en el paso 2, creándose el compilador final
Procesadores de Lenguajes Tema I.-
Introducción
L
M
L
L
N L
N
N
N
1 2
Compilador
final
![Page 190: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/190.jpg)
190
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Resumen del ejemplo 3:
El compilador original y el compilador 1 se construyen directamente
El compilador 2 se construye a partir del original y el compilador 1
El compilador final se construye a partir de los compiladores 1 y 2
Procesadores de Lenguajes Tema I.-
Introducción
![Page 191: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/191.jpg)
191
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Aplicación de la técnica de “bootstrapping”:
Resumen del ejemplo 3:
Procesadores de Lenguajes Tema I.-
Introducción
L
M
L
L
N
L
N
N
M
L
M
N
L
L
N 1
2
1 Compilador
final
Compilador
original
![Page 192: PROCESADORES DE LENGUAJES...Los algoritmos permiten resolver los problemas de computación Programa fuente: algoritmo escrito en un lenguaje de programación Procesadores de Lenguajes](https://reader033.fdocuments.mx/reader033/viewer/2022041706/5e44b9b595dfb3690f6033ce/html5/thumbnails/192.jpg)
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO
PROCESADORES DE LENGUAJES GRADO EN INGENIERÍA INFORMÁTICA
ESPECIALIDAD DE COMPUTACIÓN
TERCER CURSO
SEGUNDO CUATRIMESTRE