Introduction
Le projet de compilation de 3eme année d'IUP consiste à réaliser
un compilateur et deux interpréteurs. Le travail est basé sur le
langage MiniJaJa, et il est demandé de réaliser un interpréteur de ce
langage, mais aussi de le traduire/compiler vers un autre langage
appelé JaJaCode. Le programme JaJaCode ainsi produit sera également
interprétable afin de pouvoir comparer les états mémoires des deux
versions du programme.
Pour réaliser ce travail, le projet a été découpé en modules
relativement autonomes. Le découpage retenu est le suivant :
-
Analyse lexicale et syntaxique
- Ce module a pour but de passer
d'un fichier contenant un programme MiniJaJa à un arbre de syntaxe
abstraite qui est la représentation du programme exploitable par les
autres modules du projet.
- Contrôle de type
- Il a pour but de valider en partie la
sémantique du programme, c'est-à-dire de vérifier si des
incohérences non relevables par le module précédent sont présentes
dans le programme.
- Etats mémoire et Tas
- Ces modules correspondent aux structures
de données manipulées par les interpréteurs. D'un côté se trouve la pile
d'exécution et de l'autre, le tas ou sont stockés les tableaux.
- Interpretation MiniJaJa
- Comme son nom l'indique, ce module
permet l'interprétation d'un programme MiniJaJa sous forme d'arbre
de syntaxe abstraite.
- Compilation MiniJaJa ® JaJaCode
- Il s'agit ici de
transformer, de traduire un langage de haut niveau dans un langage
cible plus simple.
- Interpretation JaJaCode
- Ce module nous donne la possibilité
d'interpréter un programme JaJaCode fourni par le compilateur.
- Interface Homme-Machine & Interfacage
- Clé de voute du projet,
l'interfacage est le lieu des échanges d'informations entre les
modules. L'Interface Homme-Machine, qui se greffe à elle, rend
l'utilisation du projet simple avec un affichage des données
résultantes du travail des différents modules.
Nous allons développer dans le présent rapport les modules ci-dessus
ainsi que le travail de gestion de projet sous-jacent.