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