# BFBCompiler Un compilador construído con Flex y Bison. ## Tabla de contenidos * [Requerimientos](#requerimientos) * [Compilación](#compilación) * [Ejecución](#ejecución) * [Testeos](#tests) ## Requerimientos Debe instalar - [Bison v3.8.2](https://www.gnu.org/software/bison/) - [CMake v3.22.2](https://cmake.org/) - [Flex v2.6.4](https://github.com/westes/flex) - [GCC v11.1.0](https://gcc.gnu.org/) - [Make v4.3](https://www.gnu.org/software/make/) - [Octave v7.1.0](https://www.gnu.org/software/octave) - [Python v3.10.5](https://www.python.org/) - [Pip v21.0](https://pip.pypa.io/en/stable/installation/) - [SymPy v1.5.1](https://pypi.org/project/sympy/) - [Symbolic v2.9.0](https://octave.sourceforge.io/symbolic/) ### Linux/macOS Estos se encuentran disponibles en el repositorio de la vasta mayoría de distribuciones. Una vez instalados `bison`, `cmake`, `flex`, `gcc`, `make`, `octave` y `python` debe instalar `SymPy` y el paquete `symbolic` de `octave`. Se recomienda usar `pip` para instalar `SymPy`: ```bash pip install --user sympy==1.5.1 export PATH="$PATH:$HOME/.local/bin" ``` Luego, debe instalar `symbolic` en octave corriendo: ```bash octave ``` y una vez adentro ```bash pkg install -forge symbolic ``` ### 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_. Consulte cómo instalar `SymPy`. La instalación de `symbolic` es idéntica al paso anterior. ## Compilación ### Linux/macOS Para compilar todos los archivos, se debe ejecutar el script `compile.sh` (desde la carpeta raíz del proyecto). ### Windows Debe correr `cmake -S . -B bin` y luego abrir la solución generada `bin/Compiler.sln` con el IDE _Microsoft Visual Studio 2022_. ## Ejecución El paso anterior generará el ejecutable `bin/BFBCompiler`. Usted puede pasarle tanto un archivo: ```bash ./bin/BFBCompiler ${FILE} ``` como entrada estándar: ```bash echo "fun g = x^2;" | ./bin/BFBCompiler ``` Esto, a su vez, generará un archivo _.m_ que debería correrse como: ```bash octave bottler.m ``` Para que este proceso sea más fácil se le provee un archivo `run.sh` (que ejecuta la compilación y octave). Ahora, usted podrá pasarle un programa haciendo: ```bash ./run.sh ${FILE} ``` o también podría directamente escribir el programa (como se mencionó antes): ```bash ./run.sh "fun g = x^2;" ``` ## Testeos Puede correrlos con: ```bash ctest --test-dir bin ``` De esta manera se correrán todos los casos de uso que aparecen en `doc/examples`. # Autores - Barmasch, Juan Martín (61033) - Bellver, Ezequiel (61268) - Lo Coco, Santiago (61301)