Title: Arbre de drivation
1Arbre de dérivation
- La racine de larbre de dérivation est laxiome
de la grammaire. - Les non terminaux forment les nuds internes et
les terminaux forment les feuilles.
2Arbre de dérivation de zazabzbz
On voit que le choix du symbole non terminal à
réécrirenaffecte pas la séquence terminale
dérivée puisque lesbranches de larbre sont
indépendantes.Donc lordre dapplication des
règles naffecte pas le résultat final.
3Théorème 2.40
- Si L est un langage non contextuel, alors il
existe un entier p ? N (longueur de pompage)
telle que pour tout z ? L tel que z p, il
existe des mots s,v,u,w,t tels que z svuwt et - v ?? ou w ??,
- vuw p
- sviuwit ? L pour tout i ? N.
4Remarque
- Grâce à ce théorème, on peut montrer que certains
langages dépendent du contexte. - Toutefois, afin den permettre une utilisation
plus facile, nous allons lénoncer de manière
différente dans le corollaire de lacétate
suivante.
5Corollaire 2.42
- Soit L un langage infini. Si pour tout p ? N, il
existe z ? L avec z p, tel que pour tout
s,v,u,w,t tels que z svuwt et vuw p il
existe un i, tel que sviuwit ? L, alors L nest
pas un langage non-contextuel.
6Exemple 2.43
- Montrons que le langage L akbkck k ? N est
contextuel. Cest bien un langage infini nous
pouvons donc appliquer le corollaire précédent. - Considérons une longueur de pompage quelconque p.
La séquence apbpcp ? L et sa longueur est assez
grande. Supposons quelle est décomposée sous la
forme svuwt, où au moins lune de v ou de w est
non vide et vuw p.
7- Il faut montrer qualors il existe n ? N tel que
svnuwnt ?L. Puisque nous ne connaissons pas la
forme exacte des sous-séquences s, t, u, v, w, il
nous faudra étudier tous les cas possibles. - Si v contient des a et des b, la séquence sv2uw2t
contient un b qui précède un a (rappel (ab)2
abab). Ce nest donc pas une séquence de L. Il en
est de même si v contient à la fois des a et des
c, ou des b et des c.
8- En appliquant le même raisonnement à w, on voit
que si w contient au moins deux symboles
différents, alors sv2uw2t ? L. - Si v contient seulement des a, la séquence
sv2uw2t contient plus de a que la séquence svuwt.
- Si la sous-séquence w2 introduit à la fois des b
et des c pour équilibrer les a supplémentaires,
on a sv2uw2t ? L, par le cas précédent. - Et si w2 introduit seulement des b, on a sv2uw2t
? L, car les c sont en déficit il en est de même
si w2 introduit seulement des c ( les b sont en
déficit). - Pour la même raison, si v contient seulement des
b ou seulement des c, on a sv2uw2t ? L.
9- En appliquant le même raisonnement à w, on voit
que si w contient seulement des a, ou seulement
des b, ou seulement des c, alors sv2uw2t ? L. - Comme lune des sous-séquences v ou w doit être
non vide, nous avons épuisé toutes les
possibilités. - Le langage L nest donc pas un langage non
contextuel.
10Exercice
- Montrez que le langage L ajbkajbkajbk j, k ?
N nest pas un langage non contextuel. - SolutionLe langage L est infini. Nous pouvons
appliquer le corollaire 2.42. Daprès le
corollaire, il suffit de montrer que pour toute
longueur de pompage, il existe un mot z qui ne
peut être pompé.
11- Choisissons z apbpapbpapbp ?L.Supposons
qu elle est décomposée sous la forme z svuwt,
où v?? ou w??. Comme nous ne connaissons pas s,
t, u, v, w, il faut étudier les divers cas qui
peuvent se présenter.
12- Notons que z contient exactement 3 sous-séquences
de a séparées par des b. Si la sous-séquence v
contient des a et des b, alors v4 contient 4
suites de a séparées par des b. Donc sv4uw4t ?L,
car cette séquence contient plus de 3
sous-séquences de a séparées par des b.
13- De la même manière, si w contient à la fois des a
et des b, alors sv4uw4t ?L. - Supposons v ai pour un certain i gt 0(i.e. que v
contient seulement des a). La situation est
l une des trois suivantes - a ab ba ab ba ab b
- a ab ba ab ba ab b
- a ab ba ab ba ab b
i.e que v contient des a venant d une seule des
trois séries de a.
14- Pour que cette séquence soit une séquence de L,
il faudrait que w contienne des a venant des deux
autres séries de a, sans contenir de b (à cause
de la partie 2), ce qui est impossible, puisquil
y a au moins un b entre deux séries de a. - De même. Si v bi, igt0, on a sv2uw2t ?L.
- En procédant comme en 3 et 4, on voit que w ne
peut contenir seulement des a ou seulement des b. - Comme v?? ou w??, nous avons considéré tous les
cas possibles.
15Exercice
- Montrer que le langage L aibjaibj i, j ? N
est un langage contextuel. - Solution Soit p un entier quelconque non nul.
Prenons la séquence z apbpapbp. - Montrons maintenant que quelque soit le découpage
de z comme suit z svuwt ? vuw ? p ? vw ?
1 alors nous pouvons trouver un naturel i tel
que sviuwit ?L
16Exercice (suite)
- Puisque la longueur de la séquence vuw est
inférieure ou égale à p nous avons seulement deux
cas qui se présentent - vuw est formée dun seul symbole soit a. Il est
clair que vuw se trouve en entier dans une seule
séquence de a de z soit la première ou la
deuxième. Supposons que vuw soit située dans la
première séquence de a et soit l la longueur de
vw autrement dit vw 1 nous avons alors le
schéma suivant qui se présente
17- La séquence z peut être schématisée ainsi p
P-m m fois - a..aaaa..ab...ba..ab.b
- p fois p fois
p fois m fois Nous avons p (p-m)m.
Prenons i 2 nous obtenons z ap-m2mbpapbp
apmbpapbp nous savons aussi que m est non nul
alors il est clair que z ?L. Le même
raisonnement sapplique si nous choisissons vuw
dans la deuxième série des a ou dans une des deux
séries des b.
18- Supposons maintenant que vuw contienne deux
symboles différents - Si v est une série du même symbole soit a. Nous
savons aussi que les a de v ne peuvent provenir
que dune seule série de a car vuw a une
longueur au plus p. Prenons i 2 alors la
séquence z sv2uw2t, va avoir plus de a dans
une des séries de a que dans lautre. - Si w est une série contenant le même symbole,
nous pouvons appliquer le même raisonnement que
pour v. - Si v contient deux symboles différents. Prenons i
2 quand nous élevons v au carré nous allons
avoir plus de deux séries de a si nous supposons
que v nest pas vide. - Si w contient deux symboles différents le même
raisonnement sapplique. - Comme v et w ne peuvent être vides simultanément,
nous avons épuisé tous les cas possibles.
19Automates à pile déterministes
- Dans cette sous-section, nous donnerons une
définition de ce que sont les automates à pile
déterministes, puis nous montrerons que ceux-ci
sont moins puissants que les automates à pile non
déterministes, tout en étant quand même plus
puissants que les automates finis.
20- Les automates à pile que nous avons rencontrés
jusquici ne sont pas nécessairement
déterministes. Par exemple, considérons
lautomate suivant, dont lalphabet de ruban est
? a, b et lalphabet de pile ? , .
21- Cet automate nest pas totalement défini car
- dans létat 1, si le symbole dentrée est b,
aucune transition nest possible - dans létat 2, si b est le symbole dentrée et
le symbole sur la pile, aucune transition nest
possible. - Il est ambigu car, dans létat 2, deux
transitions sont possibleslorsque a est le
symbole dentrée et le symbole sur la pile.
22Supposons quon veuille construire un
sous-automate déterministe qui exécute la
transition (1, a, b 2, ?) si b est sur la
pile (1, a, ? 2, ?) sinon. Le sous-automate
suivant ne fait pas laffaire car il nest pas
déterministe (il peut choisir parmi les deux
transitions sib est sur la pile).
23Supposons que ? a, b, . Alors le
sous-automate suivant fait ce quon veut et est
déterministe ( du moins en ce quiconcerne la
lecture dun a dans l état 1).
En effet, sil y a un b sur la pile, il le
dépile. Sil y a un autresymbole, il le dépile
et le rempile, ce qui revient à ne pas toucher à
la pile. Cependant, il ne faut pas que la pile
soit vide, car alorsleffet de la transition a,
? ? du premier sous-automate ne peut être
obtenu. Une façon de sassurer que la pile nest
pas vide estdempiler un au début de
lexécution et de le dépiler à la fin seulement.
24Définition
- Un automate à pile (S, ?, ?, T, ?, F ) est
déterministe si et seulement si , pour tout
triplet (p, x, y) ? S ? ? ? ?, il y a une et une
seule transition dans T de la forme (p, u, vq,
z), où - (u, v) ? (x, y), (x, ?), (?, y), (?, ?)
- q ? S
- z ? ? ? ?.
25- En dautres termes, un automate à pile est
déterministe si et seulement sil y a une et une
seule transition possible pour chaque triplet
(état, symbole dentrée, symbole de pile).
26Exemple
Dont l alphabet de ruban est ? a, b et
l alphabet depile ? , .
27Cet automate nest pas déterministe pour
plusieurs raisons.En voici deux Prenons (1, b,
) ? S ? ? ? ?. Il ny a aucune transition dela
forme (1, u, v q, z) avec (u, v) ? (b, ), (b,
?), (?, )(?, ?) . Autrement dit, il ny a pas
de transition à partir de létat 1 lorsque le
symbole dentrée est un b et le symbole sur la
pile un . L automate nest pas complètement
défini. Prenons (2, a, ) ? S ? ? ? ?. Il y a
deux transitions de laforme (2, u, v q, z)
avec (u, v) ? (a, ), (a, ?), (?, ), (?,
?),soit (2, a, ? 2, ) et ( 2 , ?, 1, ).
Lautomate est ambigu.
28Lautomate suivant, dont lalphabet de ruban est
? a, bet lalphabet de pile ? , ,
nest pas déterministe, car il nest pas
complètement défini. Cependant, il nest pas
ambigu.
29Ajoutons un état poubelle et les transitions
nécessaires afin de le rendre déterministe, sans
changer le langage accepté.
30Les transitions ajoutées ne changent pas le
langage accepté. Toutes ces transitions
nempilent rien, mais elles pourraient aussi
empiler quelque chose sans changer le langage
accepté.
31Cet automate est déterministe. Afin de le
vérifier, montrons quil y a une et une seule
transition pour chaque triplet ( état, symbole
dentrée, symbole de pile ).
32Exercice
- Pour chacun des automates à pile qui suivent,
dites sil est déterministe et expliquez
pourquoi. Dans le cas où un automate nest pas
déterministe, donnez toutes les situations où le
non déterminisme se manifeste.
331) M1 (A, B, (a, b), (b, c, d), T1, A, B)
où lensemble de transitions T1 est décrit par le
diagramme de transitions qui suit.
Solution Lautomate M1 est déterministe, car il
y a une seule transition possible pour chaque
triplet (état, symbole dentrée, symbole de
pile) cette transition est donnée dans la table
suivante.
34(No Transcript)
352) M2 (A, B, C, a, b, a, b, T2, A, A,
B) avec T2 (A, b, ?A, b), (A, a, bB, a),
(B, a, ?A, a), (B, ?, aC, ?), (C, a,
bC, a), (C, ?, ?B, ?).
Solution Lautomate M2 nest pas déterministe,
car il nest pas totalement défini ( par exemple,
il ny a pas de transition possible lorsque
létat est A, le symbole dentrée a et le symbole
de pile a). De plus, il est ambigu (par exemple,
les deux transitions (B, a, ?A, a) , (B, ?, aC,
?) sont possibles lorsque létat est B, le
symbole dentrée a et le symbole de pile a).
Notez quune seule de ces deux raisons suffit. La
table suivante donne les transitions possibles
pour chaque configuration. Un simple coup dil à
la table permet de trouver toutes les situations
où le non-déterminisme se manifeste.
36M2 ( A, B, C, a, b, a, b, T2, A,
A, B) avec T2 (A, b, ?A, b), (A, a,
bB, a), (B, a, ?A, a), (B, ?,
aC, ?), (C, a, bC, a), (C, ?, ?B, ?).
37Exercice
- Soit M un automate à pile dont lalphabet de
ruban est a, b, lalphabet de pile a, et le
diagramme de transitions
38Donner un automate déterministe qui accepte le
même langage. Dire quel est le langage accepté
par cet automate.
Solution On note que lautomate nest pas
ambigu. Il suffit donc dajouter un état puits
(poubelle) pour recevoir les cas non traités.
39Le langage accepté par M est L(M) amb2m m
??N. Nous expliquons pourquoi à lacétate
suivante.
40En effet, M marque dabord le fond de la pile par
. Ensuite, à chaque passage dans la boucle 2-5,
il lit un a et en empile deux. Pour revoir le
au fond de la pile et passer dans létat final 4,
il doit lire un b pour chaque a dépilé. Il doit
donc lire deux b pour chaque a lu. Pour passer de
létat 1 à létat 4, il doit lire au moins un a,
puisquil doit en dépiler un pour passer de 2 à
3. Les séquences qui mènent de 1 à 4 ont donc la
forme amb2m où m ? N. Comme létat initial est
aussi final, lautomate accepte aussi ?, doù le
langage donné à lacétate précédente.
41Exercice
- Dessiner la partie appropriée dun diagramme de
transitions dun automate à pile déterministe qui
passe de létat 1 à létat 2 (en une ou plusieurs
étapes) tout en lisant un a, en empilant un c et - En dépilant un b si b est sur la pile
- En ne dépilant rien dans le cas contraire.
42- Si le symbole dentrée nest pas un a, lautomate
passe de létat 1 à létat poubelle 3 en lisant
le b. Dans létat 2, lautomate finit de lire la
séquence dentrée, sans toucher à la pile.
Supposez que ? a, b, ? a, b, c et que la
pile nest pas vide dans létat 1.
43Solution Voici deux solutions possibles. Notez
quil ne serait pas correct de remplacer les
transitions (1, a, a4, a) et (1, a, c4, c) par
(1, a, ?4, ?) car lautomate serait alors ambigu.
Solution 1
44Solution 2
45Remarque
- Montrons maintenant que les automates à pile
déterministes sont moins puissants que les
automates à pile non déterministes, en ce sens
que la classe des langages quils reconnaissent
est strictement plus petite.
46Théorème 2.50(à connaître)
- Il existe un langage non contextuel quaucun
automate à pile déterministe ne peut accepter.
47Démonstration
- Montrons que L anbnn?N ? anb2nn?N est
non contextuel, mais ne peut être accepté par un
automate à pile déterministe.
48Premièrement, L est non contextuel, car il est
accepté par lautomate à pile suivant
49Deuxièmement, montrons quil ny a pas dautomate
à pile déterministe qui accepte L. Procédons par
contradiction. La structure de la preuve est la
suivante il existe un automate à pile
déterministe M tel que L anbnn?N ?
anb2nn?N ? ? À partir de M, on peut
construire un automate à pile M tel que L(M)
anbncn n?N. Cela sera montré à la suite
de cette dérivation. ? il existe un automate à
pile M tel que L(M) anbncn n?N ? ?
Selon lexemple 2.43, le langage anbncn n?N
nest pas non contextuel par conséquent, il
nexiste pas dautomate à pile pouvant
laccepter.?
50 il existe un automate à pile M tel que L(M)
anbncn n?N ? ? Selon lexemple 2.43, le
langage anbncn n?N nest pas non
contextuel par conséquent, il nexiste pas
dautomate à pile pouvant laccepter.? ( il
existe un automate à pile M tel que L(M)
anbncn n?N) et (il nexiste pas dautomate à
pile M tel que L(M) anbncn n?N ? ?
Contradiction. ? faux.
51Complétons la partie manquante, i.e. montrons que
si lon dispose dun automate à pile déterministe
M tel queL(M) anbnn?N ?
anb2nn?N Alors nous pouvons construire un
automate à pile M tel que L(M) anbncn
n?N.
52Imaginons une partie de lautomate M
Supposons que pour accepter a40b40, M passe de
létat A à létat G. Il commence par lire 40 a,
en manipulant la pile de quelque façon, puis il
lit 40 b, en manipulant la pile de manière
appropriée. Sil ne rencontre pas le bon symbole,
il fait autre chose (puisque M est déterministe,
il doit y avoir une transition définie quel que
soit le symbole dentrée). Supposons que pour
accepter a40b80, il passe de létat A à létat L.
Ce faisant, il doit nécessairement passer par
létat G, puisquil doit dabord lire a40b40 et
quil est déterministe.
53Faisons maintenant deux copies M1 et M2 de M
Nous dirons que les états X1 et X2 sont cousins,
où X ? A, B, C, . Enlevons le statut détat
final aux états finaux de M1 et le statut détat
initial à létat initial de M2.
54Considérons chaque arc qui quitte un ancien état
final de M1. Si la destination de cet arc est
létat X1, changeons la destination de larc pour
létat X2 ( le cousin de X1). Les automates M1 et
M2 forment maintenant un seul automate.
55Ce nouvel automate lit la séquence a40b40 de la
même manière que M1, i.e. en faisant les mêmes
transitions et en atteignant létat G1
cependant, il ne laccepte pas, puisque létat G1
nest plus final.
56Que se passe-t-il si lentrée est a40b80? Il lit
dabord a40b40, se retrouvant ainsi dans létat
G1. À la lecture du b suivant, lautomate combiné
passe dans létat H2, à cause de la modification
que nous venons de faire. Puis la lecture des 39
autres symboles b lamène dans létat L2, où il
accepte a40b80.
57 Comme il ny a rien de particulier avec le
chiffre 40, on voit quen fait cet automate
accepte anb2nn?N. Faisons maintenant une
dernière modification transformons toutes les
transitions qui lisent un b sur le ruban dentrée
et qui mènent à un état de M2 (incluant celles
qui quittent M1) de sorte quelles lisent
maintenant un c.
58Cest maintenant la séquence a40b40c40 qui est
acceptée. En effet, la séquence a40b40 mène de
létat A1 à létat G1 (elle nest pas acceptée).
À la lecture du premier c, lautomate combiné
passe dans létat L2, où il accepte a40b40c40.
59 En généralisant ce que nous venons de faire à
des séquences autres que a40b40c40, nous voyons
que ce dernier automate accepte anbncn
n?N. Cest donc lautomate M annoncé dans la
preuve.
60Remarque
- On appelle la classe des langages reconnus par
les automates à pile déterministes les langages
non contextuels déterministes. - Parce que cette classe nenglobe pas tous les
langages non contextuels, il existe des langages
que les analyseurs syntaxiques déterministes
simulant des automates à pile ne peuvent
reconnaître. - On imagine limpact que cela peut avoir sur la
conception des langages de programmation.
61- On peut aussi démontrer quil existe des langages
reconnaissables par des automates à pile
déterministes qui ne peuvent être reconnus par
des automates à pile déterministes qui vident
leur pile avant daccepter i.e. que - L(M) M est un automate à pile déterministe
qui vide sa pile avant daccepter? L(M) M
est un automate à pile déterministe
62Résultat à connaître
- Un exemple dun tel langage est
- ann?N ? anbn n?N.
- Nous avons donc la hiérarchie de langages non
contextuels suivante - Langages acceptés par des automates à pile
déterministes qui vident leur pile avant
daccepter? Langages non contextuels
déterministes? Langages non contextuels
63Exercice
- Donnez un exemple dun langage non contextuel
déterministe. - Solution Le langage anbn n?Nest non
contextuel déterministe. En effet, ce langage est
accepté par lautomate à pile déterministe
suivant (pour lequel ? a, b et ? a, )
64Notez que cet automate a été obtenu en rendant
déterministe lautomate de lexemple 2.2.
65- Donnez un exemple dun langage non contextuel qui
nest pas un langage non contextuel déterministe. - Solution Le langage anbn n?N ? anb2n n?N
est non contextuel mais nest accepté par aucun
automate à pile déterministe ( cest le langage
utilisé dans la preuve du théorème 2.50).
66Analyse syntaxique LL(k)Section 2.4
- Objectif spécifique
- Construire et utiliser des tables danalyse LL(1).
67Le processus danalyse LL
- Dans cette section et la suivante, nous allons
apprendre comment développer des procédures
danalyse syntaxique à partir dune grammaire
donnée. - Dans la présente section, le processus danalyse
étudié sappelle LL(k).
68Processus danalyse LL(k)
- Les caractéristiques du processus danalyse LL(k)
sont les suivantes - la lecture de lentrée se fait de la gauche vers
la droite(cest la raison du premier
L( left )dans LL) - les dérivations sont des dérivations à gauche
(cest la raison du deuxième L) - lanalyse se fait avec consultation, sans
lecture, des k prochains symboles de la séquence
dentrée.
69La transformation dune grammaire en automate
peut se faire en utilisant les techniques du
théorème 2.26, qui dit que pour toute grammaire
non contextuelle G, il y a un automate à pile M
tel que L(G) L(M).
70Par exemple, pour une grammaire constituée des
productions S ? aSb S ? ? Lautomate est
71- Dans létat q,
- Si un symbole non terminal se trouve au sommet
de la pile, il est remplacé par le côté droit
dune règle ayant ce symbole non terminal comme
côté gauche. - Si le sommet de la pile est un symbole terminal
égal au symbole dentrée, ce symbole est lu et
dépilé.
72- Lautomate ci-dessus est non déterministe
- Il nest pas totalement défini et il est ambigu.
73- Il y a parfois un choix de transitions. Dans
létat q, si le sommet de la pile est S, les
transitions (q, ?, Sq, aSb) et (q, ?, Sq, ?)
sont toutes deux possibles. Dans ce cas, la
connaissance du prochain symbole dentrée permet
de déterminer la transition à prendre - Si le symbole à lire est a, il faut faire la
transition (q, ?, Sq, aSb), piusqualors un a se
retrouve sur le dessus de la pile. - Si le symbole à lire est un b, il faut choisir
lautre transition. Cela fait disparaître le
symbole S du sommet de la pile. Sous ce S il y a
peut-être un b.
74Tables danalyse LL
- On peut indiquer les transitions à faire au moyen
dune table danalyse LL. Voyons comment
construire ces tables dans le cas de lanalyse
LL(1).
75- Une table danalyse LL(1) est construite comme
suit - Les rangées de la table sont étiquetées par les
symboles non terminaux de la grammaire. - Les étiquettes des colonnes sont les symboles
terminaux de la grammaire ainsi quun symbole
spécial FIN. Ce dernier représente un marqueur de
fin de chaîne. - Lentrée (X, y) de la table indique laction à
faire lorsque le symbole non terminal X est au
sommet de la pile et que le prochain symbole à
lire est un y (incluant FIN). Si le non terminal
X doit être remplacé par le côté droit dune
règle de la grammaire, le côté droit de cette
règle constitue lentrée (X, y) autrement,
lentrée est le mot erreur.
76Exemple
- Voici une grammaire et la table danalyse LL(1)
correspondante
S ? zMNzM ? aMaM ? zN ? bNbN ? z
77- Lentrée (S, a) est erreur, car le symbole peut
seulement être remplacé par le côté droit zMNz,
ce qui amène un z au sommet de la pile. Ce z peut
être dépilé seulement si le prochain symbole à
lire est z. - Lentrée (M, a) est aMa, car cest la seule
manière damener un a au sommet de la pile.
78- Puisque la grammaire na pas de règle-? (i.e. S
? ?, M ? ? ou N ? ? ), on a toujours erreur dans
chacune des entrées de la colonne étiquetée FIN.
En effet, sil y a un symbole non terminal au
sommet de la pile alors que la séquence dentrée
est toute lue, cela constitue une erreur, puisque
le remplacement du symbole non terminal par le
côté droit dune règle introduit un symbole
terminal sur la pile.
79Ce symbole terminal ne pourra être dépilé,
puisque la séquence dentrée est toute lue en
conséquence, le symbole , qui se trouve en
dessous, ne pourra être dépilé et lautomate ne
pourra atteindre létat final. Exemple
80Voici une procédure danalyse LL(1) qui simule le
comportement dun automate comme celui de
lacétate précédente en utilisant la table LL(1)
correspondante pour déterminer les actions à
prendre. Elle contient en plus des instructions
dimpression cela sera utile pour donner des
exemples dexécution.
81Procédure LL(1) Empiler le symbole initial de la
grammairelire(symbole)tant que la pile nest
pas vide faire imprimer létat de la pile, la
valeur de Symbole et ce qui reste à lire cas
sommet de la pile terminal si sommet
Symbole alors dépiler et
lire(Symbole) sinon rejeter la
séquence dentrée et sortir non
terminalsi tablesommet, Symbole ? erreur
alors dépiler puis empiler tablesommet,
Symbole sinon rejeter la séquence
dentrée et sortir fin casfin tant
queimprimer létat de la pile, la valeur de
Symbole et ce qui reste à liresi Symbole ? FIN
ou sommet erreur alors rejeter la séquence
dentrée et sortir
82Remarque
- Laction de lecture dun automate est différente
de laction de lecture de la procédure
précédente. - Lorsquun automate lit un symbole, il le traite
par la même occasion et sen débarrasse(il ne le
revoie plus). - Par contre, lorsque la procédure précédente lit
un symbole, elle le place dans la variable
Symbole, quelle peut consulter tant quune autre
valeur nest pas affectée à Symbole.
83Remarque
- La lecture, pour lautomate, est une consommation
du symbole. - Pour la procédure, cest une façon de regarder le
symbole du point de vue de lautomate, laction
de la procédure revient à regarder le prochain
symbole à lire, sans le lire (doù le 1 dans
LL(1) ).
84Exemple
- Voici comment la séquence zazazz est reconnue par
la procédure LL(1) lorsquelle utilise la table
LL suivante
85(No Transcript)
86Remarquez comment lacceptation de zazazz
correspond à une dérivation à gauche de cette
séquence S ? ? Règle S ? zMNz, appliquée au S
de létape 1? zMNz ? ? Règle M ? aMa, appliquée
au M de létape 3? zaMaNz ? ? Règle M ? z,
appliquée au M de létape 5? zazaNz ? ? Règle N
? z, appliquée au N de létape 8? zazazz
87Exercice
- Voici une grammaire G (S, a, b, c, S, R) où
R est lensemble des règles suivantes - S ? aSc S ? bSc S ? ?
- 1. Dire quel est L(G).
- Solution L(G) wcn w ? a, b ? w n ?
n ? N. En effet, toute séquence du langage peut
être divisée en deux moitiés de longueurs égales.
La première moitié est une séquence arbitraire de
a et de b alors que la deuxième moitié ne
contient que des c.
88- Construisez la table LL(1) de cette grammaire.
- Solution Voici la table demandée
Le seul cas qui peut sembler étrange à première
vue, cest celui de la case (S, c) on pourrait
croire quil sagit dun cas derreur. Cependant,
on saperçoit vite (surtout après avoir examiné
les exemples de litem 3) que cest bien ? quil
faut mettre dans cette case cela a pour effet de
faire disparaître le symbole S sur la pile, afin
de permettre à la procédure LL(1) daller voir
sil y a un c sous ce S.
89- Donnez les résultats imprimés par la procédure
LL(1) de la page 164 lorsquelle analyse les
séquences suivantes au moyen de la table
construite en 2. Dites si les séquences sont
acceptées ou rejetées. - abcc
- Solution
90 91Définition
- Une grammaire est dite LL(1) si le langage
quelle génère peut être reconnu par un analyseur
LL(1).
92Remarque
- Certaines grammaires non contextuelles
nécessitent plus dun symbole de prévision pour
quun analyseur LL puisse reconnaître leur
langage. Voici un exemple dune telle grammaire - S ? aSc S ? abTbc T ? ?
93- S ? aSc S ? abTbc T ? ?
- Lorsquun S est au sommet de la pile, on voit que
même si on sait que le prochain symbole dentrée
est a, on ne peut pas choisir la règle à
appliquer. - Il faut connaître les deux prochains symboles à
lentrée. La grammaire est dite LL(2).
94S ? aSc S ? abTbc T ? ?
Voici la table LL(2) correspondante (toutes les
entrées de la ligne T, sauf celle de la colonne
bc, pourraient être remplacées par erreur).
95La classe de langages LL(k) est un sous-ensemble
strict de laclasse des langages non contextuels
déterministes. En effet, il existe des langages
non contextuels déterministesqui ne sont LL(k)
pour aucun k. Le langage généré par la grammaire
G suivante en est un exemple S ? T T ? aT V ?
aVbS ? V T ? ? V ? ? L(G) an n ??N ?
anbn n ??N.
96L(G) an n ??N ? anbn n ??N. Supposons
que L(G) puisse être analysé par un analyseur LL
utilisant 100 symboles de prévision. Si on soumet
à cet analyseur une chaîne qui débute par 100 a
consécutifs, celui-ci est incapable de choisir
dès le départ quelle production appliquer (S ?
T ou S ? V) à laxiome S sur sa pile. Dans
lespoir de pouvoir faire un choix, il consulte
le premier symbole de prévision, puis le
deuxième, ensuite le troisième, etc., jusquau
centième, toujours sans savoir laquelle des deux
productions choisir.
97Analyse syntaxique LL(k)Section 2.4
- Objectif spécifique
- Construire et utiliser des tables danalyse LL(1).
98Le processus danalyse LL
- Dans cette section et la suivante, nous allons
apprendre comment développer des procédures
danalyse syntaxique à partir dune grammaire
donnée. - Dans la présente section, le processus danalyse
étudié sappelle LL(k).
99Processus danalyse LL(k)
- Les caractéristiques du processus danalyse LL(k)
sont les suivantes - la lecture de lentrée se fait de la gauche vers
la droite(cest la raison du premier
L( left )dans LL) - les dérivations sont des dérivations à gauche
(cest la raison du deuxième L) - lanalyse se fait avec consultation, sans
lecture, des k prochains symboles de la séquence
dentrée.
100La transformation dune grammaire en automate
peut se faire en utilisant les techniques du
théorème 2.26, qui dit que pour toute grammaire
non contextuelle G, il y a un automate à pile M
tel que L(G) L(M).
101Par exemple, pour une grammaire constituée des
productions S ? aSb S ? ? Lautomate est
102- Dans létat q,
- Si un symbole non terminal se trouve au sommet
de la pile, il est remplacé par le côté droit
dune règle ayant ce symbole non terminal comme
côté gauche. - Si le sommet de la pile est un symbole terminal
égal au symbole dentrée, ce symbole est lu et
dépilé.
103- Lautomate ci-dessus est non déterministe
- Il nest pas totalement défini et il est ambigu.
104- Il y a parfois un choix de transitions. Dans
létat q, si le sommet de la pile est S, les
transitions (q, ?, Sq, aSb) et (q, ?, Sq, ?)
sont toutes deux possibles. Dans ce cas, la
connaissance du prochain symbole dentrée permet
de déterminer la transition à prendre - Si le symbole à lire est a, il faut faire la
transition (q, ?, Sq, aSb), piusqualors un a se
retrouve sur le dessus de la pile. - Si le symbole à lire est un b, il faut choisir
lautre transition. Cela fait disparaître le
symbole S du sommet de la pile. Sous ce S il y a
peut-être un b.
105Tables danalyse LL
- On peut indiquer les transitions à faire au moyen
dune table danalyse LL. Voyons comment
construire ces tables dans le cas de lanalyse
LL(1).
106- Une table danalyse LL(1) est construite comme
suit - Les rangées de la table sont étiquetées par les
symboles non terminaux de la grammaire. - Les étiquettes des colonnes sont les symboles
terminaux de la grammaire ainsi quun symbole
spécial FIN. Ce dernier représente un marqueur de
fin de chaîne. - Lentrée (X, y) de la table indique laction à
faire lorsque le symbole non terminal X est au
sommet de la pile et que le prochain symbole à
lire est un y (incluant FIN). Si le non terminal
X doit être remplacé par le côté droit dune
règle de la grammaire, le côté droit de cette
règle constitue lentrée (X, y) autrement,
lentrée est le mot erreur.
107Exemple
- Voici une grammaire et la table danalyse LL(1)
correspondante
S ? zMNzM ? aMaM ? zN ? bNbN ? z
108- Lentrée (S, a) est erreur, car le symbole peut
seulement être remplacé par le côté droit zMNz,
ce qui amène un z au sommet de la pile. Ce z peut
être dépilé seulement si le prochain symbole à
lire est z. - Lentrée (M, a) est aMa, car cest la seule
manière damener un a au sommet de la pile.
109- Puisque la grammaire na pas de règle-? (i.e. S
? ?, M ? ? ou N ? ? ), on a toujours erreur dans
chacune des entrées de la colonne étiquetée FIN.
En effet, sil y a un symbole non terminal au
sommet de la pile alors que la séquence dentrée
est toute lue, cela constitue une erreur, puisque
le remplacement du symbole non terminal par le
côté droit dune règle introduit un symbole
terminal sur la pile.
110Ce symbole terminal ne pourra être dépilé,
puisque la séquence dentrée est toute lue en
conséquence, le symbole , qui se trouve en
dessous, ne pourra être dépilé et lautomate ne
pourra atteindre létat final. Exemple
111Voici une procédure danalyse LL(1) qui simule le
comportement dun automate comme celui de
lacétate précédente en utilisant la table LL(1)
correspondante pour déterminer les actions à
prendre. Elle contient en plus des instructions
dimpression cela sera utile pour donner des
exemples dexécution.
112Procédure LL(1) Empiler le symbole initial de la
grammairelire(symbole)tant que la pile nest
pas vide faire imprimer létat de la pile, la
valeur de Symbole et ce qui reste à lire cas
sommet de la pile terminal si sommet
Symbole alors dépiler et
lire(Symbole) sinon rejeter la
séquence dentrée et sortir non
terminalsi tablesommet, Symbole ? erreur
alors dépiler puis empiler tablesommet,
Symbole sinon rejeter la séquence
dentrée et sortir fin casfin tant
queimprimer létat de la pile, la valeur de
Symbole et ce qui reste à liresi Symbole ? FIN
ou sommet erreur alors rejeter la séquence
dentrée et sortir
113Remarque
- Laction de lecture dun automate est différente
de laction de lecture de la procédure
précédente. - Lorsquun automate lit un symbole, il le traite
par la même occasion et sen débarrasse(il ne le
revoie plus). - Par contre, lorsque la procédure précédente lit
un symbole, elle le place dans la variable
Symbole, quelle peut consulter tant quune autre
valeur nest pas affectée à Symbole.
114Remarque
- La lecture, pour lautomate, est une consommation
du symbole. - Pour la procédure, cest une façon de regarder le
symbole du point de vue de lautomate, laction
de la procédure revient à regarder le prochain
symbole à lire, sans le lire (doù le 1 dans
LL(1) ).
115Exemple
- Voici comment la séquence zazazz est reconnue par
la procédure LL(1) lorsquelle utilise la table
LL suivante
116(No Transcript)
117Remarquez comment lacceptation de zazazz
correspond à une dérivation à gauche de cette
séquence S ? ? Règle S ? zMNz, appliquée au S
de létape 1? zMNz ? ? Règle M ? aMa, appliquée
au M de létape 3? zaMaNz ? ? Règle M ? z,
appliquée au M de létape 5? zazaNz ? ? Règle N
? z, appliquée au N de létape 8? zazazz
118Exercice
- Voici une grammaire G (S, a, b, c, S, R) où
R est lensemble des règles suivantes - S ? aSc S ? bSc S ? ?
- 1. Dire quel est L(G).
- Solution L(G) wcn w ? a, b ? w n ?
n ? N. En effet, toute séquence du langage peut
être divisée en deux moitiés de longueurs égales.
La première moitié est une séquence arbitraire de
a et de b alors que la deuxième moitié ne
contient que des c.
119- Construisez la table LL(1) de cette grammaire.
- Solution Voici la table demandée
Le seul cas qui peut sembler étrange à première
vue, cest celui de la case (S, c) on pourrait
croire quil sagit dun cas derreur. Cependant,
on saperçoit vite (surtout après avoir examiné
les exemples de litem 3) que cest bien ? quil
faut mettre dans cette case cela a pour effet de
faire disparaître le symbole S sur la pile, afin
de permettre à la procédure LL(1) daller voir
sil y a un c sous ce S.
120- Donnez les résultats imprimés par la procédure
LL(1) de la page 164 lorsquelle analyse les
séquences suivantes au moyen de la table
construite en 2. Dites si les séquences sont
acceptées ou rejetées. - abcc
- Solution
121 122Définition
- Une grammaire est dite LL(1) si le langage
quelle génère peut être reconnu par un analyseur
LL(1).
123Remarque
- Certaines grammaires non contextuelles
nécessitent plus dun symbole de prévision pour
quun analyseur LL puisse reconnaître leur
langage. Voici un exemple dune telle grammaire - S ? aSc S ? abTbc T ? ?
124- S ? aSc S ? abTbc T ? ?
- Lorsquun S est au sommet de la pile, on voit que
même si on sait que le prochain symbole dentrée
est a, on ne peut pas choisir la règle à
appliquer. - Il faut connaître les deux prochains symboles à
lentrée. La grammaire est dite LL(2).
125S ? aSc S ? abTbc T ? ?
Voici la table LL(2) correspondante (toutes les
entrées de la ligne T, sauf celle de la colonne
bc, pourraient être remplacées par erreur).
126La classe de langages LL(k) est un sous-ensemble
strict de laclasse des langages non contextuels
déterministes. En effet, il existe des langages
non contextuels déterministesqui ne sont LL(k)
pour aucun k. Le langage généré par la grammaire
G suivante en est un exemple S ? T T ? aT V ?
aVbS ? V T ? ? V ? ? L(G) an n ??N ?
anbn n ??N.
127L(G) an n ??N ? anbn n ??N. Supposons
que L(G) puisse être analysé par un analyseur LL
utilisant 100 symboles de prévision. Si on soumet
à cet analyseur une chaîne qui débute par 100 a
consécutifs, celui-ci est incapable de choisir
dès le départ quelle production appliquer (S ?
T ou S ? V) à laxiome S sur sa pile. Dans
lespoir de pouvoir faire un choix, il consulte
le premier symbole de prévision, puis le
deuxième, ensuite le troisième, etc., jusquau
centième, toujours sans savoir laquelle des deux
productions choisir.