You are on page 1of 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

hilera y operaciones relacionadas. 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”. 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. Los alumnos comprenderán el concepto de gramáticas generativas y su utilidad para representar lenguajes tanto finitos como infinitos. Además. es decir. 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. 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 desempeños de comprensión se diseñan en serie. Estas actividades se denominan desempeños para la comprensión. 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. Cabe destacar que no cualquier actividad es un desempeño para la comprensión. Esta actividad además debe diseñarse en función de las metas para la comprensión plateadas para la unidad. Los tópicos generativos son conceptos. La actividad debe plantearle un desafío cognitivo –accesible– al estudiante que lo estimule a utilizar sus saberes para poder culminar la actividad. Como dijimos. 6. 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. alfabeto. etc. temas. Los alumnos serán capaces de identificar a qué nivel de la Jerarquía de Chomsky pertenece una gramática/lenguaje. 3 . 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. ideas.. Además sirven al docente para identificar y dimensionar los conocimientos previos relacionados de los alumnos. El tópico generativo elegido para esta unidad es el concepto de lenguaje. 7. 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. 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 debe resultar de interés para los alumnos y docentes.

Esto. 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. 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. 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. 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. 4 . 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. • 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. 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. 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. 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.

creemos que es importante detallar las condiciones áulicas en las cuales estas actividades se desarrollarán. 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. Como mencionamos. 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. para esto hemos resumido algunos datos relevantes de la asignatura Compiladores e Intérpretes en el siguiente cuadro. Antes de describir los desempeños para la comprensión diseñados. 5 . 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”.

• Tiempo: 20 minutos. una definición de “lenguaje” 1. • Pizarra y fibrones. Los alumnos comparan la definición del diccionario con la redactada por el curso. 1. 6 . de manera individual. redactan una definición de “lenguaje” 1.b Los alumnos acuerdan. 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. 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.d Los docentes proveen una definición de “lenguaje” obtenida en un diccionario de la lengua castellana. EVALUACIÓN CONTINUA CRITERIOS : calidad de las RETROALIMENTACIÓN: informal definiciones aportadas por los entre los alumnos y los alumnos.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. en grupos de 2 ó 3.a Los alumnos.

d Los alumnos identifican las características comunes de los lenguajes formales y las de los lenguajes naturales. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°2 DETALLE METAS PERSEGUIDAS 1. • Definiciones básicas de lenguaje formal y natural. confeccionan una lista de los lenguajes que conocen. 2. • Tiempo: 30 minutos. cantidad de las características comunes identificadas. RECURSOS DIDÁCTICOS • Pizarra y fibrones. 2. 2 DESEMPEÑOS DE COMPRENSIÓN 2. Calidad y docentes. Luego se socializan las listas y se confecciona una única lista en la pizarra. 7 . Corrección entre los alumnos y los de la clasificación.c Los alumnos clasifican en “formales” y “naturales” los elementos de la lista de la pizarra.b Los docentes proveen definiciones básicas de “lenguaje formal/artificial” y “lenguaje natural” 2. EVALUACIÓN CONTINUA CRITERIOS : variedad de los RETROALIMENTACIÓN: informal ejemplos aportados. organizados en grupos de 2 ó 3.a Los alumnos. Nivel de participación y compromiso en las actividades.

Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°3 DETALLE METAS PERSEGUIDAS 2. 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. 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. 8 . docentes. RECURSOS DIDÁCTICOS • Pizarra y fibrones. A uno de los grupos se le provee una definición coloquial (en lenguaje natural) de un conjunto de números. • Tiempo: 15 minutos.3 DESEMPEÑOS DE COMPRENSIÓN 3. • Definiciones de conjuntos de números. 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.a Se separa a los alumnos en dos grupos.

4.b (presencial) Los docentes repasan con los alumnos los conceptos de símbolo.d De ser necesario. RECURSOS DIDÁCTICOS • Material bibliográfico sobre lenguajes formales (libros.f Se les solicita que propongan métodos de representación para conjuntos infinitos (lenguajes infinitos). etc) • Pizarra y fibrones. participación y compromiso en Informal entre los alumnos y las actividades. los docentes introducen la noción de lenguaje como “conjunto de hileras”. alfabeto e hilera y sus operaciones relacionadas. 9 . Calidad de los de cada una da las monografías métodos propuestos. 4. EVALUACIÓN CONTINUA CRITERIOS : calidad de las RETROALIMENTACIÓN: los docentes monografías y las definiciones harán comentarios por escrito aportadas. los docentes.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.e Se discuten con los alumnos los retos técnicos que plantea la representación de conjuntos en una computadora. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°4 DETALLE METAS PERSEGUIDAS 4. • Tiempo: 50 minutos. alfabeto e hilera y socializan las definiciones de “lenguaje” de cada grupo. papers. 4. 4. en grupos de 2 ó 3. Nivel de elaboradas por los alumnos. web links.g Los docentes introducen el concepto de gramática generativa y destacan su utilidad para representar lenguajes finitos e infinitos. 4. 6 DESEMPEÑOS DE COMPRENSIÓN 4. confeccionen una breve monografía en la que se expliquen los conceptos de símbolo. 5.a (pre-presencial) Los docentes proveen bibliografía y se solicita que los alumnos. 4. y que con esos conceptos elaboren una definición de “lenguaje”.

Desempeño en el harán comentarios por escrito juego. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°5 DETALLE METAS PERSEGUIDAS 6. • Tiempo: 50 minutos. en grupos de 2 ó 3.a (pre-presencial) Se solicita que los alumnos. elaboradas por los alumnos.b (presencial) Los docentes repasan con los alumnos la jerarquía de gramáticas propuesta por Chomsky (Jerarquía de Chomsky). 10 . 5. Informal entre los alumnos y los docentes.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. 7 DESEMPEÑOS DE COMPRENSIÓN 5. 5. la “Jerarquía de Gramáticas” propuestas por él y elaboren una breve monografía al respecto. RECURSOS DIDÁCTICOS • Tarjetas para el juego El Intruso. Nivel de participación y de cada una da las monografías compromiso en las actividades. • Pizarra y fibrones. investiguen sobre Noam Chomsky.

d Los alumnos infieren desde los ejemplos de la actividad 6. 7 DESEMPEÑOS DE COMPRENSIÓN 6. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°6 DETALLE METAS PERSEGUIDAS 6. Capacidad de entre los alumnos y los identificación de las docentes. La otra mitad debe elaborar y fundamentar ejemplos de lenguajes que sí pueden ser generados por dichas gramáticas. limitaciones de las gramáticas. • Pizarra y fibrones.b Los alumnos conforman grupos de 3 ó 4 integrantes.d para las gramáticas libres de contexto (nivel 2 de la Jerarquía de Chomsky). Se repiten las actividades 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.b.b y los aspectos identificados en la actividad 6. EVALUACIÓN CONTINUA CRITERIOS : Desempeño en el RETROALIMENTACIÓN: Informal juego. • Tiempo: 50 minutos.c y 6.a Los participan del juego Encontrando el Compañero (ver Apéndice B) 6. 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). Nivel de participación y compromiso en las actividades. 11 . 6. 6.c las limitaciones de las gramáticas regulares. RECURSOS DIDÁCTICOS • Tarjetas para el juego Encontrando el Compañero. 6.

Calidad coevalúan los ejemplos.5.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. Calidad justificaciones y las gramáticas. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°7 DETALLE METAS PERSEGUIDAS 1. de las gramáticas diseñadas RECURSOS DIDÁCTICOS • Lenguajes • Pizarra y fibrones. las de las justificaciones.7 DESEMPEÑOS DE COMPRENSIÓN 7. • Indicar y justificar el nivel de la Jerarquía de Chomsky a la que pertenece el lenguaje. • Tiempo: 50 minutos.2. 12 . • Diseñar la gramática de menor potencia que lo genere.6.3.4. EVALUACIÓN CONTINUA CRITERIOS : calidad y variedad de RETROALIMENTACIÓN: los alumnos los ejemplos aportados.

7 DESEMPEÑOS DE COMPRENSIÓN 8. • Tiempo: • 1 semana para la realización de la monografía. • 30 minutos para la discusión (retroalimentación) en el aula.6. Informal entre los alumnos y los docentes.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.4.3. 13 .5. RECURSOS DIDÁCTICOS • Material bibliográfico. Enseñanza para la comprensión en Compiladores e Intérpretes DESEMPEÑO N°8 DETALLE METAS PERSEGUIDAS 1. de cada una da las monografías elaboradas por los alumnos.2. EVALUACIÓN CONTINUA CRITERIOS : calidad y RETROALIMENTACIÓN: los docentes profundidad del análisis harán comentarios por escrito descripto en la monografía.

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

Enseñanza para la comprensión en Compiladores e Intérpretes Apéndice A 15 .

generación de código intermedio. COMPILADORES E INTÉRPRETES. Condición de determinismo. hilera o cadena. Cross-Compilers (Compiladores Cruzados). Tokens. Pumping Lema (Lema de bombeo). Forma Normal de Noam Chomsky. Autómatas. Definiciones formales. Compiladores de Compiladores.y árboles sintácticos -sintax tree-. Pasadas. El agrupamiento de las fases. Gramáticas. Lenguajes Naturales y Lenguajes Formales. Lenguajes: definición y operaciones sobre lenguajes. Tabla de símbolos y manejo de errores. Higienización de Gramáticas Libres de Contexto. Equivalencia entre los modelos. Conceptos elementales: símbolo. Grafos. Derivadas de Expresiones Regulares. Compiladores Just-in-time. Representación de las derivaciones. árboles de derivación -parse tree. Representaciones formales de la sintaxis de los lenguajes libres de contexto. Gramáticas Libres de Contexto y Lenguajes Libres de Contexto. Componentes. Ventajas del uso de gramáticas. No terminales y Producciones. Definición formal. Tipos. Teoría de lenguajes formales. 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. Forma de Backus-Naur.Estructura de un traductor. Compiladores on-the-fly. generación de código final. alfabeto. Forma Normal de Sheila Greibach. Algoritmos de conversión: Construcción de subconjuntos. Operación. Bootstrapping (Arranque). patrones y lexemes. análisis semántico. Decompiladores. Metalenguajes. Derivaciones. UNIDAD II: TEORÍA DE LENGUAJES FORMALES. Atributos de los tokens. Traductores. Diagramas sintácticos. Compiladores e Intérpretes. Autómatas de pila. Precedencia y asociatividad. El rol del analizador lexicográfico. Gramáticas Regulares y Lenguajes Regulares. Clasificación de Traductores. Diseño de Autómatas Finitos. Máquinas Virtuales. Sentencias y formas sentenciales. Definición. Propiedades. Front-End o Análisis y Back-End o Síntesis. Definición formal. Autómatas finitos. Arquitectura de los traductores: su evolución. Máquinas de Turing. análisis sintáctico. Autómatas finitos determinísticos. Ambigüedad. Clasificación de gramáticas: la Jerarquía de Chomsky. Decidibilidad. El compilador Fortran. no determinísticos y de estados mínimos. Su relación con las gramáticas. Propiedades de los Lenguajes Libres de Contexto. Operaciones sobre hileras. Gramáticas formales. Diseño de compiladores. Gramáticas Sensibles al Contexto. Notación. Expresiones Regulares. Representación Matricial. Diagramas de transición. Autómatas limitados linealmente. gramáticas regulares y autómatas finitos. Los compiladores como autómatas. Determinismo en Autómatas de Pila. Los autómatas y su relación con la Jerarquía de Chomsky. Propiedades de los Lenguajes Regulares. Definición sintética de las fases de un compilador: análisis lexicográfico. Eliminación de Ambigüedad. Diseño de analizadores 16 . Teoría de Conjuntos. Gramáticas no Restringidas. Derivaciones canónicas: derivaciones leftmost (por izquierda) y rightmost (por derecha). optimización de código. lenguajes y computadoras. Algoritmo de McNaughton-Yamada-Thompson. Gramáticas propias. Sintaxis y Semántica de los lenguajes. Historia de los Traductores. UNIDAD III: TEORÍA DE AUTÓMATAS. UNIDAD IV: ANÁLISIS LEXICOGRÁFICO. Emuladores.

Left-value y Right-value. Enseñanza para la comprensión en Compiladores e Intérpretes lexicográficos. Tabla de símbolos. Lex. Ciclos. Técnicas Generales. El problema If-Then-Else en el parsing LR(k). Familias de compiladores. Labels. UNIDAD VII: TRADUCCIÓN Y GENERACIÓN DE CÓDIGO. Método CYK. Tablas del parser top-down: Conjuntos First. Errores semánticos. Palabras reservadas. concat e install. Yacc. case. El espacio string. ascendentes y descendentes. Gramáticas LL(k) y sus limitaciones. grafos. Modo Pánico. Análisis de conflictos en parsing LR(k). Modificación de gramáticas. Código intermedio. Atributos. Stack y Heap. Análisis sintáctico y gramáticas libres de contexto. registros. UNIDAD VIII: OPTIMIZACIÓN Y GENERACIÓN DE CÓDIGO FINAL. Técnicas de implementación: estática y dinámica. Chequeo de tipos. Esquemas de traducción dirigidos por la sintaxis. Rutinas Semánticas en parsers LL y en parsers shift-reduce. TP Yacc. Traducción de Rutinas y Funciones. Displays. Función de hashing. Técnica LR(k). Parsing Top-Down. Traducción dirigida por la sintaxis. Herramientas para la generación de analizadores sintácticos ascendentes. Portabilidad. UNIDAD VI: ANÁLISIS SEMÁNTICO Y CÓDIGO INTERMEDIO. Lookahead multicaracter. Fin de la entrada. Limitaciones de las gramáticas libres de contexto. Representación de tipos predefinidos y abstractos. Parsing bottom-up versus parsing top-down. Acciones semánticas. Propiedades del parsing LR(1). Formas de Representaciones intermedias: Árboles. Análisis comparativo. Tablas LR(0). Valores de retorno. Técnicas de precedencia: Precedencia de Operadores y Precedencia Simple. Consideraciones de diseño. Estructuras de ejecución condicional: sentencias if-then. 17 . Recuperación de errores sintácticos. if-then-else. Recuperación de errores semánticos. Registros de Activación. Cálculo y flujo de los valores de los atributos. Algoritmos greedy (glotón) y no greedy. Estructuras de loop: sentencias while. Producciones de error. Función. loop. El subsistema de entrada. Control de ambigüedad en parsers determinísticos. Representación intermedia versus generación directa. Criterios de diseño. Implementación de analizadores lexicográficos. Generadores LALR(k). Definiciones dirigidas por la sintaxis. Parsing determinístico y no determinístico. Backpatching. Compiladores multilenguajes y multi-target. Procesamiento de expresiones y asignaciones. Lookahead y Pushback. El analizador léxico de Fortran. Tuplas. Compiladores multi- pasada. Análisis comparativo de las diferentes representaciones. Buffers. constantes. Primitivas. Algoritmo de Jay Earley. Diagramas de transición. Operaciones asociadas: bypass. Paso de parámetros. El problema "Backward Branch" (salto hacia atrás). El problema "Forward Branch" (salto hacia adelante). Definiciones S-atribuídas y L-atribuídas. Análisis sintáctico Bottom-Up. Recuperación de errores léxicos. Precedencia y asociatividad de operadores. Stack Frames. Técnica SLR(k). Identificadores simples. Follows y Selection. Pila semántica controlada por el parser. for. Su traducción en compiladores de una o más pasadas. Tratamiento de dependencias de contexto en parsers libres de contexto. Encadenamiento estático y dinámico. Gramáticas Aumentadas. Comentarios. Técnicas de parsing: generales. Evaluación "Short-circuit". Triplas y cuádruplas. árboles binarios. Listas encadenadas. UNIDAD V: ANÁLISIS SINTÁCTICO. notación postfijo y código de tres direcciones. El problema If-Then-Else en el parsing LL(k). Procesamiento de declaraciones. La tabla de símbolos y los lenguajes de bloques. Conflictos shift-reduce y reduce-reduce. arrays. Parsers shift-reduce. Herramientas para la generación de analizadores lexicográficos. Alternativas de organización de un compilador. Compiladores de una pasada. Generadores LALR(1). Recursividad izquierda directa e indirecta. Atributos heredados y sintetizados. Ámbitos. Métodos de traducción. Flex. Parsers top-down y autómatas de pila. Método de Unger. Propiedades del parsing LL(1). Expresiones Boolenas y Operaciones Relacionales. Token de error. cadenas. Factorización. Parsers predictivos y recursivos descendentes. Representación de operaciones. flujo de datos y flujo de control. Representación de campos y registros. Espacios en blanco: políticas y tratamiento. Traducción de las estructuras de control. Estructuras de transferencia directa de control: exit. Máquinas abstractas. goto. repeat-until. getchar. Técnica LR(0). Lenguajes de programación como Representaciones intermedias. TP Lex. tablas hash. Técnica LALR(k).

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

Enseñanza para la comprensión en Compiladores e Intérpretes Apéndice B 19 .

generan lenguajes regulares. se suman los puntos de cada participante y se designan los ganadores. Luego de la última ronda. 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. 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. 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. cumplido el plazo. Aquellos que hayan contestado acertadamente obtienen un punto. en cada ronda se entrega a los participantes una ficha con un conjunto de elementos (gramáticas. 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. El docente determina desde el principio cuántas rondas se jugarán. def. 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. cada participante entrega solución al docente quien explica en la pizarra cuál era la solución correcta. 20 .

Luego de la última ronda. en cada una se entrega a los participantes una ficha con elementos relacionados de a pares. se le resta un punto). Aquel que encuentre los pares relacionados se hace acreedor a un punto (si la solución aportada es incorrecta. 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. 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 .