La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Guadalajara

Presentaciones similares


Presentación del tema: "Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Guadalajara"— Transcripción de la presentación:

1 Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Guadalajara

2 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. Traductor Programa objetivo Programa fuente Errores

3 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

4 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

5 –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

6 ¿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

7 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

8 ¿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

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

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

11 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ímboloTipoNombre posición identificadorid1 : =operador : = inicialidentificadorid2 +operador + relaciónidentificadorid3 *operador* 60constante60 _______________________ 1 Ejemplo tomado de [ASU., 86] Introducción

12 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: = = : = = * = + Introducción

13 id1 : = id2 + id3 * 60 El analizador genera el árbol sintáctico (parsing tree):

14 Analizador semántico –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

15 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

16 Optimizador 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 id 3, R2 MULF #60.0, R2 MOVF id 2, R1 ADDF R2, R1 MOVF R1, id 1

17 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

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

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


Descargar ppt "Cb00843 Traductores Rogelio Dávila Pérez Profesor Planta Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Guadalajara"

Presentaciones similares


Anuncios Google