c82d6a237d128aeb3d1765f4ee22c9f9dffb2fdd
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 :
./gradlew build
Pour exécuter le programme Java TP2.Main, depuis la racine du projet :
java -jar build/libs/TP2.jar [args]
Structure du projet
Fichiers de code source et de tests
src/main/java/: fichiers sources Java à complétersrc/main/antlr/: fichier sources ANTLR à complétertests/: fichiers textes à utiliser pour les testscompile: script de compilation VSL+ vers binairerunAllTests.py: script python pour exécuter tous les tests
Moteur de production Gradle
settings.gradle,build.gradle: configuration Gradlegradle/wrapper: exécutable de Wrapper Gradlegradlew,gradlew.bat: scripts (unix/windows) à exécuter depuis le terminal pour lancer le moteur de production
Environnement VSCode
.vscode: configuration de VSCodeeclipse-formatter.xml: formatage de code source Java, optionnel
Git
.gitignore: configuration pour ignorer certains fichiers et répertoires
Description
Languages
Java
80.7%
Python
11.3%
GAP
7.3%
Shell
0.7%