PROCESADORES DE LENGUAJES

Segundo Ciclo de Ingeniería Informática.-
2006-07

Este curso ha sido movido al servidor Moodle de la Facultad de Ciencias:

http://e3s.fis.usal.es/moodle/

Profesores:

            Luis Alonso Romero, Catedrático de Ciencia de la Computación

            Vivian López Batista, Profesora Titular de Ciencia de la Computación.

Créditos: 9 troncales (6 de teoría y 3 de prácticas). 

Objetivo:

Proporcionar una panorámica de los compiladores de lenguajes, tanto desde el punto de vista teórico (análisis de léxico, sintáctico y semántico) como de algunas de las herramientas de construcción de traductores existentes.

Programa:

Teoría:

  1. Introducción. Generalidades. Historia. Paradigmas de programación. Compiladores.
  2. Aspectos formales. Definiciones. BNF. Lenguajes Formales. Gramáticas. Análisis sintáctico. Grafos sintácticos.
  3. Análisis de léxico. Tablas de símbolos. Herramientas.
  4. Análisis sintáctico. Construcción de analizadores. Herramientas. 
  5. Semántica y análisis de tipos. Traducción dirigida por la sintaxis. Gramáticas Atribuidas. 
  6. Gestión y manejo de errores de léxico, sintácticos y semánticos.
  7. Generación y Optimización de código. Código intermedio. Gestión de memoria. 
  8. Aspectos de implementación. Enlazadores. Cargadores. 
Prácticas:

      9.Lex, yacc, jlex, lisa, cup

Bibliografía:
 

Teufel, Schmidt.- Compiladores: conceptos fundamentales. Addison Wesley 95

K.C. Louden.- Construcción de compiladores.- Thomson 2004.

Aho, Sethi, Ullmann.- Compiladores: principios, técnicas y herramientas. Addison 90.

Garrido, Inesta, ..- Diseno de Compiladores.- Universidad de Alicante 2002.

Bennet.- Introduction to Compiler techniques. Mc Graw Hill, 96

Levine, Mason, Brown.- Lex&Yacc.- O'Reilly 92

Levine.- Linkers and Loaders.- Academic Press 2000

Bal. Grune.- Programming Language Essentials. Addison Wesley 97.

Bal, Grune, Jacobs, Langendoen.- Modern Compiler Design. Wiley 2001

Examen:

Teoría (60%) : Test y ejercicio práctico sobre las partes 1 a 8. 

Práctica (40%): Realización de un trabajo que se propondrá en la última semana de Marzo 2007.El trabajo consistirá en la realización de un compilador, en C o en Java, para un lenguaje sencillo con una gramática predefinida. Se dará un plazo de realización, y los trabajos habrá que presentarlos y defenderlos de forma individual, en fechas que se señalarán.Para la superación de laasignatura, es necesario aprobar cada una de las dos partes. 



I
Notas y enlaces :
 
 

a.- Protegidos por contraseña (sólo para alumnos de USAL):


Apuntes Transparencias 
















 
  Transparencias de yacc (Marzo 2006)
 
Transparencias de lex (Mar 2006) 

 Herramientas en Java 

  Trabajo 2006

 

b.- De acceso libre

  • Herramientas en Java (Abr 2005)
  • Paginas de Jaccie (Java based compiler compiler)
  • Compiladores a tope (Univ Malaga)
    Apuntes Univ. Carnegie
  • Java a tope (Univ. de Malaga)
  •   Conceptos básicos (Univ. Oviedo)
  • Apuntes de Universidad de Sevilla
  •   Paginas de CUP
  • Manual de flex en castellano
  •   Catalogo de herramientas de construccion
  • Manual de bison en castellano
  •  
    "Sabores" de lex y yacc sobre distintos Unix
     
    Ejercicios de lex
     
  • Ejemplos de conjuntos primero-siguiente. Uned. Mar 2004


  •