Vous êtes sur la page 1sur 29

CONDICIONES DE LA

MATERIA
Universidad Nacional de Jujuy
Facultad de Ingeniera
COMPILADORES
Elizabeth Reinoso
edrreinoso@fi.unju.edu.ar
DOCENTES DE LA MATERIA
PROFESOR A CARGO
ING. ELIZABETH REINOSO
CORREO: edrreinoso@fi.unju.edu.ar
eliro30@arnet.com.ar
PROFESORA DE PRACTICAS
ING. FABIANA ARAGON
CORREO: fraragon@fi.unju.edu.ar



Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
HORARIOS DE CLASES
TEORIAS
ING. ELIZABETH REINOSO
LUNES DE : 11:00 A 14:00
AULA 17
CONSULTA: MARTES DE 16:00 A 18:00 GAB. 18
PRACTICAS
ING. FABIANA ARAGON
MIERCOLES DE : 10:00 A 13:00
AULA 17
CONSULTA: JUEVES DE 15:00 A 16:00 GAB. 18



Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
CONDICIONES DE LA
MATERIA
CUATRIMESTRAL
2 PARCIALES
UN RECUPERATORIO
ENTREGA DE TRABAJOS PRACTICOS ANTES
DE CADA PARCIAL
ENTREGA DE TRABAJO FINAL.

Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
CONDICIONES DE
EVALUACION
REGIMEN DE REGULARIDAD
Para regularizar la materia los alumnos debern aprobar
Los prcticos de programacin propuestos (fuente y
ejecutable) incluyendo un informe del trabajo realizado.
Dos exmenes parciales 1 terico y 1 prctico o sus
respectivas recuperaciones. Setenta por ciento (50%) es
el porcentaje mnimo, de los ejercicios y/o preguntas a
resolver, necesario para aprobar cada parcial
La entrega del trabajo final dado (fuente y ejecutable)

Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
CONDICIONES DE
EVALUACION
REGIMEN DE PROMOCION
Para promocionar la materia los alumnos debern
aprobar:
1. Los prcticos de programacin propuestos (fuente y
ejecutable) incluyendo un informe del trabajo realizado.
2. Dos exmenes parciales 1 terico y 1 prctico o sus
respectivas recuperaciones. Setenta por ciento (70%) es
el porcentaje mnimo, de los ejercicios y/o preguntas a
resolver, necesario para aprobar cada parcial.
3. La entrega del trabajo final dado (fuente y ejecutable)
La nota final se computar promediando las notas
obtenidas en los puntos 1 , 2 y 3.
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
FECHAS TENTATIVAS DE
PARCIALES
1 PARCIAL: 07 DE MAYO DE 2012
2 PARCIAL : 18 DE JUNIO DE 2012
RECUPERATORIO 1 Y 2 PARCIAL: 25
DE JUNIO
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
INTRODUCCION
Universidad Nacional de Jujuy
Facultad de Ingeniera
COMPILADORES
Elizabeth Reinoso
edrreinoso@fi.unju.edu.ar
Objetivos Generales
Aprender qu es un compilador
Conocer los tipos de compiladores que existen
Conocer la diferencia entre compilador e interprete
Familiarizarse con el contexto de un compilador
Aprender la estructura y fases de un compilador
Eliz9abeth Reinoso: edrreinoso@fi.unju.edu.ar
ndice General
Qu es un compilador?
Compiladores e interpretes
Contexto de un compilador
Tipos de compiladores
Estructura de un compilador
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Qu es un Compilador?
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Lenguaje
Fuente
TRADUCTOR
Lenguaje
Objeto
Lenguaje
Fuente
Alto Nivel
Bajo Nivel
Traductor
Compilador
Un compilador es un programa que lee un programa escrito
en lenguaje fuente, y lo traduce a un lenguaje objeto de bajo
nivel. Adems generar una lista de los posibles errores que
tenga el programa fuente
Compiladores e Interpretes
Compiladores
Una nica compilacin
Mayor velocidad ejecucin
Mayor detalle de errores
Mayor consumo de memoria
Interpretes
Interpretacin en ejecucin
Menor velocidad ejecucin
Menor detalle de errores
Menor consumo de memoria
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Contexto de un Compilador
Contexto
Precompilador
Compilador
Enlazador (montador)
Depurador
Ensamblador
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
.C .H
Precompilador
.C
Compilador
.ASM
Ensamblador
.OBJ .OBJ .OBJ
Enlazador
.ASM .EXE
.LIB
Ensamblador
.DLL
WIN.EXE
.EXE
Tipos de Compiladores
Tipos de compiladores
Ensamblador
Compilador cruzado
Compilador con montador
Autocompilador
Metacompilador
Descompilador
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Estructura de un Compilador
Anlisis Lxico
Prog. Fuente
Anlisis Sintctico
Anlisis Semntico
Generacin de Cdigo
Intermedio
Optimizacin de Cdigo
Intermedio
Generacin de Cdigo
Objeto
Prog. Objeto
Tabla de
Smbolos
Gestin de
Errores
Independencia
Fsica
Dependencia
Fsica
Anlisis Lxico
Tipos de tokens
Especficos
Palabras reservadas
Separadores
Operadores
No especficos
Identificadores
Constantes
Etiquetas
Estructura
Tipo
Lexema

El analizador lxico o scanner, transforma
el texto fuente en una secuencia ordenada
de elemento lxicamente vlidos (tokens)
G. Errores
Tabla de
Simbolo
Anlisis Lxico
w
h
i
l
e
[WORDRESERVED, WHILE]
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Anlisis Lxico
Tipos de tokens
Especficos
Palabras reservadas
Separadores
Operadores
No especficos
Identificadores
Constantes
Etiquetas
Estructura
Tipo
Lexema

El analizador lxico o scanner, transforma
el texto fuente en una secuencia ordenada
de elemento lxicamente vlidos (tokens)
G. Errores
Tabla de
Simbolo
Anlisis Lxico
w
h
i
l
e
[WORDRESERVED, WHILE]
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Los errores lxicos son
difciles de detectar y
suelen delegarse en el
anlisis sintctico
Error
Anlisis Lxico
Tipos de tokens
Especficos
Palabras reservadas
Separadores
Operadores
No especficos
Identificadores
Constantes
Etiquetas
Estructura
Tipo
Lexema

El analizador lxico o scanner, transforma
el texto fuente en una secuencia ordenada
de elemento lxicamente vlidos (tokens)
G. Errores
Tabla de
Smbolo
Anlisis Lxico

d
a
d
e
[ID, edad]
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
ID
Anlisis Sintctico
Definicin


Funciones
Guiar la traduccin
Gestin de errores
prelacin de operadores
A/B*C = A/(B*C)
A/B*C = (A/B) * C
El analizador sintctico o parser recibe los
tokens y comprueba su ordenacin correcta.
Genera un rbol sintctico
A:= B + C
Anlisis Sintctico
:=
A +
B C
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Anlisis Sintctico
Definicin


Funciones
Guiar la traduccin
Gestin de errores
prelacin de operadores
A/B*C = A/(B*C)
A/B*C = (A/B) * C
El analizador sintctico o parser recibe los
tokens y comprueba su ordenacin correcta.
Genera un rbol sintctico
A:= B + C
Anlisis Sintctico
G. Errores
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Anlisis Semntico
Definicin


Validacin
Tipo de resultados
intermedios
Conversiones implcitas de
tipos
Sobrecarga de operadores
El analizador semntico comprueba que el rbol
sintctico es semnticamente vlido. Genera un
rbol semntico o etiquetado
:=
A +
B C
Anlisis Semntico
:=
A +
B C
Real
Integer
Real
Tabla de Smbolos
Tipo A, B, C?
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Anlisis Semntico
Definicin


Validacin
Tipo de resultados
intermedios
Conversiones implcitas de
tipos
Sobrecarga de operadores
El analizador semntico comprueba que el rbol
sintctico es semnticamente vlido. Genera un
rbol semntico o etiquetado
:=
A +
B C
Anlisis Semntico
:=
A +
B C
Real
Char
Real
Tabla de Smbolos
Tipo A, B, C?
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
G. de Errores
B (is char)
Generacin de Cdigo Intermedio
Definicin


Lenguajes sencillos
Tercetos
Cuartetos
El generador de cdigo intermedio transforma un
rbol semntico de una representacin en un
lenguaje intermedio cercano al cdigo objeto
WHILE (A>B) AND (A<2*B-5) DO
A:=A+B
Generacin de Cdigo
Intermedio
L1: IF A>B GOTO L2
GOTO L3
L2: T1 := 2*B
T2 := T1 5
IF A< T2 GOTO L4
GOTO L3
L4: A := A + B
GOTO L1
L3:
Optimizacion de Cdigo
Definicin

Fases
Independiente de la mquina
Dependiente de la mquina
Eliminacin de saltos consecutivos
El optimizador de cdigo realiza modificaciones sobre el cdigo
intermedio para mejorar la eficiencia en velocidad y tamao.
L1: IF A>B GOTO L2
GOTO L3
L2: T1 := 2*B
T2 := T1 5
IF A< T2 GOTO L4
GOTO L3
L4: A := A + B
GOTO L1
L3:
L1: IF A<=B GOTO L2
T1 := 2*B
T2 := T1 5
IF A>= T2 GOTO L2
A := A + B
GOTO L1
L2:
Optimizador
Optimizacion de Cdigo
Factorizacion de Expresiones Comunes


Extraccin de Invariantes
REPEAT
B := 1
A := A B
UNTIL A = 0
B := 1
REPEAT
A := A B
UNTIL A = 0
Optimizador
A := B + C + D
E := B + C + F
T1 := B + C
A := T1 + D
E := T1 + F
Optimizador
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Generacin de Cdigo Objeto
Definicin

Lenguaje objeto
Ensamblador
Cdigo mquina
El generador de cdigo objeto transforma el cdigo
intermedio optimizado en cdigo objeto de bajo nivel
LD AX, B
LD BX, C
ADD AX, BX
ST AX, A
A := B + C
Generador de cdigo
intermedio
Generador de cdigo
objeto
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Tabla de Simbolos
Almacena estructuras de datos
Variables
Constantes
Etiquetas
Tipos
Valores
Signatura de funciones
Operaciones
Insertar smbolo
Consultar smbolo
Borrar smbolo
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
Gestin de Errores
Deteccin de errores
Lxicos (se delegan al sintctico)
Sintcticos
Semnticos
Recuperacin de errores
Parar al primer error
Recuperar volviendo a un contexto fiable
Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar
[AHO] AHO, SETHI, ULLMAN:
Compiladores: Principios, tcnicas y
herramientas,: Addison-Wesley
Iberoamericana, 1990
[GARRIDO] A. Garrido, J. Iesta, F.
Moreno y J. Prez. 2002. Diseo de
compiladores. Universidad de Alicante.