Ce projet est un compilateur pour le langage Java, développé dans le cadre du cours de compilation 2025. Il analyse des programmes Java en entrée, effectue une analyse lexicale, syntaxique et sémantique, génère des quads (code intermédiaire), et produit un fichier assembleur. Le projet inclut également une interface graphique développée avec Tkinter pour faciliter l'interaction avec le compilateur.
src/: Contient tous les fichiers sources.lex.l: Analyseur lexical (Lex/Flex).parser.y: Analyseur syntaxique (Yacc/Bison).quads.c,quads.h: Gestion des quads (code intermédiaire).symbol_table.c,symbol_table.h: Gestion de la table des symboles.semantics.c,semantics.h: Analyse sémantique.gui.py: Interface graphique en Tkinter.
build/: Fichiers objets générés (ignoré dans Git).bin/: Exécutable généré (compilateur) (ignoré dans Git).test/: Dossier pour les fichiers de test (non inclus actuellement).Projet_compil_2025-1.pdf: Documentation du projet.
Pour compiler et exécuter ce projet, vous aurez besoin des outils suivants :
- GCC : Compilateur C.
- Flex : Pour générer l'analyseur lexical.
- Bison : Pour générer l'analyseur syntaxique.
- Python 3 : Avec la bibliothèque Tkinter pour l'interface graphique.
- Installez Tkinter si nécessaire :
pip install tk
- Installez Tkinter si nécessaire :
- Make : Pour automatiser la compilation.
Sur Ubuntu/WSL, vous pouvez installer ces dépendances avec :
sudo apt update
sudo apt install build-essential flex bison python3 python3-pip
pip install tk- Clonez le dépôt GitHub :
git clone https://github.com/ramzirn/Java-compiler
- Accédez au dossier du projet :
cd Java-compiler
La commande suivante compile le compilateur et lance l'interface graphique Tkinter :
make guiL'interface graphique vous permettra d'interagir avec le compilateur, par exemple en sélectionnant un fichier Java à compiler.
- Créez un dossier
test/et ajoutez un fichier Java de test (ex.test.java) :mkdir test touch test/test.java - Ajoutez un programme Java simple dans
test.java, par exemple :class Test { public static void main(String[] args) { System.out.println("Hello, World!"); } }
- Exécutez le compilateur sur ce fichier :
Cela générera un fichier
make testtest/output.asmcontenant le code assembleur.
Pour supprimer les fichiers générés (objets, exécutables, fichiers de test) :
make cleanPour un nettoyage complet (y compris les dossiers temporaires comme venv/) :
make distclean- Forkez le dépôt et clonez-le localement.
- Créez une branche pour vos modifications :
git checkout -b ma-nouvelle-fonctionnalite
- Faites vos modifications et testez-les.
- Poussez vos changements et créez une Pull Request.
- Le dossier
test/n'est pas inclus par défaut. Vous devez le créer manuellement pour utiliser la règlemake test. - Assurez-vous que l'heure de votre système est synchronisée pour éviter des avertissements avec
make(sous WSL, synchronisez l'heure avecsudo ntpdate pool.ntp.org).
- Ramzi Bouter
Ce projet est sous licence MIT (à confirmer selon vos préférences).