:: Enseignements :: ESIPE :: E4INFO :: 2011-2012 :: Génération de code ::
[LOGO]

TD0 : préliminaires - Correction


Nous examinons ici comment créér un nouveau projet utilisant Tatoo avec Eclipse.

Installation de Tatoo

On récupère d'abord une distribution binaire de Tatoo (avec les fichiers .jar adéquats) par ce lien (puis section Download). Il faut décompresser l'archive dans un sous-répertoire de son répertoire HOME. On définit ensuite la variable d'environnement TATOO_HOME pour lui donner pour valeur le répertoire de Tatoo. On pourra ajouter dans son fichier .bashrc l'export de cette variable : export TATOO_HOME=/chemin/vers/tatoo.

Déclaration des bibliothèques dans Eclipse

Nous allons être amenés à manipuler des classes de la bibliothèque d'exécution de Tatoo. On ajoute donc comme bibliothèque utilisateur prédéfinie (menu Window, Preferences, Java, Build Path, User Libraries, New...) le fichier lib/tatoo-runtime.jar. Les autres jars sont utiles pour compiler le lexique et la grammaire ; nous n'en avons pas besoin directement lorsque nous écrirons des classes "parsant" du code.

Création d'un nouveau projet

Pour créer un nouveau projet, on pourra copier et prendre pour base le répertoire skeleton fourni dans l'archive. Ce répertoire comprend :
  • un fichier grammar.ebnf où nous définissons les tokens et la grammaire
  • un fichier build.xml pour générer facilement les classes utilisées par le lexer et le parser
  • des répertoires src/ pour placer les sources de notre parser et gen-src pour le code généré (Ant s'occupera de générer les classes nécessaires à partir de la grammaire)
Il faudra modifier le fichier grammar.ebnf pour l'adapter à notre grammaire ainsi que le fichier build.xml où l'on spécifiera le nom du projet correspondant au paquetage racine des classes.
On peut ensuite importer le projet dans Eclipse (File, New, Java Project) en spécifiant son chemin, en indiquant que gen-src/ est un répertoire source (clic droit, Use as Source Folder) ; on rajoute la bibliothèque utilisateur Tatoo dans Libraries (Add Library, User Library).

Génération des tables et classes outils

Pour pouvoir analyser une entrée avec Tatoo, il est nécessaire de générer les tables pour les automates reconnaissant les lexèmes et la grammaire ainsi que des classes énumérant les différents lexèmes, règles, productions... Ant sera chargé d'appeler le compilateur de Tatoo qui réalisera ce travail (commande ant ebnf). Une cible compile permet de compiler les sources que nous écrirons (répertoire src/) ainsi que les sources générées par Tatoo (répertoire gen-src/).