0% ont trouvé ce document utile (0 vote)
175 vues8 pages

Corr TD3 Compilation Finale

Ce document présente les corrections d'un TD sur l'analyse syntaxique et les grammaires. Il contient plusieurs exercices avec leurs corrections portant sur la définition de grammaires, la construction d'arbres de dérivation et de tables d'analyse pour des grammaires données.

Transféré par

genta kojima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
175 vues8 pages

Corr TD3 Compilation Finale

Ce document présente les corrections d'un TD sur l'analyse syntaxique et les grammaires. Il contient plusieurs exercices avec leurs corrections portant sur la définition de grammaires, la construction d'arbres de dérivation et de tables d'analyse pour des grammaires données.

Transféré par

genta kojima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Institut Supérieur d’Informatique Filière : LFI 2

et de Mathématiques de Monastir
Département d'Informatique

TD 3 : Analyse Syntaxique, Grammaires


Enseignante : Wided BEN ABID Groupe : TD

EXERCICE 1
Soit la grammaire suivante G décrivant de façon très simplifiée un document HTML :
DOC -> H B
H -> <head> TXT </head>
B -> <body> TXT </body>
TXT -> CAR | CAR TXT
CAR -> ε|l’ensemble des lettres et des chiffres, l’espace.

Rappel : ε désigne le mot vide.


Remarque : les éléments non terminaux sont en majuscules.
Remarque : un élément entre < et > est appelé balise de début et un élément entre </
et > est appelé balise de fin.

1. Donner explicitement le quadruplet <VT, VN, S, P> de G.


2. Donner deux mots quelconques appartenant au langage engendré par G.
3. Donner l’arbre de dérivation du document :
<head></head><body>Examen</body>
4. Proposer une grammaire propre G1.
5. Proposer une modification de G (notée G2) pour prendre en compte le fait que le
texte compris entre les balises <body> et </body> puisse ou non contenir des couples
de balises <A> </A> entre lesquelles on peut également trouver du texte.

Exemples …<body> examen</body>


…<body> <A> examen </A></body>
…<body> <A> examen </A> TLC</body>
…<body> <A> examen </A> TLC <A> examen </A> TLC </body>

6. Utiliser la grammaire G2 pour donner un arbre de dérivation pour le mot :


<head></head><body> voici <A> ma </A> page en <A> html </A> </body>
CORRECTION EXERCICE 1:

DOC -> H B (P1)


H -> <head> TXT </head> (P2)
B -> <body> TXT </body> (P3)
TXT -> CAR | CAR TXT (P4)
CAR -> ε|l’ensemble des lettres et des chiffres, l’espace. (P5)

1) VT= {<head>,</head>,<body>,</body>, l’ensemble des lettres et des


chiffres, l’espace}
VN= {DOC, H, B, TXT, CAR}
S= DOC
P: c’est l’ensemble de tous les règles de production (P5),(P4),(P3),(P2),(P1)

2) Exemple de 2 mots appartenant au langage engender par G:


<head></head><body></body>, <head> wided </head><body></body>

3)
DOC

H B

<head> TXT </head> <body> TXT </body>

CAR CAR
ε
Examen

4) Une grammaire est dite propre si elle ne contient aucune production de type
A→ ε. Si on a A→ ε, il faut remplacer les A se trouvant dans la partie droite
de toutes règles de production par ε.
Dans cette exemple on a CAR→ ε donc La grammaire G devient :
DOC -> H B (P1)
H -> <head> TXT </head> | <head></head> (P2)
B -> <body> TXT </body> | <body></body> (P3)
TXT -> CAR | CAR TXT (P4)
CAR -> l’ensemble des lettres et des chiffres, l’espace. (P5)

5)

DOC -> H B (P1)


H -> <head> TXT </head> (P2)
B -> <body> TXT </body> (P3)
TXT -> CAR | CAR TXT| <A> TXT </A> TXT (P4)
CAR -> ε |l’ensemble des lettres et des chiffres, l’espace. (P5)

6)
EXERCICE 2

Soit la grammaire G dont les règles de production sont les suivantes :

E : axiome

1. Donner explicitement le quadruplet <VT, VN, S, P> de G.


2. De quel type est cette grammaire ? Justifier.
3. Soit les deux mot w=10*5*2*(11+4) w’=5*(10+6)+20
Donner un arbre de dérivation pour ces deux mots, conclure.

CORRECTION EXERCICE 2:

P1
P2
P3
P4
P5

1) VT= {+, *, (,), nb}


VN= {E, E’, T, T’, F}
S= E
P= {P1, P2, P3, P4, P5}

2) Cette grammaire est de type 2 car les règles de production sont sous la forme
de A→B avec AЄ VN et BЄ(VNUVT)*
3) E→TE’→FT’E’→nbT’E’→nb*FT’E’→nb*nbT’E’→nb*nb*FT’E’→
nb*nb*nbT’E’→nb*nb*nb*FT’E’→nb*nb*nb*(E)T’E’→
nb*nb*nb*(TE’)T’E’→nb*nb*nb*(FT’E’)T’E’→
nb*nb*nb*(nbT’E’)T’E’→nb*nb*nb*(nbE’)T’E’→
nb*nb*nb*(nb+TE’)T’E’→nb*nb*nb*(nb+FT’E’)T’E’→
nb*nb*nb*(nb+nbT’E’)T’E’→nb*nb*nb*(nb+nbE’)T’E’→
nb*nb*nb*(nb+nb)T’E’→nb*nb*nb*(nb+nb)E’→ nb*nb*nb*(nb+nb)
D’où le résultat 10*5*2*(11+4)
Arbre de dérivation de mot 10*5*2*(11+4)

T E’

F T’ ε

nb * F T’

nb * F T’

nb * F T’

( E ) ε

T E’

F T’ + T E’

nb ε F T’ ε

nb ε
Arbre de dérivation de mot 5*(10+6)+20

T E’

F T’

nb * F T’ + T E’

( E ) ε F T’ ε

nb ε
T E’

F T’ + T E’

nb ε F T’ ε

nb ε

EXERCICE 3

Soit la grammaire G dont les règles de production sont les suivantes :

S -> L B (P1)
B -> :S | :=L (P2)
E -> a | L (P3)
J -> ,EJ|) (P4)
L -> (EJ (P5)

S: axiome
1. Donner explicitement le quadruplet <VT, VN, S, P> de G.
2. De quel type est cette grammaire ? Justifier.
3. Donner un arbre de dérivation pour le mot (a) ::=(a)
4. Calculer l’ensemble Premiers
5. Calculer l’ensemble Suivants
6. Construire la table d’analyse LL de G
CORRECTION EXERCICE 3

1) VT= {‘ :’ , ‘=’, ‘(’, ‘)’, ‘a’, ‘,’, }


VN= {S, L, B, E, J}
S= S
P= {P1, P2, P3, P4, P5}
2) Cette grammaire est de type 2.
3) Le mot (a) ::=(a) n’appartient pas à la grammaire G.
4) PREMIER(S) = PREMIER(L) = { ( }
PREMIER(B) = { : }
PREMIER(E) ={ a ∪ PREMIER(L)} = { a, ( }
PREMIER(J) = {‘ ,’ , ‘)’}
5) SUIVANT(S) = {$ ∪ SUIVANT(B) }= {$}
SUIVANT(B) = { SUIVANT(S)}= {$}
SUIVANT(E) = PREMIER(J) = {‘,’ , ‘)’}
SUIVANT(L) =PREMIER(B) ∪ SUIVANT(B) ∪ SUIVANT(E)= { :, $, ‘,’, )}
SUIVANT(J) = {‘ ,’ , ‘)’}
6)
: = a , ( ) $
S S→LB
B → :S
B
B→ :=L
E E→a E→L
J J→,EJ J→)
L L→(EJ)

PILE Entrée Sortie


$S (a) ::=(a)$ S→LB
$ BL (a) ::=(a)$ L→(EJ
$BJE( (a) ::=(a)$
$ BJE a) ::=(a)$ E→a
$ BJa a) ::=(a)$
$ BJ ) ::=(a)$ J→) Le mot (a) ::=(a) n’appartient
$B) ) ::=(a)$ pas au langage généré par cette
grammaire G.
$B ::=(a)$ B→ :S Remarque : On utilise cette
reconnaissance sauf dans le cas
$ S: ::=(a)$
où la grammaire est de type
$S :=(a)$ S→LB LL(1).
$ BL :=(a)$ L→ (EJ
$ BJE( :=(a)$ ERREUR !!
EXERCICE 4
Soit la grammaire G suivante :

S -> SaTS |b
T -> bST|a|b| 

S: axiome
1. Donner 4 mots générés par cette grammaire.
2. Construire la table d’analyse LL de G.
3. La grammaire G est elle LL(1) ? Justifier.

CORRECTION EXERCICE 4

S -> SaTS |b
T -> bST|a|b| 

2) PREMIER(S) ={b}
PREMIER(T) = {a,b,  }
SUIVANT(S) = {$, a ∪ PREMIER(T)\{  } }= {$,a,b}
SUIVANT(T) = { PREMIER(S)}= {b}

a b $
S→b
S
S→SaTS
T→b
T T→a T→bST
T→ 

3) Il y a plus qu’une réduction dans divers cases de la table d’analyse, donc ce n'est
pas une grammaire LL(1).

Vous aimerez peut-être aussi