CH.4 Grmmires non contextuelles 4.1 Les dérivtions 4.2 L simplifiction 4.3 L forme normle de Chomsky 4.4 L forme normle de Greibch 4.5 Les grmmires linéires droites Automtes ch4 1 4.1 Les dérivtions Modèle pour l génértion d'expressions stisfisnt une syntxe plus évoluée que ce que permettent les expressions régulières. Pr exemple, les expressions prenthésées. Contreprtie : nlyse plus difficile, ne s'ppliqunt que pour certins lngges. Grmmire non contextuelle G = (V, T, P, S). V lphbet fini de vribles (A, B,...) ; T lphbet terminl (, b, 1, id,...) ; S xiome = vrible distinguée ; P ensemble de productions A α, où α est un mot sur V T. Les productions de A sont, pour bréger, séprées pr. On noter ussi (X,Y,...) des symboles dns V T, et (u, v, x,...) des mots sur T. Automtes ch4 2
On utilise les productions pour récrire les vribles. Si A β est une production de G, et si αaγest un mot sur V T, on dit que αaγdérive imméditement en αβγet on note : αaγ αβγ. L fermeture réflexive et trnsitive de est notée *. Le lngge engendré pr G est l'ensemble L(G) des mots w sur T tels que S * w. Les mots sur V T qui dérivent de S, les métmots, ne sont intéressnts que comme étpes intermédiires. Exemples : G = (V, T, P, S), vec V = {S}, T = {0, 1}, et P = S 0S1 01. Seule dérivtion possible donnnt un mot : S 0S1 00S11 0 3 S1 3... 0 n 1 S1 n 1 0 n 1 n. Donc L(G) = {0 n 1 n, n 0}. Automtes ch4 3 En générl très difficile de crctériser le lngge engendré pr une grmmire. Exemple : G = (V, T, P, S), vec V = {S, A, B}, T = {, b}, et P = S B ba A S baa B b bs BB Montrer que L(G) = mots ynt utnt de que de b. Pour cel, montrer pr récurrence sur l longueur de w que * S w w utnt de que de b, A * w w un de plus que de b, B * w w un b de plus que de. Automtes ch4 4
Arbres de dérivtion. On représente une dérivtion pr un rbre : il conserve l'historique de l dérivtion et est plus cnonique. Exemple : Grmmire précédente et w = bbb. S b B B S B b B b Dérivtions : - à guche S B BB bsb bbb bbb bbb ; - à droite S B BB Bb bsb bbb bbb. Automtes ch4 5 On montre pr récurrence sur l longueur de l dérivtion le lemme suivnt. Lemme : Un métmot α dérive d'une vrible A si et seulement s'il existe un rbre de dérivtion de rcine A dont les feuilles lues de guche à droite donnent α. Une grmmire est mbiguë si un même mot possède plus d'un rbre de dérivtion. L'nlyse syntxique consiste, étnt donné un mot, à dire s'il est engendré pr une grmmire donnée. Si oui, à produire un rbre de dérivtion. Les techniques clssiques d'nlyse descendnte et scendnte ne s'ppliquent qu'à des grmmires non mbiguës. L grmmire de l'exemple est mbiguë : pr exemple, le mot bbbbb possède deux rbres de dérivtion. Automtes ch4 6
Deux grmmires engendrnt le même lngge sont équivlentes. L'mbiguïté est une propriété des grmmires et non des lngges. Pour un même lngge, certines grmmires peuvent être mbiguës, d'utres non. Prfois, toutes sont mbiguës. Un tel lngge est dit intrinsèquement mbigu. Exemple : Les deux grmmires suivntes engendrent les expressions lgébriques prenthésées. E E + E E * E (E) id est mbiguë ; E E + T T T T * F F F (E) id n'est ps mbiguë. Automtes ch4 7 4.2 L simplifiction On v donner des lgorithmes permettnt de trnsformer une grmmire non contextuelle en une grmmire équivlente plus simple. 1. Élimintion des symboles inutiles. En deux étpes : D'bord éliminer les vribles d'où ne dérive ucun mot en symboles terminux. Pour cel, lgorithme récursif n 1 : - Les vribles dont une production u moins ne contient que des terminux sont utiles ; - Les vribles dont une production u moins ne contient que des terminux et des symboles utiles sont utiles. Cet lgorithme se termine en fournissnt les symboles à retenir. Automtes ch4 8
Les utre sont inutiles, on les enlève. L grmmire insi obtenue est équivlente à l grmmire de déprt. Puis éliminer tous les symboles (terminux ou non) n'pprtennt à ucun métmot dérivé de l'xiome. Pour cel, lgorithme récursif n 2: - L'xiome est utile ; - Les symboles pprissnt dns les productions de symboles utiles sont utiles. Les symboles non retenus sont inutiles, on les enlève et on encore une grmmire équivlente. L'enlèvement des symboles inutiles se fit en ppliqunt l'lgorithme n 1 puis l'lgorithme n 2. L'ordre de l'importnce. Automtes ch4 9 Exemple : Prtons de l grmmire G suivnte : S AB CA A B AB EA C B b D C E BA L'lgorithme n 1 conserve A et C, puis S et D. Il reste donc : S CA A C b D C L'lgorithme n 2 élimine D. Il reste finlement : S CA A C b Automtes ch4 10
2. Suppression des ε-productions Les ε-productions ont comme inconvénient que, dns une dérivtion, l longueur des métmots peut décroître. Pour des besoins d'nlyse, il est préférble d'éviter cette sitution. Si ε pprtient à L(G), il n'est bien sûr ps possible d'éviter toutes les ε-productions. On trite donc uniquement les lngges non contextuels dont on éventuellement enlevé le mot vide. On cherche récursivement les vribles nnulbles, celles d'où dérive le mot vide ; on prt d'une grmmire sns symbole inutile : - Les vribles qui se récrivent ε sont nnulbles ; - Les vribles dont une production u moins ne contient que des vribles nnulbles sont nnulbles. L'ensemble ANNUL(G) des vribles nnulbles de G étnt déterminé, on modifie les productions contennt des vribles nnulbles. Automtes ch4 11 On remplce dns une production A α les symboles nnulbles de α pr le mot vide de toutes les mnières possibles. Enfin, on supprime les productions vides. L grmmire insi obtenue est équivlente à l grmmire de déprt (u mot vide près éventuellement). Exemple : L grmmire suivnte engendre les mots bien prenthésés : S S(S) ε L grmmire S S(S) (S) S() () engendre les mêmes mot, suf le mot vide. Pour obtenir le mot vide, on tolère une seule production vide, sur l'xiome, et sns utoriser celui-ci à pprître en prtie droite de production. On rjoute donc un nouvel xiome, ici T : T ε S S S(S) (S) S() () Automtes ch4 12
3. Élimintion des productions unitires Il s'git des productions de l forme A B, où B est une vrible. On suppose que G n' ucune vrible inutile, ni production vide. On cherche toutes les dérivtions de l forme A * B. Cel se fit récursivement à prtir des productions unitires. Chque fois qu'une telle dérivtion est obtenue, on joute ux productions de A toutes les productions non unitires de B. Enfin, on effce les productions unitires. L grmmire insi obtenue peut-être des symboles inutiles, qu'on supprime. L grmmire finle est équivlent à l grmmire de déprt, n' ps de symboles inutiles, de productions vides ni de productions unitires. Exemple : Pour l grmmire précédente, on obtiendrit : T ε S(S) (S) S() () S S(S) (S) S() () Automtes ch4 13 4.3 L forme normle de Chomsky On limite l forme des productions : seules sont dmises les formes A BC et A. Une telle grmmire est une grmmire normle de Chomsky. Théorème : Tout lngge non contextuel sns le mot vide peut être engendré pr une grmmire normle de Chomsky. Démonstrtion : 1. Prtir de G sns vrible inutile ni ε-production ni production unitire ; 2. Pour chque terminl, jouter une vrible C vec l'unique production C ; 3. Soit A X 1 X 2...X m une production de G vec m > 1. Remplcer toutes les occurrences des terminux pr l vrible ssociée u 2. Automtes ch4 14
4. Les productions sont de l forme désirée ou bien de l forme A B 1 B 2...B m où m > 2 et où les B i sont des vribles. Remplcer une telle production pr A B 1 D 1, D 1 B 2 D 2,... Exemple : S B ba A S baa B b bs BB devient : S C B C b A C C b b A C S C b D D AA B b C b S C E E BB L forme normle de Chomsky un intérêt essentiellement théorique. Automtes ch4 15 4.4 L forme normle de Greibch On limite cette fois les productions à l forme A B 1 B 2...B m, où m 0. Toutes les productions débutent pr un terminl suivi de vribles. L grmmire initile de l'exemple précédent est déjà sous forme normle de Greibch. Lemme : Si les productions de B sont B β 1 β 2... β m, on ne chnge ps le lngge engendré en remplçnt une production A α 1 Bα 2 pr A α 1 β 1 α 2 α 1 β 2 α 2... α 1 β m α 2. Démonstrtion : évident. On indique mintennt comment éliminer l récursivité directe à guche. Utile pour fbriquer des nlyseurs syntxiques pr descente récursive. Supposons ucune production vide ni unitire. Automtes ch4 16
Si A est une vrible récursive à guche, ses productions sont : A Aα 1 Aα 2... Aα r (productions récursives à guche) A β 1 β 2... β s, (productions non récursives) On introduit une nouvelle vrible B et on remplce les productions de A pr : A β 1 β 2... β s B α 1 α 2... α r A β 1 B β 2 B... β s B B α 1 B α 2 B... α r B Cel ne chnge ps le lngge engendré. Puisque les B ne sont produits qu'à prtir des productions de A, il suffit de voir que les productions de A dns l'une comme dns l'utre des grmmires produisent in fine les mêmes mots. Peut-être des productions unitires sont-elles pprues pour B. On peut vérifier que leur suppression n'introduit ucune récursivité directe à guche. Ceci démontre le théorème suivnt. Automtes ch4 17 Théorème (Élimintion de l récursivité directe à guche) : Tout lngge non contextuel sns le mot vide peut être engendré pr une grmmire sns symbole inutile ni production vide ni production unitire ni récursivité directe à guche. On peut mintennt énoncer et démontrer le théorème de l mise sous forme normle de Greibch. Théorème : Tout lngge non contextuel sns le mot vide peut être engendré pr une grmmire sns symbole inutile dont toutes les productions sont de l forme A B 1 B 2...B m, où m 0. Démonstrtion : On prt d'une grmmire G sous forme normle de Chomsky. On ordonne (rbitrirement) les vribles : A 1, A 2,..., A m ; c'est une bonne idée de supposer que l première est l'xiome. Automtes ch4 18
Les productions considérées seront de trois types possibles : - type 1 : A i α, où α {A i + B j }* ; - type 2 : A i A j α, où α {A i }{A i + B j }* et j > i ; - type 3 : A i A j α, où α {A i }{A i + B j }* et j i. Au déprt, les trois types sont seuls présents (Chomsky). Dns un premier temps, on v éliminer les productions de type 3, quitte à introduire de nouvelles vribles B i et des productions de l forme B i A j β, où β {A i + B j }*. Supposons qu'on pu éliminer les productions de type 3 pour les vribles jusqu'à A i 1 en introduisnt les B j correspondntes. On considère les productions de type 3 dns l'ordre croissnt des indices j : A i A 1 α et on remplce A 1 pr ses productions. On fit insi pprître des productions des trois types, mis plus ucune de type 3 commençnt pr A 1. Puis on fit de même pour A 2,..., A i 1. Les seules productions de type 3 restntes sont directement récursives à guche. Automtes ch4 19 Les productions de A i sont des types : - type 1 : A i α, où α {A i + B j }* ; - type 2 : A i A j α, où α {A i }{A i + B j }* et j > i ; - type 3 : A i A i γ, où γ {A i }{A i + B j }*. On élimine le type 3 pr élimintion de l récursivité directe à guche : on introduit donc l vrible B i et on obtient des productions : A i α αb i A i A j α A j αb i B i γ γb i. Les productions restntes sont bien de types 1 ou 2, et les productions de B i commencent bien pr une vrible A j. On considère mintennt les productions de type 2 pr ordre décroissnt des indices. L dernière vrible A m ne peut en voir. Dns les productions de A m 1 de type 2, seule pprît A m, qu'on remplce pr ses productions et insi de suite jusqu'à A 1. Automtes ch4 20
Mintennt, toutes les productions des A i sont de type 1. Dns les productions des B i, on remplce le premier symbole, qui est un A i, pr les productions de celui-ci. L grmmire obtenue est sous forme normle de Greibch. Remrques : Cel ccroît le nombre de productions de fçon exponentielle. Dns l prtique, il n'est ps indispensble que l grmmire soit sous forme normle de Chomsky, mis le déroulement de l'lgorithme peut en être perturbé. Automtes ch4 21 Exemple : A 1 A 2 A 3 A 2 A 3 A 1 b A 3 A 1 A 2 Première étpe : A 1 et A 2 sns chngements ; pour A 3, grder A 3 ; puis A 3 A 2 A 3 A 2, puis A 3 A 3 A 1 A 3 A 2 ba 3 A 2 ; les productions de A 3 sont donc : A 3 A 3 A 1 A 3 A 2 et A 3 ba 3 A 2. Élimintion de l récursivité directe à guche : A 3 ba 3 A 2 ba 3 A 2 B 3 B 3 et B 3 A 1 A 3 A 2 A 1 A 3 A 2 B 3. Comme prévu, les productions de A 3 sont de type 2. Utilisons-les pour récrire les productions de A 2 : A 2 ba 3 A 2 A 1 A 1 ba 3 A 2 B 3 A 1 B 3 A 1 b. Récrivons mintennt les productions de A 1 : A 1 ba 3 A 2 A 1 A 3 A 1 A 3 ba 3 A 2 B 3 A 1 A 3 B 3 A 1 A 3 ba 3, puis les productions de B 3 : B 3 ba 3 A 2 A 1 A 3 A 3 A 2 A 1 A 3 A 3 A 2 ba 3 A 2 B 3 A 1 A 3 A 3 A 2 B 3 A 1 A 3 A 3 A 2 ba 3 A 3 A 2 ba 3 A 2 A 1 A 3 A 3 A 2 B 3 A 1 A 3 A 3 A 2 B 3 ba 3 A 2 B 3 A 1 A 3 A 3 A 2 B 3 B 3 A 1 A 3 A 3 A 2 B 3 ba 3 A 3 A 2 B 3. Automtes ch4 22
4.5 Les grmmires linéires droites C'est une grmmire dont les seules productions sont A B ou A. Elles sont sous forme normle de Greibch. Théorème : Un lngge est engendré pr une grmmire linéire droite si et seulement s'il est régulier sns le mot vide. Démonstrtion : - Si G = (V, T, P, S) est linéire droite, soit M = (V {f},t, δ, S, {f}) un utomte (non déterministe) où : δ(a, ) = {B : A B} et {B : A B} {f} si A. On montre pr récurrence sur l longueur de w (écrire w = x) que : * (f δ(a, w)) (A w). Il s'ensuit que L(G) = L(M). Automtes ch4 23 - Réciproquement, soit M = (V, T, δ, q 0, F) un AFD. Soit G = (V, T, P, q 0 ) l grmmire d'xiome q 0 dont les productions P sont : q i q j si q j = δ(q i, ) F et q i q j si q j = δ(q i, ) F. On montre le même résultt que précédemment et donc L(M) = L(G). On peut remrquer que, dns ce cs, G est non mbiguë. Exemples : G : S S bs A A B B b, b M : S A B b f b b Pour l réciproque : M : 0 1 G : q 0 q 1 bq 0 et q 1 q 0 bq 1 b Automtes ch4 24