Skip to content

valeeraZ/Sorbonne_DLP_ILP3

Repository files navigation

ILP

Langage support du cours Développement d'un langage de programmation (DLP), M1, Master STL, Sorbonne Université.

Ce dépôt contient un interprète en Java et un compilateur en Java vers C pour un langage simple. Le langage est non-typé, similaire à Python, mais avec une syntaxe inspirée de ML. Le langage est composé de quatre niveaux, chacun se basant sur le précédant pour ajouter des fonctionnalités plus avancées :

  1. ILP1 : expressions, primitives, blocs syntaxiques variables locales
  2. ILP2 : boucles, affectations, fonctions
  3. ILP3 : exceptions, fonctions de première classe (lambda-expressions)
  4. ILP4 : système objet à base de classes

Contenu du dépot

  • Java/src/ : les sources Java de l'interprète et du compilateur ILP.
  • C/ilp.[ch] : la bibliothèque d'exécution en C, utilisée pour exécuter le code ILP compilé en C.
  • ANTLRGrammars/ : les grammaires ANTLR 4 du langage ILP.
  • target/generated-sources/ : le résultat de la compilation des grammaires ANTLR 4 vers Java.
  • SamplesILP[1-4]/ : des programmes de test pour les différents niveaux ILP. Les répertoires comportent : des sources ILP (.ilpml), la valeur retournée attendue (.result) et l'affichage attendu (.print) de l'exécution de chaque source.
  • compile_ANTLR.sh : script pour convertir les grammaires ANTLR (.g4) en Java, si le plug-in ANTLR 4 IDE pour Eclipse n'est pas utilisé.
  • C/install_gc.sh : script pour compiler Boehm GC (contenu dans C/gc-7.2g.tgz), s'il n'est pas disponible sur le système.
  • C/compileThenRun.sh : script utilisé lors des tests du compilateur pour compiler le code C généré par la compilation, le lier à la bibliothèque d'exécution et lancer l'exécution du code exécutable obtenu.
  • .gitlab-ci.yml : script d'intégration continue, qui lance automatiquement les tests unitaires à chaque push sur le serveur GitLab.

TME

Vous trouverez sur le site du cours un document Environnement des TME décrivant les instructions détaillées pour l'installation et le rendu des TME, ainsi que les énoncés de TME.

Rappelons que vous devez :

  • faire un fork de ce projet sur GitLab comme projet privé (bouton Fork en haut à droite) ;
  • ajouter votre binôme et votre chargé de TME comme membre du projet privé, avec pour rôle Maintainer ;
  • faire un import du projet privé dans Eclipse ;
  • travailler en local en ajoutant les sources Java, C, ANTLR 4 demandées, ainsi que des jeux de test ;
  • faire des push réguliers sur le serveur GitLab ;
  • modifier, si besoin, le fichier .gitlab-ci.yml pour inclure vos tests dans l'intégration continue ;
  • vérifier le code visible dans votre projet GitLab et les résultats des tests d'intégration continue sur le serveur GitLab (le chargé de TME n'aura accès qu'au code visible sous GitLab, qui sera donc la version notée) ;
  • effectuer vos rendus de TME en faisant ajoutant un tag intitulé rendu-tme-X pour indiquer que vous avez fini le TME.

Liens utiles

Remerciements

Ce support est basé sur le code ILP9 du cours de ILP Christian Queinnec. Le cours original est disponible sur https://compiler-reading-1.appspot.com/course.