INFORMÁTICA Y SISTEMAS
UNIVERSIDAD MAYOR DE SAN SIMÓN
UMSS Informática y Sistemas

2010044 - Diseño de Compiladores

Programa Analítico de la Materia:
Descripción
JUSTIFICACIÓN GENERAL.

La madurez del área de compiladores es ejemplar en las Ciencias de la Computación. En sus inicios se ha desarrollado una teoría fundamental que con la evolución ha sido usada para dar soporte a sistemas cada vez más complejos de generación de programas.
Sin embargo las técnicas desarrolladas con los años son aplicables a muchos problemas cotidianos. Hoy en día muchos problemas se reducen al recorrido de estructuras (que en compiladores se llaman árboles de sintaxis abstracta) con el fin de extraer información a partir de la estructura, a la serialización y estructuración de flujos de información y a construir lenguajes de dominio específicos (que son lenguajes que describen la abstracción de un dominio de aplicación).

Las herramientas fundamentales usadas en el curso y que acortan la brecha semántica existente entre especificación e implementación son:

  • La programación funcional usando un lenguaje no estricto, y
  • Las gramáticas de atributos

La programación funcional permite especificar directamente el front-end del compilador usando análisis sintáctico recursivo descendente.
Herramientas para la generación de procesadores de lenguajes basadas en gramáticas de atributos por mucho tiempo han sido implementadas usando lenguajes estrictos. Una consecuencia de esto es que hay que planificar el cálculo de atributos, resultando en código adicional en el compilador generado. Los lenguajes no estrictos como Haskell calculan los resultados por demanda, y es así que esa parte del compilador se implementa automáticamente con este mecanismo incrustado en el lenguaje. La consecuencia de esto y del uso de otros sublenguajes para implementar los analizadores sintácticos y el scanner se tiene que en la implementación del compilador se reduce al uso de un único lenguaje de programación: Haskell. Esto acorta notablemente el ciclo de desarrollo de un compilador, permitiendo experimentar con diseños de lenguajes en forma ágil.

PROPÓSITOS GENERALES.

En este plan se propone un estudio y ejercitación de las técnicas de programación basadas en estructuras formales que se han desarrollado en el área de compiladores. Así, al finalizar este curso se espera que el estudiante sea capaz de:

  • analizar un problema y proponer estructuras gramaticales formales basadas en lenguajes que ayuden a estructurar un programa
  • derivar procesadores de estas estructuras formales a partir de su descripción gramatical formal y una gramática de atributos

OBJETIVOS GENERALES.

Los objetivos de esta materia son:

  • Mostrar al estudiante la arquitectura de un compilador
  • Mostrar al estudiante como se implementan los distintos elementos involucrados en la arquitectura del compilador
  • Mostrar al estudiante el concepto de gramática de atributos y ejercitar su uso escribiendo parte de un compilador
  • Conseguir habilidades para describir un problema en términos de un lenguaje y resolverlo aplicando las técnicas de compilación