![]()
Material Opcional de preparación para los ECAES |
|
|
Temas que se evalúan en el ECAES SUBÁREA: LENGUAJES FORMALES Y AUTÓMATAS
|
|
Bibliografía Adicional
|
Este curso difiere de aquellos cursos "normales" ya que no sólo se da un descripción teórica de los conceptos subyacentes en el funcionamiento y diseño de un compilador, sino que también usted tendrá la oportunidad de escribir un compilador para un subconjunto representativo de las principales características de los lenguajes de programación de alto nivel (y en español !!!). Este subconjunto está relacionado en el Apéndice B del Texto Guía. Por lo tanto, este curso incluirá una cantidad substancial de programación para ver en funcionamiento los conceptos teóricos, y por lo tanto debe poseer conocimientos suficientes en Pascal o C/C++.

![]() |
Debido a que existe muy poca literatura en español acerca
del tema de compiladores, se escribió el presente texto. El objetivo primordial del texto
es hacer accesibles, en un lenguaje claro, los conceptos elementales que permitirán al
estudiante construir un compilador en español. Este será similar al mostrado en los programas de muestra más abajo. En este texto se hallan contenidos cada uno de los temas ha ser discutidos en el aula de clase. Por lo tanto, la planeación de la materia corresponderá principalmente a la secuencia de temas reflejada en la tabla de contenido del libro. Obviamente, se harán las ampliaciones que ya están contempladas en el plan del curso. A continuación se puede tener acceso en línea al primer capítulo y el prólogo del libro, en formato pdf. En el prólogo se encuentra un vistazo general del contenido del libro. El libro tiene un costo de doce mil pesos ($12.000). En la actualidad, para adquirir el libro se debe dirigir para ello al autor del mismo. |
| PROLOGO | ix |
| 1. CONCEPTOS BASICOS | 1 |
| 1.1. Qué es un compilador | 3 |
| 1.2. Fases de un compilador | 3 |
| 1.3. Un ejemplo completo del proceso de compilación | 6 |
| 1.4. Temas relacionados | 13 |
| 2. ANALISIS LEXICO | 15 |
| 2.1. Implementación de un analizador léxico | 18 |
| 2.2. Manejo de buffers de entrada | 20 |
| 2.3. Diagramas de transiciones de estado | 23 |
| 2.4. Implementación de un diagrama de transiciones. | 26 |
| 2.5. Tablas de símbolos | 26 |
| 2.6. Temas relacionados | 30 |
| 3. ANALISIS SINTACTICO | 31 |
| 3.1. Gramáticas libres de contexto | 33 |
| 3.2. Diseño y construcción de un analizador sintáctico descendente | 39 |
| 3.3. Recursividad por la izquierda y el símbolo épsilon | 42 |
| 3.4. Análisis sintáctico predictivo no recursivo (tablas sintácticas) | 43 |
| 3.5. Cómo manejar los errores de compilación | 45 |
| 3.6. Traducción dirigida por sintaxis | 51 |
| 3.7. Temas relacionados | 55 |
| 4. ANALISIS SEMANTICO | 57 |
| 4.1. Temas relacionados | 61 |
| 5. GENERACION DE CODIGO INTERMEDIO | 63 |
| 5.1. Un ejemplo completo | 68 |
| 6. OPTIMIZACION Y GENERACION DE CODIGO | 71 |
| APENDICES | 77 |
| Apendice A: Evaluador de expresiones | 79 |
| Apendice B: Gramática propuesta para un compilador | 94 |
| REFERENCIAS | 97 |
Las fechas de examenes y talleres se definirán en clase.