Title: Partie 2: Montrer que si un langage est rgulier, alors il est reprsentable par une expression rgulir
1- Partie 2 Montrer que si un langage est régulier,
alors il est représentable par une expression
régulière. - Pour ce faire, nous associerons une expression
régulière r à chaque automate fini M, de manière
à ce que L(r) L(M). - Nous considérerons des diagrammes de transitions
généralisés dont les arcs sont étiquetés par des
expressions régulières.
2- Voici un exemple dune partie d un tel diagramme
Pour passer de létat 1 à létat 2, lautomate
doit lire une séquence de 0 ou plusieurs x,
suivis d un y.
Si ces diagrammes généralisés peuvent être
transformés en expressions régulières, les
diagrammes usuels pourront l être.
3- Soit T le diagramme de transitions de M. Pour
trouver lexpression régulière r telle que L(r)
L(M), il faut appliquer les règles suivantes
jusquà ce que l expression régulière soit
trouvée. - Si T n a pas d état final, r ?.
- Si T a n états finaux, n gt 1, faire n copies
T1,T2,Tn de T, chaque Ti ayant un seul état
final différent des autres Tj. Évidemment, L(T)
L(T1) ? L(T2) ? ? L(Tn).
4- Si T a un seul état final.
- a) Si, de l état s1 à l état s2 il y a k arcs
étiquetés r1, r2, , rk, les remplacer par un arc
unique étiqueté r ((r1 ? r2) ? ? rk). - Par exemple , les deux parties de diagramme qui
suivent
Deviennent respectivement
5- b) Si, entre chaque paire d états il y a au plus
un arc dans chaque direction - Si T a un seul état, il est nécessairement
initial et final - Si T est
alors r p.
alors r ?.
Si T est
- Si T a deux états, lun initial et lautre final,
il y a au plus quatre arcs
6A. Si l arc t est absent, r ?.
B. Si l arc t est présent, il y a 8 cas. Dans
chaque cas, l expression régulière associée au
diagramme est facile à déduire. Par exemple, si
les seuls arcs présents sont s et t, il peut y
avoir 0 ou plusieurs transitions par larc s,
suivies d une transition par larc t.
L expression est donc (s ? t).
7- La table suivante donne une expression régulière
pour chacun des 8 cas. En changeant la
disposition des parenthèses, il est possible
d obtenir d autres solutions correctes. Dans
cette table, p signifie présent et a
signifie absent .
8(No Transcript)
9iii. Si T a au moins un état qui nest ni initial
ni final soit s0 lun de ces états. La situation
est la suivante (les boucles sont omises car non
pertinentes)
10Enlever s0 et ses arcs incidents. Pour chaque
paire p, q darcs enlevés tels que
ajouter un arc de s1 à s2, avec lexpression ( p
? q) si t est absent (( p ? t) ? q) si t est
présent.
Remarque ce dernier cas permet denlever un état
à lautomate. Un examen des cas traités montre
que le nombre détats doit diminuer jusquà un ou
deux. Le processus termine donc.
11Exercice
- Donner une expression régulière qui représente le
langage accepté par lautomate M suivant
12Solution Utilisons la méthode décrite dans la
partie 2 de la démonstration du théorème
précédent. Il serait possible de supprimer létat
5 sans changer le langage accepté par lautomate
ceci simplifierais la démarche subséquente. Nous
appliquerons plutôt la méthode strictement, et la
suppression se fera en temps et lieu.
13- Cas 2 Puisquil y a trois états finaux, il faut
faire trois copies de lautomate
14Cas 3b(iii) Les automates ont un seul état
final. Il y a au plus un arc dans chaque
direction pour chaque paire détats. Létat 5
nest ni initial ni final comme il ny a aucune
paire(arc entrant, arc sortant) de létat 5, on
peut le supprimer.
15Traitons M1 et M2 en parallèle car ils se
ressemblent.
- Cas 3b(iii) Létat 4 des deux automates nest
ni initial, ni final comme il ny a aucune paire
( arc entrant, arc sortant ) de létat 4, on peut
le supprimer.
16- Cas 3b(iii) Létat 3 de M1 et létat 2 de M2
ne sont ni initiaux, ni finaux comme il ny a
aucune paire ( arc entrant, arc sortant ) de ces
états, on peut les supprimer.
17- Cas 3b(ii) Il y a deux états, l un initial,
l autre final. - er1 (a o d) er2 (b o d)
Continuons le traitement de M3.
18- Cas 3b(iii) Létat 2 de M3 nest pas initial,
ni final il faut tenir compte de toutes les
paires (arc entrant, arc sortant) de cet état
avant de le supprimer ( il n y a qu une telle
paire). Létat 3 est ensuite supprimé de manière
similaire.
19Cas 3a Un seul état final, deux transitions de
létat 1 vers létat 4.
20Cas 3b(ii) er3 (((a o d) o a) ? ((b o d) o
b)) En regroupant les résultats, on a er
((er1 ? er2) ? er3) (((a o d) ?(b o d))
?(((a o d) o a)?((b o d) o b))).
21Chapitre 2
- Automates à pile, langages non contextuels
22Objectif général
- Comprendre les capacités et les limites des
automates à pile en tant que dispositifs de
reconnaissance de langages. Faire le lien avec
les grammaires non contextuelles.
23Automates à pile
- Objectifs spécifiques
- Démontrer le fonctionnement dun automate à pile
donné en énumérant les configurations du ruban et
celles de la pile ainsi que les états consécutifs
à une configuration initiale donnée. - Démontrer lacceptation ou le rejet dune
séquence de symboles donnée par un automate à
pile donné.
24- Transformer un automate qui accepte sans vider sa
pile en automate qui vide sa pile avant
daccepter. - Décrire le langage accepté par un automate à pile
donné. - Construire un automate à pile acceptant un
langage donné.
25Introduction
- Nous allons étudier une classe de machines plus
puissantes les automates à pile. - Elles sont capables de reconnaître les
expressions parenthésées et les imbrications de
blocs begin-end. - Pour augmenter la puissance des automates finis,
on leur donne de la mémoire en leur ajoutant une
pile.
26Automates à pile
Pile
27Automates à pile
- La pile de lautomate à pile a son propre
alphabet qui peut être différent de lalphabet
dentrée. - À part la pile, lautomate à pile est comme
lautomate fini.
28Opérations de lautomate à pile
- Les opérations que peut effectuer un automate à
pile sont les suivantes - Lire un symbole ( et avancer la tête de lecture)
- Dépiler un symbole
- Empiler un symbole
- Changer détat
29Notation
- Pour représenter une transition dun automate à
pile, on utilise la notation - (p, x, y q, z),
- où
- p est létat courant,
- x est le symbole à lentrée,
- y est le symbole dépilé,
- q est le nouvel état et
- z est le symbole empilé.
30Remarques
- Le y est dépilé avant que le z ne soit empilé.
- Lautomate nest pas obligé de faire à la fois
une lecture, un empilement et un dépilement à
chaque transition. - Si aucun symbole nest lu, on met un ? à la place
du x.
31Remarques
- Si aucun symbole nest dépilé, on met un ? à la
place du y. - Si aucun symbole nest empilé, on met un ? à la
place du z.
32Exemples
- La transition (1, a, t2, b) signifie que
lautomate passe de létat 1 à létat 2, en
lisant un a sur le ruban, en dépilant un t et en
empilant un b. - (p, ?, ?q, ?) signifie que lautomate passe de
létat p à létat q ( aucune lecture, ni
empilement, ni dépilement).
33- (p, ?, 2q, ?) signifie que lautomate passe de
létat p à létat q en enlevant le symbole 2 de
la pile. - (p, a, ?q, c) indique que lautomate passe de
létat p à létat q en lisant du ruban le symbole
a et en plaçant c sur la pile.
34Remarque
- Les diagrammes de transitions des automates à
pile sont comme ceux des automates finis sauf que
l étiquette dun arc est plus complexe. - Ces étiquettes ont la forme x, y z, où x est le
symbole lu sur le ruban, y est le symbole dépilé
et z est le symbole empilé.
35Exemple
- Voici le diagramme de transitions d un automate
à pile
En passant de l état 1 à l état 2, l automate
empile un .En passant de l état 2 à l état 3,
il lit un b et dépile un a.
36Exercice
- Que fait l automate en passant
- de létat 2 à létat 2
- R L automate lit a, ne dépile rien et empile
a. - de l état 3 à l état 3
- R L automate lit b, dépile a et nempile rien.
- De l état 3 à l état 4
- R L automate ne lit rien, dépile et
n empile rien
37Définition
- Un automate à pile est un sixtuplet (S, ?, ?, T,
?, F) où - S est un ensemble fini détats,
- ? est lalphabet dentrée ( alphabet du ruban ),
- ? est lalphabet de la pile,
- T est un ensemble fini de transitions,T ? S ?
(? ? ?) ? (? ? ?) ? S ? (? ? ?) - ? ? S est létat initial,
- F ? S est lensemble des états finaux.
38- Lautomate à pile est démarré dans létat initial
avec la pile vide. - Il accepte la séquence dentrée ssi il peut
atteindre un état final après lavoir lue en
entier. - Notes
- Peut puisque la définition dun automate à pile
nexige pas que lensemble T des transitions
représente une fonction, les automates à pile
peuvent être non déterministes. - Après Il nest pas nécessaire que lautomate à
pile atteigne un état final tout de suite après
avoir lu le dernier symbole dentrée. Après avoir
terminé la lecture de la séquence dentrée,
lautomate peut effectuer des transitions en
manipulant sa pile et atteindre de cette façon un
état accepteur.
39- Le langage accepté par un automate à pile M est
noté L(M) cest lensemble des séquences
acceptées (i.e. L(M) w w est acceptée).
40Exemple
- Soit lautomate à pile M (1, 2, 3, 4, a,
b, a, b, , T, 1, 1, 4), où T est
lensemble de transitions(1, ?, ? 2, ), (2,
a, ? 2, a), (2, b, a 3, ?), (3, b, a 3, ?),
(3, ?, 4, ?). - Voici son diagramme de transitions
41- On pourrait considérer que lalphabet de pile de
cet automate est a, puisquil nutilise pas b
sur la pile. - Cet automate accepte la séquence ? car létat
initial est aussi final.
42Ce même automate accepte aussi la séquence aabb
en passant par la suite de configurations
suivante
État ruban pile 1 aabb 2 aabb 2 aabb a
2 aabb aa 3 aabb a 3 aabb_ 4 aabb_
43Voyons ce qui se passe si la séquence dentrée
est aab
État ruban pile 1 aab 2 aab 2 aab a 2
aab aa 3 aab_ a
Aucune transition nest possible car il n y a
plus de b à lire et il nest pas possible de
dépiler à cause du a au-dessus. La séquence est
donc rejetée car létat 3 nest pas final.
44Voyons ce qui se passe si la séquence dentrée
est aabbb
État ruban pile 1 aabbb 2 aabbb 2 aabbb
a 2 aabbb aa 3 aabbb a 3 aabbb 4 aabb
b seule transition possible
La séquence dentrée nest pas toute lue et ne
peut pas lêtre car il ny a pas dautre choix de
chemin. Elle est rejetée.
45Le langage accepté par M est anbn n ?
N. Comme nous lavons vu au chapitre 1, aucun
automate fini ne peut accepter ce langage.
46Exercices
- Soit le diagramme de transitions dun automate à
pile
1. Quelle est la définition formelle de cet
automate (i.e. quels sont ses paramètres S, ?, ?,
T, ?, F)? R S 1, 2 ? 0, 1 ? 0
T (1, 0, ? 1, 0), (1, 1, 0 2, ?), (2, 1,
0 2, ?) ? 1 F 2Note Les valeurs
données pour ? et ? sont les valeurs minimales.
Ces alphabets pourraient contenir dautres
symboles.
472. Quelle est la suite de configurations pour ces
séquences dentrée (a) 0011 R
État ruban pile 1 0011 1 0011 0 1 0011
00 2 0011 0 2 0011
La séquence est acceptée parce quelle est toute
lue et que létat atteint est un état final.
48(b) 011 R État ruban pile 1 011 1 011 0
2 011
La séquence est rejetée. En effet, lentrée nest
pas toute lue et il ny a plus de transition
possible de plus, il ny a pas dautres
exécutions que celle-là.
49(c) 001 R État ruban pile 1 001 1 001 0
1 001 00 2 001_ 0
La séquence est acceptée (même si la pile nest
pas vide) car létat atteint (2) est final et la
séquence est toute lue.
503.Quel langage accepte-t-il? R Le langage
accepté est 0m1n m, n ? N ? m ? n. Il est
facile de montrer que ce langage nest pas
régulier. Remarquons quon a N et non N car,
pour passer de létat 1 à létat 2, il faut
dépiler un 0 en lisant un 1, et pour quil y ait
un 0 à dépiler, il faut lavoir lu auparavant.
51Remarque
- Si toutes les transitions dun automate à pile
ont la forme (p, x, ? q, ?), cet automate à pile
se comporte comme un automate fini(puisquil ne
manipule pas la pile). - Donc langages réguliers ? L(M) M est un
automate à pile.
52Remarque
- Nous avons vu quil existe un automate à pile qui
accepte anbn n ? N, alors quaucun automate
fini ne peut le faire. - Les automates à pile sont donc strictement plus
puissants que les automates finis. - Donc langages réguliers ? L(M) M est un
automate à pile.
53Exemple
- Voici un automate fini et un automate à pile
équivalent dont toutes les transitions ont la
forme (p, x, ? q, ?)
54Remarque
- Considérons lautomate suivant
Si on lui soumet à lentrée la chaîne 0001,
lautomate accepte cette dernière en laissant
deux 0 sur la pile. Pour certaines applications
où lutilisation des automates à pile est
nécessaire, ce type de comportement pourrait être
jugé inacceptable. Le théorème suivant nous dira
ce quil advient de la classe des langages
reconnus par les automates à pile si on les
oblige à vider leur pile avant daccepter.
55Théorème
- Soit M (S, ?, ?, T, ?, F) un automate à pile
qui peut accepter des séquences sans vider sa
pile. Il existe un automate à pile M (S, ?,
?, T, ?, F) qui vide toujours sa pile avant
daccepter et tel que L(M) L(M).
56Démonstration
- Cette démonstration est combinée à un exemple
indiquant comment effectuer la transformation de
lautomate suivant
Nous prenons ? 0, 1.
57- On transforme M en M de la façon suivante
- Ajouter un nouvel état initial ? et une
transition (?, ?, ? ?, ) où ? ?.
58- Ensuite, ajouter un nouvel état p. Puis, pour
tous les s ? F, ajouter une transition (s, ?, ?
p, ?).
59- Pour tout z ? ?, ajouter les transitions (p, ?,
z p, ?) (rappel ? ?).
60- Ajouter un nouvel état q qui devient le seul état
final, ainsi quune transition (p, ?, q, ?).
61- Le fonctionnement de lautomate M se résume de
la façon suivante. Dabord, M marque la pile
avec le symbole , puis fait comme M. - Si M lit toute la chaîne et la rejette en
terminant dans létat 1, M fait de même. - Si M termine dans létat 2 sans lire toute la
chaîne, il la rejette. M fait la transition de 2
vers p, vide la pile(sauf ), puis fait la
transition de p vers q (en dépilant ) et arrête
en rejetant (car il na pas lu toute la chaîne
dentrée).
62- Si M finit dans létat 2 avec toute la séquence
lue, M fait la même chose puis va en p, dépile
jusquau symbole , puis va à létat q en
dépilant et accepte avec sa pile vide.
63Exercice
- Voici le diagramme de transitions dun automate à
pile.
Transformer cet automate pour quil accepte le
même langage en vidant toujours sa pile lorsquil
accepte.
64Solution Nous considérons que ? est le plus
petit alphabet compatible avec le diagramme de
transitions, ce qui donne ? a. Donnons à
lunique état du diagramme létiquette 1 afin de
pouvoir y référer par la suite.
65Appliquons lalgorithme décrit dans la
démonstration du théorème précédent.
- Ajouter un nouvel état initial ? et une
transition(?, ?, ? ?, ) où ? ?. Prenons ?
0. Comme ? ?, nous pouvons garder ce symbole
(sinon il faudrait en prendre un autre).
66- Ensuite, ajouter un nouvel état p. Puis, pour
tous les s ? F, ajouter une transition (s, ?, ?
p, ?). Prenons p 2. Comme 1 est le seul état
final, il ny a quune transition à ajouter.
67- Pour tout z ? ?, ajouter les transitions (p, ?,
z p, ?) (rappel ? ?). Comme ? ne contient que
le symbole a, il ny a quune transition à
ajouter.
68- Ajouter un nouvel état q qui devient le seul état
final, ainsi quune transition (p, ?, q, ?).
Prenons q 3.
69Nous avons choisi de remplacer ?, p et q par 0,
2 et 3, respectivement, afin dillustrer cette
possibilité. Pour cet automate, nous aurions pu
utiliser les étiquettes ?, p et q, car elles ne
sont pas utilisées dans lautomate donné.
Lacétate suivante montre comment la séquence aab
est acceptée par lautomate donné dans lexercice
et par lautomate construit.
70Automate construit État ruban pile 0 aab
1 aab 1 aab a 1 aab aa 1 aab_
a 2 aab_ a 2 aab_ 3 aab_
Automate donné État ruban pile 1 aab
1 aab a 1 aab aa 1 aab_ a
71Remarque
- Par la suite, à moins dindication contraire,
nous supposerons que les automates peuvent
accepter sans vider leur pile.
72Exercice
- Construire un automate à pile acceptant le
langage 0n1m0n m, n ? N.
R
Nous avons choisi S A, B, C, D, E et ? a,
mais dautres choix sont possibles. Létat A
pourrait être final afin daccepter ?, mais ? est
acceptée par lautomate ci-dessus.
73Montrons que la séquence 0 est rejetée par cet
automate. Voici les deux seules exécutions
possibles
État ruban pile A 0 B 0 B 0_
a C 0_ a D 0_ a
État ruban pile A 0 B 0 C 0
D 0 E 0
Comme toutes les exécutions possibles mènent au
rejet de la séquence 0, 0 est rejetée.
74Il est facile de vérifier que les séquences
0011100 et 0000 sont acceptées.
75Grammaires non contextuelles
- Objectifs spécifiques
- Décrire le langage généré par une grammaire non
contextuelle donnée. - Construire une grammaire non contextuelle
générant un langage donné. - Passer dune grammaire non contextuelle à un
automate à pile.
76- Convertir une grammaire non contextuelle
quelconque en grammaire sous forme normale de
Chomsky. - Donner larbre de dérivation dune séquence
donnée par une grammaire non contextuelle donnée.
77Introduction
- Dans cette section, nous introduisons des
grammaires plus puissantes que les grammaires
régulières en levant les restrictions imposées au
côté droit des productions. - Ces grammaires, appelées non contextuelles,
peuvent générer exactement les langages
reconnaissables par les automates à pile.
78Introduction
- En particulier, les grammaires non contextuelles
peuvent générer des expressions arithmétiques
dont les parenthèses sont correctement
équilibrées. - Ce type de grammaire est le plus utilisé en
informatique. - Les grammaires BNF, utilisées pour définir la
syntaxe des langages de programmation, sont des
grammaires équivalentes aux grammaires non
contextuelles.
79Définition
- Une grammaire non contextuelle ( ou indépendante
du contexte ) est une grammaire de phrases dont
le côté gauche de chaque règle consiste en un
seul symbole non terminal.
80Rappel
- Une grammaire (ou grammaire de phrases ou
grammaire à structure de phrases) est un
quadruplet (V, T, S, R) où - V est un ensemble fini de symboles non terminaux
(alphabet non terminal). - T est un ensemble fini de symboles terminaux
(alphabet terminal).
81- S ? V est le symbole de départ quon nomme aussi
axiome ou symbole initial. - R est un ensemble fini de règles de réécriture
(ou productions ou règles de substitution). Ces
règles sont formées dun terme de gauche, dune
flèche (?) et dun terme de droite. Les termes
gauche et droit peuvent être nimporte quelle
combinaison de symboles de V ou de T, pourvu
quil y ait au moins un symbole de V à gauche. Le
côté droit peut être vide, ce qui est indiqué par
un ?. On parle alors de règle-?.
82Remarque
- Le côté droit des grammaires régulières est
constitué dun terminal, dun terminal suivi
dun non terminal ou de la chaîne vide. - Le côté droit des grammaires non contextuelles
peut être nimporte quel arrangement de terminaux
et de non terminaux ou bien la chaîne ?.
83Remarque
- Ces deux types de grammaires ont les mêmes
restrictions sur le côté gauche. - Les grammaires régulières sont donc un
sous-ensemble strict de lensemble des grammaires
non contextuelles.
84Exemple
- Voici une grammaire non contextuelleG (V, T,
S, R) où - V expr, instr, liste_instr
- T id, , si, alors, tant, que, faire, début,
fin, , a - S instr
85- R instr ? id expr instr ? si expr alors
instr instr ? tant que expr faire instr instr ?
début liste_instr fin liste_instr ? instr
liste_instr liste_instr ? ? expr ? a
86Remarque
- Le terme non contextuelle vient du fait
quétant donné que le côté gauche dune règle est
constitué uniquement dun non terminal, la règle
peut être appliquée sans égard au contexte dans
lequel se trouve le non terminal.
87Remarque
- Par exemple, grâce à la règle Z ? aXb, Z peut
toujours être remplacé peu importe le contexte où
il se trouve. - Par contre, considérons la règle aZb ? aXb. Étant
donné une telle règle, Z peut être remplacé par X
seulement sil est précédé par un a et suivi par
un b.
88Remarque
- Les grammaires non contextuelles génèrent des
chaînes par dérivation tout comme les grammaires
régulières. - Mais dans le cas des grammaires non
contextuelles, au cours du processus de
dérivation, la possibilité peut soffrir à nous
de choisir parmi plusieurs non terminaux à
remplacer.
89Exemple
- Pour illustrer le phénomène mentionné dans la
remarque précédente, dérivons une chaîne en
appliquant les règles de la grammaire G
ci-dessousS ? zMNz M ? aMa N ? bNb M ?
z N ? z
90S ? zMNz M ? aMa N ? bNb M ? z N ? z
S ? zMNz ? zaMaNz ? zaMazz ? zazazz
On voit quà la deuxième étape, le choix soffre
de remplacer le non terminal M ou le non terminal
N. Alors, est-ce que la chaîne aurait été
différente si nous avions appliqué les mêmes
règles mais dans un ordre différent?
NON, nous verrons pourquoi plus loin.
91Exercice
- Dériver par une expression ensembliste le langage
généré par la grammaire suivante
S ? zMNz M ? aMa N ? bNb M ? z N ? z
92S ? zMNz M ? aMa N ? bNb M ? z N ? z
Solution La première production appliquée doit
être S ? zMNz. Le développement de M avec les
productions M ? z et M ? aMa donneM ? z et
M ? aMa ? ? amMam ? amzam, m ? N. On obtient
donc des séquences de la forme amzam, m ? N. Le
développement de N avec les productions N ? z et
N ? bNb donneN ? z et N ? bNb ? ?
bnNbn ? bnzbn, n ? N. On obtient donc des
séquences de la forme bnzbn , n ? N. Donc, L(G)
z amzam bnzbnz m, n ? N.
93Définition
- Une dérivation à gauche seffectue en remplaçant
toujours, à chaque étape du processus de
dérivation, le non terminal le plus à gauche.
94Exemple
- Étant donnée la grammaire suivante
Voici une dérivation à gauche S ? zMNz ? zaMaNz
? zazaNz ? zazabNbz ? zazabzbz
95Définition
- Une dérivation à droite s effectue en remplaçant
toujours, à chaque étape du processus de
dérivation, le non terminal le plus à droite.
96Exemple
Étant donnée la grammaire suivante
Voici une dérivation à droite S ? zMNz ? zMbNbz
? zMbzbz ? zaMabzbz ? zazabzbz
Cette séquence est la même que celle obtenue par
une dérivation à gauche. Elle est le résultat de
lapplication des mêmes règles dansun ordre
différent.
97Remarque
- Dautres dérivations sont possibles mais toutes
donnent les mêmes séquences terminales. - C est facile à voir en considérant l arbre de
dérivation.
98Arbre 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.
99Arbre 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.
100Exercice
- Soit la grammaire G (S, , -, , /, (, ),
a, S, R) où R est lensembles des règles
suivantesS ? S S S ? S S S ? (S)S ? S -
S S ? S / S S ? a - Donner une dérivation à gauche, une dérivation à
droite et larbre de dérivation pour la séquence
a (a a).
101Dérivation à gauche S ? S S ? a S ? a
(S) ? a (SS) ? a (aS) ? a (aa)
Dérivation à droite S ? S S ? S (S) ? S
(SS) ? S (Sa) ? S (aa) ? a
(aa)
102Arbre de dérivation
103Remarque
- Même si lordre dapplication des règles de
production naffecte pas le résultat final, il
peut arriver que, pour une séquence terminale
donnée, des choix différents de règles résultent
en des arbres différents. - Ce cas est suffisamment important pour que lon
donne un nom aux grammaires qui le permettent.
104Définition
- Une grammaire est dite ambiguë si elle permet
plus dun arbre de dérivation pour une séquence
terminale donnée.
105Exercice
- Montrez que la grammaire G ci-dessous est ambiguë
en produisant la chaînesi condition alors si
condition alors instruction sinon instructionpar
des dérivations dont les arbres sont différents. - G (S, condition, si , alors, sinon
,instruction, S, R) où R est
l ensemble des règles suivantes - ) S ? si condition alors S
- ) S ? si condition alors S sinon S
- ) S ? instruction.
106Exercice (suite)
- Quel est le résultat du programme suivant, selon
larbre de dérivation utilisé pour analyser
linstruction conditionnelle? - x1si x gt 5 alors si x lt 10 alors x x1
sinon xx-1
107Solution Dérivation 1 S ? ? Règle 1? si
condition alors S ? ? Règle 2? si condition
alors si condition alors S sinon S ? ? Règle
3? si condition alors si condition alors
instruction sinon S ? ? Règle 3? si condition
alors si condition alors instruction sinon
instruction
108Voici larbre de dérivation correspondant, auquel
on a ajouté les conditions et les
(sous-)instructions de linstruction à évaluer
Comme résultat de linstruction à évaluer nous
avons x 1(x vaut 1). Car on avait x1 avant
linstruction Si..
109 Dérivation 2 S ? ? Règle 2? si condition
alors S sinon S ? ? Règle 1? si condition alors
si condition alors S sinon S ? ? Règle 3? si
condition alors si condition alors instruction
sinon S ? ? Règle 3? si condition alors si
condition alors instruction sinon instruction
110Voici larbre de dérivation correspondant, auquel
on a ajouté les conditions et les
(sous-)instructions de linstruction à évaluer
S
Le résultat de linstruction à évaluer est x 0
(x valait 1 après x1).
111- Afin de lever cette ambiguïté, certains langages
se donnent des directives pour lapplication des
règles. - Par exemple, en COBOL, le sinon est associé
au alors le plus rapproché. Quelle que soit
la règle, il est toujours possible de forcer le
choix désiré au moyen dune paire début, fin .
Cest ainsi que linstruction - si x gt 5 alors début si x lt 10 alors xx1
sinon x x-1 fin - permet dobtenir le résultat correspondant au
premier arbre de dérivation alors que
linstruction - si x gt 5 alors début si x lt 10 alors xx1
fin sinon x x-1 - mène au résultat correspondant au deuxième
arbre.