:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Analyse syntaxique avec Tatoo |
Le but de ce td est de se familiariser avec l'écriture d'un analyseur syntaxique avec Tatoo.
Exercice 1 - Analyseur lexical des expressions booléennes
Écrire avec
Tatoo un analyseur lexical capable de reconnaître les lexèmes des expressions booléennes parenthésées ("true", "false", "(", ")", "!", "&" et "|") et de les afficher en supprimant les blancs (" ", "\t", "\r" et "\n").
Pour cela, commencer par écrire un fichier .ebnf permettant de spécifier les règles à appliquer,
puis générer les classes Java correspondantes avec Tatoo.
Attention, certains des lexèmes des expressions booléennes sont des caractères spéciaux des expressions rationnelles de Tatoo et les identificateurs associés aux léxèmes doivent être des identificateurs Java valides (pas des mots clefs du langage).
Générer les classes de l'analyseur et écrire un analyseur lexical de test qui réalise l'affichage des lexèmes reconnus et supprime les espaces.
Vous pourrez vous inspirer de l'exemple
suivant.
Exercice 2 - Grammaire des expressions booléennes
Modifier le fichier .ebnf définissant la grammaire suivante des expressions booléennes :
Gbool : |
(p0) S := E '$' |
(p3) E := '(' E ')' |
|
(p1) E := E '&' E |
(p4) E := '!' E |
|
(p2) E := E '|' E |
(p5) E := 'value' |
Générer avec Tatoo les classes SLR correspondant à la grammaire précédente.
Expliquez les conflits.
Sachant que l'opérateur & est prioritaire par rapport à l'opérateur |, que ces deux opérateurs sont associatifs à gauche et que l'opérateur ! est prioritaire par rapport aux deux autres, modifier votre fichier .ebnf pour résoudre les conflits en ajoutant des priorités.
Exercice 3 - Évaluation des expressions booléennes
Pour évaluer des expressions booléennes, générer les classes et interfaces correspondantes, puis implanter les interfaces TerminalAttributeEvaluator et GrammarEvaluator afin d'évaluer les expressions booléennes reçues sur l'entrée standrard.
Exercice 4 - Visiteur des expressions booléennes
Générer les type de l'AST en utilisant l'attribut
generateast.
Écrire une classe Java réalisant la construction de l'AST par l'analyseur.
Utiliser l'arbre construit par réaliser l'évaluation par un visiteur.
Pour cela, compléter la classe
BooleanVisitorToComplete suivante (
attention: vous devez utiliser le fichier ebnf donné dans la correction):
L'analyseur syntaxique sera exécuté à l'aide de la classe suivante :
© Université de Marne-la-Vallée