/TLA

Primary LanguageCMIT LicenseMIT

✗

Compilador Flex/Bison

Un compilador vacío de ejemplo construido con Flex y Bison.

Requerimientos

Para construir el compilador, se requieren las siguientes dependencias:

Si en lugar de trabajar con un entorno Linux, se está construyendo el proyecto sobre un entorno Microsoft Windows, se debe instalar Microsoft Visual Studio 2022 con las extensiones para desarrollar aplicaciones en C/C++, así como también las herramientas requeridas, con excepción del compilador GCC y la herramienta Make.

Construcción

Para construir el proyecto por completo, ejecute en la raíz del repositorio los siguientes comandos (en Linux):

user@machine:path/ $ chmod u+x --recursive script

luego ejecutar alguno de los siguientes 2 comandos

user@machine:path/ $ script/build.sh
user@machine:path/ $ make all

En un entorno Microsoft Windows, en cambio, se debe ejecutar:

user@machine:path/ $ script\build.bat

Luego se deberá abrir la solución generada bin\Compiler.sln con el IDE Microsoft Visual Studio 2022. Los ejecutables que este sistema construye se depositan dentro del directorio bin\Debug y bin\Release, según corresponda.

Ejecución

Para compilar un programa, primero cree un archivo vacío denominado program (o el nombre que desee), con el siguiente contenido:

// Crear un nuevo arbol RBT
new RBT t1;

// Luego de cada modificacion, el arbol se balancea internamente
insert t1 1;
insert t1 2;
insert t1 3;

// Imprime el arbol balanceado como Red-Black-Tree
print t1;

// Elimina el nodo que contiene el 1
remove t1 1;

// Copia t1 (RBT) en t2 (AVL)
new AVL t2 <- t1;

// Imprime el arbol balanceado como AVL TREE
print t2;

Luego, ejecute el compilador desde el directorio raíz del proyecto, o desde cualquier otro lugar indicando el path hacia el script start.sh y pasando por parámetro el path hacia el programa a compilar:

user@machine:path/ $ script/start.sh program

o asi:

user@machine:path/ $ make run FILE=./program

En Windows:

user@machine:path/ $ script\start.bat program

Deberia generar 2 imagenes, una con el arbol en RBT otra con el arbol en AVL

Testing

En Linux:

user@machine:path/ $ script/test.sh

o asi:

user@machine:path/ $ make test

En Windows:

user@machine:path/ $ script\test.bat

Si desea agregar nuevos casos de uso, deberá crear un archivo por cada uno, que contenga el programa a testear dentro de las carpetas test/accept o test/reject según corresponda (es decir, si el mismo debe ser aceptado o rechazado por el compilador).