Co-authored-by: Ezequiel Bellver <ebellver@itba.edu.ar> Co-authored-by: Juan Barmasch <jbarmasch@itba.edu.ar> |
||
|---|---|---|
| doc | ||
| src | ||
| .gitignore | ||
| CMakeLists.txt | ||
| compile.sh | ||
| LICENSE.md | ||
| README.md | ||
| run.sh | ||
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)