NF11 – TD13 Grammaire AntLR – Génération de code - UTC

Transcription

NF11 – TD13 Grammaire AntLR – Génération de code - UTC
NF11 – TD13
Grammaire AntLR – Génération de code
Un fichier définissant des tags par langage a la forme suivante (colonne de gauche) et une
grammaire AntLR décrivant les fichiers est indiquée colonne de droite (STRING désigne une
chaîne ne contenant pas d'espace) :
Fichier
language = fr
tag = ville
tag = pays
tag = événement
language = en
tag = city
tag = country
Grammaire
file :
langgroup+
;
langgroup :
language ('tag' '=' STRING)+
;
language :
'language' '=' STRING
;
Question 1 :
1. Représenter l’arbre de dérivation pour le fichier précédent.
2. On veut générer un fichier compte-rendu où les tags sont regroupés par langage.
Liste des Tags par langage :
fr {
ville, pays, événement
}
en {
city, country
}
a) Analyser la structure du fichier compte-rendu.
b) Ecrire les templates permettant de rendre l’affichage précédent. Quels sont les types
des paramètres ? Quelle structure de données est suffisante dans le visiteur d'arbre ?
3. Ecrire les deux méthodes du visiteur d’arbre visitLanggroup(LanggroupContext ctx)
et visitLanguage(LanguageContext ctx) permettant de générer un fichier de tags
regroupés par langage, écrit dans le format précédent. Indiquer les champs que le
visiteur doit posséder.
Question 2 :
Le fichier initial est complété par des descriptions de documents ; l'url est une chaîne
encadrée par des guillemets :
language = fr
tag = ville
tag = pays
tag = événement
language = en
tag = city
tag = country
documents
doc1 {
url = "http://1"
doctags = ville, musique, event
}
doc2 {
url = "http://2"
doctags = ville, pays, cinéma
}
doc3 {
url = "http://3"
doctags = country, event
}
On veut ajouter dans le fichier compte-rendu la liste des tags non déclarés :
Non déclarés : musique, event, cinéma
1. Compléter la grammaire.
2. Modifier le fichier de templates pour générer la sortie des tags absents.
3. Indiquer les structures de données qui seront utilisées dans le visiteur. Compléter le
visiteur pour générer la liste de tags non déclarés.

Documents pareils