english Icono del idioma   español Icono del idioma  

Por favor, use este identificador para citar o enlazar este ítem: https://hdl.handle.net/20.500.12008/52203 Cómo citar
Registro completo de metadatos
Campo DC Valor Lengua/Idioma
dc.contributor.advisorAlberto, Pardo-
dc.contributor.advisorViera, Marcos-
dc.contributor.authorGazzano Núñez, José-
dc.contributor.authorCollares Arcos, Andrés-
dc.date.accessioned2025-10-22T18:45:03Z-
dc.date.available2025-10-22T18:45:03Z-
dc.date.issued2025-
dc.identifier.citationGazzano Núñez, J. y Collares Arcos, A. Compilación de un lenguaje funcional simple a LLVM [en línea] Tesis de grado. Montevideo: Udelar. FI. INCO, 2025.es
dc.identifier.urihttps://hdl.handle.net/20.500.12008/52203-
dc.description.abstractEste proyecto de grado tiene como objetivo la implementación de un lenguaje de programación funcional utilizando Haskell como lenguaje de desarrollo y la infraestructura de compilación LLVM (Low-Level Virtual Machine). El trabajo se enfoca en la implementación de un compilador y un intérprete para un lenguaje funcional simple, los cuales generan código en el lenguaje intermedio de LLVM (LLVM IR). La optimización y generación de código máquina son delegadas a las herramientas provistas por LLVM. El lenguaje funcional creado, denominado LambdaKal, basa su diseño en Kaleidoscope, que es el lenguaje de programación utilizado como ejemplo en la documentación oficial de LLVM. LambdaKal es un lenguaje tipado, conciso y expresivo, capaz de ejecutarse tanto a partir de archivos fuente como en un entorno interactivo REPL (Read-Eval-Print Loop) con un sistema de compilación en tiempo de ejecución o JIT (Just-In-Time compilation). LambdaKal cuenta con tres tipos de datos primitivos: enteros (Int), números en punto flotante (Double) y booleanos (Bool). Además, admite estructuras de datos como listas y tuplas, incluyendo tuplas anidadas. El lenguaje permite la definición de funciones, incluyendo funciones recursivas y de alto orden. En cuanto al control de flujo, ofrece construcciones if/else y la definición de contextos locales mediante expresiones let...in. La biblioteca estándar proporciona un conjunto de funciones para la manipulación de listas y tuplas, así como operaciones sobre tipos escalares como seno, coseno, valor absoluto, etc. También se incluyen funciones típicas de los lenguajes funcionales modernos, tales como map, filter, y foldr. Una característica destacada de LambdaKal es su capacidad para integrarse con funciones escritas en otros lenguajes como C, mediante el uso de bibliotecas compartidas dinámicas en formato .so (Shared Object). Esta funcionalidad permite extender el lenguaje y aprovechar funcionalidades de la biblioteca estándar de C como la función printf. Gracias al uso de primitivas de bajo nivel provistas por LLVM, se logró una implementación eficiente, con un rendimiento que en ciertas pruebas iguala o incluso supera al de lenguajes funcionales establecidos como Haskell. Además, es posible interpretar y compilar para múltiples arquitecturas gracias al uso de LLVM IR como objetivo de compilación. La arquitectura del compilador ha sido diseñada de manera modular para favorecer la extensibilidad y el mantenimiento del código. Asimismo, se desarrolló una extensa suite de pruebas automatizadas de regresión que permite trabajar sobre el proyecto con mayor confianza y estabilidad.es
dc.format.extent80 p.es
dc.format.mimetypeapplication/pdfes
dc.language.isoeses
dc.publisherUdelar. FI.es
dc.rightsLas obras depositadas en el Repositorio se rigen por la Ordenanza de los Derechos de la Propiedad Intelectual de la Universidad de la República.(Res. Nº 91 de C.D.C. de 8/III/1994 – D.O. 7/IV/1994) y por la Ordenanza del Repositorio Abierto de la Universidad de la República (Res. Nº 16 de C.D.C. de 07/10/2014)es
dc.subjectHaskelles
dc.subjectLLVMes
dc.subjectLambdaKales
dc.subjectKaleidoscopees
dc.subjectProgramación funcionales
dc.subjectLenguaje de programaciónes
dc.titleCompilación de un lenguaje funcional simple a LLVMes
dc.typeTesis de gradoes
dc.contributor.filiacionGazzano Núñez José, Universidad de la República (Uruguay). Facultad de Ingeniería.-
dc.contributor.filiacionCollares Arcos Andrés, Universidad de la República (Uruguay). Facultad de Ingeniería.-
thesis.degree.grantorUniversidad de la República (Uruguay). Facultad de Ingeniería.es
thesis.degree.nameIngeniero en Computación.es
dc.rights.licenceLicencia Creative Commons Atribución - No Comercial - Sin Derivadas (CC - By-NC-ND 4.0)es
Aparece en las colecciones: Tesis de grado - Instituto de Computación

Ficheros en este ítem:
Fichero Descripción Tamaño Formato   
GC25.pdfTesis de grado552,42 kBAdobe PDFVisualizar/Abrir


Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons