Skip to content

Yue-laure/projet-compilation

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Présentation du projet

Il s'agit d'un projet de L3 visant à créer son propre (petit) langage de programmation, à 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.

MVaP et ANTLR4

On utilise une version spécifique de MVaP et ANTLR4, qui est disponible dans le dossier tools.

Initialisation

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")

Utilisation

mvap

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

mvap_debug

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.

Problèmes courants

Windows (WSL)

syntax error near unexpected token `$'{\r''

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 77.2%
  • ANTLR 15.5%
  • Shell 4.6%
  • Python 1.8%
  • Makefile 0.9%