Langages hors-contexte Damien Nouvel Damien Nouvel (Inalco) Langages hors-contexte 1 / 29
Origines Plan 1. Origines 2. Définitions 3. Dérivations 4. Simplification Damien Nouvel (Inalco) Langages hors-contexte 2 / 29
Origines Langages réguliers et grammaires Les langages réguliers (ou rationnels) reconnaissent Des mots issus de lexiques Des formes normales (chiffres, dates, etc.) ñ Ils sont insuffisants pour Les formes récursives Les structures de type ta n b n u La recherche de la syntaxe dans le langage naturel L analyse de programmes ñ La machine de Turing peut faire mieux que ça! Damien Nouvel (Inalco) Langages hors-contexte 3 / 29
Origines Historique des grammaires Hiérarchie de Chomsky (1956) Analyse du langage naturel (morphologie, syntaxe) Grammaire formelles Type 0 : grammaires générales (machine de Turing) Type 1 : grammaires contextuelles (automates lin. bornés) Type 2 : grammaires hors-contexte (automates à pile) Type 3 : grammaires régulières (automates à états finis) Langages de programmation artificiels (compilation) Compilateurs mot-à-mot (assembleur) Expressions mathématiques : arbres d analyse Compilateurs modernes Analyse lexicale (scanner) Analyse syntaxique (parser) ñ Utilisation des méthodes linguistiques pour la programmation Damien Nouvel (Inalco) Langages hors-contexte 4 / 29
Définitions Plan 1. Origines 2. Définitions 3. Dérivations 4. Simplification Damien Nouvel (Inalco) Langages hors-contexte 5 / 29
Définitions Arbre d expression Analyse de l expression mathématique 1 2 + 3?9 Priorité des opérateurs : ( 1?9)) + (3 2 Arbre d expression : + 1 2 3? ñ Chaque branche est aussi une expression valide : 1 2, 3?9 9 Damien Nouvel (Inalco) Langages hors-contexte 6 / 29
Définitions Backus-Naur Form Langage de programmation Algol 1960 (J. Backus et P. Naur) Règles de description du langage Pour la programmation <ifstruct> ::= "if" "(" <test> ")" "{" <block> "}" <test> ::= <var> "==" <num> <var> "&&" <var> <block> ::= <inst> <inst> <block> ñ Vérification de la syntaxe des programmes ñ Récursivité dans les règles Pour la linguistique <E> ::= <GN> <GV> <GN> ::= <DET> <NC> <DET> <ADJ> <NC> <GV> ::= "marche" "dort" <DET> ::= "le" <NC> ::= "chien" "chat" <ADJ> ::= "petit" "gros" Damien Nouvel (Inalco) Langages hors-contexte 7 / 29
Définitions Définition des grammaires hors-contexte ñ Reconnaissance / génération de langages Quadruplet G = (T, N, R, S) T : symboles terminaux ñ Les mots possibles des énoncés N : symboles non-terminaux ñ Groupes de mots intéressants (GN, GV, etc.) R Ă N ˆ (N Y T) : règles ñ Déterminent la composition des groupes de mots ñ Notations Une règle s écrit A Ñ α avec A P N et α P (N Y T) Des règles A Ñ α et A Ñ β s écrivent A Ñ α β S P N : axiome (symbole de départ) ñ Représente l énoncé Damien Nouvel (Inalco) Langages hors-contexte 8 / 29
Définitions Exemple Expressions mathématiques N = ts, Eu et T = t+,,,?, (, ), 1, 2, 3...u Règles : S Ñ E E Ñ E + E E Ñ E E E Ñ E E E Ñ (E) E Ñ? E E Ñ 1 2 3... Une dérivation possible : S Ñ E Ñ E + E Ñ E E + E Ñ 1 2 + 3?9 Damien Nouvel (Inalco) Langages hors-contexte 9 / 29
Définitions Exercices Définissez des grammaires qui génèrent Le langage régulier ab cd Le langage ta n c n, n ą 0u Le langage ta n bc m d, n ą 0, m ą nu Les palindrômes Damien Nouvel (Inalco) Langages hors-contexte 10 / 29
Dérivations Plan 1. Origines 2. Définitions 3. Dérivations 4. Simplification Damien Nouvel (Inalco) Langages hors-contexte 11 / 29
Dérivations Dérivation Opérations qui génèrent le langage pour une grammaire Un mot α P (N Y T) se dérive en un mot β P (N Y T) si α se décompose en α 1 Aα 2 avec A P N β se décompose en α 1 γα 2 avec γ P (N Y T) A Ñ γ P R (c est une règle) Exemple : E + E E Ñ E + E E E α 1 = E+ α 2 = E A = E γ = E E E Ñ E E P R Damien Nouvel (Inalco) Langages hors-contexte 12 / 29
Dérivations Suite de dérivations Par transitivité Chaîne de dérivations α Ñ β Ñ γ = α ÝÑ γ Fermeture transitive, clôture (cf étoile de Kleene) Si γ P (N Y T) alors γ est une proto-phrase de G Ordre des dérivations Possibilité d analyses pour 1 + 2 + 3 Dérivation gauche : réécrit le non-terminal le plus à gauche E Ñ E + E Ñ 1 + E Ñ 1 + E + E Ñ 1 + 2 + E Ñ 1 + 2 + 3 Dérivation droite : réécrit le non-terminal le plus à droite E Ñ E + E Ñ E + 3 Ñ E + E + 3 Ñ E + 2 + 3 Ñ 1 + 2 + 3 ñ Dérivations différentes même résultat? ñ Pas toujours (par ex. associativité, priorité des opérateurs) Damien Nouvel (Inalco) Langages hors-contexte 13 / 29
Dérivations Langage généré Soit G une grammaire, alors le langage généré par G est L(G) = tm P T S ÝÑ mu ñ Sous-ensemble de T ñ Pas nécessairement fini Damien Nouvel (Inalco) Langages hors-contexte 14 / 29
Dérivations Arbre de dérivation Représentation graphique de la dérivation Racine : symbole initial = S Nœud : symbole non-terminal P N Feuille : symbole terminal P T Relation parent-enfants : dérivation (règle) ñ Structure de l analyse Dérivations (et analyses) de 1 + 2 3 E E E E E + E E + E 3 1 E E 1 2 2 3 dérivation gauche dérivation droite Damien Nouvel (Inalco) Langages hors-contexte 15 / 29
Plan 1. Origines 2. Définitions 3. Dérivations 4. Simplification Damien Nouvel (Inalco) Langages hors-contexte 16 / 29
Simplifier une grammaire ñ Supprimer les éléments inutiles de la grammaire Symboles improductifs A est improductif s il n y a pas de m P T tel que A ÝÑ m Symboles inaccessibles A est inaccessible s il n y a pas de α et β tels que S ÝÑ αaβ ϵ-productions Une ϵ-production est une dérivation telle que A ÝÑ ϵ Production simple A Ñ B est une production simple si A P N et B P N ñ Pour toute grammaire, il existe une grammaire équivalente sans symboles improductifs ni inaccessibles, sans ϵ-productions ni productions simples Damien Nouvel (Inalco) Langages hors-contexte 17 / 29
Élimination des symboles improductifs Calcul des symboles productifs Soit P 0 = H et i = 1 Soit P 1 = ta P N, Dα P T, A Ñ α P Ru Tant que P i P i 1 P i+1 = P i Y ta P N, Dα P (T Y P i ), A Ñ α P Ru i Ð i + 1 ñ Les symboles de NzP sont improductifs ñ Enlever ces symboles et les règles dans lesquels ils figurent Damien Nouvel (Inalco) Langages hors-contexte 18 / 29
Élimination des symboles inaccessibles Calcul des symboles accessibles Soit C 0 = H, C 1 = tsu et i = 1 Tant que C i C i 1 C i+1 = C i Y ta P N, Dα, β P (N Y T), X P C i, X Ñ αaβ P Ru ñ Les symboles de NzC sont inaccessibles ñ Enlever ces symboles et les règles dans lesquels ils figurent Damien Nouvel (Inalco) Langages hors-contexte 19 / 29
Élimination des ϵ-productions Calcul des symboles annulables Soit U 0 = H et i = 1 Soit U 1 = ta P N, A Ñ ϵ P Ru Tant que P i P i 1 U i+1 = U i Y ta P N, Dα P (U i ), A Ñ α P Ru i Ð i + 1 ñ Les symboles de U sont annulables Modification de la grammaire Remplacer chaque règle A Ñ αxβ où X P U par A Ñ αxβ αβ (avec combinaisons possibles de X dans les règles) Supprimer toutes les règles A Ñ ϵ (sauf pour S) Supprimer toutes les règles A Ñ A ñ Grammaire équivalente à ϵ près Damien Nouvel (Inalco) Langages hors-contexte 20 / 29
Équivalences et productions simples Productions simples, dérivations et classes d équivalences Production simple : toute règle A Ñ B avec B P N Soit la relation ě telle que A ě B si A ÝÑ B Soit la relation «telle que A «B si A ě B et B ě A Classes d équivalences Si A «B, tout ce qui est dérivé de A peut l être de B Relation réflexive, symétrique et transitive L ensemble des classes est une partition de N Modification de la grammaire On conserve les productions non-simples Pour chaque classe d équivalence ñ Choisir un symbole qui remplace tous les autres ñ Pour chaque dérivation A ÝÑ B Pour chaque B Ñ β, ajouter A Ñ β Damien Nouvel (Inalco) Langages hors-contexte 21 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ T U 2. U Ñ ayb V 3. V Ñ W 4. X Ñ W a 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : Symboles accessibles : ϵ-productions : Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ T U 2. U Ñ ayb V 3. V Ñ W 4. X Ñ W a 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ϵ-productions : Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb 3. 4. X Ñ a 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ϵ-productions : Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb 3. 4. X Ñ a 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb 3. 4. 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb 3. 4. 5. Y Ñ Z 6. Z Ñ c ϵ Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : tz, Yu ñ modifier 6, 2 Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb ab 3. 4. 5. Y Ñ Z 6. Z Ñ c Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : tz, Yu ñ modifier 6, 2 Productions simples : Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ U 2. U Ñ ayb ab 3. 4. 5. Y Ñ Z 6. Z Ñ c Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : tz, Yu ñ modifier 6, 2 Productions simples : S Ñ U et Y Ñ Z ñ modifier 1, 2, 5, 6 Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exemple : simplification de grammaire Grammaire 1. S Ñ ayb ab 2. 3. 4. 5. Y Ñ c 6. Étapes Symboles productifs : tx, Z, Y, U, Su ñ retirer T, V et W Symboles accessibles : ts, U, Y, Zu ñ retirer X ϵ-productions : tz, Yu ñ modifier 6, 2 Productions simples : S Ñ U et Y Ñ Z ñ modifier 1, 2, 5, 6 Damien Nouvel (Inalco) Langages hors-contexte 22 / 29
Exercice : simplification de grammaire Réduire les grammaires suivantes G 1 S Ñ bsc btc a ϵ T Ñ U U Ñ buc T V Ñ U bc G 2 S Ñ UXT T Ñ b U Ñ av axtxb V Ñ cv awt W Ñ V X Ñ ab ϵ Y Ñ cz Z Ñ aa Damien Nouvel (Inalco) Langages hors-contexte 23 / 29
Formes normales Forme normale de Chomsky : toutes règles de la forme A Ñ BC avec A, B, C P N A Ñ a avec a P T Forme normale de Greibach : toutes règles de la forme A Ñ aα avec a P T, α P N ñ Pour tout langage hors-contexte il existe une grammaire en forme normale de Chomsky et une grammaire en forme normale de Greibach qui le génèrent Damien Nouvel (Inalco) Langages hors-contexte 24 / 29
Mise sous forme normale de Chomsky Étapes Pour chaque terminal a, crééer Un symbole Z a Une règle Z a Ñ a Pour chaque règle A Ñ α où α ą 1 Tout terminal a de α est remplacé par Z a Pour chaque règle A Ñ α où α ą 2 On décompose : α = A 1, A 2... A n On crée les non-terminaux Y 1, Y 2... Y n 2 On remplace A Ñ α par A Ñ A 1 Y 1 Y 1 Ñ A 2 Y 2... Y n 2 Ñ A n 1 A n Suppression des ϵ-productions et productions simples ñ Forme normale de Chomsky Damien Nouvel (Inalco) Langages hors-contexte 25 / 29
Récursivité Symbole récursif : A ÝÑ αaβ Si α = ϵ, A est récursif à gauche Si β = ϵ, A est récursif à droite Si ÝÑ ne comporte qu une dérivation : récursivité directe Si ÝÑ comporte plusieurs dérivations : récursivité indirecte ñ Une grammaire récursive comporte un symbole récursif Exemple : grammaire indirectement récursive à gauche A Ñ B B Ñ CD C Ñ AE Suppression de la récursivité directe Remplacer toute règle A Ñ Aa b A Ñ ba 1 A 1 Ñ aa 1 ϵ Damien Nouvel (Inalco) Langages hors-contexte 26 / 29
Ambiguïté et équivalence Ambiguïté de grammaires Grammaire : un mot est généré par deux arbres de dérivation ñ Exemple : rattachement prépositionnel S Ñ GN V PRP GN GN S Ñ GN V GN GN Ñ PRP GN GN ñ Il discute avec un collègue de philosophie ñ Il discute avec l ami de sa sœur Langage : toutes les grammaires qui le génère sont ambigües Équivalence de grammaires Génèrent le même langage Donnent les même arbres d analyse (équivalence forte) Damien Nouvel (Inalco) Langages hors-contexte 27 / 29
Mettre sous forme normale de Chomsky S Ñ AbA A Ñ AaA ca Soit l ensemble de symboles non-terminaux : N = tgn, GV, DET, PREP, NOM, ADJ, ADVu Définissez les règles d une grammaire qui génèrent des phrases Ajoutez des éléments terminaux et leurs règles Donnez les arbres de dérivation pour les phrases suivantes le chat mange le chat mange la souris le chat regarde le bout de fromage Donnez quelques phrases générées par la grammaire Quel problème rencontre-t-on pour les genres (m/f)? Modifiez la grammaire pour générer des phrases interrogatives Damien Nouvel (Inalco) Langages hors-contexte 28 / 29 Exercices
TP : SWI-Prolog :- use_rendering(svgtree, [list(false)]). % Règles non terminales s(s(x,y)) --> gn(x), gv(y). gn(x) --> np(x). gn(gn(x,y)) --> det(x), nc(y). gv(gv(x,y)) --> v(x), gn(y). % Règles terminales np(np(jean)) --> [jean]. det(det(de)) --> [de]. nc(nc(philosophie)) --> [philosophie]. nc(nc(politique)) --> [politique]. v(v(discute)) --> [discute]. % Requête phrase(s(tree), [jean, discute, de, politique]). Damien Nouvel (Inalco) Langages hors-contexte 29 / 29