2.8 KiB
BFBCompiler
Un compilador construído con Flex y Bison.
Tabla de contenidos
Requerimientos
Debe instalar
- Bison v3.8.2
- CMake v3.22.2
- Flex v2.6.4
- GCC v11.1.0
- Make v4.3
- Octave v7.1.0
- Python v3.10.5
- Pip v21.0
- SymPy v1.5.1
- Symbolic v2.9.0
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
:
pip install --user sympy==1.5.1
export PATH="$PATH:$HOME/.local/bin"
Luego, debe instalar symbolic
en octave corriendo:
octave
y una vez adentro
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:
./bin/BFBCompiler ${FILE}
como entrada estándar:
echo "fun g = x^2;" | ./bin/BFBCompiler
Esto, a su vez, generará un archivo .m que debería correrse como:
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:
./run.sh ${FILE}
o también podría directamente escribir el programa (como se mencionó antes):
./run.sh "fun g = x^2;"
Testeos
Puede correrlos con:
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)