You are on page 1of 4

COMPILADORES

CLAVE: 0817 SEMESTRE: (Optativa) CRDITOS: 10 0ORAS POR CLASE CLASES POR SEMANA 0ORAS POR SEMESTRE REA: CIENCIAS DE LA COMPUTACIN R !"i#it$#: L %&"a' # ( P)$&)a*a+i,% - #"# Pa)a(i&*a# T $).a ( /a C$*p"ta+i,% A)!"it +t")a ( C$*p"ta($)a# TERICA: 1 TERICA: 1 TERICA: 21 TERICO3PRCTICAS: 4 TERICO3PRCTICAS: 1 TERICO3PRCTICAS: 54

Objetivos generales: Este curso consiste de un estudio profundo de los principios y aspectos de diseo de los traductores de Lenguajes de Programacin. Se discuten los componentes principales de un compilador: anlisis lxico, anlisis sintctico, chequeo de tipos, generacin de cdigo y optimizacin. Se ven estrategias alternativas para el reconocimiento (descenso recursivo, reconocimiento descendente, predictivo, LR) y se comparan entre s respecto al uso eficiente de tiempo y espacio. Entre los subtemas se incluye la ambigedad, representacin de datos, recuperacin desde errores, diseo de tablas de smbolos, ligado, herramientas para la generacin de compiladores, compilacin incremental e intrpretes. Trabajo sugerido: Se deber contar con ejercicios de laboratorio que ayuden al estudiante a fijar y reforzar los conceptos, haciendo que diseen e implementen componentes de un compilador para un lenguaje pequeo pero representativo. Se debern implementar distintas estrategias de reconocimiento y comparar su eficiencia. El trabajo de laboratorio de este curso es adecuado para trabajo en equipo. Temario: I. Descripcin general de un compilador 4 horas Se describen las distintas organizaciones que puede presentar un compilador, desde la eleccin del lenguaje anfitrin hasta las etapas y fases de su implementacin. I.1 Introduccin. Los lenguajes fuente, objeto y anfitrin. I.2 Estructura lgica de un compilador. II. El analizador lexicogrfico 9 horas Se dan las principales caractersticas de esta etapa, as como las herramientas disponibles para implementarla. Se muestran los modelos matemticos correspondientes a esta etapa. II.1 Funciones principales. II.2 Implementacin del analizador lexicogrfico. II.3 Descripcin formal de los conjuntos de tomos. II.4 Utilizacin de las distintas notaciones para el analizador lxico. II.5 Implementacin de autmatas finitos. II.6 El problema de identificacin. ...

Anlisis Matemtico II

III.

Anlisis Sintctico 10 horas Los temas a tratar incluyen las caractersticas principales de esta etapa, su entrada y su salida y la manera como ella puede corresponder a la columna vertebral de todo el compilador. III.1 Gramticas libres del contexto. III.2 rboles de derivacin. III.3 Presentacin del reconocimiento ascendente. III.4 Presentacin del reconocimiento descendente. III.5 Descenso recursivo. Generacin de cdigo en descenso recursivo. III.6 Generacin de cdigo en gramticas LL(1).

IV. Reconocimiento desde abajo 6 horas Se muestran ejemplos de este tipo de reconocimiento que va desde el mtodo por precedencia de operadores hasta los que se sustentan en la simulacin de una mquina de stack. IV.1 Generalidades. IV.2 Precedencia de operadores. IV.3 Reconocimiento por tablas de precedencia simple. IV.4 Generacin de cdigo en reconocedores desde abajo.

V.

Reconocedores LR(k) 9 horas Se ve con detalle esta modalidad de reconocedores sintcticos, que es hoy en da la ms poderosa disponible. V.1 Generalidades. V.2 Las tablas para los reconocedores LR(k). V.3 Reconocedores LR(0). V.4 Reconocedores SLR(1). V.5 Construccin de tablas LR cannicas. V.6 Construccin de tablas LALR. V.7 Implementacin de reconocedores LR. V.8 Generacin de cdigo en gramticas LR(k).

VI. La tabla de smbolos 5 horas En esta seccin se estudian distintas organizaciones posibles para la tabla de smbolos, dependiendo de las caractersticas que tenga el lenguaje fuente a compilar y la mquina y el lenguaje anfitriones. VI.1 Introduccin. VI.2 Organizacin de la tabla de smbolos. VI.3 Informacin relevante en la tabla de smbolos. VI.4 Estructuras de datos para la tabla de smbolos. VI.5 Representacin del rango y vigencia en la tabla de smbolos. ...

Anlisis Numrico II

VII. Manejo de memoria durante ejecucin 4 horas Se ve en esta seccin el importantsimo tema de la administracin de la memoria durante la ejecucin del programa que nuestro compilador va a producir. Se cubren temas como la asignacin esttica, a travs de un stack, memoria dinmica y recoleccin de basura. VII.1 Manejo esttico de memoria. VII.2 Manejo dinmico de memoria: Recursividad. VII.3 Manejo dinmico de memoria: Asignacin durante ejecucin.

VIII. Generacin de cdigo intermedio 7 horas Se ven distintas notaciones para representar al cdigo intermedio, y que sea susceptible de ser optimizado. Se busca que estas representaciones tengan independencia de la mquina objeto en la cual el programa a traducirse va a ejecutarse. VIII.1 Acciones semnticas y traduccin dirigida por la sintaxis. VIII.2 Representaciones intermedias: rboles sintcticos; grficas dirigidas acclicas (dag's); notacin postfija; cdigo de tres direcciones; lenguajes intermedios. VIII.3 Traduccin con reconocimiento ascendente. VIII.4 Gramticas de atributos; atributos heredados y sintetizados. VIII.5 Acciones semnticas.

IX. Optimizacin 6 horas Se revisa en qu consiste la optimizacin de un programa y los distintos tipos de optimizacin que se pueden llevar a cabo. Se revisan las herramientas y metodologas existentes para llevar a cabo dicha optimizacin. IX.1 Optimizacin independiente de la mquina objeto. IX.2 Grficas dirigidas acclicas en optimizacin. IX.3 Anlisis de flujo de datos. IX.4 Optimizacin de ciclos. IX.5 Otro tipo de optimizaciones. IX.6 Optimizacin dependiente de la mquina objeto: registros e instrucciones.

Bibliografa: Bsica: Fischer, C. N.; Leblanc, R. J. Jr., Crafting A Compiler, The Benjamin/Cummings Publishing Company, Inc., 1988 Tremblay, J.P.; Sorenson, P. G., The Theory And Practice Of Compiler Writing, McGraw-Hill Book Company, 1985 Complementaria: Gough, K. J., Syntax Analysis and Software Tools, Addison-Wesley Publishing Company, 1988 Holub, A. I. , Compiler Design In C, Prentice-Hall Inc., 1990
Compiladores

...

Terry, P. D. , Programming Language Translation, A Practical Approach, AddisonWesley Publishing Company, 1986 Parsons, T. W., Introduction To Compiler Construction, Computer Science Press, W.H. Freeman and Company, 1992.

Computacin Simblica

...

You might also like