https://github.com/samyb2/latsi-language
Implement the new LATSI language with Ocaml and menhir.
https://github.com/samyb2/latsi-language
dune grammar-parser menhir ocaml ocamllex
Last synced: 9 months ago
JSON representation
Implement the new LATSI language with Ocaml and menhir.
- Host: GitHub
- URL: https://github.com/samyb2/latsi-language
- Owner: SamyB2
- Created: 2025-02-27T11:21:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-27T11:23:12.000Z (over 1 year ago)
- Last Synced: 2025-02-27T15:47:54.407Z (over 1 year ago)
- Topics: dune, grammar-parser, menhir, ocaml, ocamllex
- Language: OCaml
- Homepage:
- Size: 2.18 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GAS-Project
## Compilation et Nettoyage
- Pour compiler le projet, exécutez la commande suivante :
```shell
./exec.sh build
```
- Pour nettoyer le répertoire de travail, exécutez la commande suivante :
```shell
./exec.sh clean
```
## Exécution
- Après la compilation, un lien vers le fichier exécutable nommé **gas_project** sera créé.
- Pour exécuter le programme, utilisez la commande :
```shell
./gas_project
```
- Cela ouvrira un terminal où vous pourrez écrire votre programme Latsi.
- Vous pouvez également rediriger l'entrée standard vers un autre fichier en utilisant la commande
```shell
./gas_project < fic
```
- Le fichier `execTests.sh` permet d'exécuter les fichiers tests présents dans `Testing-files`
- Pour s-y faire vous devez executer la commande suivante :
```shell
./execTests.sh
```
## Fonctionnalités Implémentées
- Génération de tokens avec ocamllex.
- Définition d'une grammaire avec menhir.
- Construction d'un arbre de syntaxe abstrait.
- Exécution d'un programme LATSI avec l'instruction VEVERS.
- Extension 1 : Déclarations multiples de variables, par exemple `I = 1 , A = 2 * I , B = A - I`.
- Extension 2 : Fonctions MIN et MAX avec la syntaxe `MIN (expression {, expression})` et `MAX (expression {, expression})`.
- Extension 3 : Ajout d'une instruction SINON supplémentaire.
Il est désormais possible de compléter ou pas l'instruction `SI instruction ALORS instruction`
avec `SINON instruction`.
- Extension 4 : Ajout des `&&` `et` , `||` `ou` et `!` `not` pour les conditions
## Répartition des Tâches
**Matyas MARQUES MARTINS :**
- Définition des types Ocaml pour l'arbre de syntaxe abstrait.
- Élaboration de la grammaire du langage LATSI avec menhir.
- Ajout de l'extension 1.
- Ajout de l'extension 4.
**Sami BELMELLAT :**
- Génération des jetons avec ocamllex.
- Évaluation de l'arbre de syntaxe généré.
- Ajout des extensions 2.
- Ajout des extensions 3.
**Travail réalisé en commun :**
- Résolution des conflits SHIFT/REDUCE et REDUCE/REDUCE.
- Création de fichiers de test pour chaque version du projet.
- Organisation du répertoire du projet.
- Documentation du code.
## Auteurs
**Matyas MARQUES MARTINS**
**Sami BELMELLAT**