:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
[LOGO]

Introduction à l'analyse lexicale


Le but de ce TD est d'implanter un analyseur lexical en utilisant le générateur de compilateurs Tatoo pour récupérer des lexèmes reçus sur un flot.

Exercice 1 - Préliminaires

Télécharger à l'URL suivant, http://tatoo.univ-mlv.fr/files/, l'archive tatoo-dep.zip qui contient tous les fichiers Jar nécessaires à l'utilisation de Tatoo et décompressez l'archive dans votre répertoire d'installation de Tatoo.
Vérifiez que votre installation est correcte et que la version de Tatoo que vous avez téléchargée est bien la version courante en tapant :
	java -jar tatoo.jar --check

Exercice 2 - Analyse lexicale simpliste

Écrire, en utilisant le générateur de compilateurs Tatoo, un programme qui extrait les chaînes a et ab* d'un fichier dont le nom est précisé sur la ligne de commande.
Pour cela, vous suivrez les étapes suivantes, décrites précisément dans le tutoriel http://tatoo.univ-mlv.fr/doc/tutorial/fr/lexer/index.xhtml :
  • écrire le fichier de règles .xlex ;
  • générer l'implantion des automates en utilisant un fichier ant ;
  • écrire l'analyseur lexical qui utilise les classes générées.

Exercice 3 - Analyse lexicale des commentaires

En suivant les mêmes étapes que pour l'exercice précédent, écrire, en utilisant le générateur de compilateurs Tatoo, un programme qui extrait les commentaires Java d'un fichier dont le nom est reçu en argument sur la ligne de commande.
Vous utiliserez pour cela les expressions rationnelles définies lors du TD précédents.

Exercice 4 - Analyse lexicale des commentaires avec activateur

Écrire un programme équivalent qui utilise un état qui indique si l'analyseur est en dehors d'un commentaire, dans un commentaire sur une ligne ou dans un commentaire sur plusieurs lignes et qui utilise cet état dans un objet Activator (voir tutoriel) pour déterminer l'ensemble des règles actives.
Commencer par traiter le cas des commentaires sur une ligne, puis ajouter les commentaires sur plusieurs lignes. Attention, il est nécessaire de décomposer le contenu du commentaire en plusieurs tokens.