Anda di halaman 1dari 21

Universidad Católica de Cuyo

Facultad de Filosofía y Humanidades

Carrera: Especialización en la Enseñanza de la Educación Superior


Sede: Universidad Católica de Santiago del Estero
Trabajo: Final del Módulo IV “La Práctica de la Enseñanza”

Enseñanza para la comprensión en


Compiladores e Intérpretes

Alumno: Salvador Valerio Cavadini

– Junio de 2004 –
Enseñanza para la comprensión en Compiladores e Intérpretes

Introducción

Este trabajo tiene como finalidad presentar una propuesta didáctica para la enseñanza de “Teoría
de Lenguajes Formales”, tópico correspondiente a la Unidad II del programa de la asignatura
Compiladores e Intérpretes1 en la cual ejercemos la docencia. Hemos elegido esta unidad pues el
concepto de lenguaje formal y las nociones asociadas a él –i.e. símbolo, alfabeto, gramática, sintaxis,
semántica, etc.– son medulares al contenido de la asignatura. Esta propuesta se realizó teniendo en
cuenta las orientaciones conceptuales de la Enseñanza para la Comprensión.
En las siguientes secciones de este trabajo expondremos brevemente los cuatro componentes claves de
la enseñanza para la comprensión: metas para la comprensión, tópicos generativos, desempeños para la
comprensión y evaluación continua. Seguidamente presentaremos una serie de desempeños para la
comprensión de los contenidos de la unidad “Teoría de Lenguajes Formales”.

Metas para la compresión

Las metas para la compresión son aquellos objetivos, que como docentes, deseamos sean
alcanzados por nuestros alumnos. Estos objetivos son un conjunto de conceptos, procesos, habilidades,
ideas, etc. que esperamos sean comprendidos por los estudiantes.
Las metas de compresión correspondientes a cada unidad de la asignatura se denominan submetas y
deben estar en sintonía con las metas propuestas para las metas planteadas para la asignatura completa.
Estas últimas, denominadas hilos conductores, resumen la esencia de la materia. Es por esto que, antes
de presentar las metas para la comprensión de la unidad tratada en este trabajo, detallaremos las metas
de comprensión de la asignatura.
Hilos conductores de la obligación académica “Compiladores e Intérpretes” establecidos en la
planificación de la asignatura para el año 2004 son:
1. Comprender los conceptos fundamentales de la teoría de los lenguajes formales, la teoría de
autómatas y las gramáticas generativas, relacionarlos y aplicarlos en la resolución de
problemas.
2. Comprender los procesos de conversión de los lenguajes formales de alto nivel a código de
máquina y el funcionamiento de los compiladores e intérpretes.
3. Identificar, dominar y aplicar las técnicas que guían los procesos de diseño y las herramientas
básicas que se utilizan en la construcción de las partes constitutivas fundamentales de un
traductor.
4. Desarrollar cooperativamente traductores utilizando herramientas de generación automática.

Metas para la comprensión de la unidad “Teoría de Lenguajes Formales”:


1. Los alumnos comprenderán el concepto de “lenguaje”
2. Los alumnos establecerán similitudes y diferencias entre los lenguajes formales (artificiales) y
los naturales.
3. Los alumnos comprenderán los inconvenientes que plantea la ambigüedad de los lenguajes
naturales.
4. Los alumnos comprenderán que para procesar con una computadora las oraciones de un
lenguaje es necesaria una representación finita y no ambigua de los mismos.
1
Materia anual perteneciente al cuarto año de las carreras de Analista de Sistemas y de Ingeniero en Computación que se
imparten en la Facultad de Matemática Aplicada. El programa de la asignatura se encuentra detallado en el Apéndice A. El
sitio web de la asignatura es www.ucse.edu.ar/fma/compiladores

2
Enseñanza para la comprensión en Compiladores e Intérpretes

5. Los alumnos comprenderán los conceptos básicos de la Teoría de Lenguajes Formales:


símbolo, alfabeto, hilera y operaciones relacionadas.
6. Los alumnos comprenderán el concepto de gramáticas generativas y su utilidad para representar
lenguajes tanto finitos como infinitos.
7. Los alumnos serán capaces de identificar a qué nivel de la Jerarquía de Chomsky pertenece una
gramática/lenguaje.

Tópico generativo

La enseñanza para la comprensión propone la utilización de tópicos generativos como


herramienta para estimular y facilitar el acceso a los nuevos conocimientos por parte de los alumnos.
Los tópicos generativos son conceptos, ideas, temas, etc., centrales del dominio de conocimiento de una
disciplina y deben proveer conexiones y variedad de perspectivas en un grado suficiente como para
apoyar el desarrollo de comprensiones profundas de los alumnos. Además, el tópico generativo debe
resultar de interés para los alumnos y docentes, debe poder vincularse con facilidad con las experiencias
y conocimientos previos de los alumnos y permitir ser abordado a través de una gran variedad de
medios.
El tópico generativo elegido para esta unidad es el concepto de lenguaje. Este concepto reúne las
características necesarias para ser un tópico generativo ya que permite su abordaje desde las nociones
básicas que tiene los alumnos sobre él y desde él se puede llegar a los demás conceptos vinculados que
conforman la unidad “Teoría de Lenguajes Formales”. En la figura 1 puede observarse un mapa
conceptual que vincula la noción de lenguaje con los contenidos de la unidad abordada y de otras
unidades de la asignatura.

Desempeños para la compresión

Una vez elegido el tópico generativo, el docente debe diseñar una serie de actividades que ayuden
al alumno a explorar y establecer conexiones entre los nuevos conceptos que se le van presentado y sus
saberes precedentes. Estas actividades se denominan desempeños para la comprensión.
Cabe destacar que no cualquier actividad es un desempeño para la comprensión. La actividad debe
plantearle un desafío cognitivo –accesible– al estudiante que lo estimule a utilizar sus saberes para
poder culminar la actividad. Esta actividad además debe diseñarse en función de las metas para la
comprensión plateadas para la unidad.
Como dijimos, los desempeños de comprensión se diseñan en serie, es decir, debe ser una sucesión
coordinada de actividades que le brinde al alumno una guía y ejercitación gradual y constante
consistente en retos cognitivos cada vez más complejos. Los investigadores clasificaron los
desempeños en tres categorías:
• Desempeños preliminares: son actividades relativamente simples que se desarrollan al
inicio de la unidad en la etapa de exploración y le permiten a los alumnos tomar contacto con
el tópico generativo para comenzar a explorarlo. Además sirven al docente para identificar y
dimensionar los conocimientos previos relacionados de los alumnos.

3
Enseñanza para la comprensión en Compiladores e Intérpretes

INTÉRPRETES COMPILADORES

compuestas de de un
son CADENAS SÍMBOLOS ALFABETO

de de es un
TRADUCTORES
CONJUNTO
es un

son
se b utilizados
TEORÍA DE LA asa como LENGUAJES
COMPLEJIDAD e n

TEORÍA DE
CONJUNTOS
LENGUAJES son diferentes a LENGUAJES
reconocen
FORMALES NATURALES
AUTÓMATAS

se basa en estudia
generan estudia
TEORÍA DE LA
COMPUTABILIDAD

GRAMÁTICAS
estudia
LINGÜÍSTICA
de
de

se dedica a la
de
FORMAS NORMALES

define
JERARQUÍA NOAM CHOMSKY

Figura 1: Mapa conceptual para el tópico generativo Lenguaje

• Desempeños de investigación guiada: son actividades que se ejecutan al promediar la


unidad, luego de haber concluido la etapa de exploración y tienen por objeto el desarrollo de
la comprensión de problemas o aspectos concretos del tópico generativo.

• Desempeños finales de síntesis: es un conjunto de actividades más complejas tendientes a


posibilitar que los estudiantes sinteticen y demuestren la comprensión lograda a través de los
desempeños anteriores. Deben ser actividades que requieran al alumno la síntesis e
integración de los saberes que se han desarrollado en la unidad.

Evaluación para la comprensión

El marco conceptual de la enseñanza para la comprensión hace evidente la necesidad de que la


evaluación vaya más allá de un examen sumativo a fin de cada unidad o del curso. Los estudiantes
precisan de oportunidades para reflexionar sobre sus desempeños durante el aprendizaje de nuevos
conceptos o habilidades cognitivas y no sólo al final de este aprendizaje. Estas reflexiones deben
realizarse teniendo en cuenta las metas para la comprensión planteadas y siguiendo los criterios e
información brindada por el docente. Esta modalidad de evaluación se denomina evaluación continua y
fue pensada como una herramienta que brinda oportunidades para mejorar la enseñanza a través del
continuo análisis del progreso de los alumnos en pos de las metas de comprensión.
Para que el alumno pueda autoevaluarse es necesario que conozca las metas para la comprensión que el
docente espera que alcance y los criterios con los que evaluará su desempeño. Esto, más una
realimentación y reflexión conjunta regular durante el proceso de aprendizaje permitirá que la
evaluación se convierta en una herramienta que proporcione información que permita comprender el
proceso de enseñanza y el de aprendizaje y replantear las prácticas docentes a fin de lograr más y
mejores aprendizajes.

4
Enseñanza para la comprensión en Compiladores e Intérpretes

Propuesta didáctica para “Teoría de Lenguajes Formales”

En esta sección presentaremos una propuesta didáctica confeccionada a partir de los lineamientos
establecidos por la enseñanza para la comprensión. Como mencionamos, la propuesta comprende una
serie de desempeños orientados a alcanzar las metas para la comprensión establecidas para la unidad
“Teoría de Lenguajes Formales”.
Antes de describir los desempeños para la comprensión diseñados, creemos que es importante detallar
las condiciones áulicas en las cuales estas actividades se desarrollarán, para esto hemos resumido
algunos datos relevantes de la asignatura Compiladores e Intérpretes en el siguiente cuadro.

Cantidad de alumnos por cohorte entre 15 y 25


Cantidad de docentes 3
Cantidad de horas de clase 7 por semana

A continuación detallamos una serie de 8 desempeños para la comprensión diseñados con el objeto de
alcanzar las metas para la comprensión de la unidad II de la asignatura.

5
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°1

DETALLE
METAS PERSEGUIDAS 1
DESEMPEÑOS DE COMPRENSIÓN 1.a Los alumnos, de manera individual, redactan una definición
de “lenguaje”
1.b Los alumnos acuerdan, en grupos de 2 ó 3, una definición de
“lenguaje”
1.c Se exponen a la clase las definiciones de cada grupo y se
identifican los elementos en común y se negocia una nueva
definición.
1.d Los docentes proveen una definición de “lenguaje” obtenida
en un diccionario de la lengua castellana. Los alumnos comparan
la definición del diccionario con la redactada por el curso.

EVALUACIÓN CONTINUA CRITERIOS : calidad de las RETROALIMENTACIÓN: informal


definiciones aportadas por los entre los alumnos y los
alumnos. Nivel de participación docentes.
y compromiso en las
actividades.

RECURSOS DIDÁCTICOS • Definición de “lenguaje” obtenida en un diccionario de la


lengua castellana.
• Pizarra y fibrones.
• Tiempo: 20 minutos.

6
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°2

DETALLE
METAS PERSEGUIDAS 1, 2
DESEMPEÑOS DE COMPRENSIÓN 2.a Los alumnos, organizados en grupos de 2 ó 3, confeccionan
una lista de los lenguajes que conocen. Luego se socializan las
listas y se confecciona una única lista en la pizarra.
2.b Los docentes proveen definiciones básicas de “lenguaje
formal/artificial” y “lenguaje natural”
2.c Los alumnos clasifican en “formales” y “naturales” los
elementos de la lista de la pizarra.
2.d Los alumnos identifican las características comunes de los
lenguajes formales y las de los lenguajes naturales.

EVALUACIÓN CONTINUA CRITERIOS : variedad de los RETROALIMENTACIÓN: informal


ejemplos aportados. Corrección entre los alumnos y los
de la clasificación. Calidad y docentes.
cantidad de las características
comunes identificadas. Nivel de
participación y compromiso en
las actividades.

RECURSOS DIDÁCTICOS • Pizarra y fibrones.


• Definiciones básicas de lenguaje formal y natural.
• Tiempo: 30 minutos.

7
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°3

DETALLE
METAS PERSEGUIDAS 2,3
DESEMPEÑOS DE COMPRENSIÓN 3.a Se separa a los alumnos en dos grupos. A uno de los grupos
se le provee una definición coloquial (en lenguaje natural) de un
conjunto de números, al otro grupo se le provee una definición
formal del “mismo” conjunto y se les pide que elaboren un lista
de números que pertenecen al conjunto y otra de números que no
pertenecen.
3.b Se copian las listas de cada grupo en la pizarra y se discute la
“pertenencia” o “no pertenencia” de los números de las listas.
Durante esta discusión los docentes destacan las posibles
ambigüedades que puede platear la definición coloquial al tiempo
que esta situación de ambigüedad no se produce con la definición
formal.

EVALUACIÓN CONTINUA CRITERIOS : Nivel de RETROALIMENTACIÓN: informal


participación y compromiso en entre los alumnos y los
las actividades. docentes.

RECURSOS DIDÁCTICOS • Pizarra y fibrones.


• Definiciones de conjuntos de números.
• Tiempo: 15 minutos.

8
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°4

DETALLE
METAS PERSEGUIDAS 4, 5, 6
DESEMPEÑOS DE COMPRENSIÓN 4.a (pre-presencial) Los docentes proveen bibliografía y se
solicita que los alumnos, en grupos de 2 ó 3, confeccionen una
breve monografía en la que se expliquen los conceptos de
símbolo, alfabeto e hilera y sus operaciones relacionadas, y que
con esos conceptos elaboren una definición de “lenguaje”.
4.b (presencial) Los docentes repasan con los alumnos los
conceptos de símbolo, alfabeto e hilera y socializan las
definiciones de “lenguaje” de cada grupo.
4.c Se solicita que los alumnos comparen y relacionen los
conceptos y operaciones de la Teoría de Lenguajes Formales con
los conceptos de la Teoría de Conjuntos.
4.d De ser necesario, los docentes introducen la noción de
lenguaje como “conjunto de hileras”.
4.e Se discuten con los alumnos los retos técnicos que plantea la
representación de conjuntos en una computadora.
4.f Se les solicita que propongan métodos de representación para
conjuntos infinitos (lenguajes infinitos).
4.g Los docentes introducen el concepto de gramática generativa
y destacan su utilidad para representar lenguajes finitos e
infinitos.

EVALUACIÓN CONTINUA CRITERIOS : calidad de las RETROALIMENTACIÓN: los docentes


monografías y las definiciones harán comentarios por escrito
aportadas. Calidad de los de cada una da las monografías
métodos propuestos. Nivel de elaboradas por los alumnos.
participación y compromiso en Informal entre los alumnos y
las actividades. los docentes.

RECURSOS DIDÁCTICOS • Material bibliográfico sobre lenguajes formales (libros,


papers, web links, etc)
• Pizarra y fibrones.
• Tiempo: 50 minutos.

9
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°5

DETALLE
METAS PERSEGUIDAS 6, 7
DESEMPEÑOS DE COMPRENSIÓN 5.a (pre-presencial) Se solicita que los alumnos, en grupos de 2 ó
3, investiguen sobre Noam Chomsky, la “Jerarquía de
Gramáticas” propuestas por él y elaboren una breve monografía al
respecto.
5.b (presencial) Los docentes repasan con los alumnos la
jerarquía de gramáticas propuesta por Chomsky (Jerarquía de
Chomsky).
5.c Los alumnos participan del juego El Intruso (ver Apéndice B)
EVALUACIÓN CONTINUA CRITERIOS : calidad de las RETROALIMENTACIÓN: los docentes
monografías. Desempeño en el harán comentarios por escrito
juego. Nivel de participación y de cada una da las monografías
compromiso en las actividades. elaboradas por los alumnos.
Informal entre los alumnos y
los docentes.

RECURSOS DIDÁCTICOS • Tarjetas para el juego El Intruso.


• Pizarra y fibrones.
• Tiempo: 50 minutos.

10
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°6

DETALLE
METAS PERSEGUIDAS 6, 7
DESEMPEÑOS DE COMPRENSIÓN 6.a Los participan del juego Encontrando el Compañero (ver
Apéndice B)
6.b Los alumnos conforman grupos de 3 ó 4 integrantes. La mitad
de los grupos debe dar ejemplos de lenguajes que no pueden ser
generados por gramáticas regulares (nivel 3 de la Jerarquía de
Chomsky). La otra mitad debe elaborar y fundamentar ejemplos
de lenguajes que sí pueden ser generados por dichas gramáticas.
6.c Los alumnos identifican –con la ayuda necesaria por parte de
los docentes– los aspectos que hacen imposible la generación con
una gramática regular de los lenguajes aportados por la primera
mitad de grupos.
6.d Los alumnos infieren desde los ejemplos de la actividad 6.b y
los aspectos identificados en la actividad 6.c las limitaciones de
las gramáticas regulares.
Se repiten las actividades 6.b, 6.c y 6.d para las gramáticas libres
de contexto (nivel 2 de la Jerarquía de Chomsky).

EVALUACIÓN CONTINUA CRITERIOS : Desempeño en el RETROALIMENTACIÓN: Informal


juego. Capacidad de entre los alumnos y los
identificación de las docentes.
limitaciones de las gramáticas.
Nivel de participación y
compromiso en las actividades.

RECURSOS DIDÁCTICOS • Tarjetas para el juego Encontrando el Compañero.


• Pizarra y fibrones.
• Tiempo: 50 minutos.

11
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°7

DETALLE
METAS PERSEGUIDAS 1,2,3,4,5,6,7
DESEMPEÑOS DE COMPRENSIÓN 7.a A cada alumno se le asigna un par de lenguajes para los
cuales deberá:
• Dar 5 ejemplos de hileras que pertenezcan al lenguaje y
5 de hileras que no pertenezcan.
• Indicar y justificar el nivel de la Jerarquía de Chomsky a
la que pertenece el lenguaje.
• Diseñar la gramática de menor potencia que lo genere.
EVALUACIÓN CONTINUA CRITERIOS : calidad y variedad de RETROALIMENTACIÓN: los alumnos
los ejemplos aportados. Calidad coevalúan los ejemplos, las
de las justificaciones. Calidad justificaciones y las gramáticas.
de las gramáticas diseñadas

RECURSOS DIDÁCTICOS • Lenguajes


• Pizarra y fibrones.
• Tiempo: 50 minutos.

12
Enseñanza para la comprensión en Compiladores e Intérpretes

DESEMPEÑO N°8

DETALLE
METAS PERSEGUIDAS 1,2,3,4,5,6,7
DESEMPEÑOS DE COMPRENSIÓN 8.a (extraáulico) Cada alumno deberá elaborar una monografía en
donde se comparen y analicen las diferencias entre la jerarquía
propuesta originalmente por Noam Chomsky en 1958 y las
jerarquías “de Chomsky” descriptas en la bibliografía
recomendada por la cátedra.
EVALUACIÓN CONTINUA CRITERIOS : calidad y RETROALIMENTACIÓN: los docentes
profundidad del análisis harán comentarios por escrito
descripto en la monografía. de cada una da las monografías
elaboradas por los alumnos.
Informal entre los alumnos y
los docentes.

RECURSOS DIDÁCTICOS • Material bibliográfico.


• Tiempo:
• 1 semana para la realización de la monografía.
• 30 minutos para la discusión (retroalimentación) en el aula.

13
Enseñanza para la comprensión en Compiladores e Intérpretes

Bibliografía

* Blythe, Tina y cols. 1999. “La enseñanza para la comprensión. Guía para el docente”. Editorial
Paidós. Buenos Aires.
∗ Camilloni, Alicia W. de; Celman, Susana; Litwin, Edith; Palou de Maté, María del Carmen. 1998. “La
evaluación de los aprendizajes en el debate didáctico contemporáneo”. Editorial Paidós. Buenos Aires.
∗ Camilloni, Alicia W. de; Davini, María Cristina; Edelstein, Gloria; Litwin, Edith; Souto, Marta y Barco,
Susana. 1998. “Corrientes didácticas contemporáneas”. Cuestiones de Educación. Editorial Paidós. Buenos
Aires.
∗ Doyle, Walter. 1997. “Trabajo Académico”. Mimeo. Buenos Aires.
∗ Nieto Gil, Jesús M. 1996. “La autoevaluación del profesor. Cómo evaluar y mejorar su práctica docente.”
Editorial Praxis. Segunda Edición. Barcelona.
∗ Ontoria, A. y otros. 1995. “Mapas conceptuales. Una técnica para aprender”. Editorial Narcea, S. A. de
Ediciones. Madrid.
∗ Perkins, David. 1998. “Enseñanza para la comprensión. Introducción a la teoría y su práctica”. Mimeo. Harvard
University.
∗ Santos Guerra, Miguel Angel. 1998. “Evaluar es comprender”. Editorial Magisterio del Río de la Plata. Buenos
Aires.
∗ Sitio web en Internet del grupo de Investigación Proyecto Zero. http://www.pz.harvard.edu
∗ Stone Wiske, Martha (compiladora). 1999. “La enseñanza para la comprensión. Vinculación entre la
investigación y la práctica”. Editorial Paidós. Buenos Aires.

14
Enseñanza para la comprensión en Compiladores e Intérpretes

Apéndice A

15
Enseñanza para la comprensión en Compiladores e Intérpretes

Universidad Católica de Santiago del Estero


Facultada de Matemática Aplicada

Compiladores e Intérpretes

Programa de la asignatura
Año 2004

UNIDAD I: TRADUCTORES, COMPILADORES E INTÉRPRETES.

Traductores. Historia de los Traductores. El compilador Fortran.Estructura de un traductor. Front-End o


Análisis y Back-End o Síntesis. Definición sintética de las fases de un compilador: análisis
lexicográfico, análisis sintáctico, análisis semántico, generación de código intermedio, optimización de
código, generación de código final. Tabla de símbolos y manejo de errores. El agrupamiento de las
fases. Pasadas. Arquitectura de los traductores: su evolución. Clasificación de Traductores.
Compiladores e Intérpretes. Emuladores. Máquinas Virtuales. Diseño de compiladores, lenguajes y
computadoras. Compiladores de Compiladores. Bootstrapping (Arranque). Cross-Compilers
(Compiladores Cruzados). Compiladores Just-in-time. Compiladores on-the-fly. Decompiladores.

UNIDAD II: TEORÍA DE LENGUAJES FORMALES.

Lenguajes Naturales y Lenguajes Formales. Sintaxis y Semántica de los lenguajes. Teoría de


Conjuntos. Teoría de lenguajes formales. Conceptos elementales: símbolo, alfabeto, hilera o cadena.
Operaciones sobre hileras. Lenguajes: definición y operaciones sobre lenguajes. Metalenguajes.
Gramáticas. Gramáticas formales. Notación. No terminales y Producciones. Derivaciones.
Derivaciones canónicas: derivaciones leftmost (por izquierda) y rightmost (por derecha). Sentencias y
formas sentenciales. Representación de las derivaciones. Grafos, árboles de derivación -parse tree- y
árboles sintácticos -sintax tree-. Clasificación de gramáticas: la Jerarquía de Chomsky. Gramáticas
Regulares y Lenguajes Regulares. Propiedades de los Lenguajes Regulares. Pumping Lema (Lema de
bombeo). Gramáticas Libres de Contexto y Lenguajes Libres de Contexto. Propiedades de los
Lenguajes Libres de Contexto. Gramáticas Sensibles al Contexto. Gramáticas no Restringidas.
Higienización de Gramáticas Libres de Contexto. Gramáticas propias. Forma Normal de Noam
Chomsky. Forma Normal de Sheila Greibach. Propiedades. Ambigüedad. Tipos. Eliminación de
Ambigüedad. Precedencia y asociatividad. Representaciones formales de la sintaxis de los lenguajes
libres de contexto. Forma de Backus-Naur. Diagramas sintácticos. Ventajas del uso de gramáticas.

UNIDAD III: TEORÍA DE AUTÓMATAS.

Autómatas. Definición. Componentes. Operación. Diagramas de transición. Su relación con las


gramáticas. Autómatas finitos. Definición formal. Representación Matricial. Condición de
determinismo. Autómatas finitos determinísticos, no determinísticos y de estados mínimos.
Definiciones formales. Algoritmos de conversión: Construcción de subconjuntos. Diseño de Autómatas
Finitos. Autómatas de pila. Definición formal. Determinismo en Autómatas de Pila. Autómatas
limitados linealmente. Máquinas de Turing. Decidibilidad. Los autómatas y su relación con la Jerarquía
de Chomsky. Los compiladores como autómatas.

UNIDAD IV: ANÁLISIS LEXICOGRÁFICO.

El rol del analizador lexicográfico. Tokens, patrones y lexemes. Atributos de los tokens. Expresiones
Regulares, gramáticas regulares y autómatas finitos. Equivalencia entre los modelos. Derivadas de
Expresiones Regulares. Algoritmo de McNaughton-Yamada-Thompson. Diseño de analizadores

16
Enseñanza para la comprensión en Compiladores e Intérpretes

lexicográficos. Diagramas de transición. Operaciones asociadas: bypass, getchar, concat e install.


Lookahead y Pushback. Espacios en blanco: políticas y tratamiento. Criterios de diseño.
Implementación de analizadores lexicográficos. Algoritmos greedy (glotón) y no greedy. Palabras
reservadas. Comentarios. El subsistema de entrada. Buffers. Lookahead multicaracter. Fin de la entrada.
El analizador léxico de Fortran. Recuperación de errores léxicos. Token de error. Herramientas para la
generación de analizadores lexicográficos. Lex. Flex. TP Lex.

UNIDAD V: ANÁLISIS SINTÁCTICO.

Análisis sintáctico y gramáticas libres de contexto. Técnicas de parsing: generales, ascendentes y


descendentes. Parsing determinístico y no determinístico. Parsing Top-Down. Gramáticas LL(k) y sus
limitaciones. Modificación de gramáticas. Recursividad izquierda directa e indirecta. Factorización.
Ciclos. Tablas del parser top-down: Conjuntos First, Follows y Selection. El problema If-Then-Else en
el parsing LL(k). Parsers predictivos y recursivos descendentes. Parsers top-down y autómatas de pila.
Propiedades del parsing LL(1). Análisis sintáctico Bottom-Up. Parsers shift-reduce. Técnicas de
precedencia: Precedencia de Operadores y Precedencia Simple. Técnica LR(0). Tablas LR(0).
Conflictos shift-reduce y reduce-reduce. Técnica SLR(k). Técnica LR(k). Técnica LALR(k). El
problema If-Then-Else en el parsing LR(k). Propiedades del parsing LR(1). Parsing bottom-up versus
parsing top-down. Análisis comparativo. Técnicas Generales. Método de Unger. Método CYK.
Algoritmo de Jay Earley. Herramientas para la generación de analizadores sintácticos ascendentes.
Generadores LALR(1). Yacc. TP Yacc. Generadores LALR(k). Control de ambigüedad en parsers
determinísticos. Análisis de conflictos en parsing LR(k). Tratamiento de dependencias de contexto en
parsers libres de contexto. Recuperación de errores sintácticos. Modo Pánico. Producciones de error.

UNIDAD VI: ANÁLISIS SEMÁNTICO Y CÓDIGO INTERMEDIO.

Traducción dirigida por la sintaxis. Definiciones dirigidas por la sintaxis. Atributos heredados y
sintetizados. Cálculo y flujo de los valores de los atributos. Definiciones S-atribuídas y L-atribuídas.
Acciones semánticas. Esquemas de traducción dirigidos por la sintaxis. Gramáticas Aumentadas.
Limitaciones de las gramáticas libres de contexto. Tabla de símbolos. Función. Primitivas.
Consideraciones de diseño. Técnicas de implementación: estática y dinámica. Listas encadenadas,
árboles binarios, tablas hash. Función de hashing. La tabla de símbolos y los lenguajes de bloques. El
espacio string. Representación de campos y registros. Representación de tipos predefinidos y abstractos.
Errores semánticos. Recuperación de errores semánticos. Rutinas Semánticas en parsers LL y en
parsers shift-reduce. Pila semántica controlada por el parser. Código intermedio. Máquinas abstractas.
Representación de operaciones, flujo de datos y flujo de control. Formas de Representaciones
intermedias: Árboles, grafos, notación postfijo y código de tres direcciones. Triplas y cuádruplas.
Tuplas. Lenguajes de programación como Representaciones intermedias. Análisis comparativo de las
diferentes representaciones. Portabilidad. Representación intermedia versus generación directa.
Alternativas de organización de un compilador. Compiladores de una pasada. Compiladores multi-
pasada. Familias de compiladores. Compiladores multilenguajes y multi-target.

UNIDAD VII: TRADUCCIÓN Y GENERACIÓN DE CÓDIGO.

Procesamiento de declaraciones. Atributos. Procesamiento de expresiones y asignaciones. Left-value y


Right-value. Chequeo de tipos. Identificadores simples, constantes, registros, arrays, cadenas.
Precedencia y asociatividad de operadores. Traducción de las estructuras de control. Su traducción en
compiladores de una o más pasadas. El problema "Forward Branch" (salto hacia adelante). El problema
"Backward Branch" (salto hacia atrás). Labels. Backpatching. Estructuras de loop: sentencias while,
repeat-until, for, loop. Estructuras de ejecución condicional: sentencias if-then, if-then-else, case.
Expresiones Boolenas y Operaciones Relacionales. Métodos de traducción. Evaluación "Short-circuit".
Estructuras de transferencia directa de control: exit, goto. Traducción de Rutinas y Funciones. Stack y
Heap. Ámbitos. Paso de parámetros. Stack Frames. Registros de Activación. Encadenamiento estático y
dinámico. Displays. Valores de retorno.

UNIDAD VIII: OPTIMIZACIÓN Y GENERACIÓN DE CÓDIGO FINAL.

17
Enseñanza para la comprensión en Compiladores e Intérpretes

Compiladores Optimizadores. Tipos de Optimización. Ámbitos de optimización: local, interprocedural,


global. Optimización de código intermedio. Principales fuentes de optimización. Bloques Básicos.
Bloques Básicos Extendidos. Grafo de Flujo de Control (CFG). Grafo de Dependencias de Control
(PDG). Algoritmos para su construcción. Constant folding y Propagación de constantes. Variables
muertas. Eliminación de código muerto. Eliminación de subexpresiones comunes. Grafos acíclicos
dirigidos. Algoritmo número-valor. Optimizaciones del flujo de control. Análisis de flujo de datos.
Ecuaciones. Generación de código final. Consideraciones sobre la máquina objeto: pipeline, caches,
arquitectura superescalar, arquitecturas RISC. Scheduling de instrucciones. Algoritmo de Sethi-Ullman.
Asignación de registros. Técnicas de coloreado de grafos. Gestión de variables temporales. Máquina de
pila. Selección de instrucciones y modos de direccionamiento. Optimización del código objeto.
Técnicas Peep-hole. Reducción de potencia. Simplificaciones algebraicas.

18
Enseñanza para la comprensión en Compiladores e Intérpretes

Apéndice B

19
Enseñanza para la comprensión en Compiladores e Intérpretes

EL INTRUSO
El juego consiste en descubrir qué elemento está incorrectamente agrupado con otros. El docente
determina desde el principio cuántas rondas se jugarán, en cada ronda se entrega a los participantes una
ficha con un conjunto de elementos (gramáticas, def. de lenguajes) y se pide que indique qué elemento
no pertenece al conjunto y justifique por qué. El docente define un tiempo límite para resolver cada
problema, cumplido el plazo, cada participante entrega solución al docente quien explica en la pizarra
cuál era la solución correcta. Aquellos que hayan contestado acertadamente obtienen un punto. Luego
de la última ronda, se suman los puntos de cada participante y se designan los ganadores.

Ejemplo 1

S  a A S  1 C S  A a S  b B
S  a S  0 A A  A b S  a A
A  a B A  0 B A  A a A  a B
A  a A A  0 B  B b A  a A
B  b B  0 A B  C b B  b A
C  1 C C  c B  b B
C  1 B  c
A B C D
Solución: El intruso es la gramática C porque es lineal a izquierda a diferencia de las demás que son lineales a
derecha.

Ejemplo 2

E  E + T E  E + E E  E + E E  E + E
E  T E  E * E E  E * E E  E * E
T  T * F E  id E  ( id ) E  ( E )
T  F E  id
T  id

A B C D
Solución: El intruso es la gramática D porque genera un lenguaje libre de contexto a diferencia de las demás que
siendo gramáticas libres de contexto, generan lenguajes regulares.

Ejemplo 3

P  ( P ) P  ( C P  ( P ) P P  ( C )
P  ( ) C  P ) P  λ C  ( ) C
C  ) C  ( )

A B C D
Solución: El intruso es la gramática D porque genera un lenguaje regular a diferencia de las demás que generan
lenguajes libres de contexto.

20
Enseñanza para la comprensión en Compiladores e Intérpretes

ENCONTRANDO EL COMPAÑERO
El juego consiste en determinar pares de elementos relacionados. El docente define desde el
principio cuántas rondas se jugarán, en cada una se entrega a los participantes una ficha con elementos
relacionados de a pares. Aquel que encuentre los pares relacionados se hace acreedor a un punto (si la
solución aportada es incorrecta, se le resta un punto). Luego de la última ronda, se suman los puntos de
cada participante y se designan los ganadores.
Ejemplo

S  a A b
L={ai bi con i>0} • • S  a A S b
A  a
S  a S b S
S  a b
• • S  a S b
S  a b
S  A S b B
L={a bi 2i
con i>0} • • S
A


A b B
a a
B  b
S  a A
L={a 2i i
b con i>0} • • S
S


a
S
b
B
B  b S
S  a A B
L={a2i b2i con i>0} • • S  a B
B  b b

Solución

S  a A b
L={ai bi con i>0} • • S  a A S b
A  a
S  a S b S
S  a b
• • S  a S b
S  a b
S  A S b B
L={a bi 2i
con i>0} • • S
A


A b B
a a
B  b
S  a A
L={a 2i i
b con i>0} • • S
S


a
S
b
B
B  b S
S  a A B
L={a2i b2i con i>0} • • S  a B
B  b b

21