# TP2 PDS - VSL+ Réalisé par Thibaut ROCHAS et Tuan Minh VU #### Program ``` Program ::= Program(Function+) ``` #### Function ``` Function ::= Function(Type, String, Var*, Instruction) | Prototype(Type, String, Var*) ``` #### Var ``` Var ::= Var(String) ``` #### Declaration ``` Declaration ::= Declaration(Type, String+) ``` #### Instruction ``` Instruction ::= Assign(String, Expression) | Return(Expression) | Bloc(Instruction+) | BlocWithDecl(Declaration+, Instruction+) | VoidFunctionCall(String, Expression*) | IfThen(Expression, Instruction) | IfThenElse(Expression, Instruction, Instruction) | While(Expression, Instruction) | Read(Var+) | Print(ExpressionOuText+) ``` #### Expression ``` ExpressionOuText ::= Expression | Text(String) Expression ::= Binop(Op, Expression, Expression) | Const(Int) | Var(String) | Call(String, Expression*) | Paren(Expression) ``` #### Autres ``` Op ::= PLUS | MINUS | TIMES | DIV | MOD Type ::= INT | VOID ``` ## Etat Nous sommes arrivés jusqu'au segment 2, nous avons commencé le segment 3 mais celui-ci ne marche pas encore complètement Au niveau de la détection de type, nous l'avons directement intégré à l'intérieur du visitor toLLVM au lieu de le faire dans un bloc séparé, par manque de temps. ## Compatibilité Pour construire le compilateur : - Java JDK 21 - ANTLR3 3.5.2 - Gradle 8.5 Back-end LLVM, et scripts de tests : - clang 17 ou + - Python3, avec bibliothèque colorama ## Construction, exécution Pour construire le projet, depuis la racine du projet : ```bash ./gradlew build ``` Pour exécuter le programme Java TP2.Main, depuis la racine du projet : ```bash java -jar build/libs/TP2.jar [args] ``` ## Structure du projet Fichiers de code source et de tests - `src/main/java/` : fichiers sources Java à compléter - `src/main/antlr/` : fichier sources ANTLR à compléter - `tests/` : fichiers textes à utiliser pour les tests - `compile` : script de compilation VSL+ vers binaire - `runAllTests.py` : script python pour exécuter tous les tests Moteur de production Gradle - `settings.gradle`, `build.gradle` : configuration Gradle - `gradle/wrapper` : exécutable de Wrapper Gradle - `gradlew`, `gradlew.bat` : scripts (unix/windows) à exécuter depuis le terminal pour lancer le moteur de production Environnement VSCode - `.vscode` : configuration de VSCode - `eclipse-formatter.xml` : formatage de code source Java, optionnel Git - `.gitignore` : configuration pour ignorer certains fichiers et répertoires