Grammaires - L`Université Paris Descartes
Transcription
Grammaires - L`Université Paris Descartes
Théorie des langages Grammaires Elise Bonzon [email protected] LIPADE - Université Paris Descartes http://www.math-info.univ-paris5.fr/vbonzon/ 1 Grammaires 1. Principe de base 2. Définitions 3. Arbres de dérivation 4. Caractérisation du langage généré par une grammaire 5. Types de grammaires 2 Principe de base Principe de base • Ensemble de règles pour générer les mots du langage • Sous la forme de règles de réécriture → Remplacer une séquence de symboles par une autre séquence • Mots générés = mots obtenus à partir d’un symbole spécial appelé symbole de départ ou axiome 3 Exemple • Considérons la phrase suivante : La vieille dame regarde la petite fille • Peut-on construire une grammaire qui permette de générer cette phrase ? 4 Exemple • Considérons la phrase suivante : La vieille dame regarde la petite fille • Peut-on construire une grammaire qui permette de générer cette phrase ? • Alphabet : Σ = { la, vieille, petite, dame, fille, regarde} 4 Exemple • Considérons la phrase suivante : La vieille dame regarde la petite fille • Peut-on construire une grammaire qui permette de générer cette phrase ? • Alphabet : Σ = { la, vieille, petite, dame, fille, regarde} • Structure de la phrase : • Un groupe sujet (article, adjectif, nom) • Un verbe • Un groupe complément d’objet (article, adjectif, nom) 4 Exemple Règles de production 1. hPhrasei → hSujetihVerbeihComplémenti 2. hSujeti → hGroupe Nominali 3. hComplémenti → hGroupe Nominali 4. hGroupe Nominali → hArticleihNomi 5. hGroupe Nominali → hArticleihAdjectifihNomi 6. hArticlei → la 7. hNomi → dame | fille 8. hAdjectifi → vieille | petite 9. hVerbei → regarde 5 Définitions Grammaire Grammaire Une grammaire est définie par un quadruplet G = hV , Σ, P, Si où • V est un alphabet • Σ ⊆ V est l’ensemble des symboles terminaux • V \ Σ est l’ensemble des symboles non terminaux • S ∈ V \ Σ est le symbole de départ ou axiome • P ⊆ (V + × V ∗ ) est l’ensemble (fini) de règles de production 6 Grammaire Grammaire Une grammaire est définie par un quadruplet G = hV , Σ, P, Si où • V est un alphabet • Σ ⊆ V est l’ensemble des symboles terminaux • V \ Σ est l’ensemble des symboles non terminaux • S ∈ V \ Σ est le symbole de départ ou axiome • P ⊆ (V + × V ∗ ) est l’ensemble (fini) de règles de production Notations : • Σ : lettres minuscules • V \ Σ : lettre majuscules • Règles de production : α → β • Signification intuitive : l’élément α ∈ V + peut être remplacé par β ∈ V∗ 6 Grammaire : exemple Soit G1 = hV , Σ, P, Si avec • Σ = {:=, a, b, c, +, ∗, ), (} • V \ Σ = {S, I , E } • Axiome S • 8 règles de production : S → I := E I →b E →E +E E → (E ) I →a I →c E →E ∗E E →I 7 Grammaire : exemple Soit G1 = hV , Σ, P, Si avec • Σ = {:=, a, b, c, +, ∗, ), (} • V \ Σ = {S, I , E } • Axiome S • 8 règles de production : S → I := E I →b E →E +E E → (E ) I →a I →c E →E ∗E E →I On peut aussi écrire I → a|b|c. 7 Grammaire : exemple Soit G2 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : • S → aSa • S → SbS • S → 8 Grammaire : exemple Soit G3 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : S → aS|aSbS| 9 Grammaire hors contexte Grammaire hors contexte Soit G = hV , Σ, P, Si. G est dite hors contexte (context-free) si toutes les règles sont de la forme A→β où A ∈ V \ Σ (symbole non terminal), et β ∈ V ∗ 10 Dérivation Dérivation en une étape Soit G = hV , Σ, P, Si, u ∈ V + et v ∈ V ∗ . G permet de dériver v de u en une étape, noté u − → v , si et seulement si G 0 • u = xu y • v = xv 0 y • u 0 → v 0 est dans P 11 Dérivation Dérivation en une étape Soit G = hV , Σ, P, Si, u ∈ V + et v ∈ V ∗ . G permet de dériver v de u en une étape, noté u − → v , si et seulement si G 0 • u = xu y • v = xv 0 y • u 0 → v 0 est dans P Dérivation en plusieurs étapes ∗ G permet de dériver v de u en plusieurs étapes, noté u − → v , si et seulement si ∃k ≥ 0 et ∃v0 , . . . , vk ∈ V ∗ tels que G • u = v0 • v = vk • vi − → vi+1 pour 0 ≤ i < k G 11 Langage généré par une grammaire Mots générés par une grammaire Soit G = hV , Σ, P, Si. Les mots générés par G sont les mots v ∈ Σ∗ (symboles terminaux) ∗ qui peuvent être dérivés à partir de l’axiome : S − → v. G 12 Langage généré par une grammaire Mots générés par une grammaire Soit G = hV , Σ, P, Si. Les mots générés par G sont les mots v ∈ Σ∗ (symboles terminaux) ∗ qui peuvent être dérivés à partir de l’axiome : S − → v. G Langage généré par une grammaire Soit G = hV , Σ, P, Si. Le langage généré par G , noté L(G ) est l’ensemble des mots générés par G . ∗ L(G ) = {v ∈ Σ∗ |S − → v} G 12 Grammaire : exemple Soit G3 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : S → aS|aSbS| 13 Grammaire : exemple Soit G3 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : S → aS|aSbS| On veut montrer que aaba ∈ L(G ) 13 Grammaire : exemple Soit G3 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : S → aS|aSbS| On veut montrer que aaba ∈ L(G ) S −→ aSbS −→ aSbaS −→ aSba −→ aaSba −→ aaba −→ aaba G3 G3 G3 G3 G3 G3 13 Grammaire : exemple Soit G3 = hV , Σ, P, Si avec • Σ = {a, b} • V \ Σ = {S} • Axiome S • 3 règles de production : S → aS|aSbS| On veut montrer que aaba ∈ L(G ) S −→ aSbS −→ aSbaS −→ aSba −→ aaSba −→ aaba −→ aaba G3 G3 G3 G3 G3 G3 Seconde dérivation possible : S −→ aSbS −→ aaSbS −→ aabS −→ aaba −→ aaba G3 G3 G3 G3 G3 13 Dérivation la plus à gauche Dérivation la plus à gauche (LPG) Soit G = hV , Σ, P, Si, et w ∈ Σ∗ ∗ S− → w est une dérivation la plus à gauche (LPG) si, à chaque étape G de la dérivation, c’est la variable la plus à gauche qui est dérivée. Donc, si ∃w1 , . . . , wn tels que • S = w0 − → w1 − → ... − → wn − → wn+1 = w , et G G G G • ∀i, 0 ≤ i ≤ n • wi = ui Ai vi , • wi+1 = ui αi vi et • Ai → αi alors ui ∈ Σ∗ (ui est un symbole terminal, et ne contient donc pas de variable). 14 Arbres de dérivation Arbres de dérivation pour une grammaire hors contexte Arbres de dérivation Soit G = hV , Σ, P, Si une grammaire hors contexte. Un arbre D est un arbre de dérivation pour un mot w à partir de l’axiome S si : • La racine de D est étiquetée par S (l’axiome) • Les feuilles de D sont étiquetées par des éléments de Σ ∪ (symboles terminaux) • L’étiquette d’une feuille est le mot vide seulement si la feuille est fille unique • Les nœuds de D qui ne sont pas des feuilles sont étiquetés par un symbole non terminal (V \ Σ) • Pour tout nœud, si Y est l’étiquette du nœud, et si Z1 , . . . , Zn sont les nœuds de ses fils, dans cet ordre, alors Y → Z1 . . . Zn est une règle • Le mot des feuilles de D, c’est-à-dire le mot obtenu en concaténant les étiquettes des feuilles de la gauche vers la droite, est le mot w 15 Arbres de dérivation : exemple a := a + b ∗ a ∈ L(G1 ) S I a := E E + E I E ∗ a I I b a E 16 Arbres de dérivation : exemple aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot. S a S a S b S a S a S S a S b S a S 17 Arbres de dérivation : exemple aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot. S a S a S b S a S a S S a S b S a S La grammaire est ambigüe. 17 Grammaires ambigües Ambiguité Une grammaire G est ambigüe s’il existe un mot de L(G ) qui a au moins deux dérivations LPG à partir de S (et donc deux arbres de dérivation). Dans le cas contraire G est non ambigüe. 18 Grammaires ambigües Ambiguité Une grammaire G est ambigüe s’il existe un mot de L(G ) qui a au moins deux dérivations LPG à partir de S (et donc deux arbres de dérivation). Dans le cas contraire G est non ambigüe. G1 est ambigüe. 18 Grammaires ambigües Théorème ∗ Etant donné une grammaire G , un mot est généré par G (S − → w ) si et G seulement si il existe un arbre de dérivation qui génère w . 19 Grammaires ambigües Théorème ∗ Etant donné une grammaire G , un mot est généré par G (S − → w ) si et G seulement si il existe un arbre de dérivation qui génère w . Langage ambigüe Un langage est ambigüe de façon inhérente si toutes les grammaires qui l’engendrent sont ambigües. On dira qu’un langage est non ambigüe s’il n’est pas ambigüe de façon inhérente. 19 Grammaires ambigües Théorème ∗ Etant donné une grammaire G , un mot est généré par G (S − → w ) si et G seulement si il existe un arbre de dérivation qui génère w . Langage ambigüe Un langage est ambigüe de façon inhérente si toutes les grammaires qui l’engendrent sont ambigües. On dira qu’un langage est non ambigüe s’il n’est pas ambigüe de façon inhérente. Lemme de Parikh Il existe au moins un langage ambigüe de façon inhérente. L = {ap bq c r |p = q ou q = r avec p, q, r ≥ 1} 19 Caractérisation du langage généré par une grammaire Caractérisation d’un langage Problème Soit une grammaire G qui génère le langage L(G ). Soit L une caractérisation du langage généré. On veut prouver que L = L(G ). 20 Caractérisation d’un langage Problème Soit une grammaire G qui génère le langage L(G ). Soit L une caractérisation du langage généré. On veut prouver que L = L(G ). Grammaire G4 1. S → aSa 2. S → bSb L : ensemble des palindromes de longueur paire sur l’alphabet {a, b}. L = {w ∈ X ∗ |w = w̃ et |w | = 2n, n ∈ IN} 3. S → 20 Caractérisation d’un langage Problème Soit une grammaire G qui génère le langage L(G ). Soit L une caractérisation du langage généré. On veut prouver que L = L(G ). Grammaire G4 1. S → aSa 2. S → bSb L : ensemble des palindromes de longueur paire sur l’alphabet {a, b}. L = {w ∈ X ∗ |w = w̃ et |w | = 2n, n ∈ IN} 3. S → On doit montrer l’égalité de ces deux langages, on procède par double inclusion. • L(G4 ) ⊆ L. Par récurrence sur la taille des mots • L ⊆ L(G4 ). Séquence de dérivation pour obtenir un mot de L 20 Types de grammaires Hiérarchie de CHOMSKY Type 0 Pas de restriction Type 1 Grammaires contextuelles (ou sensibles au contrôle) (Context-sensitive) α → β, |α| ≤ |β|, α ∈ V + , β ∈ V ∗ Type 2 Grammaires hors-contexte (Context-Free) A → β, A ∈ V \ Σ, β ∈ V ∗ Type 3 Grammaires régulières (ou linéaires à droite) A → wB A→w A, B ∈ V \ Σ non terminaux w ∈ Σ∗ terminaux 21 Hiérarchie de CHOMSKY T3 Réguliers Automate fini T2 Context Free Automate à pile T1 Context sensitive Machine de Turing T0 22