Cs-95-034 Construcción de Lenguajes
(3-0-8)
Requisito: Ninguno


Objetivo General del Curso:

El alumno será capaz de implementar un lenguaje computacional en versiones de intérprete y compilador, utilizando las herramientas Lex, Yacc y lenguaje C o Java.

Temario
1. Fases de un Traductor.

Objetivo Específico: El alumno conocerá las fases que constituyen el proceso de traducción y establecerá las relaciones entre ellas y los lenguajes computacionales.

1.1 Definición de traductores.

1.2 Proceso de traducción.

1.3 Productos resultantes de la traducción.

 

2. Intérpretes y Compiladores.

Objetivo Específico: El alumno establecerá las diferencias entre intérprete y compilador a partir de los aspectos de implantación, complejidad y consumo de recursos.

 

2.1 Definiciones de intérpretes y compiladores.

2.2 Características de implantación de un lenguaje.

2.3 Factores de ejecución de un lenguaje.

 

3. Herramientas de Desarrollo: Lex y Yacc.

Objetivo Específico: El alumno aplicará las herramientas Lex y Yacc para la construcción de analizadores de léxico y gramaticales, respectivamente.

 

3.1 Componentes de una analizador de léxico.

3.2 Expresiones regulares para la definición de patrones.

3.3 Formato de un programa en Lex.

3.4 Componentes de un analizador gramatical ascendente.

3.5 Gramáticas libres de contexto.

3.6 Formato de un programa en Yacc.

3.7 Sincronía entre programas en Lex y Yacc.

 

4. Definiciones Dirigidas por Sintaxis.

Objetivo Específico: El alumno planeará el comportamiento de un analizador gramatical para el logro de un objetivo de traducción mediante la utilización de definiciones dirigidas por sintaxis.

 

4.1 Planeación de comportamiento adicional al análisis gramatical

4.2 Atributos heredados y sintetizados.

4.3 Orden de evaluación de atributos.

4.4 Esquemas de traducción.

4.5 Implantación en Yacc de esquemas de traducción.

 

5. Análisis Semántico Específico: Declaración y uso de entidades.

Objetivo Específico: El alumno establecerá e implementará las características semánticas de un lenguaje por la definición de entidades en él, así como restringir su uso por medio de la validación de tipos.

 

5.1 Sistemas de tipos.

5.2 Tablas de símbolos.

5.3 Dominio de entidades.

5.4 Variables locales y variables globales.

5.5 Invocación de funciones y pase de parámetros.

 

6. Código Intermedio.

Objetivo Específico: El alumno generará código intermedio para un lenguaje con el propósito de transportar programas a diferentes plataformas o máquinas virtuales.

 

6.1 Máquinas virtuales y código intermedio.

6.2 Componentes de una operación elemental.

6.3 Pascal y el código P (P-code).

6.4 La máquina virtual de Java.

 

7. Generación de Código Final para máquinas virtuales y procesadores específicos.

Objetivo Específico: El alumno construirá un generador de código que alimentará a un intérprete de código virtual o a un macroensamblador para un procesador específico.

 

7.1 Elementos básicos de un generador de código.

7.2 El administrador de recursos.

7.3 Descriptores de registros y de dirección.

 

Metodología y actividades de aprendizaje:

 

Tiempo estimado por tema:

  1. Fases de un Traductor: 3 horas.
  2. Intérpretes y Compiladores: 3 horas.
  3. Herramientas de Desarrollo —Lex y Yacc.: 6 horas.
  4. Definiciones Dirigidas por Sintaxis: 6 horas.
  5. Análisis Semántico Específico —Declaración y uso de entidades: 9 horas
  6. Código Intermedio: 9 horas.
  7. Generación de Código Final para máquinas virtuales y procesadores específicos: 12 horas.

 

 

Políticas de evaluación sugeridas:

3 examenes parciales: 30%.

1 examen final: 20%.

Tareas escritas y de programación: 10%.

Proyecto final: 40%.

 

Bibliografía:

 

Material de apoyo o Software:

 

Perfil del maestro:

Profesor con maestría en el área de computación y carrera de computación, preferentemente con experiencia impartiendo cursos de programación, estructura de datos y compiladores.