Este proyecto es una implementación de un prototipo de lenguaje de programación que implementa Join Calculus. El lenguaje ha sido desarrollado utilizando ANTLR4 y Java.
Join Calculus es un modelo de programación concurrente basado en el cálculo de procesos. Este proyecto implementa un subconjunto de Join Calculus, proporcionando una forma de describir y ejecutar programas concurrentes.
- Soporte para definiciones de canales y procesos.
- Soporte para operaciones de envío y recepción en canales.
- Soporte para operaciones de control de flujo como condicionales y bucles.
- Soporte para operaciones aritméticas y booleanas.
- Java 17 o superior (Usamos la version 21 LTS)
- Maven
Para compilar el proyecto, navegue hasta el directorio raíz del proyecto y ejecute el siguiente comando:
mvn clean package
Luego ejecute el siguiente comando para crear un archivo jar con todas las dependencias incluidas:
mvn clean compile assembly:single
Para ejecutar el proyecto, use el siguiente comando, reemplazando nombre-del-archivo
con el nombre de su archivo de entrada:
java -jar target/joincalculus-1.0-SNAPSHOT-jar-with-dependencies.jar
Adicionalmente hemos agregado un archivo compilado jar del proyecto, el cual puede ser ejecutado con el siguiente comando:
java -jar EJECUTABLE/joincalculus.jar
Puede encontrar ejemplos de programas escritos en nuestro lenguaje en el directorio src/test/resources/
.
Así como tambien en la carpeta EJECUTABLE/
se encuentran los archivos de prueba.
java -jar joincalculus.jar ej5.jcalc
- Cesar Fabian Rincon Robayo: [email protected]
- Julian Andres Vargas Gutierrez: [email protected]
- Diana Marcela Bello Lopez: [email protected]
- Javier Esteban Gonzalez Vivas: [email protected]
- Kevin Julian Gonzalez Guerra: [email protected]
Este proyecto está licenciado bajo los términos de la licencia MIT.
Las contribuciones son bienvenidas. Por favor, abra un problema o haga un pull request para sugerencias de mejoras o correcciones de errores.
Agradecemos a la Universidad Nacional de Colombia por proporcionar el entorno y los recursos para desarrollar este proyecto.