Sie sind auf Seite 1von 11

4

INDICE GENERAL PROCESADORES DE LENGUAJE C odigo: 13048. Titulaci on: Ingenier a Inform atica Tipo: Troncal. Cr editos: 6 Teor a + 3 Pr acticas Curso: 4. Anual. A no: 2012-2013 Profesores: Elena D az, Ariadna Fuertes Departamento: Inform atica Objetivos: 1 Conocer los componentes, estructura de un traductor y modo de operaci on, los conceptos te oricos, estructuras de datos, algoritmos y t ecnicas sobre los que se basan su dise no e implementaci on. Desde la fase de an alisis con el an alisis l exico, sint actico y el sem antico a la fase de s ntesis con la generaci on y optimizaci on del c odigo, junto con la tabla de s mbolos y la detecci on de errores interactuando entre estas fases. 2 Conocer c omo se ha formado el area que estudia el dise no de traductores y en qu e otras se basa, especialmente su relaci on con la Teor a de Aut omatas y Lenguajes Formales y los Lenguajes de Programaci on. 3 Mostrar la utilidad de los conceptos y t ecnicas que se abordan en la asignatura, por un lado no s olo por su aplicabilidad en el proceso de traducci on, sino a cualquier problema que se pueda plantear en t erminos de una gram atica y su reconocimiento y por otro lado porque ayudar an a conocer mejor los problemas que se plantean en el dise no e implementaci on de los lenguajes de programaci on y por tanto a hacer un mejor uso del lenguaje. 4 Conocer algunas de las herramientas que facilitan la generaci on de traductores, tanto de analizadores l exicos y sint acticos como para la generaci on de c odigo. actica los conceptos y t ecnicas implementado en el labora5 Poner en pr torio un traductor de un sencillo pero representativo lenguaje de programaci on, de manera que tengan la oportunidad de aplicar las t ecnicas aprendidas en cursos anteriores, de escribir un programa de cierta complejidad en equipo, lo que requiere que se mantenga el software.

Prerrequisitos: La asignatura supone conocimientos previos sobre Teor a de Aut omatas y Lenguajes Formales y Estructuras de Datos, as como del lenguaje de programaci on C/C++. Temario: Tema 1. Introducci on.(4 horas)

INDICE GENERAL 1 Qu e es un traductor?. Tipos de traductores. 2 Programas del sistema relacionados con los traductores. 3 Fases del proceso de traducci on. 4 Mil lenguajes y mil m aquinas, un mill on de traductores?: 4.1 Front-end y Back-end. Traducci on cruzada. 4.2 Bootstraping. 5 Principales estructuras de datos en un traductor. 6 Herramientas de ayuda a la traducci on. 7 Relaci on con otras areas. 8 Aplicaciones de los sistemas de traducci on. Tema 2. An alisis L exico. (5 horas) 1 Funciones del analizador l exico. 2 Especicaci on de los componentes l exicos: expresiones regulares. 3 Reconocimiento de los componentes l exicos: aut omatas nitos. 4 Implementaci on de un analizador l exico: 4.1 Dirigido por tabla. 4.2 Mediante bucles anidados. acticos en la implementaci on de un an alisis l exico: 5 Aspectos pr 5.1 5.2 5.3 5.4 Representaci on de los componentes l exicos. Principio de m axima longitud. Palabras reservadas versus identicadores. Gesti on del buer de entrada.

6 Errores l exicos y su tratamiento. 7 Generadores autom aticos de analizadores l exicos: Lex. Tema 3. Introducci on al An alisis Sint actico.(5 horas) alisis sint actico. 1 El proceso de an 2 Especicaci on sint actica de los lenguajes de programaci on: 2.1 Gram aticas independientes del contexto versus expresiones regulares. 2.2 Gram aticas independientes del contexto versus gram aticas dependientes del contexto. 3 Gram aticas limpias y bien formadas. 4 Derivaciones y arboles sint acticos. 5 El problema de la ambig uedad en las gram aticas. Eliminaci on:

6 5.1 Mediante reglas de precedencia. 5.2 Mediante transformaci on. 6 Clasicaci on de los m etodos de an alisis sint actico.

INDICE GENERAL

Tema 4. An alisis Sint actico Descendente. (8 horas) 1 An alisis descendente: el aut omata predice/concuerda. 2 Problemas en el an alisis descendente: 2.1 Recursividad a izquierdas y su eliminaci on. 2.2 Indeterminismo en las alternativas. Factorizaci on. aticas LL(1): 3 Gram 3.1 Los conjuntos de PRIMEROS y SIGUIENTES. 3.2 La condici on LL(1). 4 Analizador sint actico predictivo recursivo. 5 Analizador sint actico predictivo dirigido por tabla. on de errores en los analizadores descendentes: 6 Recuperaci 6.1 Los conjuntos de predicci on y sincronizaci on. 6.2 Recuperaci on en modo de p anico. 7 Limitaciones de los m etodos descendentes. Tema 5. An alisis Sint actico Ascendente. (9 horas) 1 An alisis ascendente: el aut omata desplaza/reduce. 2 Gram aticas LR: 2.1 2.2 2.3 2.4 Tipos de conictos: desplaza/reduce y reduce/reduce. Prejo viable y mango de una forma secuencial derecha. Elemento LR(0). Aut omata nito de elementos LR(0).

3 An alisis LR(0): 3.1 Algoritmo de an alisis LR(0). 3.2 Tablas de an alisis sint actico LR(0). alisis LR(0). 3.3 Limitaciones del an 4 An alisis SLR(1): 4.1 Algoritmo de an alisis SLR(1). 4.2 Resoluci on de conictos por precedencia de operadores. 4.3 Limitaciones del an alisis SLR(1). 5 An alisis LR(1) y LALR(1):

INDICE GENERAL 5.1 5.2 5.3 5.4 Elemento LR(1). Aut omata nito de elementos LR(1) Algoritmo de an alisis LR(1). Agrupaci on de estados: an alisis LALR(1).

6 Generadores de analizadores sint acticos LALR(1): Yacc 7 Recuperaci on de errores en los analizadores ascendentes etodos ascendentes versus m etodos descendentes. 8 M Tema 6. An alisis Sem antico.(11 horas) 1 La fase de an alisis sem antico. 2 Especicaci on sem antica de un lenguaje: 2.1 2.2 2.3 2.4 Concepto de atributo, tipos de atributos y tipos de enlace. Gram aticas de atributos. Ecuaciones de atributos. Arbol de an alisis sint actico anotado.

3 M etodos para la evaluaci on de atributos: 3.1 Basados en grafos de dependencias. 3.2 Basados en reglas: atributos sintetizados y heredados. alculo de atributos durante el proceso de an alisis sint actico. 3.3 C 4 La Tabla de S mbolos: 4.1 Organizaci on y mantenimiento de la Tabla de S mbolos. 4.2 Reglas de ambito de referencia. on de tipos: 5 Comprobaci 5.1 Representaci on de expresiones de tipos mediante arboles. 5.2 Equivalencia estructural y por nombre. 6 Inferencia de tipos. 7 Errores sem anticos. 8 Esquemas de traducci on dirigidos por la sintaxis. Tema 7. Entorno de ejecuci on.(6 horas) 1 Aspectos del lenguaje fuente que determinan el entorno de ejecuci on. on de la memoria durante la ejecuci on. 2 Organizaci 3 Registros de activaci on. 4 Tipos de entornos de ejecuci on: aticos. 4.1 Entornos est 4.2 Entornos basados en pila.

8 4.3 Entornos basados en un mont culo.

INDICE GENERAL

5 T ecnicas para la asignaci on din amica de la memoria: 5.1 Asignaci on expl cita de bloques de tama no jo y variable. 5.2 Desasignaci on: las referencias suspendidas y la recolecci on de basura. 6 La gesti on del ambito de los identicadores: 6.1 Acceso a nombres no locales. 6.2 El anidamiento de las funciones. 7 El paso de par ametros. Tema 8. Generaci on de C odigo Intermedio y Optimizaci on. (12 horas) 1 Introducci on. 2 Tipos de representaciones intermedias: 2.1 C odigo de 3-direcciones. odigo-P. 2.2 C 3 Traducci on dirigida por la sintaxis a c odigo intermedio: 3.1 C odigo intermedio como un atributo sintetizado. 4 C odigo intermedio para referenciar estructuras de datos. 5 Generaci on de c odigo para expresiones y sentencias de control: 5.1 5.2 5.3 5.4 5.5 Proposiciones de asignaci on. Expresiones aritm eticas. Expresiones booleanas. Sentencias de control. Funciones.

6 Optimizaci on de c odigo: 6.1 6.2 6.3 6.4 6.5 6.6 Bloques b asicos y optimizaci on local. Eliminaci on de subexpresiones comunes. Eliminaci on de c odigo muerto. Transformaciones aritm eticas. Empaquetamiento de variables temporales. Mejoras en lazos.

Bibliograf a:

INDICE GENERAL

Aho, A.V., Sethi, R., Ullman, J.D. (1990) Compiladores: principios, t ecnicas y herramientas (Addison-Wesley Iberoamericana, Madrid, ISBN: 0-201-62903-8, 1990), traducci on castellana de Compilers: Principles, Techniques and Tools (Addison-Wesley, Reading, Massachusetts, 1986). Copias: 3, castellano, 2 en ingl es Lugar: Bibiloteca Campus Signatura: 681.3.06 AHO El famoso libro del drag on de A. Aho y J. Ullman. Este texto ha marcado la docencia sobre compiladores desde su primera edici on a mitad de los 80. Esta versi on revisada y actualizada aborda de una forma detallada el dise no e implementaci on de compiladores, los conceptos te oricos y t ecnicas sobre los que se basa la traducci on desde un punto de vista formal y pr actico. El texto comienza con una introducci on de las ideas que subyacen en el proceso de la compilaci on y posteriormente ilustra estas ideas construyendo un compilador de una pasada. El resto del libro ampl a los conceptos presentados en los dos primeros cap tulos y trata temas avanzados como el an alisis sint actico, la traducci on dirigida por la sintaxis, la vericaci on de tipos, la organizaci on del entorno de ejecuci on y la generaci on y optimizaci on de c odigo. Incluye una amplia variedad de problemas y ejercicios con un nivel gradual de dicultad. Todos los contenidos de la materia reciben un tratamiento completo y apropiado. La exposici on de la materia en el aula sigue en muchos casos sus algoritmos y notaciones elmente. Si bien, a veces la poco acertada traducci on a castellano de algunos de los t erminos, el excesivo detalle y formalismo en que se presentan los contenidos hace que su lectura no sea clara e incluso a veces en algunas secciones un tanto aburrida. Louden, K.C. (1997) Compiler Construction: Principles and Practice (PWS Publishing Company, Boston, Massachusetts, ISBN: 0-534-93972-4, 1997). Copias: 2, ingl es Lugar: Biblioteca Campus Signatura: 681.3.06 LOU Este libro combina de forma proporcionada y muy amena un estudio detallado de los aspectos te oricos y pr acticos subyacentes en el dise no moderno de compiladores, junto con ejemplos pr acticos muy bien escogidos. Tal y como dicen sus autores, para entender los aspectos pr acticos de un compilador, uno necesita tener un buen conocimiento de la teor a, y realmente para apreciar la teor a, es importante verla en acci on en un entorno real o cas real. Con su libro estos autores han conseguido proporcionar el apropiado balance entre teor a y pr actica, con suciente detalle, incluso a nivel de implementaci on, para dar al lector una completa idea de las

10

INDICE GENERAL t ecnicas sin abrumarlo. Adem as, incluye gran n umero de ejercicios sobre problemas espec cos de los lenguajes de programaci on y una descripci on completa, junto con el c odigo C, de un peque no pero completo compilador para un sencillo lenguaje, generado con las t ecnicas presentadas en cada cap tulo. Este libro recoge de una forma completa y con suciente nivel de detalle, pero sin extenderse tanto como el texto de Aho y Ullman, todos los contenidos del temario. Todo el libro est a muy bien escrito y se lee con mucha facilidad. Son especialmente claros y concisos los cap tulos en los que se describen la implementaci on de de analizadores LR, la generaci on de c odigo intermedio y la compilaci on de funciones y el tratamiento de tipos. Es un libro muy valioso para completar o contrastar apuntes.

Vivancos, E., Moreno, L., Gisbert, V y Bened , J.M. (2000) Compiladores I: una introducci on a la fase de an alisis (Servicio de Publicaciones de la Universidad Polit ecnica de Valencia, ISBN: 84-7721-915-X, 2000). Copias: 3 (pedidas) Lugar: Bibiloteca Campus Signatura: 681.3.06 VIV Este libro proporciona una adecuada y proporcionada gu a de inicio a las t ecnicas de dise no e implementaci on de traductores, pero que tan s olo se centra en la fase de an alisis: an alisis l exico, sint actico y sem antico. La forma de exposici on es clara y concisa. Es especialmente v alido por el tratamiento a los m etodos de an alisis sint actico LL y LR, por la extensa y diversa serie de ejercicios resueltos y propuestos (con soluciones incluidas) y por un ap endice donde se describen con cierto detalle las herramientas autom aticas de generadores de analizadores (Lex y Yacc). Su principal limitaci on es que apenas trata la vericaci on de tipos, los esquemas de traducci on dirigidos por la sintaxis, la organizaci on y gesti on de la Tabla de S mbolos, y no se abordan los temas relacionados con la fase de s ntesis (la generaci on y optimizaci on de c odigo) ni el entorno de ejecuci on. A pesar de ello, es un libro a tener en cuenta. I nesta, J.M., Garc a, P. y Gracia, I. (1998) T ecnicas b asicas para el dise no de compiladores (Servicio de Publicaciones de la Universitat Jaume I, ISBN: 84-8021-259-4, 1998). Copias: 1 Lugar: Bibiloteca Campus Signatura: 681.3.06 INE Este es un texto que a modo de apuntes recoge de forma clara y concisa una introducci on a las t ecnicas de dise no de compiladores en cuanto a la fase de an alisis se reere. Con un estilo directo se

INDICE GENERAL abordan las ideas subyacentes en la especicaci on y reconocimiento de la estructura l exica y sint actica de un lenguaje. Es un libro u til por su f acil lectura y la capacidad de esquematizar y sintetizar en apenas 90 p aginas los conceptos y t ecnicas relevantes. Si bien debe ser complementado con alguno de los textos b asicos expuestos anteriormente, ya que no se tratan los temas relacionados con la fase de s ntesis de c odigo, ni algunos aspectos sem anticos claves como la vericaci on de tipos. Cabe resaltar la colecci on de ejercicios resueltos y propuestos por su extensi on, variedad y originalidad.

11

Bennet, J.B.(1996) Introduction to Compiling Techniques: a rst course using ansi C, Lex and Yacc (McGraw-Hill Publishing Company, England, ISBN: 007709221X, 1996). Copias: 2 en ingl es Lugar: Bibiloteca Campus Signatura: 681.3.06 BEN Este texto aborda los conceptos relacionados con la construcci on de compiladores especialmente desde un punto de vista pr actico, con un estilo directo y simple. Destaca por los detalles a nivel de implementaci on que le hacen ser especialmente u til para la parte de laboratorio. En el se tratan no s olo los temas relacionados con el an alisis l exico, sint actico y sem antico, sino tambi en con la implementaci on de t ecnicas de recuperaci on de errores, la comprobaci on de tipos, la generaci on de c odigo y las t ecnicas de optimizaci on local, todo ello ilustrado sobre la implementaci on de un peque no traductor de un sencillo lenguaje de alto nivel a lenguaje ensamblador para una m aquina abstracta con un conjunto reducido de instrucciones, registros y de direccionamiento. Dedica un cap tulo especial a describir las herramientas Lex y Yacc para la generaci on de analizadores. Teufel, B., Schmidt, S., Teufel, T. (1995) Compiladores: conceptos fundamentales (Addison-Wesley Iberoamericana, Wilmington, Delaware, ISBN: 0-201-65365-6, 1995). Copias: 1 Lugar: Bibiloteca Departamento Libro muy recomendable como una introducci on bastante concisa, pues en 179 p aginas en castellano se tocan todos los aspectos necesarios para comprender de qu e manera operan los sistemas de traducci on. Por contra, es pobre en ejemplos y el c odigo en metalenguaje que se ofrece no siempre es afortunado. No se trata con el detalle necesario la generaci on de c odigo y se pasan por alto la recuperaci on de errores, la optimizaci on y el entorno de ejecuci on.

12

INDICE GENERAL

Pratt, T.W. (1998) Lenguajes de Programaci on. Dise no e Implementaci on (Prentice-Hall Hispanoamericana, ISBN: 0-13-678012-1, 1998). Copias: 1 Lugar: Bibiloteca Campus Signatura: 681.3.06 PRA Tercera edici on del libro Programming Languages. Design and Implementation de 1984. Es un libro sobre lenguajes de programaci on en el que algunos conceptos propios de la traducci on se abordan en 60 p aginas en el cap tulo tercero. Es u til como referencia a los aspectos de los lenguajes de programaci on que van a dictar la complejidad del traductor: tipos de datos y de declaraciones, estructuraci on, control de secuencia y de subprogramas, recursividad, herencia, encapsulamiento, paso de par ametros, etc. Adem as de repasar los distintos paradigmas. Especialmente v alido para el tema dedicado al entorno de ejecuci on donde se trata la organizaci on y gesti on de la memoria. Kelley, D. (1995) Teor a de Aut omatas y Lenguajes Formales (Prentice Hall International, UK, ISBN: 0-13-518705-2, 1995). Copias: 2 Lugar: Bibiloteca Campus Signatura: 681.3.06 KEL Libro adecuado para corregir la deciencia en los aspectos relacionados con los conceptos formales sobre lenguajes y gram aticas que asumen muchos de los libros sobre construcci on de compiladores y que son necesarios para el desarrollo de la asignatura. En concreto, la construcci on de expresiones regulares a partir de una determinada especicaci on y de los aut omatas nitos deterministas para su reconocimiento, la especicaci on de aut omatas mediante diagramas y tablas de estado, la conversi on de aut omatas no-deterministas a deterministas y la minimizaci on del n umero de estados, las gram aticas independientes del contexto y los aut omatas a pila para su reconocimiento, la notaci on Backus-Naur-Form y su versi on extendida, los diagramas sint acticos para la denici on de una gram atica, las gram aticas limpias y bien formadas, los tipos de derivaciones de una sentencia, as como el problema de la ambig uedad en las gram aticas. Referencias avanzadas Muchnick, S. (1997) Advanced Compiler Design and Implementation (Morgan Kaufmann Publishers, San Francisco California, ISBN: 1-55860-320-41, 1997). Copias: 1 Lugar: Bibiloteca Departamento Signatura: 2209

INDICE GENERAL Este texto es de car acter claramente avanzado. En m as de sus 700 p aginas se abordan en profundidad los conceptos, t ecnicas y tendencias actuales en la construcci on de compiladores, dedicando especial atenci on a la fase de s ntesis de c odigo. En el se examina en detalle la implementaci on y gesti on de la Tabla de S mbolos locales y globales; el dise no e implementaci on del entorno de ejecuci on con los registros de activaci on, la construcci on y mantenimiento de la pila de ejecuci on de activaciones, los m etodos de paso de par ametros, la estructura de los procedimientos y los algoritmos para la recolecci on autom atica de basura y la compactaci on de la memoria; la generaci on autom atica de c odigo dirigida por la sintaxis y mediante correspondencia de arboles; las t ecnicas de optimizaci on global mediante m etodos de an alisis de ujo de control y de datos, as como las optimizaciones dependientes de la m aquina. Tambi en se discuten en detalle varios compiladores comerciales para diferentes lenguajes de alto nivel examinado su entorno de ejecuci on, el rango de las arquitecturas objeto, los aspectos de dise no, las representaciones de c odigo intermedio y las optimizaciones. En concreto de la familia de procesadores de Intel y la arquitectura Sparc de Sun.

13

Grune, D. y Jacobs, C. (1990) Parsing Techniques: a practical guide (Ellis Horwood Limited, England, ISBN: 0-13-651431-6, 1990). Copias: 1 Lugar: Bibiloteca Departamento Signatura: 0919 Texto especialmente dedicado a las t ecnicas de an alisis sint actico tanto descendentes como ascendentes, direccionales y no direccionales. Aunque con un car acter un tanto formal es f acil de leer y referencia clave para aspectos avanzados en este tema. Trata especialmente detallada cada uno de los tipos de an alisis, los tipos de gram aticas LL y LR, sus reconocedores y los problemas de ambig uedad. Incluye un cap tulo completo a las t ecnicas de recuperaci on de errores. Los ejemplos son escasos y no se incluyen ejercicios resueltos ni propuestos. Evaluaci on: Para evaluar la teor a se realizar an dos ex amenes. Un primer parcial (opcional) en febrero cuya materia ser a eliminatoria. Un segundo examen en junio donde se evaluar a s olo la segunda parte de la asignatura si se aprob o el primer parcial o toda la asignatura si se suspendi o el primer parcial. La nota nal ser a la media de ambos parciales. Se realizar an 10 sesiones pr acticas de 3 horas y se realizar a un examen. El 30 % de la nota vendr a dada por los trabajos

14

INDICE GENERAL

que se ir an realizando en cada sesi on de pr acticas y el 70 % restante ser a la nota obtenida en un examen de laboratorio de car acter obligatorio. La entrega de los trabajos de pr acticas es opcional. La asistencia a clase de laboratorio es obligatoria. Para realizar cualquier promedio es necesario obtener un m nimo de 4 en cualquier parte. En cuanto a septiembre, si se aprobaron las pr acticas de laboratorio en junio se guardar a la nota. Respecto a la teor a, no se guardar a la nota del primer parcial. Tutor as: Las tutor as ser an los martes de 11:30 a 2:30 y jueves de 11:30 a 2:30 en mi despacho (Bloque 1, Planta 3, Despacho 28, Dpto. de Inform atica, ETSE). Mi direcci on de correo electr onico Elena.Diaz@uv.es. P agina WEB:
http://informatica.uv.es/iiguia/PL/ http://www.uv.es/diazf

Das könnte Ihnen auch gefallen