procesadores de lenguajes
TRANSCRIPT
![Page 1: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/1.jpg)
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
Á Á ÉDEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO
PROCESADORES DE LENGUAJESPROCESADORES DE LENGUAJESR C A R G AJR C A R G AJINGENIERÍA INFORMÁTICA
PRIMER CURSO DE SEGUNDO CICLOR M R C RS S G N C C
SEGUNDO CUATRIMESTRE
![Page 2: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/2.jpg)
Ingeniería InformáticaIngeniería Informática Procesadores de LenguajesProcesadores de Lenguajes
PROGRAMA
TEMA I.- INTRODUCCIÓN
TEMA II.- ANÁLISIS LEXICOGRÁFICO
TEMA III - FUNDAMENTOS TEÓRICOS TEMA III.- FUNDAMENTOS TEÓRICOS DEL ANÁLISIS SINTÁCTICO
Á ÁTEMA IV.- ANÁLISIS SINTÁCTICO DESCENDENTE
TEMA V - ANÁLISIS SINTÁCTICO ASCENDENTETEMA V. ANÁLISIS SINTÁCTICO ASCENDENTE
TEMA VI.- TRADUCCIÓN BASADA EN LA SINTAXIS
2Universidad de CórdobaUniversidad de Córdoba Escuela Politécnica SuperiorEscuela Politécnica Superior
![Page 3: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/3.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
3
![Page 4: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/4.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
4
![Page 5: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/5.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ióLos algoritmos permiten resolver los problemas de computación
5
![Page 6: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/6.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ióLos algoritmos permiten resolver los problemas de computación
Programa fuente: algoritmo escrito en un lenguaje de programación
6
![Page 7: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/7.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ió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
7
![Page 8: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/8.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ió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
8
![Page 9: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/9.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ió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
9
![Page 10: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/10.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
L l it it l l bl d t ió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.
Programa fuentePrograma fuente TransformadorTransformador Código ejecutableCódigo ejecutableg fg f ff g jg j
10
![Page 11: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/11.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f ióExisten dos tipos de transformación:
11
![Page 12: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/12.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f ióExisten dos tipos de transformación:
Traducción
Interpretación
12
![Page 13: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/13.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f ió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.
13
![Page 14: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/14.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducción
Programa fuentePrograma fuente TraductorTraductorPrograma fuentePrograma fuente TraductorTraductor
14
![Page 15: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/15.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducción
Programa fuentePrograma fuente TraductorTraductorPrograma fuentePrograma fuente TraductorTraductor
Errores de traducciónErrores de traducción
15
![Page 16: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/16.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducción
Programa fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutablePrograma fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutable
16
![Page 17: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/17.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducciónDatos de entradaDatos de entrada
Programa fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutablePrograma fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutable
17
![Page 18: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/18.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducciónDatos de entradaDatos de entrada
Programa fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutablePrograma fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutable
ResultadosResultadosErrores de ejecuciónErrores de ejecución
18
![Page 19: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/19.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
T d ióTraducciónDatos de entradaDatos de entrada
Programa fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutablePrograma fuentePrograma fuente TraductorTraductor Código ejecutableCódigo ejecutable
ResultadosResultados
19
![Page 20: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/20.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f iExisten dos tipos de transformaciones
Traducción
Interpretación o simulación: consta de tres fases que se repiten sucesivamente
20
![Page 21: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/21.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f iExisten 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 1. Análisis del código fuente para determinar la siguiente sentencia a ejecutar.
21
![Page 22: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/22.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f iExisten 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 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.G g q j
22
![Page 23: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/23.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
E i t d ti d t f iExisten 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 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.G g q j
3. Ejecución del código generado.
23
![Page 24: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/24.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
I t t ióInterpretación
Programa fuentePrograma fuente IntérpreteIntérprete
24
![Page 25: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/25.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
I t t ióInterpretación
Dat d tradaDat d tradaDatos de entradaDatos de entrada
Programa fuentePrograma fuente IntérpreteIntérprete
25
![Page 26: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/26.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
I t t ióInterpretación
Dat d tradaDat d tradaDatos de entradaDatos de entradaErrores de interpretaciónErrores de interpretación
Programa fuentePrograma fuente IntérpreteIntérprete
26
![Page 27: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/27.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
I t t ióInterpretación
Dat d tradaDat d tradaDatos de entradaDatos de entrada
Programa fuentePrograma fuente IntérpreteIntérprete
ResultadosResultadosErrores de ejecuciónErrores de ejecución
ResultadosResultados
27
![Page 28: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/28.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
I t t ióInterpretación
Dat d tradaDat d tradaDatos de entradaDatos de entrada
Programa fuente Programa fuente IntérpreteIntérprete
ResultadosResultadosResultadosResultados
28
![Page 29: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/29.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
29
![Page 30: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/30.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia:
Interpretación
Dependencia:Independencia:
El código generado se puede ejecutar independientemente del
Dependencia:
El código generado sólo se puede ejecutar con el
programa fuente y del traductor.
Se traduce una vez y se ejecuta h
p jintérprete y el programa fuente.
lmuchas veces. Se interpreta y ejecuta a la vez.
30
![Page 31: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/31.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia
Interpretación
DependenciaIndependencia
Necesidades de memoria:
El código generado se ha de
Dependencia
No tiene necesidad de memoria:
El ódi d El código generado se ha de almacenar en memoria.
El código generado no se almacena en memoria.
31
![Page 32: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/32.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia
Interpretación
DependenciaIndependencia
Necesidades de memoria
Eficiencia
Dependencia
No tiene necesidad de memoria
M fi i iEficiencia
Una vez generado el código, éste se ejecuta con rapidez.
Menos eficiencia
El código se ha de volver a generar para volver a ser j p generar para volver a ser ejecutado.
32
![Page 33: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/33.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia
Interpretación
DependenciaIndependencia
Necesidades de memoria
Eficiencia
Dependencia
No tiene necesidad de memoria
M fi i iEficiencia
Global
P i ió l d l
Menos eficiencia
Local
l d lPosee una visión completa del programa pudiendo generar mensajes de error más detallados.
Posee una visión parcial del programa, ya que interpreta el código sentencia a sentencia.
33
![Page 34: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/34.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia
Interpretación
DependenciaIndependencia
Necesidades de memoria
Eficiencia
Dependencia
No tiene necesidad de memoria
M fi i iEficiencia
Global
N i i id d
Menos eficiencia
Local
d dNo interactividad
No permite la interacción con el programa fuente
Interactividad
Permite una interacción con el programa durante su programa fuente programa durante su desarrollo.
34
![Page 35: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/35.jpg)
Ó Ó
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Diferencias fundamentales entre traducción e interpretación:
Traducción
Independencia
Interpretación
DependenciaIndependencia
Necesidades de memoria
Eficiencia
Dependencia
No tiene necesidad de memoria
M fi i iEficiencia
Global
N i i id d
Menos eficiencia
Local
d dNo interactividad
No inclusión de código durante la ejecución
Interactividad
Inclusion de código durante la ejecuciónejecución ejecución
v.g.: intérpretes de Smalltalk, Lisp y Prolog.
35
p y g
![Page 36: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/36.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
C bi ió d l t d ió i t t ió l t iCombinación de la traducción e interpretación: son procesos complementarios
36
![Page 37: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/37.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
C bi ió d l t d ió i t t ió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 eficienteEl código depurado permite generar código ejecutable más eficiente.
37
![Page 38: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/38.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
C bi ió d l t d ió i t t ió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 eficienteEl código depurado permite generar código ejecutable más eficiente.
Traducción + interpretación:
El f d ódi i diEl programa fuente se traduce a código intermedio.
El código intermedio puede ser interpretado en diferentes entornos de ejecuciónde ejecución.
V.g.: Java, C#, …
38
![Page 39: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/39.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
39
![Page 40: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/40.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.p p j p g
V.g.: APL, Lisp, Scheme, Prolog, Java, Smalltalk, etc.
40
![Page 41: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/41.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.p p j p g
Lenguajes compilados:
Utilizan un traductor denominado “compilador” para generar el Utilizan un traductor denominado compilador para generar el programa ejecutable.
V.g.: Fortran, Pascal, Ada, C, C++
41
![Page 42: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/42.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TRADUCCIÓN E INTEPRETACIÓN
Tipos de lenguajes
Lenguajes interpretados:
Utilizan un intérprete para ejecutar sus programas.p p j p g
Lenguajes compilados:
Utilizan un traductor denominado “compilador” para generar el 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.
42
![Page 43: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/43.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”
43
![Page 44: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/44.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
Compilador
Ensamblador
Enlazador (“linker”)
Cargador (“loader”)
44
![Page 45: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/45.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
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:acciones:
Expandir macros: #define PI 3.141592
I l i fi h #i l d di hIncluir ficheros: #include <stdio.h>
Eliminar comentarios: /* Menú principal */
Etc.
Nota: también existen preprocesadores para embellecer el programa fuente.
45
![Page 46: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/46.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
Compilador
Programa inicial escrito en un lenguaje de alto nivel
Programa final escrito en un lenguaje de bajo nivel (máquina o ensamblador).
46
![Page 47: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/47.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
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.
47
![Page 48: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/48.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
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.
48
![Page 49: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/49.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
P dPreprocesador
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.
49
![Page 50: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/50.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador
50
![Page 51: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/51.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador
Programa fuente estándar
51
![Page 52: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/52.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador
Programa fuente estándar
CompiladorCompilador
52
![Page 53: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/53.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador
Programa fuente estándar
CompiladorCompilador
Programa objeto (ensamblador)
53
![Page 54: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/54.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador EnsambladorEnsamblador
Programa fuente estándar
CompiladorCompilador
Programa objeto (ensamblador)
54
![Page 55: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/55.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador EnsambladorEnsamblador
Programa fuente estándar Código máquina reubicable
CompiladorCompilador
Programa objeto (ensamblador)
55
![Page 56: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/56.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador EnsambladorEnsamblador
Programa fuente estándar Código máquina reubicable Biblioteca Biblioteca de de
CompiladorCompilador funcionesfunciones
(código (código
EnlazadorEnlazador
Programa objeto (ensamblador)(código (código
reubicable)reubicable)
56
![Page 57: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/57.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• TIPOS DE TRADUCTORES
C bi ió d l ti d t d t Combinación de los tipos de traductores
Programa fuente extendido
PreprocesadorPreprocesador EnsambladorEnsamblador
Programa fuente estándar Código máquina reubicable Biblioteca Biblioteca de de
CompiladorCompilador EnlazadorEnlazador funcionesfunciones
(código (código Programa objeto (ensamblador) Código máquina ejecutable
(código (código reubicable)reubicable)
57
![Page 58: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/58.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
58
![Page 59: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/59.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ióEditor basado en la estructura sintáctica del lenguaje de programación
Depurador
Generador del programa ejecutable
Perfilador
Entorno de desarrollo integrado
59
![Page 60: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/60.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ió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.sentencias de un lenguaje de programación.
Evita la aparición de errores léxicos y, sobre todo, sintácticos.
60
![Page 61: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/61.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ió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 programaPermite la ejecución paso a paso del programa.
Permite comprobar los valores de las variables, establecer puntos de parada, etc.p ,
V.g.: algunos depuradores de C son gdb, ddd, dbx, dbxtool.
61
![Page 62: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/62.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ió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 ejecutableel código ejecutable.
V.g.: Install Shield, Setup Factory, etc.
62
![Page 63: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/63.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ió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.
63
![Page 64: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/64.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• PROGRAMAS RELACIONADOS CON LA TRADUCCIÓN
Edit b d l t t i tá ti d l l j d ió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.
64
![Page 65: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/65.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
65
![Page 66: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/66.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Pasos
66
![Page 67: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/67.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
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
67
![Page 68: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/68.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Análisis léxico
Síntesis
68
![Page 69: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/69.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Análisis léxico
Análisis sintáctico
Síntesis
69
![Page 70: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/70.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
70
![Page 71: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/71.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
Síntesis
Generación de código intermedio
71
![Page 72: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/72.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
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
72
![Page 73: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/73.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
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
73
![Page 74: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/74.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
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
74
p g
![Page 75: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/75.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
75
![Page 76: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/76.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Componentes léxicos
Administrador Administrador
de la tabla de la tabla Gestor de erroresGestor de errores
de símbolosde símbolos
GG
76
![Page 77: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/77.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
Administrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de errores
Árbol sintáctico
de símbolosde símbolos
GG
77
![Page 78: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/78.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de errores
de símbolosde símbolos
GGÁrbol sintáctico anotado
78
![Page 79: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/79.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
llAnálisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla
Generación de código intermedioGeneración de código intermediode símbolosde símbolos Gestor de erroresGestor de errores
Código intermedio
79
![Page 80: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/80.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
llAnálisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla Generación de código intermedioGeneración de código intermediode símbolosde símbolos
Gestor de erroresGestor de errores
Optimización del código intermedioOptimización del código intermedio
Código intermedio optimizado
80
![Page 81: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/81.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
llAnálisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla Generación de código intermedioGeneración de código intermediode símbolosde símbolos
Gestor de erroresGestor de errores
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
81Código objeto
![Page 82: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/82.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
A áli i á tiA áli i á ti
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semántico
G ió d ódi i diG ió d ódi i di
Administrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de erroresGeneración de código intermedioGeneración de código intermediode símbolosde símbolos
GG
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
82Optimización de códigoOptimización de código Programa objeto
![Page 83: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/83.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
4 Lenguajes de programación × 4 Sistemas operativos = 16 compiladores
Necesidad de agrupar las fases de la compilación
C Unix
g j p g p p
Pascal
FortranLinux
Fortran
Windows
Ada Mac OS
83
![Page 84: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/84.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
Análisis léxicoAnálisis léxico
Parte frontal
Análisis sintácticoAnálisis sintáctico
(Front end) Análisis semánticoAnálisis semántico
d d dd d dGeneración de código intermedioGeneración de código intermedio
O ti i ió d l ódi i t diO ti i ió d l ódi i t di
ió d ódiió d ódi
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
Optimización de códigoOptimización de código
Parte trasera (Back end)
84
Optimización de códigoOptimización de código
![Page 85: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/85.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
4 Partes frontales + 4 Partes traseras = 8 Partes
4 Partes frontales × 4 Partes traseras = 16 Compiladores
C Parte frontald UnixParte traseraI
f p
C
Parte trasera
de C
Parte frontal
Unixde UnixC
Ó
NT
Parte traserade LinuxPascal
Fortran
Parte frontalde Pascal Linux
ÓDI
ERMFortran
Parte frontalde Fortran Windows
Parte traserade Windows
GO
MED
Ada Parte frontald Ad
IO Mac OSParte trasera
de Mac OS
85
de Ada M S
![Page 86: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/86.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Se encarga de comprobar que el programa fuente está bien escrito.
86
![Page 87: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/87.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Análisis léxico
Análisis sintáctico
Análisis semántico
87
![Page 88: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/88.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
Análisis sintáctico
Análisis semántico
88
![Page 89: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/89.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Componentes léxicos
Administrador Administrador
de la tabla de la tabla Gestor de erroresGestor de errores
de símbolosde símbolos
GG
89
![Page 90: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/90.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
También denominado análisis lexicográfico, análisis lineal, explorador o “scanner”.
90
![Page 91: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/91.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAná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: Única fase que tiene contacto con el código del programa fuente: favorece la modularidad y la interactividad.
91
![Page 92: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/92.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAná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: Única fase que tiene contacto con el código del programa fuente: favorece la modularidad y la interactividad.
Objetivo:j
Leer el programa fuente carácter a carácter y obtener los componentes léxicos o “tokens”
92
![Page 93: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/93.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAná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: Única fase que tiene contacto con el código del programa fuente: favorece la modularidad y la interactividad.
Objetivo:j
Leer el programa fuente carácter a carácter y obtener los componentes léxicos o “tokens”
Programa fuente Analizador léxicoAnalizador léxico Componentes léxicos
93
![Page 94: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/94.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
Componente léxico o “token”: agrupación de caracteres con significado propio.
Palabras reservadas: if else while Palabras reservadas: if, else, while, …
Identificadores: dato, mayor, bandera, …
O d i é i * / di d Operadores aritméticos: +, -, *, /, div, mod, …
Operadores relacionales: <, <=, >, >=, …
Signos de puntuación: {, }, (, ), ;, …
Etc.
94
![Page 95: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/95.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
V.g.: if (divisor != 0.0) dividendo = divisor * cociente + resto ;
Componentes léxicos enviados al análisis sintáctico:Id tifi d r di id dIdentificador: dividendo
Símbolo de asignación: =
Identificador: divisor
Palabra clave IF: if
Los espacios en blanco son suprimidosIdentificador: divisor
Operador aritmético de multiplicación: *
Identificador: cociente
Paréntesis izquierdo: (
Identificador: divisor
d l i l d D T NT ! Identificador: cociente
Operador aritmético de adición: +
Identificador: resto
Operador relacional de DISTINTO: !=
Número: 0.0
P é t i d h )
95
f
Delimitador de fin de sentencia: ;Paréntesis derecho: )
![Page 96: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/96.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
T bl d í b lTabla de símbolos
NombreNombre AtributoAtributo 11 Atributo 2Atributo 2 ……cocientecociente
dividendodividendo…… …… ……
divisordivisor
dividendodividendo ……
……
……
……
……
……restoresto …… …… ……
…… …… …… ……
96
![Page 97: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/97.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
Componentes léxicos eliminados durante el análisis léxico
Los espacios en blanco, tabuladores y saltos de línea.
Los comentarios.
La eliminación de estos componentes léxicos es útil porque
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.
97
![Page 98: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/98.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
Análisis sintáctico
Análisis semántico
98
![Page 99: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/99.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
llAnálisis sintácticoAnálisis sintáctico
ÁAdministrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de errores
Árbol sintáctico
de símbolosde símbolos
GG
99
![Page 100: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/100.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAná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.
G ió j á i (fi d ) á b l Generar una representación jerárquica (figurada): árbol sintáctico.
100
![Page 101: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/101.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
101
![Page 102: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/102.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
!=
P. IZQUIERDO P. DERECHO( )
g FIN DE SENTENCIA;
102
![Page 103: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/103.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO!=
P. IZQUIERDO P. DERECHO( )
g FIN DE SENTENCIA;
IDENTIFICADOR NÚMEROdivisor 0.0
103
![Page 104: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/104.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO!=
P. IZQUIERDO P. DERECHO( )
g
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
;IDENTIFICADOR NÚMERO
IDENTIFICADORdivisor 0.0
dividendo =
104
![Page 105: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/105.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO!=
P. IZQUIERDO P. DERECHO( )
g
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
;IDENTIFICADOR NÚMERO
IDENTIFICADORdivisor 0.0
<expresión>ADICIÓNdividendo
+
=
<expresión>+
105
![Page 106: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/106.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO!=
P. IZQUIERDO P. DERECHO( )
g
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
;IDENTIFICADOR NÚMERO
IDENTIFICADORdivisor 0.0
<expresión> <expresión>ADICIÓNdividendo
+
=
<expresión> <expresión>MULTIPLICACIÓN*
+
IDENTIFICADOR
tresto
106
![Page 107: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/107.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>if
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO!=
P. IZQUIERDO P. DERECHO( )
g
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
;IDENTIFICADOR NÚMERO
IDENTIFICADORdivisor 0.0
<expresión>ADICIÓNdividendo
+
=
<expresión>
<expresión> <expresión>MULTIPLICACIÓN*
+
IDENTIFICADOR
trestoIDENTIFICADOR IDENTIFICADOR
cocientedivisor
107
![Page 108: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/108.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
<sentencia condicional simple><sentencia condicional simple>
IF<condición> <sentencia>
<sentencia de asignación> FIN DE SENTENCIA
<expresión> DISTINTO <expresión>
IDENTIFICADOR NÚMERO
P. IZQUIERDO P. DERECHO
g
<expresión>
FIN DE SENTENCIA
ASIGNACIÓN
IDENTIFICADOR NÚMERO
IDENTIFICADOR
<expresión>ADICIÓN<expresión>
<expresión> <expresión>MULTIPLICACIÓNIDENTIFICADOR
IDENTIFICADOR IDENTIFICADOR
108
![Page 109: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/109.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAnálisis
Análisis léxico
Análisis sintáctico
Análisis semántico
109
![Page 110: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/110.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
ll
ll
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de erroresÁ
de símbolosde símbolos
GGÁrbol sintáctico anotado
110
![Page 111: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/111.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
A áli iAná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 son:
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.
111
![Page 112: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/112.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Análisis
Síntesis
Se encarga de transformar la representación obtenida durante el análisis en el código objeto o ejecutableanálisis en el código objeto o ejecutable
112
![Page 113: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/113.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
113
![Page 114: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/114.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
114
![Page 115: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/115.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
A áli i á tiA áli i á ti
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semántico
Generación de código intermedioGeneración de código intermedio
Administrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de erroresGeneración de código intermedioGeneración de código intermediode símbolosde símbolos
GG
Códi i diCódigo intermedio
115
![Page 116: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/116.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSí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 fuenteHa 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 ejecutableCódigo intermedio
116
![Page 117: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/117.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSí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 intergrarse en la “parte frontal” del compilador, favorece la generación de código objeto para distintos entornos de ejecución. j
Optimización: se puede aplicar a la representación intermedia una optimización de código que sea independiente de la máquina en la que se ejecutaría.
117
![Page 118: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/118.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Este proceso se realiza mediante definiciones dirigidas por la sintaxis o esquemas de traducción que se incorporan al análisis sintáctico.
Tipos de representaciones intermedias:Tipos de representaciones intermedias:
Notación postfija
Á b l i á iÁrboles sintácticos
Grafos dirigidos acíclicos
Código de tres direcciones: cuádruplas, triples y triples indirectos.
118
![Page 119: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/119.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
V.g.: 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 * cociente101. t1 : divisor cociente
102. t2 := t1 + resto
103 dividendo := t2103. dividendo := t2
104. …
119
![Page 120: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/120.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
120
![Page 121: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/121.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla
Generación de código intermedioGeneración de código intermediode símbolosde símbolos Gestor de erroresGestor de errores
Optimización del código intermedioOptimización del código intermedio
Código intermedio optimizado
121
![Page 122: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/122.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSí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.
L i i ió bl NP C lLa optimización es un problema NP-Completo
122
![Page 123: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/123.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Optimización del código intermedio
V.g.: if (divisor != 0.0) dividendo = divisor * cociente + resto ;
Optimización de la representación intermedia en código de tres direcciones:direcciones:
100. if divisor = 0 goto 104
di i * i
100. if divisor = 0 goto 103
101 t1 divi r * iente101. t1 := divisor * cociente
102. t2 := t1 + resto
101. t1 := divisor * cociente
102. dividendo := t1 + resto
103. dividendo := t2
104. …
103. …
123
![Page 124: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/124.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
124
![Page 125: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/125.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semánticoAdministrador Administrador
de la Tabla de la Tabla
Generación de código intermedioGeneración de código intermediode símbolosde símbolos Gestor de erroresGestor de errores
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
125Código objeto
![Page 126: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/126.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código
Objetivo
Traducir la representación intermedia a código objeto o ejecutable (código máquina)(código máquina).
Ejemplo:
S ódi bj bl dSe 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 registros de máquina: R1, R2, …
Las proposiciones condicionales son generadas mediante comparaciones (CMP) y saltos condicionales (JE, JLE, …).
126
p ( ) y ( )
![Page 127: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/127.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código100 MOV divisor R1100. MOV divisor, R1
101. CMP #0, R1
102 JE 108if (divisor != 0.0)
102. JE 108
103. MOV cociente, R2
U
dividendo = divisor * cociente + resto ;
104. MUL R2, R1
105. MOV resto, R3
106. SUM R3, R1
107. MOV R1, dividendo
127108. …
![Page 128: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/128.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Generación de código intermedio
Optimización del código intermedio
Generación de código
Optimización del código
128
![Page 129: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/129.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
A áli i á tiA áli i á ti
Análisis sintácticoAnálisis sintáctico
Análisis semánticoAnálisis semántico
G ió d ódi i t diG ió d ódi i t di
Administrador Administrador
de la Tabla de la Tabla Gestor de erroresGestor de erroresGeneración de código intermedioGeneración de código intermediode símbolosde símbolos
GG
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
129Optimización de códigoOptimización de código Programa objeto
![Page 130: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/130.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSí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 bastante complicado o, incluso, imposible.
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
130
producen mejoras, pero no se tiene garantía de que sean óptimas.
![Page 131: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/131.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Optimización del código
Las mejores transformaciones son las que obtienen el mayor beneficiocon el menor esfuerzo
Criterios:Criterios:
Se ha de preservar el significado del programa
D b l l d f i blDebe acelerar los programas de forma apreciable
Tiene que merecer la pena
131
![Page 132: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/132.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSí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 fl jflujo.
Optimización de bucles: no evaluación de expresiones constantes dentro de los buclesdentro de los bucles
Reutilización de registros de máquina.
Etc
132
Etc.
![Page 133: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/133.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
Sí t iSíntesis
Optimización del código
100. MOV divisor, R1
101. CMP #0, R1
100. MOV divisor, R1
101. CMP #0, R1
102. JE 108
103. MOV cociente, R2
102. JE 108
103. MOV cociente, R2
104. MUL R2, R1
105. MOV resto, R2
104. MUL R2, R1
105. MOV resto, R3
106. SUM R2, R1
107. MOV R1, dividendo
106. SUM R3, R1
107. MOV R1, dividendo
133
7 M V R , d v d d
108. …108. …
![Page 134: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/134.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Componentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
134
![Page 135: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/135.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
135
![Page 136: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/136.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
A áli i á tiA áli i á ti
Análisis sintácticoAnálisis sintáctico
Administrador Administrador
de la Tabla de la Tabla
Análisis semánticoAnálisis semántico
G ió d ódi i t diG ió d ódi i t di Gestor de erroresGestor de errores
de símbolosde símbolosGeneración de código intermedioGeneración de código intermedio GG
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
136Optimización de códigoOptimización de código Programa objeto
![Page 137: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/137.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes 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 constantesVariables y constantes
Funciones y procedimientos
P áParámetros
Tipos de datos definidos
Etiquetas
Etc.
137
![Page 138: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/138.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes 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óncompilación
Se puede utilizar más de una tabla de símbolos para controlar las reglas de ámbito del lenguaje de programación.g g j p g
Los depuradores pueden mostrar los valores de las variables al consultar la tabla de símbolos.
138
![Page 139: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/139.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Administrador de la tabla de símbolos
V.g.: dato = 3;
N bN b TiTi V lV ldatodato enteroentero 33
NombreNombre TipoTipo ValorValor…………
139
![Page 140: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/140.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes 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.
140
![Page 141: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/141.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes 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
141
La codificación de las funciones de acceso en lenguajes de bajo nivel (v.g.: ensamblador).
![Page 142: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/142.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Administrador de la tabla de símbolos
Gestor de errores
142
![Page 143: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/143.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducciónProcesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
P f t A áli i lé iA áli i lé iPrograma fuente Análisis léxicoAnálisis léxico
Análisis sintácticoAnálisis sintáctico
A áli i á tiA áli i á ti
Análisis sintácticoAnálisis sintáctico
Gestor de erroresGestor de errores
Análisis semánticoAnálisis semántico
G ió d ódi i t diG ió d ódi i t di
Administrador Administrador
de la Tabla de la Tabla GGGeneración de código intermedioGeneración de código intermediode símbolosde símbolos
Optimización del código intermedioOptimización del código intermedio
Generación de códigoGeneración de código
143Optimización de códigoOptimización de código Programa objeto
![Page 144: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/144.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Gestor de errores
i d f d lLa gestión de errores es un proceso fundamental
Los errores pueden surgir en todas las fases del proceso de traducción
á f l d áli iLos errores son más frecuentes en las etapas de análisis:
Errores léxicos: identificador con un carácter no permitido
i á i i d l l iErrores sintácticos: sentencia de control mal escrita
Errores semánticos: uso de una variable en un contexto inadecuado
L ió d d bLa gestión de errores debe:
Informar sobre el error,
i i i ibl i ú l d ió d á 144
y permitir, si es posible, que continúe la traducción para detectar más errores (recuperación del error).
![Page 145: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/145.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Gestor de errores
Las características de un buen gestor de errores:
Detección de errores: debe ser capaz de detectar los errores
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 , p q p q p gfinal.
Recuperación del error: debe permitir que la traducción continúe, sobre todo si no se desarrolla en un proceso interactivo.
Evitar la cascada de errores: debe informar de un error sólo una vez aunque aparezca varias veces y no generar otros errores
145
vez, aunque aparezca varias veces, y no generar otros errores.
![Page 146: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/146.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
C t iliComponentes auxiliares
Gestor de errores
Las características de un buen gestor de errores (continuación):
Información de los errores: el mensaje de error debe tener las siguientes características:siguientes características:
- Localización: se debe indicar la línea del código fuente en la
l 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
146
![Page 147: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/147.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
FFases
Pasos
147
![Page 148: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/148.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
PPasos
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.
148
![Page 149: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/149.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• ESTRUCTURA DE UN COMPILADOR: FASES Y PASOS
PPasos
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ódigoSegunda pasada: generación y optimización de código.
Algunas veces es imprescindible realizar dos o más pasos:
Al l 68 PL/I i ili l i bl d Algol 68 y PL/I permiten utilizar las variables antes de ser declaradas.
Si el lenguaje permite saltos incondicionales (v g : instrucción “goto”)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
149
p q“saltos”.
![Page 150: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/150.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
150
![Page 151: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/151.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Algunas partes del proceso de traducción pueden ser generadas automáticamente
Tipos de herramientas de generación automática:Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicos
G d á i d li d i á iGeneradores 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
151
![Page 152: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/152.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
G d á i d ódi i diGeneradores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
152
![Page 153: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/153.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Las expresiones regulares pueden denotar a los componentes básicos de los lenguajes de programación:g j p g
Identificadores
NúmerosNúmeros
Operadores aritméticos, lógicos y relacionales
Sí b l d t a ióSímbolos de puntuación
Comentarios
153
Etc.
![Page 154: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/154.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Las expresiones regulares pueden denotar a los componentes básicos de los lenguajes de programación.g j p g
Existen herramientas automáticas para generar analizadores léxicos a partir de las expresiones regulares:
Lex
Flex
PCLex
ANTLR
154
ANTLR
Etc.
![Page 155: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/155.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
V.g.: LexLexLexnombre lnombre l lex yy clex yy c
Fichero con expresiones regulares
LexLex
Analizador léxico escrito en lenguaje C
nombre.lnombre.l lex.yy.clex.yy.c
El fichero lex.yy.c contiene una función denominada “yylex()” que r aliza la f i d l a alizad r léxi
p g escrito en lenguaje C
realiza las funciones del analizador léxico.
La función yylex() simula el funcionamiento de un autómata finito determinista (AFD).
155
determinista (AFD).
![Page 156: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/156.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
G d á i d ódi i diGeneradores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
156
![Page 157: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/157.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores sintácticosGeneradores 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.g j p g
Existen herramientas automáticas para generar analizadores sintácticos a partir de las gramáticas de contexto libre:
YACC o Bison
LLGENG
CUP
ANTLR
157
ANTLR
Etc.
![Page 158: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/158.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores sintácticosGeneradores automáticos de analizadores sintácticos
V.g.: YACC, Yet Another Compiler Compiler
Fichero con una gramática
YACCYACCnombre.ynombre.y y.tab.cy.tab.c
A li d i tá ti Fichero con una gramática de contexto libre
Analizador sintáctico escrito en lenguaje C
El fichero y.tab.c contiene una función denominada “yyparse()” que realiza las funciones de analizador sintático.
f () l l f d158
La función yyparse() simula el funcionamiento de un autómata con pila.
![Page 159: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/159.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
G d á i d ódi i diGeneradores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
159
![Page 160: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/160.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de código intermedioGeneradores automáticos de código intermedio
Suelen estar integrados en los analizadores sintácticos
H d i i i á i d ió Hay dos versiones que incorporan acciones semánticas de generación de código intermedio:
Definiciones basadas en la sintaxisDefiniciones basadas en la sintaxis
Esquemas de traducción
Al r ar l árb l i tá ti j ta la a i á ti a d Al crear el árbol sintáctico, se ejecutan las acciones semánticas de generación de código intermedio
160
![Page 161: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/161.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
G d á i d ódi i diGeneradores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
161
![Page 162: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/162.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de códigoGeneradores automáticos de código
Se utilizan transformaciones basadas en reglas que tienen en cuenta:
L í i d l i i d l ódi 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 Las características de la máquina donde se va a ejecutar el código objeto:
- Acceso a las variables: almacenamiento en registros demáquina en memoria estática en la pila o el montónmáquina, en memoria estática, en la pila o el montón- Operaciones básicas disponibles
- Etc.
162
E
Las reglas utilizan plantillas de conversión.
![Page 163: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/163.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Generadores automáticos de analizadores léxicosGeneradores automáticos de analizadores léxicos
Generadores automáticos de analizadores sintácticos
G d á i d ódi i diGeneradores automáticos de código intermedio
Generadores automáticos de código
Máquinas de optimización de código
163
![Page 164: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/164.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE COMPILADORESCOMPILADORES
Tipos de herramientas de generación automática:
Máquinas de optimización de códigoMáquinas de optimización de código
Se utilizan dispositivos para el análisis del flujo de datos.
S i f ió b l f l l iSe recoge información sobre la forma en que los valores se transmitende una parte a otra del programa
Ejemplos: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ásutilizar más.
Si una variable es utilizada frecuentemente entonces es preferible almacenarla en un registro de máquina.
164
Etc.
![Page 165: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/165.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
TEMA I INTRODUCCIÓN TEMA I.- INTRODUCCIÓN
• TRADUCCIÓN E INTEPRETACIÓN
• TIPOS DE TRADUCTORES
T U Ó• 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”• COMBINACIÓN DE COMPILADORES: BOOTSTRAPPING
165
![Page 166: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/166.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”La técnica de “bootstrapping” permite combinar compiladores ya creados para 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:g j q p p p
Lenguaje fuente (F)
Lenguaje de implementación (I): lenguaje en el que está escrito el compiladorg j p ( ) g j q p
Lenguaje objeto (O)
El compilador se pueden representar en forma de Tf
FF OO
II
166Nota: si el lenguaje es ejecutable, se indicará con color rojo
![Page 167: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/167.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Ej l il d 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)
CC UUCC
UU
UU
UU
167
![Page 168: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/168.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Si F I t l il d d i “ t il d ”Si F = I entonces el compilador se denomina “autocompilador”
Ejemplo:
Lenguaje fuente: Lenguaje C
Lenguaje de implementación: Lenguaje máquina de Unix (U)
Lenguaje objeto: Lenguaje C
CC UUCC
CC
UU
CC
Nota: habría que “compilar” este compilador para que se pueda ejecutar,
168
Nota: habría que compilar este compilador para que se pueda ejecutar, porque el lenguaje de implementación no es ejecutable.
![Page 169: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/169.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
Si I ≠ O t l il d d i “ il d d ” 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:Ejemplo:
Lenguaje fuente: Lenguaje C
Lenguaje de implementación: Lenguaje máquina de Unix (U)Lenguaje de implementación: Lenguaje máquina de Unix (U)
Lenguaje objeto: Lenguaje máquina de Linux (L)
CC LL
UU
169
![Page 170: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/170.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”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)
LL MMLL
MM
MM
MM
Dificultad: es muy difícil escribir un programa (compilador) directamente en
170
f y f p g ( p )código máquina
![Page 171: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/171.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Ejemplo 1
Paso 1: se construyen dos compiladores auxiliares
171
![Page 172: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/172.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”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).
L j d i l ió L j á i (M)SS MM
Lenguaje de implementación: Lenguaje máquina (M)
Lenguaje objeto: Lenguaje máquina (M)MMObservación: este compilador se puede construir con más facilidadporque S es más simple que L.11
172
![Page 173: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/173.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Ejemplo 1
Paso 1: se construyen dos compiladores auxiliaresPaso 1: se construyen dos compiladores auxiliares
Segundo compilador
Lenguaje fuente: Lenguaje L de alto nivelLenguaje fuente: Lenguaje L de alto nivel
Lenguaje de implementación: Lenguaje S (que es más simple que el lenguaje L de alto nivel)
LL MM
Lenguaje objeto: lenguaje máquina (M)SS
22
173
![Page 174: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/174.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “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 Paso 2: se compila el compilado 2 con el compilado 1, c eándose el compilador final
LL MM LL MM
SS MMSS MM
22 MM
11
22 Compilador finalCompilador final
174
11
![Page 175: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/175.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Forma general: A I B + I M N = A N B
AA BB AA BB
II NN
AA
II
BB AA
NNII
MM
NNII
MM
175
![Page 176: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/176.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Forma general: A I B + I M N = A N B
AA BB AA BB
II NN
AA
II
BB AA
NNII
MM
NNII
MM
176
![Page 177: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/177.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”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 un lenguaje de alto nivel L, entonces se utilizan subconjuntos del lenguaje inicial.
LL MM
MM
177
![Page 178: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/178.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Ejemplo 2
Sean tres lenguajes de programación: L1 ⊆ L2 ⊆ L3Sean tres lenguajes de programación: L1 ⊆ L2 ⊆ L3
Se pretende construir el siguiente compilador
Lenguaje fuente: Lenguaje L3 de alto nivelg j f g j
Lenguaje de implementación: Lenguaje máquina (M)
Lenguaje objeto: Lenguaje máquina (M)
L3L3 MM
MM
178Compilador finalCompilador final
![Page 179: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/179.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Ejemplo 2:
Paso 1:
Se construyen los siguientes tres compiladores
L1L1 MM L2L2 MM L3L3 MM
MM L1L1 L2L2
11 22 33
179
![Page 180: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/180.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”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
L2L2 MM L2L2 MM
L1L1 MML1L1 MM
MM22 44
18011
![Page 181: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/181.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Ejemplo2
Paso 3:
Se compila el compilador 3 con el compilador 4: se crea el compilador finalfinal
L3L3 MM L3L3 MM
L2L2 MML2L2 MM
MM33 Compilador finalCompilador final
18144
![Page 182: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/182.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”Aplicación de la técnica de “bootstrapping”:
Ejemplo 3:
Existe el compilador de un lenguaje L para una máquina M y se quiere construir otro compilador para otra máquina N
Compilador original: L M Compilador original: L M M
Objetivo: L N N
LL NNLL MM
NNMM
182Compilador originalCompilador original Compilador finalCompilador final
![Page 183: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/183.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”
A li ió d l té i d “b t t i ”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
LL NN
LL
18311
![Page 184: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/184.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Ejemplo 3
Paso 2: Paso 2:
Se compila el compilador obtenido en el paso 1 con el compilador original, creándose el compilador cruzado L M N
LL NN LL NN
LLLL MMMM
MM11 22
184Compilador originalCompilador original
![Page 185: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/185.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Ejemplo 3
Paso 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
LL NN LL NN
LLLL NNNN
MM11 Compilador finalCompilador final
18522
![Page 186: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/186.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Resumen del ejemplo 3:
El compilador original y el compilador 1 se construyen directamentep g y p y
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
LL NNLL NN11
LL NNLL
NN
NNLL NNLL
LLLLNN
MM MM11Compilador finalCompilador final
186MM 22p fp f
Compilador originalCompilador original
![Page 187: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/187.jpg)
Procesadores de Lenguajes Procesadores de Lenguajes Tema I.Tema I.-- IntroducciónIntroducción
• COMBINACIÓN DE COMPILADORES: “BOOTSTRAPPING”Aplicación de la técnica de “bootstrapping”:Aplicación de la técnica de bootstrapping :
Resumen del ejemplo 3:
LL NNLL NN11
LL NNLL
NN
NNLL NNLL
LLLLNN
MM MM11Compilador finalCompilador final
MM 22p fp f
187Compilador originalCompilador original
![Page 188: PROCESADORES DE LENGUAJES](https://reader034.vdocuments.site/reader034/viewer/2022042519/563dbbb7550346aa9aaf9d90/html5/thumbnails/188.jpg)
UNIVERSIDAD DE CÓRDOBA
ESCUELA POLITÉCNICA SUPERIOR
Á Á ÉDEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO
PROCESADORES DE LENGUAJESPROCESADORES DE LENGUAJESR C A R G AJR C A R G AJINGENIERÍA INFORMÁTICA
PRIMER CURSO DE SEGUNDO CICLOR M R C RS S G N C C
SEGUNDO CUATRIMESTRE