Está en la página 1de 6

UNIVERSIDAD DEL NORTE

1. IDENTIFICACION

DIVISION ACADEMICA Ingeniería


DEPARTAMENTO Sistemas
PROGRAMA ACADEMICO Ingeniería de Sistemas
NOMBRE DEL CURSO Compiladores
COMPONENTE CURRICULAR AL QUE PERTENECE EL Formación Profesional.
CURSO (Básico, Básico Profesional, Profesional)
MATERIA O ÁREA DEL CONOCIMIENTO
CODIGO DEL CURSO IST7410
Nùmero de Registro del Curso (NRC) 3439
PRE-REQUISITO (Si lo hay) Especifique código del curso IST4031
IST2110
CO-REQUISITO (Si lo hay)Especifique código del curso ---
NUMERO DE CREDITOS SEMESTRALES 3
TIPO DE CRÉDITO Obligatorio
NÚMERO DE SEMANAS 16
INTENSIDAD HORARIA SEMANAL
 Número de horas teóricas semanales de trabajo con el 3
profesor
 Número de horas prácticas semanales de trabajo con el 0
profesor
 Número de horas semanales de trabajo independiente 9

NIVEL DEL CURSO Pregrado


NOMBRE DEL PROFESOR (PROFESORES) Ing. José Márquez Díaz

UBICACIÓN DEL PROFESOR Oficina 4-29L-6


(Oficina, e-mail) Bloque L, Cuarto piso
jmarquez@uninorte.edu.co

HORARIO DE ATENCIÓN AL ESTUDIANTE Martes: 9:30 -11:30


Jueves: 9:30 – 10:30
Lugar: Oficina.

2. DESCRIPCIÓN SINTÉTICA DE LA ASIGNATURA

Se revisan los diferentes componentes de un compilador pasando por el análisis léxico hasta el
análisis semántica y se dan las bases para el estudio de las fases correspondientes a la síntesis.

3. DESCRIPCION AMPLIA DE LA ASIGNATURA

Se estudian las diferentes fases que se deben llevar a cabo para el diseño y construcción de la
estructura de un compilador. Estas fases comprenden el análisis léxico y generación de
autómatas fínitos; el análisis sintáctico a través de métodos recursivos y las técnicas LR; el
análisis semántico, el cual revisa el programa fuente para tratar de encontrar errores semánticos
y lleva a cabo la verificación de tipos; la generación de código intermedio, que se puede
considerar como un programa para una máquina abstracta y de aquí su fácil traducción al
programa objeto; optimización del código, la cual mejora el código intermedio, de tal forma
que resulta un código de máquina más rápido de ejecutar; y la generación de código objeto que
puede ser relocalizable o ensamblador.

4. JUSTIFICACIÓN

Dentro de la Ingeniería de Sistemas la interrelación hombre- máquina es de vital importancia,


pues de tal comunicación, depende el apoyo que la máquina puede prestar al hombre mediante
el conocimiento en ella almacenada; por lo tanto es importante conocer los formalismos usados,
ya que ellos permiten el mejor entendimiento de la estructura de los lenguajes de programación
(sintáctica y semánticamente).

Para el futuro profesional es importante también conocer los fundamentos formales sobre los
cuales se construyen los compiladores. Esto servirá de base para que, de igual forma, pueda
aprovechar mucho mejor los recursos de programación, en especial cuando quiera aplicarlos en
la solución de sus propios problemas, tales como el uso de las expresiones regulares.

5. OBJETIVOS.

5.1. Objetivo General


Identificar, comprender y manipular las herramientas básicas que guían los procesos de diseño
y construcción de las partes constitutivas fundamentales de un compilador.

5.2. Objetivos Específicos


 Identificar claramente las etapas y fases de un compilador con sus respectivas entradas
y salidas.

 Estar en capacidad de construir un modelo prototipo que incluya por lo menos los
componentes de las fases de Análisis Léxico y Sintáctico.
 Interpretar en forma escrita y oral los conceptos que sobre nuevos avances en materia de
lenguajes de programación se presenten como tendencias en la actualidad a través de
investigaciones y consultas en Internet, revistas científicas y bases de datos
especializadas.

5.3. Resultados de Aprendizaje

CO1: Construir expresiones regulares a partir de enunciados y de autómatas finitos


CO2: Construir autómatas finitos a partir de expresiones regulares
CO3: Construir gramáticas libres de contexto a partir de expresiones regulares y
enunciados verbales
CO4: Construir analizadores sintácticos LL(1) a partir de gramáticas libres de contexto
CO5: Generar tablas de precedencia de operadores aplicando el principio de mangos
CO6: Generar los elementos de una gramática LR
CO7: Llevar a cabo traducciones dirigidas por sintaxis a través de definiciones o esquemas
de traducción

6. METODOLOGIA.

La asignatura se desarrollará con exposiciones por parte del profesor sobre conceptos
fundamentales y desarrollo de ejemplos; el estudiante realizará en clase ejercicios e investigará
sobre temas asignados por el profesor y deberá realizar algunas experiencias en lenguaje C
aplicando los conceptos de Análisis Léxico y Análisis Sintáctico.

A través de los ejercicios en clases y el desarrollo de laboratorios por fuera de ésta, el


estudiante aplicará con sentido integrador los conceptos que se desarrollen dentro del contenido
de la asignatura.

También llevará a cabo consultas en bases de datos, textos especializados y revistas que le
permitirán determinar cuál ha sido la evolución de los lenguajes de programación hasta
alcanzar la cuarta generación y posteriores, presentando un trabajo escrito que sustente la
información obtenida bajo la óptica crítica que le da el curso de la asignatura.

El catálogo Web de la asignatura servirá de soporte al desarrollo de la asignatura, ya que en este


se asignarán tareas, lecturas y trabajos de distinta índole. Las lecturas pueden ser asignadas en
Español como en Inglés.

7. MEDIOS

Para el desarrollo de las clases se utilizan los siguientes medios tradicionales: tiza y tablero;
retroproyector, portátil y video beam.

Para la realización de laboratorios, se dispone de:


 Sala de usuarios con lenguaje Builder C++
 Bases de datos internacionales en la biblioteca.
 Catálogo Web de la asignatura.
 Textos en Biblioteca

8. CONTENIDO

# TOPICO Numero
de Horas
1. INTRODUCCION A COMPILADORES 3
1.1. Compiladores y sus relacionados (Preprocesadores,
ensambladores, cargadores)
1.2. Análisis de un Programa Fuente (Lectura)
1.3. Fases de un compilador
2. ANALISIS LEXICO 9
2.1. Función del analizador léxico
2.2. Manejo de los Buffers de entrada (Lectura - Opcional)
2.3. Especificación de los componentes léxicos
2.4. Reconocimiento de los componentes léxicos
2.5. Autómatas Finitos
2.6. Construcción de Autómatas Finitos a partir de expresiones
regulares
2.7. Diseño de un generador de analizadores lexicográfico (Opcional)
2.8. Optimización de buscadores por concordancia de patrones
basados en AFD
3. ANALISIS SINTACTICO 18
3.1. Función del analizador sintáctico
3.2. Gramáticas independientes del contexto
3.3. Consideraciones en la escritura de una Gramática
3.4. Análisis Sintáctico Descendente
3.5. Análisis Sintáctico Ascendente
3.6. Análisis Sintáctico por Precedencia de Operadores
3.7. Analizadores Sintácticos LR
3.8. Uso de Gramáticas Ambiguas
3.9. Generadores de Analizadores Sintácticos (Opcional)
4. TRADUCCION DIRIGIDA POR LA SINTAXIS 10
4.1. Definiciones dirigidas por la Sintaxis
4.2. Construcción de Arboles de Sintaxis
4.3. Evaluación Ascendente de Definiciones con atributos
4.4. sintetizados
4.5. Definiciones con atributos por la Izquierda
4.6. Traducción Descendente
5 Exámenes 4

9. EVALUACION

Se llevará a cabo una evaluación constante, siempre teniendo en cuenta el cumplimiento de los
objetivos trazados desde un principio. Se realizarán trabajos, exámenes parciales y laboratorios.
Se retroalimentará cada prueba que se realice con el fin de aclarar las dudas a que hubiese
lugar.

Los exámenes parciales, y trabajos se evaluarán en forma escrita. Los laboratorios se evaluarán
teniendo en cuenta cuál es el objetivo propio de éste.

Tabla I: Ponderación de la evaluación es la siguiente:

Evaluación % Fecha Tema 30%


Primer Parcial 20 3ª. Semana Introducción a Compiladores y X
(P1) Análisis Léxico
Segundo Parcial 20 6ª. Semana Análisis Sintáctico (3.1 - 3.6) X
(P2)
Examen Final 30 18ª. Semana Temas anteriores (en forma general),
(EF) Analizadores Sintácticos LR
Traducción Dirigida por la Sintaxis
Laboratorio (L) 15 14ª. Semana Análisis Léxico-Análisis Sintáctico
Investigación y 15 9ª. Semana Temas asociados al análisis léxico y
Desarrollo (ID) gramáticas independientes del
contexto.

Tabla II. Correspondencia de salidas del curso, productos evaluables y las áreas de
dominio cognitivo

Resultados de
CO1 CO2 CO3 CO4 CO5 CO6 CO7 SOg
Aprendizaje
Dominio Cognitivo

Conocimiento
Comprensión
Aplicación ID
Análisis P1 P1 P2 P2 P2 EF EF
Diseño
Evaluación
10. BIBLIOGRAFIA

10.1. Texto Guía

AHO, Alfred. Sethi Ravi, ULLMAN, Jeffrey. Compiladores: Principios, Técnicas y


Herramientas. Addison-Wesley. 1990.

LOUDEN, Keneth C. Construcción de Compiladores: Principios y Práctica. Thomson. 2004

10.2. Otras referencias

WILHELM, Reinhard y MURER, Dieter. Compiler Design. Addison-Wesley. 1995.

WIRTH, Niklaus. Compile Construction. An Introduction. Addison-Wesley. 1996.

PRATT, Terence. Programming Languages: Design and Implemtation. Segunda Edición.


Prentice-Hall. 1984.

KLESER. Melvin. Design of Very High-Level Computer Languages. McGraw-Hill. 1991.

FISCHER, Charles. Crafting a Compiler. Benjamín-Cummings. 1988.

PITTMAN, Thomas. The Art of Compiler Design. Prentice-Hall. 1992.

CAROLL, John. Theory of Finite Autómata with an introduction to Formal Languages.


Prentice-Hall. 1989.

Direcciones de interés:
http://www.phil-fak.uni-duesseldorf.de/FTP/FAQ/comp/compilers
http:/sunsite.doc.ic.ac.uk/usenet/news.answers/comp/compilers
http:/www.pu.informatic.th-darmstadt.de/welcome-e.html
http://www.shadowmac.org/pub/mirrors/RTFM/usenet-by-groups/comp.compilers

BASES DE DATOS : Computer Select

NOTA:
Las evaluaciones, incluidos los laboratorios de programación, se realizarán SIN EXCEPCIÓN
en las semanas del semestre en las cuales están programadas, es decir, no se realizaran
aplazamientos para ninguna de ellas, debido a que el 80% de la nota definitiva debe estar
registrada a mas tardar la semana 14.

También podría gustarte