bfbcompiler/README.md

117 lines
2.8 KiB
Markdown

# 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 <a name="requerimientos"></a>
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 <a name="compilación"></a>
### 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 <a name="ejecución"></a>
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 <a name="tests"></a>
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)