Ce projet est un compilateur pour le langage Language L, un langage de programmation similaire au C. Il a été implémenté en Java en utilisant SableCC pour l'analyse syntaxique et Nasm pour la génération de code assembleur. Fonctionnalités :
- Analyse syntaxique : Le compilateur utilise SableCC pour générer un analyseur syntaxique fiable qui permet de traiter efficacement les programmes écrits en Language L.
- Analyse sémantique : L'implémentation inclut une analyse sémantique pour détecter les erreurs de typage et assurer la cohérence du programme.
- Génération de code intermédiaire : Le compilateur génère un code intermédiaire à partir du code source en Language L.
Comment utiliser :
- Cloner le dépôt : Utilisez la commande git clone pour obtenir une copie locale du dépôt.
- Compiler le projet: Utilisez le makefile pour générer le compilateur.
- Exécuter le compilateur : Lancez le compilateur en spécifiant le fichier source en Language L en argument. Par exemple :
java Compiler mon_programme.l -v [niveau de verbosité]
- Exécuter le programme généré : Après avoir compilé avec succès un programme en Language L, exécutez le fichier exécutable généré.
Exemple de programme en Language L :
entier fibo(entier n)
{
si n < 2 alors {
retour 1;
}
sinon {
retour fibo(n - 1) + fibo(n - 2);
}
}
main()
{
ecrire(fibo(3));
}
Ce qu'il manque :
- Graphe d'analyse/interférence pour l'utilisations des registres