Partie 2: Montrer que si un langage est rgulier, alors il est reprsentable par une expression rgulir - PowerPoint PPT Presentation

1 / 111
About This Presentation
Title:

Partie 2: Montrer que si un langage est rgulier, alors il est reprsentable par une expression rgulir

Description:

Pour passer de l' tat 1 l' tat 2, l'automate doit lire une s quence de 0 ou ... des automates finis, on leur donne de la m moire en leur ajoutant une pile. ... – PowerPoint PPT presentation

Number of Views:548
Avg rating:3.0/5.0
Slides: 112
Provided by: Pat145
Category:

less

Transcript and Presenter's Notes

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

6
A. 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)
9
iii. 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)
10
Enlever 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.
11
Exercice
  • Donner une expression régulière qui représente le
    langage accepté par lautomate M suivant

12
Solution 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

14
Cas 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.
15
Traitons 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.

19
Cas 3a Un seul état final, deux transitions de
létat 1 vers létat 4.
20
Cas 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))).
21
Chapitre 2
  • Automates à pile, langages non contextuels

22
Objectif 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.

23
Automates à 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é.

25
Introduction
  • 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.

26
Automates à pile
Pile
27
Automates à 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.

28
Opé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

29
Notation
  • Pour représenter une transition dun automate à
    pile, on utilise la notation
  • (p, x, y q, z),
  • 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é.

30
Remarques
  • 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.

31
Remarques
  • 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.

32
Exemples
  • 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.

34
Remarque
  • 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é.

35
Exemple
  • 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.
36
Exercice
  • 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

37
Dé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).

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

42
Ce 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_
43
Voyons 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.
44
Voyons 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.
45
Le langage accepté par M est anbn n ?
N. Comme nous lavons vu au chapitre 1, aucun
automate fini ne peut accepter ce langage.
46
Exercices
  • 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.
47
2. 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.
50
3.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.
51
Remarque
  • 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.

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

53
Exemple
  • Voici un automate fini et un automate à pile
    équivalent dont toutes les transitions ont la
    forme (p, x, ? q, ?)

54
Remarque
  • 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.
55
Thé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).

56
Dé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.

63
Exercice
  • 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.
64
Solution 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.
65
Appliquons 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.

69
Nous 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.
70
Automate 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
71
Remarque
  • Par la suite, à moins dindication contraire,
    nous supposerons que les automates peuvent
    accepter sans vider leur pile.

72
Exercice
  • 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.
73
Montrons 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.
74
Il est facile de vérifier que les séquences
0011100 et 0000 sont acceptées.
75
Grammaires 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.

77
Introduction
  • 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.

78
Introduction
  • 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.

79
Dé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.

80
Rappel
  • 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-?.

82
Remarque
  • 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 ?.

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

84
Exemple
  • 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

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

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

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

89
Exemple
  • 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

90
S ? 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.
91
Exercice
  • 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
92
S ? 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.
93
Définition
  • Une dérivation à gauche seffectue en remplaçant
    toujours, à chaque étape du processus de
    dérivation, le non terminal le plus à gauche.

94
Exemple
  • Étant donnée la grammaire suivante

Voici une dérivation à gauche S ? zMNz ? zaMaNz
? zazaNz ? zazabNbz ? zazabzbz
95
Définition
  • Une dérivation à droite s effectue en remplaçant
    toujours, à chaque étape du processus de
    dérivation, le non terminal le plus à droite.

96
Exemple
É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.
97
Remarque
  • 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.

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

99
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.
100
Exercice
  • 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).

101
Dé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)
102
Arbre de dérivation
103
Remarque
  • 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.

104
Définition
  • Une grammaire est dite ambiguë si elle permet
    plus dun arbre de dérivation pour une séquence
    terminale donnée.

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

106
Exercice (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

107
Solution 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
108
Voici 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
110
Voici 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.
Write a Comment
User Comments (0)
About PowerShow.com