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

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)

Terminer l'exercice sur les expressions booléennes du sujet de TD précédent. Vous pourrez vous aider de la nouvelle version de l'archive d'exemples du tutoriel. Vous pouvez aussi suivre la procédure de création d'un analyseur sous Eclipse.

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;
		
  1. Relire la procédure à suivre pour créer un analyseur sous Eclipse et créer un analyseur sémantique.
  2. Regarder l'exemple translation de l'archive d'exemples.
  3. Ecrire un fichier EBNF décrivant les règles lexicales et la grammaire.
  4. 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 ?
  5. Ecrire un autre fichier EBNF décrivant le typage (voir tutoriel sur l'EBNF, section "Typage des tokens et des non-terminaux")
  6. Reprendre et adapter le fichier build2.xml de l'exemple translation
  7. Générer les classes de base de l'analyseur avec ant
  8. Ecrire un TerminalEvaluator et un GrammarEvaluator permettant de traduire les expressions reconnues.
  9. 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.