2025-04-30 19:31:59 +02:00
2025-03-21 17:26:31 +01:00
2025-04-30 19:31:59 +02:00
2025-04-30 18:52:33 +02:00
2025-04-05 15:55:03 +02:00
2025-04-30 12:16:21 +02:00
2025-04-30 12:54:49 +02:00
2025-03-21 17:26:31 +01:00
2025-03-21 17:26:31 +01:00
2025-03-21 17:26:31 +01:00
2025-04-30 18:07:59 +02:00
2025-04-30 18:52:33 +02:00
2025-04-30 15:23:46 +02:00
2025-03-27 14:18:48 +01:00
2025-03-21 17:26:31 +01:00

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é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
Description
No description provided
Readme 1.3 MiB
Languages
Java 80.7%
Python 11.3%
GAP 7.3%
Shell 0.7%