BLOOD

Compilateur

BLOOD

Fiche projet

Statut
Fonctionnel
Cadre
Académique
Début
18 octobre 2020
Fin
20 avril 2021

Fiche technique

Domaines
Gestion de projet, compilation, assembleur
Langages
Java, ARM
Framework
ANTLR
Outils
Git, Latex

Basic Language Object-Oriented of Doom

BLOOD est un compilateur réalisé en groupe de 4 pour le langage de programmation éponyme dans le cadre du module Traduction des langages de Télécom Nancy. La spécification du langage BLOOD provient de l'université de Paris-Saclay.

L'analyse lexicale et syntaxique ont permis d'élaborer la grammaire et la structure de l'arbre de la syntaxe abstraite. La grammaire réalisée a été rendue LL(1) sans retour arrière. Des jeux d'essais de différentes envergures ont tous été effectués avec succès.

L'analyse sémantique a mené à la génération des tables des symboles et à 41 contrôles sémantiques différents testés et fonctionnels.

Depuis plus d'une décennie, les élèves de Télécom Nancy font la génération de code en MicroPIUP/ASM, un pseudo-code assembleur destiné au simulateur MicroPIUP co-créé par un enseignant de Télécom Nancy parti à la retraite. Nous sommes le premier groupe de Télécom Nancy (et unique groupe de notre promotion) à migrer sur VisUAL2, un assembleur et simulateur ARM plus proche de nos attentes. Tous les projets de compilation postérieurs à notre promotion seront réalisés en VisUAL2, si bien que l'ensemble des promotions suivantes utilise désormais notre projet comme référence. Sous la demande du corps enseignant, nous avons rédigé la documentation de référence destinée aux promotions futures pour la génération de code.

Les implémentations réalisées, testées et fonctionnelles en génération de code sont: les types primitifs entier et chaîne de caractères, la déclaration de variables, les affectations simples et arithmétiques, les opérateurs logiques, les expressions arithmétiques, la concaténation de chaînes de caractères, les structures conditionnelles, l'affichage en sortie des entiers et chaînes de caractères, l'allocation dans le tas, les classes et descripteurs de classe, les méthodes statiques et d'instance et leurs paramètres et valeur de retour, les attributs de classe et les constructeurs d'instance.


Découvrez d'autres projets

Réalisés avec soin et qui peuvent vous intéresser