Desarrollar un compilador para el lenguaje HULK (Definición del Lenguaje) que:
- Compile código HULK y permita su ejecución.
- Genere código intermedio LLVM, el cual podrá ser:
- Interpretado con herramientas existentes.
- Compilado a lenguaje máquina.
- Ejecutado en una máquina virtual.
- No se aceptan intérpretes directos (sin generación de código intermedio).
Los equipos están formados por tres integrantes. En casos excepcionales y con previa aprobación del colectivo se aceptarán equipo de dos estudiantes.
- C, C++ o Rust (a elección del equipo).
| Categoría | Elementos |
|---|---|
| Requisitos Mínimos | Expresiones, Funciones, Variables, Condicionales, Ciclos, Tipos, Chequeo de Tipos. |
| Features Extra | Protocolos, Iterables, Vectores, Functores, Macros (sintaxis modificable). |
- Nota sobre Features Extra:
- Su implementación (aunque con sintaxis adaptada) puede mejorar la nota final del proyecto y, previa coordinación, la nota en Lenguajes de Programación.
- Reportes Obligatorios:
- Errores semánticos: Informar la máxima cantidad de errores detectados en una sola pasada.
- Errores en lexer y parser: Es opcional reportar más de un error, pero se valora la robustez.
La asignatura se divide en tres ejes:
- Proyecto de Compilación (obligatorio).
- Conocimiento Teórico del proceso de Compilación.
- Teoría de Lenguajes y Autómatas.
Para evaluar teoría de lenguajes se realizará una prueba intrasemestral, de no aprobar este contenido deberá evaluarlo en las pruebas finales.
Los cuatro temas clave (deben aprobarse con Suficiente o Excelente):
- Lexer
- Parser
- Chequeo Semántico
- Generación de Código
- Uso de herramientas generadoras (e.g., Flex, Bison):
- No eximen los temas de Lexer y Parser a menos que se implementen los generadores desde cero.
- Chequeo Semántico y Generación de Código:
- Solo se evalúan como Excelente mediante el proyecto.
- Tienen mayor peso que las evaluaciones escritas.
- 3 oportunidades para aprobar: final, re-evaluación y "mundial".
- Nota Final por Tema:
- Máximo entre:
- Nota del proyecto.
- Nota del examen final.
- Nota de re-evaluación.
- Nota de "mundial".
- Máximo entre:
- Las decisiones de diseño (especialmente en features extra) deben documentarse en el repositorio.
- La coordinación con el colectivo de profesores es esencial para validar mejoras de nota cruzadas entre asignaturas.
- Un compilador es un producto de software que se asume sin errores, por tanto, robustez y rigurosidad en su implementación deben ser prioridad.