:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: 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.
Préliminaire
Exercice 1 - Un premier analyseur syntaxique simple
Dans cet exercice, on souhaite reprendre l'exemple du tutoriel.
- Télécharger et décompresser l'archive tatoo-tutorial.zip.
- Générer et lancer l'analyseur de l'exemple simple-parser en vous aidant du README.
- Lire en détail le fichier log-simple-parser.html généré. Que contient-il ?
- Modifier le listener pour qu'il affiche que l'expression est acceptée quand elle est reconnue par la grammaire.
-
Modifier l'implémentation de l'analyseur pour que celui-ci affiche qu'il y a une erreur lorsque que l'expression en entrée n'est pas reconnue.
Indication : lors de la construction de l'analyseur, utiliser la méthode defaultLexerErrorPolicy() et implémenter un LexerWarningReporter (cf. Javadoc).
Exercice 2 - Un autre analyseur syntaxique
Nous souhaitons implémenter un analyseur reconnaissant la grammaire suivante :
(p0) S ::= T |
(p3) E ::= V |
(p1) T ::= V '=' E |
(p4) V ::= 'id' |
(p2) T ::= E |
(p5) V ::= '*' E |
Le token id correspondra à un identifiant composé de lettres.
-
Ecrire le fichier EBNF associé.
-
Générer les classes d'un analyseur de type SLR1.
Que constatez-vous?
Regarder le fichier log généré.
-
Générer les classes d'un analyseur de type LR1.
Que constatez-vous?
Regarder le fichier log généré.
-
Générer les classes d'un analyseur de type LALR1.
Que constatez-vous?
Regarder le fichier log généré.
-
Implanter l'analyseur en utilisant le listener de débogage (cf. tutoriel).
Tester.
Exercice 3 - Un analyseur syntaxique des expressions booléennes
Nous souhaitons maintenant implanter un analyseur d'expressions booléennes.
Exemple: not(true and false) or true
-
Générer les classes d'un analyseur de type LR1.
Qu'observez-vous?
-
Résoudre le problème en donnant des priorités.
Les priorités affectées seront les règles standard des opérations arithmétiques.
-
Implanter un analyseur LR1 utilisant cette grammaire qui affiche dans l'ordre les différentes opérations effectuées. Tester.
-
Modifier les priorités. Tester et vérifier le log.
© Université de Marne-la-Vallée