Un compilateur pédagogique développé en Java dans le cadre du module de Compilation. Il analyse un sous-ensemble du langage PHP, avec un focus particulier sur la structure de contrôle foreach, la gestion des variables dynamiques et les expressions arithmétiques.
✨ Nouveauté : Le projet inclut une Interface Graphique (Mini IDE) pour écrire et compiler le code visuellement.
Vous pouvez télécharger la dernière version exécutable (.jar) directement depuis les releases GitHub :
➡️ Télécharger la dernière version
- Éditeur de code : Zone de texte pour écrire vos scripts PHP.
- Console intégrée : Affiche le résultat de l'analyse ou les erreurs avec précision.
- Contrôles : Boutons pour compiler et effacer le contenu.
- Technique : Automate à états finis manuel (lecture caractère par caractère).
- Support :
- Mots-clés :
foreach,as - Variables :
$maVariable,$compteur - Nombres entiers
- Opérateurs :
+,-,*,/,=,++,-- - Symboles :
{,},(,),; - Signature Spéciale :
Said,Tadjine
- Mots-clés :
- Technique : Analyse Descendante Récursive.
- Priorité des opérateurs : La multiplication
*et la division/sont traitées avant l'addition+et la soustraction-. - Expressions complexes : Supporte les parenthèses
($a + 1) * 5. - Gestion d'erreurs : Système robuste qui indique le token attendu en cas d'erreur syntaxique.
Le compilateur valide la grammaire suivante :
Z (Axiome) -> S FIN
FIN -> (Fin du fichier)
S -> Instruction S | ε
Instruction -> Foreach | Affectation | Signature
Foreach -> "foreach" "(" VARIABLE "as" VARIABLE ")" "{" S "}"
Affectation -> VARIABLE "=" Expression ";"
| VARIABLE "++" ";"
| VARIABLE "--" ";"
Signature -> "Said" "Tadjine" ";"
Expression -> Terme { ("+"|"-") Terme }
Terme -> Facteur { ("*"|"/") Facteur }
Facteur -> NOMBRE | VARIABLE | "(" Expression ")"
Voici un exemple complet que vous pouvez tester dans l'interface :
$total = 0;
$prix = 50;
foreach ($panier as $article) {
Said Tadjine; // Signature obligatoire
// Calcul avec priorité et parenthèses
$total = ($prix + 10) * 2;
$compteur++;
}Si vous souhaitez modifier le code source :
- Java JDK (version 8 ou supérieure).
-
Clonez ce dépôt :
git clone https://github.com/SaidTadjine/Mini-Compilateur-PHP.git cd Mini-Compilateur-PHP -
Compilez les sources : (Cette commande place les fichiers .class à la racine du projet)
javac -d . src/*.java
-
Lancez l'application :
java Main
Pour packager le compilateur dans un fichier .jar auto-exécutable :
-
Assurez-vous que le fichier
src/META-INF/MANIFEST.MFexiste avec le contenu suivant :Main-Class: Main -
Compilez et créez le JAR : (Cette commande doit être lancée depuis la racine du projet)
jar cfm MiniCompilateur.jar src/META-INF/MANIFEST.MF *.class -
Exécutez le JAR :
java -jar MiniCompilateur.jar
.
└── src/
├── Main.java # Point d'entrée (Lance l'interface graphique)
├── Interface.java # Fenêtre Swing (Mini IDE)
├── AnalyseurLexical.java # Scanner (Transforme le texte en Tokens)
├── AnalyseurSyntaxique.java # Parser (Vérifie la grammaire récursivement)
├── Token.java # Objet représentant un mot du langage
├── TokenType.java # Enumération des types de tokens
└── META-INF/
└── MANIFEST.MF # Fichier de manifeste pour le JAR
Said Tadjine
- Module : Compilation
- Sujet : Mini-Compilateur PHP (foreach)