CONDICIONES DE LA CONDICIONES DE LA MATERIAMATERIA
Universidad Nacional de JujuyFacultad de Ingeniería
COMPILADORESCOMPILADORES
Elizabeth Reinoso
DOCENTES DE LA MATERIA
PROFESOR A CARGO
ING. ELIZABETH REINOSO
CORREO: [email protected]
PROFESORA DE PRACTICAS
ING. FABIANA ARAGON
CORREO: [email protected]
Elizabeth Reinoso: [email protected]
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: [email protected]
CONDICIONES DE LA MATERIA
CUATRIMESTRAL
2 PARCIALES
UN RECUPERATORIO
ENTREGA DE TRABAJOS PRACTICOS ANTES
DE CADA PARCIAL
ENTREGA DE TRABAJO FINAL.
Elizabeth Reinoso: [email protected]
CONDICIONES DE EVALUACION
REGIMEN DE REGULARIDAD Para regularizar la materia los alumnos deberán aprobar Los prácticos de programación propuestos (fuente y
ejecutable) incluyendo un informe del trabajo realizado. Dos exámenes parciales 1 teórico y 1 práctico o sus
respectivas recuperaciones. Setenta por ciento (50%) es el porcentaje mínimo, de los ejercicios y/o preguntas a resolver, necesario para aprobar cada parcial
La entrega del trabajo final dado (fuente y ejecutable)
Elizabeth Reinoso: [email protected]
CONDICIONES DE EVALUACION
REGIMEN DE PROMOCION Para promocionar la materia los alumnos deberán
aprobar:
1. Los prácticos de programación propuestos (fuente y ejecutable) incluyendo un informe del trabajo realizado.
2. Dos exámenes parciales 1 teórico y 1 práctico o sus respectivas recuperaciones. Setenta por ciento (70%) es el porcentaje mínimo, 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: [email protected]
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: [email protected]
INTRODUCCIONINTRODUCCION
Universidad Nacional de JujuyFacultad de Ingeniería
COMPILADORESCOMPILADORES
Elizabeth Reinoso
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: [email protected]
Índice General
¿Qué es un compilador? Compiladores e interpretes Contexto de un compilador Tipos de compiladores Estructura de un compilador
Elizabeth Reinoso: [email protected]
¿Qué es un Compilador?
Elizabeth Reinoso: [email protected]
LenguajeFuente TRADUCTOR Lenguaje
Objeto
LenguajeFuente
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. Además generará una lista de los posibles errores que tenga el programa fuente
Compiladores e Interpretes
Compiladores Una única compilación Mayor velocidad ejecución Mayor detalle de errores Mayor consumo de memoria
Interpretes Interpretación en ejecución Menor velocidad ejecución Menor detalle de errores Menor consumo de memoria
Elizabeth Reinoso: [email protected]
Contexto de un Compilador
Contexto Precompilador Compilador Enlazador (montador) Depurador Ensamblador
Elizabeth Reinoso: [email protected]
.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: [email protected]
Estructura de un Compilador
Análisis Léxico
Prog. Fuente
Análisis Sintáctico
Análisis Semántico
Generación de Código Intermedio
Optimización de Código Intermedio
Generación de Código Objeto
Prog. Objeto
Tabla de Símbolos
Gestión de Errores
IndependenciaFísica
DependenciaFísica
Análisis Léxico
Tipos de tokens Específicos
Palabras reservadas Separadores Operadores
No específicos Identificadores Constantes Etiquetas
Estructura Tipo Lexema
El analizador léxico o scanner, transforma el texto fuente en una secuencia ordenada de elemento léxicamente válidos (tokens)
G. Errores
Tabla de Simbolo
Análisis Léxico
while
[WORDRESERVED, WHILE]
Elizabeth Reinoso: [email protected]
Análisis Léxico
Tipos de tokens Específicos
Palabras reservadas Separadores Operadores
No específicos Identificadores Constantes Etiquetas
Estructura Tipo Lexema
El analizador léxico o scanner, transforma el texto fuente en una secuencia ordenada de elemento léxicamente válidos (tokens)
G. Errores
Tabla de Simbolo
Análisis Léxico
while
[WORDRESERVED, WHILE]
Elizabeth Reinoso: [email protected]
Los errores léxicos son difíciles de detectar y suelen delegarse en el
análisis sintáctico
Error
Análisis Léxico
Tipos de tokens Específicos
Palabras reservadas Separadores Operadores
No específicos Identificadores Constantes Etiquetas
Estructura Tipo Lexema
El analizador léxico o scanner, transforma el texto fuente en una secuencia ordenada de elemento léxicamente válidos (tokens)
G. Errores
Tabla de Símbolo
Análisis Léxico
dade
[ID, “edad”]
Elizabeth Reinoso: [email protected]
ID
Análisis Sintáctico
Definición
Funciones Guiar la traducción Gestión de errores prelación de operadores
A/B*C = A/(B*C) A/B*C = (A/B) * C
El analizador sintáctico o parser recibe los tokens y comprueba su ordenación correcta. Genera un árbol sintáctico
A:= B + C
Análisis Sintáctico
:=
A +
B CElizabeth Reinoso: [email protected]
Análisis Sintáctico
Definición
Funciones Guiar la traducción Gestión de errores prelación de operadores
A/B*C = A/(B*C) A/B*C = (A/B) * C
El analizador sintáctico o parser recibe los tokens y comprueba su ordenación correcta. Genera un árbol sintáctico
A:= B + C
Análisis Sintáctico
G. Errores
Elizabeth Reinoso: [email protected]
Análisis Semántico
Definición
Validación Tipo de resultados
intermedios Conversiones implícitas de
tipos Sobrecarga de operadores
El analizador semántico comprueba que el árbol sintáctico es semánticamente válido. Genera unárbol semántico o etiquetado
:=
A +
B C
Análisis Semántico
:=
A +
B CReal
Integer RealTabla de Símbolos
Tipo A, B, C?
Elizabeth Reinoso: [email protected]
Análisis Semántico
Definición
Validación Tipo de resultados
intermedios Conversiones implícitas de
tipos Sobrecarga de operadores
El analizador semántico comprueba que el árbol sintáctico es semánticamente válido. Genera unárbol semántico o etiquetado
:=
A +
B C
Análisis Semántico
:=
A +
B CReal
Char Real
Tabla de Símbolos
Tipo A, B, C?
Elizabeth Reinoso: [email protected]
G. de Errores B (is char)
Generación de Código Intermedio
Definición
Lenguajes sencillos Tercetos Cuartetos
El generador de código intermedio transforma un árbol semántico de una representación en un lenguaje intermedio cercano al código objeto
WHILE (A>B) AND (A<2*B-5) DOA:=A+B
Generación de Código Intermedio
L1: IF A>B GOTO L2 GOTO L3L2: T1 := 2*B T2 := T1 – 5 IF A< T2 GOTO L4 GOTO L3L4: A := A + B GOTO L1L3: …
Optimizacion de Código
Definición
Fases Independiente de la máquina Dependiente de la máquina
Eliminación de saltos consecutivos
El optimizador de código realiza modificaciones sobre el código intermedio para mejorar la eficiencia en velocidad y tamaño.
L1: IF A>B GOTO L2 GOTO L3L2: T1 := 2*B T2 := T1 – 5 IF A< T2 GOTO L4 GOTO L3L4: A := A + B GOTO L1L3: …
L1: IF A<=B GOTO L2 T1 := 2*B T2 := T1 – 5 IF A>= T2 GOTO L2 A := A + B GOTO L1L2: …
Optimizador
Optimizacion de Código
Factorizacion de Expresiones Comunes
Extracción de Invariantes
REPEAT B := 1 A := A – BUNTIL A = 0
B := 1REPEAT A := A – BUNTIL A = 0
Optimizador
A := B + C + DE := B + C + F
T1 := B + CA := T1 + DE := T1 + F
Optimizador
Elizabeth Reinoso: [email protected]
Generación de Código Objeto
Definición
Lenguaje objeto Ensamblador Código máquina
El generador de código objeto transforma el código intermedio optimizado en código objeto de bajo nivel
LD AX, BLD BX, CADD AX, BXST AX, A
A := B + C Generador de código intermedio
Generador de código objeto
Elizabeth Reinoso: [email protected]
Tabla de Simbolos Almacena estructuras de datos
Variables Constantes Etiquetas Tipos Valores Signatura de funciones
Operaciones Insertar símbolo Consultar símbolo Borrar símbolo
Elizabeth Reinoso: [email protected]
Gestión de Errores
Detección de errores Léxicos (se delegan al sintáctico) Sintácticos Semánticos
Recuperación de errores Parar al primer error Recuperar volviendo a un contexto fiable
Elizabeth Reinoso: [email protected]
[AHO] AHO, SETHI, ULLMAN: Compiladores: Principios, técnicas y herramientas,: Addison-Wesley Iberoamericana, 1990
[GARRIDO] A. Garrido, J. Iñesta, F. Moreno y J. Pérez. 2002. Diseño de compiladores. Universidad de Alicante.