Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Intérpretes
Conceptos Generales
1
Problema: ¿Cómo ejecutamos un programa?
prog1
if(id1>10) TEXT:
if(id1>10)var
var= “hola”; =_“hola”;else
else Ejecutar! print_“chau”;
//fin
print “chau”;
//fin
3
Problema: ¿Cómo ejecutamos un programa?
4
Problema: ¿Cómo ejecutamos un programa?
Intérprete
6
Características de un
Compilador
7
Características de un Compilador
011010
Programa 100110
fuente 101010
8
Características de un Compilador
Compilador
011010
Programa 100110
fuente Fases de Fases de 101010
Análisis Síntesis
10
Características de un Compilador
011010
Programa 100110
fuente Fases de Fases de 101010
Análisis Síntesis
11
Fases de Análisis
12
Analizar y recopilar Fases de Análisis
la información de
la estructura y el
significado del
fuente
Programa
fuente Fases de
Análisis
13
Analizar y recopilar Fases de Análisis
la información de
la estructura y el
significado del
fuente
Programa
fuente Fases de
Análisis
Construir una representación
interna del fuente que capture la
estructura del programa
Árbol Sintáctico Abstracto (AST)
14
Analizar y recopilar Fases de Análisis
la información de
la estructura y el
significado del
fuente
Análisis Nombre
x
tipo
float …
y float
Análisis Nombre
x
tipo
float …
y float
16
Analizar y recopilar Fases de Análisis
la información de
la estructura y el
significado del
fuente
valerse de la
especificación del Programa
lenguaje fuente - de Especificación del fuente
sus reglas de
Lenguaje fuente
Sintaxis y Semántica
17
Fases de Análisis
Fases de Análisis
¡Dividir y Conquistar!
Compiladores e Intérpretes 2019
18
Fases de Análisis
Fases de Análisis
¡Dividir y Conquistar!
Compiladores e Intérpretes 2019
19
Fase de Análisis Léxico
20
Fase de Análisis Léxico
//cuenta //cuentava
r˽=˽x˽*˽˽(y Analizador Secuencia tokens
var = x * (y +10) ; ˽+10)˽;//f
//fin cuenta in˽cuenta Léxico
21
Fase de Análisis Léxico
22
Fase de Análisis Léxico
Secuencia de Tokens
Secuencia de
Caracteres Analizador
Fuente
Léxico
Reporte de Errores
Léxicos
23
Fase de Análisis Sintáctico
24
Fase de Análisis Sintáctico
25
Fase de Análisis Sintáctico
26
Fase de Análisis Sintáctico
27
Fase de Análisis Sintáctico
28
Fase de Análisis Sintáctico
Tabla de Símbolos
Secuencia Analizador
de Tokens
Sintáctico
Reporte de Errores
Sintácticos
29
Fase de Análisis Semántico
30
Fase de Análisis Semántico
31
Fase de Análisis Semántico
33
Fase de Análisis Semántico
Tabla de Símbolos*
Árbol Sintáctico
Abstracto Analizador
Tabla de Semántico
Símbolos
Reporte de Errores
Semánticos
34
Fases de Síntesis
35
Fases de Síntesis
Toman la información
recopilada por las Buscan que el
fases de análisis y resultado sea un
traducen a código del código eficiente
lenguaje destino
Árbol Sintáctico
011010
Abstracto*
Fases de 100110
Tabla de 101010
Símbolos* Síntesis
36
Fases de Síntesis
Fases de Síntesis
¡Dividir y Conquistar!
37
Fases de Síntesis
Fases de Síntesis
¡Dividir y Conquistar!
38
Fase de Generación de Código Intermedio
39
Fase de Generación de Código Intermedio
40
Fase de Generación de Código Intermedio
41
Fase de Optimización de Código Intermedio
42
Fase de Optimización de Código Intermedio
43
Fases de Síntesis
Es posible tener varias fases
de generación de código
intermedio y optimización
Fases de Síntesis
44
Fases de Generación y Optimización de Código Destino
45
Fases de Generación y Optimización de Código Destino
46
fuente
Programa
Analizador
Léxico
Analizador
Sintáctico
Analizador
Fases de Análisis
Semántico
Gen. Código
Intermedio
Optimizador
Intermedio
Compilador Estándar
Gen. Código
Destino
Estructura de un Compilador
Fases de Síntesis
Optimizador
Destino
47
100110
011010
101010
Estructura de un Compilador
En uno no Estándar
algunas etapas pueden
Compilador Estándar no existir
Fases de Análisis Fases de Síntesis
Gen. Código
Gen. Código
Optimizador
Optimizador
Analizador
Semántico
Intermedio
Intermedio
Analizador
Analizador
Destino
Destino
Léxico
fuente 100110
101010
49
¿Por qué estudiamos Compiladores?
50
Bibliografía
51