Teoría de Lenguajes
Teoría de Lenguajes es una materia que tiene como objetivo presentar las nociones de lenguaje formal y de sintaxis y semántica de lenguajes, imprescindibles para la construcción de compiladores. Pertenece al Departamento de Computación y según el plan de la carrera, debería cursarse en Cuarto Año. Es correlativa de Lógica y Computabilidad. Se cursa los Lunes y Jueves.
Programa
Primera Parte
Introducción. Lenguajes y gramáticas. Clasificación de Chomsky. Lenguajes regulares, Autómatas. Expresiones regulares. Equivalencias entre expresiones regulares, gramáticas regulares y autómatas. Lema de pumping. Minimización de autómatas. Decidibilidad de problemas básicos y propiedades de clausura. Analizadores lexicográficos. Lenguajes independientes de contexto. Arboles de derivación. Lema de pumping para lenguajes independientes de contexto, Gramáticas reducidas. Autómatas de pila. Lenguajes determinísticos, Equivalencias entre autómatas de pila y gramáticas libres de contexto.
Segunda Parte
Lenguajes tipo 1 y tipo 0. Máquinas asociadas. Parsers ascendentes y descendentes. Método LL(1). Parser descendente recursivo y por tablas. Transformación de gramáticas. Propiedades de las gramáticas LL(1). Métodos ascendentes. Métodos de precedencia. Métodos LR. LR(0). Propiedades. Métodos LR(0), SLR(1), LR(1) y LALR(1). Gramáticas de atributos. Definiciones guiadas por la sintaxis. Esquemas de traducción. Aplicación al análisis semántico y la generación de código. Semántica de los lenguajes de programación. Semántica operacional natural. Semántica operacional de computación.
Prácticas
Primer Parcial
- Práctica 0: Preliminares
- Práctica 1: Gramáticas Regulares y Autómatas Finitos
- Práctica 2: Expresiones regulares
- Práctica 3: Autómatas finitos -Continuación-
- Práctica 4: Lenguajes regulares y lema de pumping
- Práctica 5: Traductores finitos
- Práctica 6: Gramáticas libres de contexto y autómatas de pila
Segundo Parcial
- Práctica 7: Maquinas de Turing y ALL
- Práctica 8: Escritura y simplificacion de GLC
- Práctica 9: Parsers descendentes
- Práctica 10: Gramaticas y parsers de precedencia
- Práctica 11: Gramaticas y parsers LR
- Práctica 12: Gramaticas de atributos y TDS
Apuntes
Ejercicios Resueltos
- Ej. de Pumping para regulares: contiene una explicación detallada de un ejercicio de la guía de Lema de Pumping para lenguajes regulares.
- Soluciones Guía 8: Mini apunte y soluciones a ejercicios de la Guía 8
Apuntes de Clase
- Apuntes de clase: los apuntes que entrega Julio en la clase, con (bastantes) correcciones y algunas anotaciones extra.
Primer Parcial
Segundo Parcial
Final
- Ejemplos: Ejemplos de lenguajes y gramáticas vistos en la materia.
- Apunte/Resumen de Teoría de Lenguajes, preparado por un alumno para rendir el final, y escrito en base a las clases teóricas (y complementado con las clases prácticas y un poquito de la bibliografía) del primer cuatrimestre de 2022. Contiene todos los temas que se vieron en la cursada, incluyendo teoremas con (generalmente) sus demostraciones.
- Apunte de Teoría de Lenguajes, por Julián Sackmann: contiene la parte de Julio y unos mínimos comentarios sobre parsing no determinístico. Preparado en 2015. Está en formato EPUB, para leer fácilmente desde eReaders.
- Notas de estudio de Raul Latashen (Fuente original)
- Apunte para el final de Soledad Ramusio
- Demostraciones: Lista de las demostraciones vistas en la materia.
- Preguntas: Lista de algunas preguntas de final tomados en los últimos años.
- Preguntas 2022: Lista provista por Verónica Becher. Los finales fueron a libro abierto y tuvieron ejercicios de ese estilo (ninguno exactamente como esos).
Finales
Ver en Demostraciones (Teoría de Lenguajes) la nota sobre demostración de lema de pumping para LLC, lo toman siempre.
- Final del 13/06/23 Resolución
- Finales virtuales
- Final del 25/09/20
- Final del 28/02/20
- Final del 21/02/20
- Final del 13/12/19
- Final del 13/11/19
- Final del 27/12/18
- Final del 08/08/18
- Final del 13/11/17
- Final del 19/05/17
- Final del 20/12/16
- Final del 26/07/16
- Final del 09/12/15
- Final del 19/02/15
- Final del 22/12/14
- Final del 12/09/14
- Final del 17/09/10
- Final del 11/08/08
Parciales
Primeros Parciales
- Primer parcial 1C 2023 (Resuelto)
- Primer parcial 1C 2022
- Primer parcial 1C 2021
- Primer Recuperatorio 2C 2020
- Primer Parcial 2C 2019 (Resuelto)
- Primer Recuperatorio 1C 2019 (Resuelto)
- Primer Parcial 1C 2019 (Resuelto)
- Primer Recuperatorio 2C 2018
- Primer Parcial 1C 2018
- Primer Parcial 1C 2017: resolución (pdf),
- Primer Parcial 1C 2016: ej1, ej2, ej3,
- Primer Parcial 1C 2012
- Primer Parcial Recuperatorio 2C 2006
Segundos Parciales
- Segundo Parcial 2C 2021 (Resuelto)
- Segundo Recuperatorio 1C 2020 (Resuelto)
- Segundo Parcial 1C 2020 (Resuelto)
- Segundo Parcial 2C 2019 (Enunciado) (Resolución)
- Segundo Recuperatorio 1C 2019 (Resuelto)
- Segundo Parcial 1C 2019 (resuelto)
- 2 Recu 2C 2018
- Segundo Parcial 1C 2018
- Segundo Parcial Recuperatorio 1C 2016: ej1, ej2, ej3
- Segundo Parcial 1C 2016: ej3
- Segundo Parcial 2C 2012
- Segundo Parcial 2C 2006
- Segundo Parcial Recuperatorio 2C 2006
- Segundo Parcial 1C 2006
- Segundo Parcial Recuperatorio 1C 2006
Enlaces externos
- Curso de compiladores de Stanford
- Slides de un curso de compiladores de Oscar Bonilla
- Grammophone Genera autómatas y tablas LR(0), SLR, LALR, LR(1) y chequea algunas propiedades.