Arbre de drivation - PowerPoint PPT Presentation

1 / 127
About This Presentation
Title:

Arbre de drivation

Description:

branches de l'arbre sont ind pendantes.Donc l'ordre d'application des ... Si L est un langage non contextuel, alors il existe un entier p N (longueur de ... – PowerPoint PPT presentation

Number of Views:88
Avg rating:3.0/5.0
Slides: 128
Provided by: Pat145
Category:

less

Transcript and Presenter's Notes

Title: Arbre de drivation


1
Arbre 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.

2
Arbre 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.
3
Thé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.

4
Remarque
  • 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.

5
Corollaire 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.

6
Exemple 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.

10
Exercice
  • 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.

15
Exercice
  • 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

16
Exercice (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.

19
Automates à 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.

22
Supposons 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).
23
Supposons 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.
24
Dé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).

26
Exemple
  • Soit l automate

Dont l alphabet de ruban est ? a, b et
l alphabet depile ? , .
27
Cet 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.
28
Lautomate 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.
29
Ajoutons un état poubelle et les transitions
nécessaires afin de le rendre déterministe, sans
changer le langage accepté.
30
Les 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é.
31
Cet 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 ).
32
Exercice
  • 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.

33
1) 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)
35
2) 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.
36
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, ?).
37
Exercice
  • Soit M un automate à pile dont lalphabet de
    ruban est a, b, lalphabet de pile a, et le
    diagramme de transitions

38
Donner 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.
39
Le langage accepté par M est L(M) amb2m m
??N. Nous expliquons pourquoi à lacétate
suivante.
40
En 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.
41
Exercice
  • 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.

43
Solution 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
44
Solution 2
45
Remarque
  • 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.

46
Théorème 2.50(à connaître)
  • Il existe un langage non contextuel quaucun
    automate à pile déterministe ne peut accepter.

47
Démonstration
  • Montrons que L anbnn?N ? anb2nn?N est
    non contextuel, mais ne peut être accepté par un
    automate à pile déterministe.

48
Premièrement, L est non contextuel, car il est
accepté par lautomate à pile suivant
49
Deuxiè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.
51
Complé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.
52
Imaginons 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.
53
Faisons 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.
54
Considé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.
55
Ce 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.
56
Que 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.
58
Cest 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.
60
Remarque
  • 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

62
Ré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

63
Exercice
  • 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, )

64
Notez 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).

66
Analyse syntaxique LL(k)Section 2.4
  • Objectif spécifique
  • Construire et utiliser des tables danalyse LL(1).

67
Le 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).

68
Processus 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.

69
La 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).
70
Par 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.

74
Tables 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.

76
Exemple
  • 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.

79
Ce 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
80
Voici 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.
81
Procé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
82
Remarque
  • 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.

83
Remarque
  • 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) ).

84
Exemple
  • Voici comment la séquence zazazz est reconnue par
    la procédure LL(1) lorsquelle utilise la table
    LL suivante

85
(No Transcript)
86
Remarquez 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
87
Exercice
  • 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
  • abc
  • Solution

91
Définition
  • Une grammaire est dite LL(1) si le langage
    quelle génère peut être reconnu par un analyseur
    LL(1).

92
Remarque
  • 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).

94
S ? 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).
95
La 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.
96
L(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.
97
Analyse syntaxique LL(k)Section 2.4
  • Objectif spécifique
  • Construire et utiliser des tables danalyse LL(1).

98
Le 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).

99
Processus 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.

100
La 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).
101
Par 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.

105
Tables 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.

107
Exemple
  • 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.

110
Ce 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
111
Voici 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.
112
Procé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
113
Remarque
  • 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.

114
Remarque
  • 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) ).

115
Exemple
  • Voici comment la séquence zazazz est reconnue par
    la procédure LL(1) lorsquelle utilise la table
    LL suivante

116
(No Transcript)
117
Remarquez 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
118
Exercice
  • 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
  • abc
  • Solution

122
Définition
  • Une grammaire est dite LL(1) si le langage
    quelle génère peut être reconnu par un analyseur
    LL(1).

123
Remarque
  • 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).

125
S ? 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).
126
La 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.
127
L(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.
Write a Comment
User Comments (0)
About PowerShow.com