:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Compilation ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Traduction avec Tatoo |
Le but de ce TD est de faire de la traduction avec tatoo.
Exercice 1 - Analyse syntaxique des expressions booléennes (suite)
Exercice 2 - Evaluation d'expressions booléennes
Implémenter un analyseur qui évalue la valeur booléenne d'une expression booléenne rentrée au clavier.
Par exemple, "true and (false or not true)" aura pour valeur "false".
Indication: écrire deux classes implémentant les classes TerminalEvaluator et GrammarEvaluator, puis
les intégrer à l'analyseur. Pour plus de détails, voir les exemples du tutoriel (evaluation et translation).
Exercice 3 - Traduction de déclarations Python en C
Ecrire un système de traduction qui transforme une déclaration multiple Python en C.
Par exemple, on souhaite que le code Python suivant :
x,y,z = 1,2.0,3.1
soit traduit en C de la manière suivante :
int x = 1;
float y = 2.0;
float z = 3.1;
- Relire la procédure à suivre pour créer un analyseur sous Eclipse et créer un analyseur sémantique.
- Regarder l'exemple translation de l'archive d'exemples.
- Ecrire un fichier EBNF décrivant les règles lexicales et la grammaire.
-
Reprendre l'exercice correspondant en vous aidant du TD sur la traduction et les grammaires attribuées.
Quels types doit-on assigner aux tokens/terminaux et non-terminaux pour réaliser la traduction demandée ?
- Ecrire un autre fichier EBNF décrivant le typage (voir tutoriel sur l'EBNF, section "Typage des tokens et des non-terminaux")
- Reprendre et adapter le fichier build2.xml de l'exemple translation
- Générer les classes de base de l'analyseur avec ant
- Ecrire un TerminalEvaluator et un GrammarEvaluator permettant de traduire les expressions reconnues.
- Ecrire un analyseur utilisant ces deux classes. Tester.
Exercice 4 - Génération de code intermédiaire
Implémenter un analyseur qui générera le code intermédiaire à trois adresses associé à l'expression booléenne donnée en entrée standard.
© Université de Marne-la-Vallée