Principes d Interprétation des Langages L2 MPI Université Paris-Sud
CHAPITRE 5 : GRAMMAIRES FORMELLES
Lien avec les chapitres précédents Nous avons vu deux formalismes pour définir et manipuler des langages formels : expressions rationnelles et automates finis. Ces deux formalismes sont équivalents (au sens qu ils définissent la même classe de langages) ne permettent de définir qu une classe restreinte de langages. Les grammaires formelles permettent de définir des classes de langages plus générales. Elles permettent aussi de mettre en œuvre la deuxième étape de la compilation : l analyse syntaxique.
Système de réécriture Soit A un alphabet. On appelle système de réécriture sur A* toute partie de A* A*. Soit R un système de réécriture sur A*, soient f et g deux mots de A*. On dit que f se réécrit en g ssi il existe (u,v) R, α A*, β A* tels que f= αuβ et g= αvβ On note f R g (ou simplement f g s il n y a pas d ambiguïté sur R).
Exemple R = { (a,ab), (b,ba), (ab,bb), (abb,ε) } On a : aab abab abbb b ba bab
Grammaire Une grammaire est un quadruplet G=<A,V,P,S>, où A est l alphabet terminal. V A=. V est l alphabet non terminal. P est un système de réécriture sur (A V)* tel que chaque membre gauche contient au moins une lettre de V. C est l ensemble des règles (ou productions) de G. S V. C est l axiome de G.
Quelques définitions Soient f et g deux mots de (A V)*. On dit que f se dérive en g si f P g. Une suite de dérivations est une suite de mots f 0,f 1,,f n tels que f 0 f 1 f n n est la longueur de la suite de dérivations. On note f * g s il existe une suite de dérivations de f à g. Remarque : pour tout mot f, on a f * f.
Exemple de grammaire G 1 Notation conforme à la définition : A = {a,b} V = {S,T} P = {(S,aS) ; (S,bT) ; (S, ) ; (T,bS) ; } Axiome : S Notation usuelle : S as bt T bs
Conventions de notation Les symboles terminaux sont en minuscules, les symboles non terminaux en majuscules. Le premier symbole non terminal rencontré est l axiome. Le sépare les productions ayant le même membre gauche. S as bt T bs
Exemples de grammaires G 2 et G 3 G 2 : S asb T T ct G 3 : S asbc abc CB CD CD BD BD BC ab ab bb bb bc bc cc cc
Langage engendré par une grammaire Le langage engendré par une grammaire G=<A,V,P,S>, noté L(G), est l ensemble des mots w A* tels que S * w. Exemples (sans preuves) : L(G1) = (a bb)* L(G2) = { a n c m b n n,m 0} L(G3) = { a n b n c n n > 0 }
La hiérarchie de Chomsky : généralités Elle définit quatre types de grammaires selon des contraintes que l on impose (ou pas) sur la forme des règles. Chaque type de grammaires correspond à une classe de langages. C est une hiérarchie car il y a une relation d inclusion stricte entre les quatre classes.
La hiérarchie de Chomsky (1) Grammaires générales (type 0) : aucune restriction sur les règles de P.
La hiérarchie de Chomsky (2) Grammaires contextuelles (type 1) : toute règle de P est de la forme suivante : u N v u w v où N V, u,v,w (A V)*. Grammaires non contextuelles ou algébriques (type 2) : toute règle de P est de la forme suivante : N w où N V, w (A V)*.
La hiérarchie de Chomsky (3) Grammaires régulières (type 3) : Soit toute règle de P est dans l une des formes suivantes (grammaire régulière droite) : N x N N x où N V, x A { }. Soit toute règle de P est dans l une des formes suivantes (grammaire régulière gauche) : N N x N x où N V, x A { }.
Langages de type 0, 1, 2 ou 3 On dit qu un langage est de type i s il existe une grammaire de type i qui l engendre. Propriété : si un langage est de type i, il est aussi de type j pour tout j i. Propriété : la classe des langages de type 3 est la classe des langages reconnaissables.
La hiérarchie Langages rationnels Langages non contextuels (ou algébriques) Langages contextuels Langages généraux
La hiérarchie est stricte L inclusion entre les classes est stricte. Notamment : {a n b n n 0} est algébrique mais pas rationnel {a n b n c n n 0} est contextuel mais pas algébrique. (Ce ne sera pas prouvé en cours.)
CHAPITRE 6 : LES LANGAGES NON CONTEXTUELS OU ALGÉBRIQUES
Définition (rappel) Grammaires non contextuelles ou algébriques (type 2) : toute règle de P est de la forme suivante : N w où N V, w (A V)*. Un langage est non contextuel ou algébrique s il existe une telle grammaire qui l engendre.
Arbre de dérivation Soit G=<A,V,P,S> une grammaire non contextuelle. On appelle arbre de dérivation sur G tout arbre étiqueté sur A V { } tel que : 1. Si un nœud étiqueté x a ses fils étiquetés (dans cet ordre) y 1, y 2, y k, alors x y 1 y 2...y k est une règle de P. 2. Un nœud ne peut être étiqueté par que s il est fils unique.
Arbre et mot reconnu Propriété : Soit G une grammaire non contextuelle. Un mot w appartient à L(G) si et seulement si il existe un arbre de dérivation de G dont la racine est l axiome et dont les feuilles sont étiquetées (dans l ordre d un parcours de gauche à droite et sans considérer les étiquettes ) par la suite des lettres de w.
Grammaire ambiguë Une grammaire non contextuelle G est dite ambiguë ssi il existe un mot de L(G) qui peut être obtenu par au moins deux arbres de dérivation à partir de l axiome.