23059a87b8ccc3b1ecb30589ca4be0627e48bd73
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(DeclarationList, 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
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%