Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta

Slides:



Advertisements
Presentaciones similares
Clasificación de los compiladores
Advertisements

Compiladores e intérpretes
¿Qué es Sofware? Son el conjunto de instrucciones que dirigen las actividades del Hardware Consiste en programas, módulos de soporte y archivos de datos,
Prof. Ing.Maria Rosa Damaso Rios
Gramáticas Libres de Contexto
¿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.
TEMA 3 Parte A Lenguajes de programación. Criterios de clasificación según su nivel de abstracción según la forma de ejecución según el paradigma de programación.
INSTITUTO TECNOLOGICO DE APIZACO Integrantes del equipo: José Luis Cocoletzi López Edgar Lozano Velázquez TEMA: Lenguaje Ensamblador.
¿Qué son Los Lenguajes de Programación?
Facultad de Ciencias de la Computación
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa.
Fundamentos de programación
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
SOFTWARE DE PROGRAMACIÓN
Lenguajes de programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Lenguajes de programación
Unidad 1. Introducción al proceso de compilación.
Teoría de lenguajes y compiladores
Procesadores de Lenguajes I
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación 1 Introducción
Introducción a la programación
Programas Son una serie o secuencia de instrucciones entendibles por los ordenadores que permiten la realización de las acciones o tareas para las que.
Lenguajes de programación
Introducción al Software
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, LENGUAJES Y TECNICAS DE PROGRAMACION
TRADUCTOR DE UN PROGRAMA
Paradigmas de Programación
CONDICIONES DE LA MATERIA
M.C. Meliza Contreras González
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
FUNDAMENTOS DE PROGRAMACION
Resumen de Compilación Preparado por Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Traducido por Christian Torres Universidad Ricardo.
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
 Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas.
1.4 Traductor y Su estructura
Procesadores de Lenguajes
Lenguaje de Programación II
PROGRAMACIÓNPROGRAMACIÓN FCC-BUAP. 1. INTRODUCCIÓN A LA PROGRAMACIÓN.
M.C. Juan Carlos Olivares Rojas
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
COMPILADORES DIANA ROCIO OLAYA MESA.
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
INFORMATICA VII (Programación e implementación de sistemas)
LENGUAJES DE PROGRAMACION
Unidad 1. Introducción a los Compiladores.
Tipo de Errores.
Lenguajes de Programación
Compiladores Ingeniería en Computación M. en C. J. Jesús Arellano Pimentel.
Teoría de lenguajes y compiladores
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
ESCUELA NORMAL “PROF. DARÍO RODRÍGUEZ CRUZ” Licenciatura en educación preescolar Alumnas: *Mayra * Monserrat * Idalia *Cinthia Curso: las TIC en la educación.
Prof. Flor Narciso Departamento de Computación
LENGUAJES DE PROGRAMACIÓN 8.1 BREVE HISTORIA. Traducción-Ejecución Bajo nivel o 1º Nivel Se dice que el código binario es de "bajo nivel" o "primer nivel"
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.
Lenguajes de Programación
Software.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
Curso: Programación I Grado: 4to. Bachillerato Prof. Gerardo Barrientos.
Programación de Sistemas
TEMA 4: MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
CENTRO UNIVERSITARIO UAEM TEXCOCO INGENIERÍA EN COMPUTACIÓN
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
Transcripción de la presentación:

Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Guadalajara rogelio.davila@itesm.mx

Introducción Compiladores, Interpretes y Ensambladores Def. Un traductor es un programa que toma un programa escrito en un lenguaje, llamado fuente, y genera un programa equivalente en otro lenguaje, llamado objeto. Cuando el lenguaje fuente es un lenguaje de alto nivel (JAVA, C, LISP, ...), y el lenguaje objeto es lenguaje de máquina (unos y ceros), al traductor se le denomina compilador. Programa fuente Programa objetivo Traductor Errores

Introducción Ejercicio: Def. Un interprete es un programa que acepta un programa escrito en lenguaje fuente y lo ejecuta. Ej. PROLOG, SQL, etc. NOTA: Un interprete NO produce código en lenguaje objeto, solo ejecuta el programa fuente mismo. Def. Un ensamblador es un programa que toma un programa escrito en lenguaje de ensamblador y lo traduce a lenguaje de máquina. Ejercicio: compilador vs. Intérprete - ventajas y desventajas.

Introducción Lenguajes de programación Lenguajes de máquina Las instrucciones consisten en cadenas de unos y ceros. Cada lenguaje es particular a su procesador . Lenguajes de ensamblador Consisten en instrucciones básicas, ej. LDA 5 -- carga un 5 al registro ‘A’ del procesador En la mayoría de los casos, sus instrucciones están en relación uno-a-uno con el lenguaje de máquina. Se utilizan en programación de interfaces a dispositivos periféricos.

Introducción Lenguajes de alto nivel Manejan bloques Contienen estructuras de control: if-then-else, do-while, repeat-until, etc. Introducen recursividad Manejan tipos Existen distintos modelos de lenguajes de alto nivel Imperativos: C, Pascal, Fortran Orientados a objetos: Java, C++ Funcionales: LISP, ML Programación Lógica: Prolog

Introducción ¿Porque tantos lenguajes de programación? Un lenguaje nuevo normalmente cubre huecos que lenguajes previos no cubrían. Un nuevo lenguaje favorece la realización de tareas antes consideradas difíciles.

Introducción Distintos dominios de aplicación requieren habilidades diferentes: Aplicaciones comerciales: generación de reportes. Aplicaciones científicas: gran precisión matemática. Programación del sistema: acceso a instrucciones de bajo nivel. Aplicaciones de Inteligencia Artificial: manipulación simbólica Lenguajes de propósito específico.

Introducción ¿Porqué sirve saber sobre compiladores?: Mejora el entendimiento acerca del funcionamiento del computador. Apoya la generación de software de alto nivel. Ayuda a aprender nuevos lenguajes de programación. Incrementa la capacidad del estudiante para imaginar lenguajes de más alto nivel.

Introducción El proceso de traducción Análisis Síntesis Programa en lenguaje fuente Se genera una representación abstracta del programa que captura su significado. Análisis Programa en lenguaje objetivo A partir de la representación abstracta se genera la versión en el lenguaje objetivo. Síntesis

Introducción Etapas de la compilación Análisis Síntesis Programa en lenguaje fuente Errores Errores Análisis Analizador Lexicográfico Analizador Lexicográfico Analizador Sintáctico Analizador Sintáctico Analizador Semántico Analizador Semántico Tabla de Símbolos Tabla de Símbolos Arbol Sintáctico Arbol Sintáctico Generador de código Optimizador de código Generador de código intermedio Codigo objeto optimizado Código objeto Arbol sintáctico abstracto Programa en lenguaje objetivo Síntesis

Introducción Analizador Lexicográfico (Scanner) Toma el programa escrito en código fuente y lo divide en símbolos (tokens), generando la llamada tabla de símbolos (token table). 1 Ej. Cadena de símbolos: posición : = inicial + relación*60 Tabla de símbolos: Símbolo Tipo Nombre ‘posición’ identificador id1 ‘: =‘ operador : = ‘inicial’ identificador id2 ‘+’ operador + ‘relación’ identificador id3 ‘*’ operador * ‘60’ constante 60 _______________________ 1Ejemplo tomado de [ASU., 86]

Introducción Analizador Sintáctico (Parser) Toma la tabla de símbolos y mediante el uso de una gramática, recupera la estructura sintáctica de la oración. Utilizando la siguiente gramática para analizar la oración en el ejemplo: <exp> = <const> <exp> = <ident> <exp> = <ident> : = <exp> <exp> = <exp> * <exp> <exp> = <exp> + <exp>

Introducción El analizador genera el árbol sintáctico (parsing tree): <exp> <exp> <exp> <exp> <exp> <exp> <ident> <ident> <ident> <const> id1 : = id2 + id3 * 60

Introducción Analizador semántico Ej. checa el programa fuente para detectar posibles errores semánticos y verifica la compatibilidad de tipos. Ej. En la subexpresión ‘id3 * 60’ el simbolo de la multiplicación se aplica a un real y a un entero. Para que la operación sea uniforme la expresión se transforma en: id3 * inttoreal(60)

Introducción Introducción Generación de código intermedio Esta etapa es el inicio del proceso de síntesis de la expresión y genera una representación intermedia explicita del programa. Esta representación debe tener dos propiedades: Debe ser fácil de producir Debe ser fácil de traducir al lenguaje objetivo Ej. temp1 : = inttoreal(60) temp2 : = id3 * temp1 temp3 : = id2 + temp2 id1 : = temp3

Introducción Optimizador de código Generación de código El código generado en la etapa anterior se optimiza para su ejecución de manera más eficiente: temp1 : = id3 * 60.0 id1 : = id2 + temp1 Generación de código La versión final del codigo es generada a partir del código optimizado: MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1

Introducción Aplicaciones de las metodologías de traductores Lenguajes de interrogación a bases de datos: ej. SQL Traductores a formato html Generadores de reportes Procesamiento de macros: permiten extender el lenguaje mediante el uso de abreviaciones para construcciones mayores. Extensiones a lenguajes: ej. El SQL incluido en C o Java.

Introducción Herramientas de apoyo a la construcción de traductores Generadores de análisis lexicográfico LEX Generadores dc análisis sintáctico YYAC

Bibliografía [ASU, 86] Aho A. V., Sethi R., Ullman J. D., “COMPILERS, Principles, Techniques and Tools,” Addison-Wesley publishers, 1986.