/teambuilder

Primary LanguageCMIT LicenseMIT

Teambuilder

Un compilador para crear formaciones de equipos de futbol.

Basado en el compilador "Flex-Bison-Compiler" de Agustin Golmar: https://github.com/agustin-golmar/Flex-Bison-Compiler

Grupo

  • Manuel Esteban Dithurbide (62057)
  • Martin Hecht (62041)
  • Tomas Camilo Gay Bare (62103)
  • Tobias Perry (62064)

Sintaxis

  • START
  • TEAM 'teamName'[opcional] OF playerAmount PLAYERS
  • FORMATION
  • formation [pueden ser mas de una]
  • Tag LINEUP/LINEUPNONUM
  • number: 'player name' [en caso de LINEUPNONUM solo se requiere nombre del jugador] {lista}
  • SUBSTITUTES/SUBSITUTESNONUM [debe coincidir con el tipo de LINEUP] [opcional]
  • number: 'player name' {lista}
  • METADATA [opcional]
  • DATE: 'fecha' [opcional] RESULT 'result' [opcional]
  • END

Obs: los whitespaces son ignorados

Algunos casos de uso (puede encontrar mas en la carpeta de tests):

START
TEAM 'The Red Devils' OF 5 PLAYERS
FORMATION
2-1-1
LINEUP
1: 'El Manco'
2: 'Alves Daniel'
3: 'Pedrito Lopez'
4: 'Gaston Perez'
5: 'Pepito Radiactivo'
SUBSTITUTES
6: 'La Maquina'
7: 'Pedrito'
METADATA
DATE:'07-07-2001' RESULT:'5-0'
END
START
TEAM OF 5 PLAYERS
FORMATION
2-1-1
LINEUPNONUM
'El Manco'
'Alves Daniel'
'Pedrito Lopez'
'Gaston Perez'
'Pepito Radiactivo'
SUBSTITUTESNONUM
'La Maquina'
'Pedrito'
END

Requerimientos

Para construir el compilador, se requieren las siguientes dependencias:

Si en lugar de trabajar con un entorno Linux, se está construyendo el proyecto sobre un entorno Microsoft 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.

Construcción

Para construir el proyecto por completo, ejecute en la raíz del repositorio los siguientes comandos (en Linux):

user@machine:path/ $ chmod u+x --recursive script
user@machine:path/ $ script/build.sh

En un entorno Microsoft Windows, en cambio, se debe ejecutar:

user@machine:path/ $ script\build.bat

Luego se deberá abrir la solución generada bin\Compiler.sln con el IDE Microsoft Visual Studio 2022. Los ejecutables que este sistema construye se depositan dentro del directorio bin\Debug y bin\Release, según corresponda.

Ejecución

Para compilar un programa, primero cree un archivo vacío denominado program (o el nombre que desee), con el siguiente contenido:

START
TEAM 'The Red Devils' OF 5 PLAYERS
FORMATION
2-1-1
LINEUP
1: 'El Manco'
2: 'Alves Daniel'
3: 'Pedrito Lopez'
4: 'Gaston Perez'
5: 'Pepito Radiactivo'
SUBSTITUTES
6: 'La Maquina'
7: 'Pedrito'
METADATA
DATE:'07-07-2001' RESULT:'5-0'
END

Luego, ejecute el compilador desde el directorio raíz del proyecto, o desde cualquier otro lugar indicando el path hacia el script start.sh y pasando por parámetro el path hacia el programa a compilar:

user@machine:path/ $ script/start.sh program

En Windows:

user@machine:path/ $ script\start.bat program

Si el programa se compila sin errores y pasa las verificaciones, se generara un archivo imageGenerator.py dentro de la carpeta output en la raiz del proyecto.

Esta carpeta output se puede exportar y correr para generar la imagen deseada.

Testing

En Linux:

user@machine:path/ $ script/test.sh

En Windows:

user@machine:path/ $ script\test.bat

Si desea agregar nuevos casos de uso, deberá crear un archivo por cada uno, que contenga el programa a testear dentro de las carpetas test/accept o test/reject según corresponda (es decir, si el mismo debe ser aceptado o rechazado por el compilador).