Il s'agit d'un projet de L3 visant à créer son propre (petit) langage de programmation.
Le langage est réalisé à l'aide de deux outils :
- ANTLR4 pour gérer la grammaire, l'analyse lexicale et syntaxique,
- MVàP (Machine Virtuelle à Pile), qu'on peut considérer comme de l'assembleur simplifié sur plusieurs points, soit un langage de (très) bas niveau.
Le projet est structuré de cette façon :
Contient des ressources liées au projet, telles que des images.
Documentation du projet
Code source du projet, contenant le fichier de grammaire
.g4
Tests
Fonctions utiles, ANTLR4 (v4.9.2) et MVaP
On utilise une version spécifique de MVaP et ANTLR4, qui est disponible dans le dossier tools
.
On suppose que, à chaque commande exécutée, on se situe dans le dossier racine projet-compilation
:
cd projet-compilation # on suppose qu'on est dans ce dossier
On commence par charger les fonctions :
. tools/functions.sh # (on peut remplacer le "." par "bash")
On utilise principalement la commande mvap
qui permet de tout faire (génération des fichiers ANTLR4, génération du code MVaP avec grun
, puis compilation et exécution du code MVaP).
mvap 'print(2 + 3)' # affiche 5
mvap -f fichier.txt # prend en entrée fichier.txt
En cas de problème, on utilise la commande mvap_debug
, avec la même syntaxe :
mvap_debug 'print(2 + 3)'
mvap_debug -f fichier.txt
Cette commande affichera d'abord tous les tokens reconnus par la grammaire, puis le code MVaP généré, et enfin la trace d'exécution MVaP.
Ce problème vient de la différence dans la façon dont sont gérés les retours à la ligne entre Windows et Linux.
Il suffit de sélectionner tout le code dans tools/functions.sh
(Ctrl+A), puis de le copier/coller directement dans le terminal, et faire Entrée
.