117 lines
2.8 KiB
Markdown
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)
|