CONDICIONES DE LA MATERIA

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Compiladores e intérpretes
Prof. Ing.Maria Rosa Damaso Rios
Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Prototipo de compilador didáctico del lenguaje LC99
Facultad de Ciencias de la Computación
Fundamentos de programación
Temas Operaciones básicas Instalando el compilador
Introducción a la Programación
Programación I Teoría I
Unidad 1. Introducción al proceso de compilación.
Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel
Teoría de lenguajes y compiladores
Programación de Sistemas
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
INTRODUCCIÓN A LA PROGRAMACIÓN
Teoría de lenguajes y compiladores
Pablo Cesar Tapia Catacora
Introducción al Software
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
ALGORITMOS Y ESTRUCTURAS DE DATOS
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
Algoritmos y Estructuras de Datos I
TRADUCTOR DE UN PROGRAMA
M.C. Meliza Contreras González
Procesadores del Lenguaje
M.C. Juan Carlos Olivares Rojas
Teoría de lenguajes y compiladores
2º curso Ingeniería Técnica en Informática de Sistemas UNED
FUNDAMENTOS DE PROGRAMACION
INGENIERIA EN SISTEMAS COMPUTACIONALES
ANALISIS SINTACTICO Parte I
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
Clasificación de Gramáticas y Manejo de Errores
Universidad Nacional de Jujuy Facultad de Ingeniería
1.4 Traductor y Su estructura
Procesadores de Lenguajes
LENGUAJES DE PROGRAMACIÓN
Introducción al Análisis Sintáctico
Universidad Nacional de la Patagonia San Juan Bosco Facultad de Ingeniería Cátedra: Análisis y Diseño de Sistemas Presentación.
Compiladores Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
Análisis Léxico Área Software de Base.
COMPILADORES DIANA ROCIO OLAYA MESA.
INFORMATICA VII (Programación e implementación de sistemas)
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
Lenguajes de Programación
1 3 : METODOLOGÍA DE LA. PROGRAMACIÓN. 2 Metodología de la programación Definiciones Lenguajes de programación Traductores Ciclo de vida de los programas.
JULIAN DARIO RAMIREZ CORRECHA PROSOF12. °QUE ES UN ALGORITMO °CLASES DE ALGORITMOS °QUE ES UN LENGUAJE DE PROGRAMACION °QUE ES UN LENGUAJE DE PROGRAMACION.
Compiladores Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Procesadores de Lenguajes
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
El proceso de compilación
Software.
LICENCIATURA EN NUTRICIÓN Universidad FASTA BROMATOLOGÍA Y TÉCNICA ALIMENTARIA.
TIPOS DE SOFTWARE Cintia Verónica Díaz Díaz 1° “A” TIC’s.
Programación de Sistemas
Autómatas y Compiladores. Segunda Semana. Ricardo Vargas Del Valle A35469.
FUNDAMENTOS DE PROGRAMACIÓN
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

CONDICIONES DE LA MATERIA Universidad Nacional de Jujuy Facultad de Ingeniería COMPILADORES CONDICIONES DE LA MATERIA Elizabeth Reinoso edrreinoso@fi.unju.edu.ar

DOCENTES DE LA MATERIA PROFESOR A CARGO PROFESORA DE PRACTICAS 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 PRACTICAS 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 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 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: edrreinoso@fi.unju.edu.ar

CONDICIONES DE EVALUACION REGIMEN DE PROMOCION Para promocionar 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 (70%) 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) 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

Universidad Nacional de Jujuy Facultad de Ingeniería COMPILADORES INTRODUCCION 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? Lenguaje Fuente TRADUCTOR Lenguaje Objeto Traductor Alto Nivel Lenguaje Fuente Bajo Nivel 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 Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

Compiladores e Interpretes 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: edrreinoso@fi.unju.edu.ar

Contexto de un Compilador .H Contexto Precompilador Compilador Enlazador (montador) Depurador Ensamblador Precompilador .C .ASM Compilador Ensamblador .OBJ .OBJ .OBJ .DLL .LIB Enlazador WIN.EXE .ASM .EXE Ensamblador .EXE Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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 Prog. Fuente Independencia Física Análisis Léxico Análisis Sintáctico Análisis Semántico Tabla de Símbolos Generación de Código Intermedio Gestión de Errores Optimización de Código Intermedio Dependencia Física Generación de Código Objeto Prog. Objeto

Análisis Léxico Tipos de tokens Específicos No específicos Estructura 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) w h i l e G. Errores Análisis Léxico Tabla de Simbolo [WORDRESERVED, WHILE] Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

Análisis Léxico Tipos de tokens Específicos No específicos Estructura El analizador léxico o scanner, transforma el texto fuente en una secuencia ordenada de elemento léxicamente válidos (tokens) Tipos de tokens Específicos Palabras reservadas Separadores Operadores No específicos Identificadores Constantes Etiquetas Estructura Tipo Lexema w h i l e Tabla de Simbolo G. Errores Error Análisis Léxico Los errores léxicos son difíciles de detectar y suelen delegarse en el análisis sintáctico [WORDRESERVED, WHILE] Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

Análisis Léxico Tipos de tokens Específicos No específicos Estructura El analizador léxico o scanner, transforma el texto fuente en una secuencia ordenada de elemento léxicamente válidos (tokens) Tipos de tokens Específicos Palabras reservadas Separadores Operadores No específicos Identificadores Constantes Etiquetas Estructura Tipo Lexema d a e G. Errores Análisis Léxico Tabla de Símbolo ID [ID, “edad”] Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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 C Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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: edrreinoso@fi.unju.edu.ar

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 Tipo A, B, C? := A + B C Real Tabla de Símbolos Integer Real Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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 Tipo A, B, C? := A + B C Tabla de Símbolos Real G. de Errores B (is char) Char Real Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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 L1: IF A>B GOTO L2 GOTO L3 L2: T1 := 2*B T2 := T1 – 5 IF A< T2 GOTO L4 L4: A := A + B GOTO L1 L3: … WHILE (A>B) AND (A<2*B-5) DO A:=A+B Generación de Código Intermedio

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 L3 L2: T1 := 2*B T2 := T1 – 5 IF A< T2 GOTO L4 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 Código Factorizacion de Expresiones Comunes Extracción de Invariantes A := B + C + D E := B + C + F T1 := B + C A := T1 + D E := T1 + F Optimizador REPEAT B := 1 A := A – B UNTIL A = 0 B := 1 REPEAT A := A – B UNTIL A = 0 Optimizador Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

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, B LD BX, C ADD AX, BX ST AX, A Generador de código intermedio Generador de código objeto A := B + C Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

Tabla de Simbolos Almacena estructuras de datos Operaciones Variables Constantes Etiquetas Tipos Valores Signatura de funciones Operaciones Insertar símbolo Consultar símbolo Borrar símbolo Elizabeth Reinoso: edrreinoso@fi.unju.edu.ar

Gestión de Errores Detección de errores Recuperació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: edrreinoso@fi.unju.edu.ar

[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.