Skip to content

Compilador de FD4 para la materia Compiladores 2022 de LCC - FCEIA - UNR

License

Notifications You must be signed in to change notification settings

TomasCastroRojas/compiladores2022

 
 

Repository files navigation

Compiladores

Código para la materia Compiladores 2022 de LCC, FCEIA, UNR.

Este es el código a partir del cual los estudiantes empiezan a desarrollar un compilador.

Para fijar la versión de GHC y de los paquetes usaremos la herramienta stack.

Los pasos para instalar son:

stack setup
stack build

Luego se puede ejecutar con

stack run

o cargar el entorno interactivo GHCi

stack ghci

stack ghci src/TypeChecker.hs

También se pueden cargar archivos. Desde stack:

stack run -- miprograma.fd4

En general, los argumentos a nuestro programa se escriben luego de --. Por ejemplo,

% stack run -- --help
Compilador de FD4 de la materia Compiladores 2022

Usage: compiladores-exe [(-t|--typecheck) | (-k|--CEK) | (-m|--bytecompile) | 
                          (-r|--runVM) | (-i|--interactive) | (-e|--eval) | 
                          (-c|--cc)] [-o|--optimize] [FILES...]
  Compilador de FD4

Available options:
  -t,--typecheck           Chequear tipos e imprimir el término
  -k,--CEK                 Ejecutar en la CEK
  -m,--bytecompile         Compilar a la BVM
  -r,--runVM               Ejecutar bytecode en la BVM
  -i,--interactive         Ejecutar en forma interactiva
  -e,--eval                Evaluar programa
  -c,--cc                  Compilar a código C
  -o,--optimize            Optimizar código
  -h,--help                Show this help text

Para compilar a Bytecode debe hacerse del siguiente modo

stack run -- -m miprograma.fd4

Esto crea un archivo con el mismo nombre pero extension .bc Para ejecutar hay dos opciones. Utilizar la maquina abstracta en Haskell o en C. En Haskell es simplemente

stack run -- -r miprograma.bc

En cambio en C, primero debemos compilar la maquina. Se encuentra en el directorio vm. Instructivo aquí Finalmente ejecutamos

vm/macc miprograma.bc

Otra opción es compilar programas fd4 a lenguaje C. Para esto

stack run -- -c miprograma.fd4

Esto crea el mismo programa pero con extension .c. Luego compilamos con gcc

gcc runtime.c -lgc miprograma.c

gcc -o miejecutable runtime.c -lgc miprograma.c

Ejecutamos

./a.out

./miejecutable

Por último, se incluye una suit de tests para verificar que todos los backends coincidan en el resultado. Para correr los tests

make test

About

Compilador de FD4 para la materia Compiladores 2022 de LCC - FCEIA - UNR

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 83.9%
  • C 10.5%
  • Makefile 5.6%