Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIÓN
andrex@cs.buap.mx
FCC-BUAP
1
Introducción
¿Qué es un compilador (traductor)?
2
¿De dónde el nombre “compilador”?
4
No siempre el lenguaje objeto tiene que ser de “bajo nivel”
(traductor)
Técnicas aplicables para:
editores/formateadores de texto
nroff, troff, eqn, tbl, pic de UNIX,TeX
lenguajes de consulta
SQL, shells
transformación de formatos de ficheros
5
Clasificación de los lenguajes
Lenguajes máquina
– Son los lenguajes de más bajo nivel: secuencias binarias de
ceros y unos.
– Históricamente, los primeros
• Lenguajes ensambladores
– Segunda generación de lenguajes
– Versión simbólica de los lenguajes máquina (MOV, ADD).
• Compilador • Intérprete
– Se compila una vez, se – Se traduce cada vez
ejecuta n veces que se ejecuta.
– El proceso de compilación – Permite interaccionar
tiene una visión global de más con el código en
todo el programa, por lo tiempo de ejecución.
cual la gestión de errores – Necesita menos
es más eficiente.
memoria
– La ejecución es más
rápida.
10
Las FASES de un compilador
analizador sintáctico
generador de código
traduce el código fuente a otro objeto
puede ser el definitivo
11
Las FASES de un compilador
Tercera fase
no siempre presente
realiza optimizaciones (algunas) sobre el código (intermedio) generado
Cuarta fase:
traduce el código intermedio (optimizado) a
ensamblador
binario
Muchas variaciones posibles:
sin preprocesador
sin usar código intermedio
optimizando directamente sobre el ensamblador de la máquina
generar directamente binario, sin pasar por el ensamblador
.........
12
Tipos de Compiladores
13
Tipos de Compiladores
14
ESTRUCTURA DE UN COMPILADOR
Etapas que constituyen el proceso de compilación
Programa Fuente
Análisis Léxico
Análisis Sintáctico
Manejo de la Manejo de
Análisis Semántico Errores
Tabla de Símbolos
Generación de Código Intermedio
Optimización de Código
Generación de Código
15 Programa Objeto
Las partes principales
Lo realiza un “scanner”
también “tokenizer”
El scanner recorre los caracteres de entrada (el fuente)
hasta reconocer un “token”
token: unidad léxica indivisible
ejemplos: while,if,==,>=,ancho,...
La secuencia de caracteres correspondiente se llama
“lexema” (componente léxico)
1 token <> 1 lexema
Existen Generadores automáticos de analizadores lexicos
como LEX
17
El analizador léxico
Además, suele realizar otras tareas:
procesar directivas al compilador (opciones)
introducir información preliminar en la tabla de símbolos
eliminar separadores innecesarios
sustituir macros
listar el fuente
Normalmente, los tokens se describen mediante
expresiones regulares
18
El analizador léxico
Ejemplo:
19
El analizador sintáctico
O “parser”
Objetivo: agrupar los tokens suministrados por el scanner
para reconocer “frases”
¿Cómo lo hace?
Ejemplo:
supongamos sintaxis asignación como:
y debemos analizar
21
El analizador sintáctico
22
El analizador semántico
24
Generación de Código Intermedio
26
GENERACION DE CODIGO
27
La tabla de símbolos