ESCUELA:SUPERIOR DE FISICA Y MATEMATICAS CARRERA: LIC. EN FISICA Y MATEMATICAS ESPECIALIDAD: MATEMATICAS COORDINACION:ACADEMIA DE MATEMATICAS APLICADAS DEPARTAMENTO:MATEMATICAS FUNDAMENTACION DE LA ASIGNATURA
La materia est orientada al campo de la computacin y est estructurada de tal manera que permite darle dos enfoques importantes: Uno el de preparar o ms bien dicho el de contribuir de forma significativa en la preparacin del alumno, para que ste quede en posibilidades, si as lo desea, de realizar un posgrado en el rea de ciencias de la computacin pues se le proporcionan elementos tericos suficientes para ingresar a un programa de posgrado en el rea citada. El otro enfoque es en cuanto a su desempeo profesional, esto es, si el egresado de la carrera se dedica al campo de la computacin o sistemas en el sector pblico o privado, el curso de Arquitectura de una computadora le proporciona herramientas de gran alcance para la generacin de aplicaciones, pues se puede notar desde hace tiempo, la tendencia de generar aplicaciones mediante la fusin de algoritmos eficientes, un pequeo lenguaje o pseudo-lenguaje y un ambiente grfico, es aqu donde el diseo e implementacin de un compilador (que trabaje fundamentalmente mediante la traduccin dirigida por la sintaxis) soluciona el problema del desarrollo del pseudo-lenguaje que usar la aplicacin. OBJETIVO DE LA ASIGNATURA El objetivo gral. del curso es que el alumno maneje y comprenda cada una de las etapas de la compilacin, y que sea capaz de implementar un compilador usando generadores automticos de analizadores lxicos y analizadores sintcticos.
ASIGNATURA: ARQ. DE UNA COMPUTADORA CLAVE: 0816 SEMESTRE: 8o. CREDITOS: 9 VIGENTE: 1994/95 TIPO DE ASIGNATURA: OBLIGATORIA MODALIDAD: ESCOLARIZADO
TIEMPOS TOTALES ASIGNADOS: HRS./SEMESTRE 85.5 HRS/SEMANA 4.5 HRS./TEORIA/SEMESTRE 85.5 HRS./PRACTICA/SEMESTRE ASIGNATURA
PROGRAMA ELABORADO O ACTUALIZADO POR: ACADEMIA DE MAT. APLICADAS REVISADO POR: DEPTO. DE MAT. APROBADO POR: C.T.C.
FUNDAMENTACION
Tambin es necesario mencionar que un conocimiento firme sobre analizadores lxicos, expresiones regulares y gramticas libres de contexto (por ejemplo), sirven de gua (podemos decir que proporcionan una metodologa) para la construccin e implementacin en algn lenguaje de alto nivel, de algoritmos que solucionen un problema determinado. En cuanto a la relacin que existe con otros cursos de carrera, bien se puede decir que Arquitectura de una computadora viene a complementar los cursos de programacin I, II y fundamentos de computacin, pues es aqu donde se termina de preparar al alumno en cuanto a diseo, organizacin y optimizacin de programas, as como el de mostrar (con el diseo prctico de un compilador) como las teoras matemticas (gramticas y atmatas finitos determinsticos por mencionar algunas) son la base fundamental para dedicarse a la investigacin en el campo de ciencias de la computacin. A continuacin se presenta un programa general del curso: - Introduccin a los compiladores. - Autmatas finitos y expresiones regulares. - Anlisis lxico. - Gramticas libres de contexto. - Anlisis sintctico.
ASIGNATURA No.UNIDAD I
Introducir el tema de la compilacin describiendo los componentes de un compilador, el entorno en el que trabajan los compiladores y algunas herramientas de software que facilitan la construccin de compiladores.
# DE TEMA
TEMAS
INSTRUMENTACION DIDACTICA
H/T
H/P
E C.
CLAVE B.
1 2
Herramientas compiladores.
para
construccin
de
Se sientan las bases tericas necesarias para el desarrollo de la unidad. Se explican esquemticamente las etapas de compilacin, se da una explicacin general (sin profundizar demasiado) sobre cada etapa, y se proporciona al alumno un programa en C operativo que traduce expresiones infijas a la forma postfija par que observe como trabaja cada etapa el compilador. Se explica de forma global el uso y funcionamiento de generadores automticos de analizadores lxicos y sintcticos. Se le dar al alumno una lista de ejercicios de programacin relativa a los conocimientos bsicos que debe poseer.
0.5 1.0
A A
1.5
K, T
ASIGNATURA No.UNIDAD II
Conocer y manejar los autmatas finitos (determinsticos y no determinsticos), conocer la equivalencia entre unos y otros. Conocer las expresiones regulares y su equivalencia con los autmatas finitos (Teorema de Kleene). Manejar las equivalencias entre expresiones regulares y autmatas finitos (AF).
# DE TEMA
1 2 3
TEMAS
Definiciones bsicas. Definicin de un Autmata finito determinstico (AFD). Comportamiento de un AFD.
INSTRUMENTACION DIDACTICA
Se usa el mtodo de exposicin para establecer las definiciones bsicas. El alumno resolver problemas sobre AFD individual y colectivamente, y en clases preestalecidas expondr problemas resueltos. Mediante problemas el alumno convertir AFD en AFN y recprocamente. El alumno resolver listas de ejercicios sobre expresiones regulares. Mediante listas de ejercicios el alumno convertir expresiones regulares en AF y recprocamente, adems resolver problemas con expresiones regulares o con AF segn le convenga ya que se habr probado la equivalencia entre unos y otros.
H/T
1.0 1.0 4.0
H/P
E C.
CLAVE B.
A,H,M A,H,M A,H,M
4 5 6 7 8
Autmatas finitos no determinsticos (AFN). Equivalencia entre AFD y AFN. Conjuntos regulares. Expresiones regulares. Teorema de Kleene.
Se requiere que el alumno sea capaz de: (i) Programar un analizador lxico haciendo una traduccin de diagramas de componentes lxicos. (ii) Desarrollar un analizador lxico usando un generador automtico de analizadores lxicos llamado LEX.
# DE TEMA
TEMAS
INSTRUMENTACION DIDACTICA
H/T
H/P
E C.
CLAVE B.
El profesor expondr las razones para dividir la fase de anlisis de la compilacin en anlisis lxico y anlisis sintctico, y explicar el funcionamiento del analizador lxico. El profesor establecer que se entiende por entidad lxica y relacionar las expresiones regulares con el reconocimiento de entidades lxicas. El profesor ensear la manera de construir AF o expresiones regulares (Un AF es la manera formal de llamar a un diagrama de componentes lxicos) para reconocer entidades lxicas. El alumno elaborar AF o expresiones regulares para reconocer componentes lxicos de algn lenguaje de alto nivel (solamente algunos componentes lxicos de lenguaje C, Pascal o Fortran por ejemplo, que el profesor elegir de acuerdo a su criterio), y programar cada uno de ellos.
A,H
A,H
A,H
ASIGNATURA # TEMA
INSTRUMENTACION DIDACTICAS
El profesor ensear a programar en LEX y el alumno crear un programa LEX para reconocer los componentes lxicos que se hayan especificados en el tema 3, de aqu observar las facilidades y dificultades que presenta cada tcnica.
A,H,K,T
ASIGNATURA No.UNIDAD IV
# DE TEMA
TEMAS
INSTRUMENTACION DIDACTICA
H/T
H/P
E C.
CLAVE B.
1 2
Mediante la exposicin el profesor establecer la teora necesaria para que el alumno comprenda lo que es un gramtica y el caso particular de una GLC. Mediante ejemplos el profesor establecer las ventajas y desventajas en el uso de gramticas ambiguas para la parte del anlisis sintctico. Se le proporcionar al alumno un GLC que especifica una parte bsica del lenguaje C, para que con ayuda del profesor analice el uso y funcionamiento de dicha gramtica.
3 3.5
A,H A,H
A,H
Gramticas ambiguas.
4.5
A,H
ASIGNATURA No.UNIDAD V
Que el alumno desarrolle un analizador sintactico usando un generador automtico de analizadores sintcticos llamado YACC.
# DE TEMA
1
TEMAS
La funcin del anlisis sintctico.
INSTRUMENTACION DIDACTICA
El profesor expondr la funcin del analizador sintctico, estableciendo su relacin con el analizador lxico. El profesor expondr cada tipo de analizador sintctico y dar ejemplos (no complicados) del funcionamiento de cada uno. El alumno simular "a mano"y mediante un ejemplo concreto, el funcionamiento de cada tipo de analizador. El profesor ensear la forma de programar con YACC para generar analizadores sintcticos. El alumno desarrollar un analizador sintctico como base para su trabajo final, que consistir en la implementacin de un pequeo lenguaje de programacin o pseudo-lenguaje.
H/T
3
H/P
E C.
CLAVE B.
A,H
2 3 4 5
Analizadores descendentes. Analizadores ascendentes. Analizadores de operadores de precedencia. Analizadores tipo LR(SLR, LR(0), LR(1), LALR(1)). YACC. Generador automtico analizadores sintcticos. de
3 3 4 4.5
A,H,K,T
ASIGNATURA: PERIOD O
CLAVE 0816
HOJA 9 DE 9
UNIDADES TEMATICA S
I II, III
El alumno resolver una lista de ejercicios bsicos de programacin [en lenguaje C] y programar algn problema sobre manejo dinmico de memoria y en un plazo no mayor de 15 das. El alumno programar [en lenguaje C o TP] un analizador lxico y generar con LEX el mismo analizador lxico. Adems realizar una prueba escrita sobre expresiones regulares y autmatas finitos. Con ayuda de YACC el alumno generar un pseudo-lenguaje, segn indicaciones del profesor.
IV, V
CLAVE
A H M T K
B
x x
BIBLIOGRAFIA
A. V. Aho, R. Sethi y J. D. Ullman. Compiladores, Principios, tcnicas y herrameintas. Addison-Wesley Iberoamericana. 820 pgs. Hopcroft, J. E. y Ullman, J. D. Introduction to Automata Theory, Languages and Computation. Addsion-Wesley, Reading Massachusetts, 1979.
x x x
Martin D. Davis y Elaine J. Weyuker. Computability, complexity and Languages. Academic Press. Tenenbaum, Langsam, Augestein. Estructuras de datos en C. Addison-Wesley. Kernighan and Ritchie. El lenguaje de programacin C. Prentice-Hall. 1993.