UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA
Escuela Técnica Superior de Ingeniería Informática
Procesadores de Lenguajes
Tema 1
Tema 1
Introducción
Introducción
Javier Vélez Reyes
[email protected]
Javier Vélez Reyes
[email protected]
Objetivos del Tema
Objetivos del Tema
Aprender qué es un compilador
(cid:132)(cid:132) Aprender qué es un compilador
Conocer los tipos de compiladores que existen
(cid:132)(cid:132) Conocer los tipos de compiladores que existen
Conocer la diferencia entre compilador e interprete
(cid:132)(cid:132) Conocer la diferencia entre compilador e interprete
Familiarizarse con el contexto de un compilador
(cid:132)(cid:132) Familiarizarse con el contexto de un compilador
Aprender la estructura y fases de un compilador
(cid:132)(cid:132) Aprender la estructura y fases de un compilador
1
Javier Vélez Reyes
[email protected]
Índice General
Índice General
¿Qué es un compilador?
(cid:132)(cid:132) ¿Qué es un compilador?
Compiladores e interpretes
(cid:132)(cid:132) Compiladores e interpretes
Contexto de un compilador
(cid:132)(cid:132) Contexto de un compilador
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Estructura de un compilador
(cid:132)(cid:132) Estructura de un compilador
Javier Vélez Reyes
[email protected]
¿Qué es un compilador?
¿Qué es un compilador?
Traductor
Traductor
Lenguaje
objeto
Alto Nivel
Traductor
Lenguaje
fuente
Lenguaje
objeto
Bajo Nivel
Compilador
Un compilador es un programa que lee un programa
Un compilador es un programa que lee un programa
escrito en lenguaje fuente, y lo traduce a un lenguaje
escrito en lenguaje fuente, y lo traduce a un lenguaje
objeto de bajo nivel. Además generará una lista de los
objeto de bajo nivel. Además generará una lista de los
posibles errores que tenga el programa fuente
posibles errores que tenga el programa fuente
2
Javier Vélez Reyes
[email protected]
Índice General
Índice General
¿Qué es un compilador?
(cid:132)(cid:132) ¿Qué es un compilador?
Compiladores e interpretes
(cid:132)(cid:132) Compiladores e interpretes
Contexto de un compilador
(cid:132)(cid:132) Contexto de un compilador
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Estructura de un compilador
(cid:132)(cid:132) Estructura de un compilador
Javier Vélez Reyes
[email protected]
Compiladores e interpretes
Compiladores e interpretes
Compiladores
(cid:132)(cid:132) Compiladores
Una única compilación
(cid:132)(cid:132) Una única compilación
Mayor velocidad ejecución
(cid:132)(cid:132) Mayor velocidad ejecución
Mayor detalle de errores
(cid:132)(cid:132) Mayor detalle de errores
Mayor consumo de memoria
(cid:132)(cid:132) Mayor consumo de memoria
Interpretes
(cid:132)(cid:132) Interpretes
Interpretación en ejecución
(cid:132)(cid:132) Interpretación en ejecución
Menor velocidad ejecución
(cid:132)(cid:132) Menor velocidad ejecución
Menor detalle de errores
(cid:132)(cid:132) Menor detalle de errores
Menor consumo de memoria
(cid:132)(cid:132) Menor consumo de memoria
3
Javier Vélez Reyes
[email protected]
Índice General
Índice General
¿Qué es un compilador?
(cid:132)(cid:132) ¿Qué es un compilador?
Compiladores e interpretes
(cid:132)(cid:132) Compiladores e interpretes
Contexto de un compilador
(cid:132)(cid:132) Contexto de un compilador
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Estructura de un compilador
(cid:132)(cid:132) Estructura de un compilador
Javier Vélez Reyes
[email protected]
Contexto de un compilador
Contexto de un compilador
Contexto
(cid:132)(cid:132) Contexto
Precompilador
(cid:132)(cid:132) Precompilador
Compilador
(cid:132)(cid:132) Compilador
Enlazador (montador)
(cid:132)(cid:132) Enlazador (montador)
Depurador
(cid:132)(cid:132) Depurador
Ensamblador
(cid:132)(cid:132) Ensamblador
.C.C
.H.H
Precompilador
Precompilador
.C.C
.ASM.ASM
Compilador
Compilador
Ensamblador
Ensamblador
.DLL
.DLL
.OBJ
.OBJ
.OBJ
.OBJ
.OBJ
.OBJ
WIN.EXE
WIN.EXE
.LIB.LIB
Enlazador
Enlazador
.EXE
.EXE
Ensamblador
Ensamblador
.ASM.ASM
.EXE
.EXE
4
Javier Vélez Reyes
[email protected]
Índice General
Índice General
¿Qué es un compilador?
(cid:132)(cid:132) ¿Qué es un compilador?
Compiladores e interpretes
(cid:132)(cid:132) Compiladores e interpretes
Contexto de un compilador
(cid:132)(cid:132) Contexto de un compilador
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Estructura de un compilador
(cid:132)(cid:132) Estructura de un compilador
Javier Vélez Reyes
[email protected]
Tipos de compiladores
Tipos de compiladores
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Ensamblador
(cid:132)(cid:132) Ensamblador
Compilador cruzado
(cid:132)(cid:132) Compilador cruzado
Compilador con montador
(cid:132)(cid:132) Compilador con montador
Autocompilador
(cid:132)(cid:132) Autocompilador
Metacompilador
(cid:132)(cid:132) Metacompilador
Descompilador
(cid:132)(cid:132) Descompilador
5
Javier Vélez Reyes
[email protected]
Índice General
Índice General
¿Qué es un compilador?
(cid:132)(cid:132) ¿Qué es un compilador?
Compiladores e interpretes
(cid:132)(cid:132) Compiladores e interpretes
Contexto de un compilador
(cid:132)(cid:132) Contexto de un compilador
Tipos de compiladores
(cid:132)(cid:132) Tipos de compiladores
Estructura de un compilador
(cid:132)(cid:132) Estructura de un compilador
Javier Vélez Reyes
[email protected]
Estructura de un compilador
Estructura de un compilador
Independencia
física
Análisis Léxico
Análisis Léxico
Análisis Sintáctico
Análisis Sintáctico
Análisis Semántico
Análisis Semántico
Tabla de
símbolos
Generación de código
Generación de código
intermedio
intermedio
Gestión de
errores
Optimización de código
Optimización de código
intermedio
intermedio
Generación de código
Generación de código
objeto
objeto
Dependencia
física
6
Javier Vélez Reyes
[email protected]
Tipos de tokens
(cid:132)(cid:132) Tipos de tokens
Específicos
(cid:132)(cid:132) Específicos
Palabras reservadas
(cid:132)(cid:132) Palabras reservadas
Separadores
(cid:132)(cid:132) Separadores
Operadores
(cid:132)(cid:132) Operadores
No específicos
(cid:132)(cid:132) No específicos
Identificadores
(cid:132)(cid:132) Identificadores
Constantes
(cid:132)(cid:132) Constantes
Etiquetas
(cid:132)(cid:132) Etiquetas
Análisis léxico I
Análisis léxico I
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
el texto fuente en una secuencia a
el texto fuente en una secuencia a
el texto fuente en una secuencia a
ordenada de elemento léxicamente
ordenada de elemento léxicamente
ordenada de elemento léxicamente
válidos (tokens)
válidos (tokens)
válidos (tokens)
e
l
i
h
w
G. Errores
G. Errores
Estructura
(cid:132)(cid:132) Estructura
(cid:132)(cid:132) TipoTipo
Lexema
(cid:132)(cid:132) Lexema
Tabla Símbolos
Tabla Símbolos
Análisis Léxico (G3)
Análisis Léxico (G3)
[RESERVEDWORD, WHILE]
Javier Vélez Reyes
[email protected]
Tipos de tokens
(cid:132)(cid:132) Tipos de tokens
Específicos
(cid:132)(cid:132) Específicos
Palabras reservadas
(cid:132)(cid:132) Palabras reservadas
Separadores
(cid:132)(cid:132) Separadores
Operadores
(cid:132)(cid:132) Operadores
No específicos
(cid:132)(cid:132) No específicos
Identificadores
(cid:132)(cid:132) Identificadores
Constantes
(cid:132)(cid:132) Constantes
Etiquetas
(cid:132)(cid:132) Etiquetas
Análisis léxico II
Análisis léxico II
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
el texto fuente en una secuencia a
el texto fuente en una secuencia a
el texto fuente en una secuencia a
ordenada de elemento léxicamente
ordenada de elemento léxicamente
ordenada de elemento léxicamente
válidos (tokens)
válidos (tokens)
válidos (tokens)
e
l
i
w
G. Errores
G. Errores
Error 1
Estructura
(cid:132)(cid:132) Estructura
(cid:132)(cid:132) TipoTipo
Lexema
(cid:132)(cid:132) Lexema
Tabla Símbolos
Tabla Símbolos
Análisis Léxico (G3)
Análisis Léxico (G3)
1 Los errores léxicos son difíciles de
detectar y suelen delegarse en el análisis
sintáctico
7
Javier Vélez Reyes
[email protected]
Tipos de tokens
(cid:132)(cid:132) Tipos de tokens
Específicos
(cid:132)(cid:132) Específicos
Palabras reservadas
(cid:132)(cid:132) Palabras reservadas
Separadores
(cid:132)(cid:132) Separadores
Operadores
(cid:132)(cid:132) Operadores
No específicos
(cid:132)(cid:132) No específicos
Identificadores
(cid:132)(cid:132) Identificadores
Constantes
(cid:132)(cid:132) Constantes
Etiquetas
(cid:132)(cid:132) Etiquetas
Análisis léxico III
Análisis léxico III
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
El analizador léxico o scanner, transforma
el texto fuente en una secuencia a
el texto fuente en una secuencia a
el texto fuente en una secuencia a
ordenada de elemento léxicamente
ordenada de elemento léxicamente
ordenada de elemento léxicamente
válidos (tokens)
válidos (tokens)
válidos (tokens)
d
a
d
e
G. Errores
G. Errores
Estructura
(cid:132)(cid:132) Estructura
(cid:132)(cid:132) TipoTipo
Lexema
(cid:132)(cid:132) Lexema
Tabla Símbolos
Tabla Símbolos
ID
Análisis Léxico (G3)
Análisis Léxico (G3)
[ID, “edad”]
Javier Vélez Reyes
[email protected]
Definición
(cid:132)(cid:132) Definición
Análisis sintáctico I
Análisis sintáctico I
El analizador sintáctico o parser recibe los tokens
El analizador sintáctico o parser recibe los tokens
El analizador sintáctico o parser recibe los tokens
y comprueba su ordenación correcta. Genera un
y comprueba su ordenación correcta. Genera un
y comprueba su ordenación correcta. Genera un
árbol sintáctico
árbol sintáctico
árbol sintáctico
Funciones
(cid:132)(cid:132) Funciones
Guiar la traducción
(cid:132)(cid:132) Guiar la traducción
Gestión de errores
(cid:132)(cid:132) Gestión de errores
prelación de operadores
(cid:132)(cid:132
Comentarios de: Procesadores de Lenguajes - Tema 1. Introducción (0)
No hay comentarios