98 lines
2.4 KiB
Markdown
98 lines
2.4 KiB
Markdown
# 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
|
|
|
|
## 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
|