• Aucun résultat trouvé

Langages hors-contexte

N/A
N/A
Protected

Academic year: 2022

Partager "Langages hors-contexte"

Copied!
38
0
0

Texte intégral

(1)

Langages hors-contexte

Damien Nouvel

(2)

Origines

Plan

1. Origines

2. Définitions 3. Dérivations 4. Simplification

(3)

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 sontinsuffisants pour

‚ Les formes récursives

‚ Les structures de typetanbnu

‚ La recherche de la syntaxe dans le langage naturel

‚ L’analyse de programmes

ñ La machine de Turing peut faire mieux que ça !

(4)

Origines

Historique des grammaires

§ Hiérarchie de Chomsky (1956)

‚ Analyse du langagenaturel (morphologie, syntaxe)

‚ Grammaire formelles

Type 0 : grammaires générales (machine de Turing)

Type 1 : grammaires contextuelles (automates lin. bornés)

Type 2 : grammaireshors-contexte (automates à pile)

Type 3 : grammairesrégulières (automates à états finis)

§ Langages de programmation artificiels (compilation)

‚ Compilateurs mot-à-mot (assembleur)

‚ Expressions mathématiques :arbres d’analyse

‚ Compilateurs modernes

Analyselexicale(scanner)

Analysesyntaxique(parser)

(5)

Définitions

Plan

1. Origines 2. Définitions 3. Dérivations 4. Simplification

(6)

Définitions

Arbre d’expression

§ Analyse de l’expression mathématique 1

2 + 3˚? 9

‚ Priorité des opérateurs :(1

2 + (3˚? 9))

‚ Arbre d’expression : +

˜

1 2

˚

3 ?

9

(7)

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érificationde 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"

(8)

Définitions

Définition des grammaires hors-contexte

ñ Reconnaissance / générationde langages

§ QuadrupletG= (T,N,R,S)

T: symboles terminaux

ñ Lesmotspossibles des énoncés

N: symboles non-terminaux

ñ Groupes de mots intéressants (GN, GV, etc.)

RĂNˆ(NYT)˚ : règles

ñ Déterminent la composition des groupes de mots ñ Notations

Une règle s’écritAÑαavecAPNetαP(NYT)˚

Des règlesAÑαetAÑβ s’écriventAÑα|β

SPN: axiome (symbole de départ)

(9)

Définitions

Exemple

§ Expressions mathématiques

N=tS,Eu etT=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. . .

§ Unedérivation possible :

SÑEÑE+EÑE˜E+E¨ ¨ ¨ Ñ 1˜2 + 3˚? 9

(10)

Définitions

Exercices

§ Définissez des grammaires qui reconnaissent

‚ Un code postal

‚ Le langage des dates au formatjj/mm/aaaa

‚ Une plaque d’immatriculation française

‚ Un nombre entier naturel (positif)

‚ Un nombre réel

‚ Le langage régulierab˚cd˚

‚ Le langagetancn,ną0u

‚ Les palindrômes

‚ Une expression de parenthèses() et crochets []

‚ Le langagetanbcmd,ną0,měnu

(11)

Dérivations

Plan

1. Origines

2. Définitions 3. Dérivations 4. Simplification

(12)

Dérivations

Dérivation

§ Opérations qui génèrentle langage pour une grammaire

§ Un mot αP(NYT)˚ sedérive en un mot β P(NYT)˚ si

α se décompose enα12 avec APN

β se décompose en α1γα2 avecγ P(NYT)˚

AÑγ PR (c’est une règle)

§ Exemple :E+E˜EÑE+E˚E˜E

α1 =E+

α2 =˜E

A=E

γ =E˚E

EÑE˚EPR

(13)

Dérivations

Suite de dérivations

§ Par transitivité

‚ Chaîne de dérivationsαÑβ¨ ¨ ¨ Ñγ =αÝÑ˚ γ

‚ Fermeture transitive, clôture (cf étoile de Kleene)

‚ Siγ P(NYT)˚ alorsγ est uneproto-phrase de G

§ Ordre des dérivations

‚ Possibilité d’analyses pour1 + 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)

(14)

Dérivations

Langage généré

§ Soit Gune grammaire, alors le langage généré par G est L(G) =tmPT˚|SÑÝ˚ mu

ñ Sous-ensemble de T˚ ñ Pas nécessairement fini

(15)

Dérivations

Arbre de dérivation

§ Représentation graphique de la dérivation

Racine: symbole initial =S

Nœud: symbole non-terminal PN

Feuille: symbole terminal PT

‚ Relationparent-enfants : dérivation (règle) ñ Structure de l’analyse

§ Dérivations (et analyses) de1 + 2˚3

E E

E 1

+ E

2

˚ E

3

E E

1

+ E

E 2

˚ E

3

(16)

Simplification

Plan

1. Origines

2. Définitions 3. Dérivations 4. Simplification

(17)

Simplification

Simplifier une grammaire

ñ Supprimer les éléments inutilesde la grammaire

‚ Symbolesimproductifs

Aest improductif s’il n’y a pas demPT˚ tel que AÝÑ˚ m

‚ Symbolesinaccessibles

Aest inaccessible s’il n’y a pas deαetβ tels queSÝÑ˚ αAβ

ϵ-productions

Uneϵ-production est une dérivation telle queAÝÑ˚ ϵ

‚ Production simple

AÑBest une production simple si APNetBPN

ñ Pour toute grammaire, il existe une grammaire équivalente sans symboles improductifs ni inaccessibles, sans

ϵ-productions ni productions simples

(18)

Simplification

Élimination des symboles improductifs

§ Calcul des symboles productifs

‚ SoitP0 =Heti= 1

‚ SoitP1 =tAPN,DαPT˚,AÑαPRu

‚ Tant quePiPi´1

Pi+1=PiY tAPN,P(TYPi)˚,AÑαPRu

iÐi+ 1

ñ Les symboles de NzP sont improductifs

ñ Enlever ces symboles et les règles dans lesquels ils figurent

(19)

Simplification

Élimination des symboles inaccessibles

§ Calcul des symboles accessibles

‚ SoitC0 =H,C1 =tSueti= 1

‚ Tant queCiCi´1

Ci+1=CiY tAPN,Dα, βP(NYT)˚,XPCi,XÑαAβ PRu

ñ Les symboles de NzC sont inaccessibles

ñ Enlever ces symboles et les règles dans lesquels ils figurent

(20)

Simplification

Élimination des ϵ-productions

§ Calcul des symboles annulables

‚ SoitU0 =Het i= 1

‚ SoitU1 =tAPN,AÑϵPRu

‚ Tant quePiPi´1

Ui+1 =UiY tAPN,P(Ui)˚,AÑαPRu

iÐi+ 1

ñ Les symboles de Usont annulables

§ Modification de la grammaire

‚ Remplacer les règlesAÑαXβXPUparAÑαXβ|αβ (avec combinaisons possibles deX dans les règles)

‚ Supprimer toutes les règlesAÑϵ(sauf pourS)

‚ Supprimer toutes les règlesAÑA

(21)

Simplification

Équivalences et productions simples

§ Productions simples, dérivations et classes d’équivalences

‚ Production simple : toute règleAÑBavec BPN

‚ Soit la relation ětelle que AěBsiAÝÑ˚ B

‚ Soit la relation «telle que A«BsiAěBetBěA

Classes d’équivalences

SiA«B, tout ce qui est dérivé deApeut l’être deB

Relation réflexive, symétrique et transitive

L’ensemble des classes est unepartitiondeN

§ 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érivationAÝÑ˚ B

(22)

Simplification

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 :

(23)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :

ϵ-productions :

‚ Productions simples :

(24)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :

ϵ-productions :

‚ Productions simples :

(25)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :

‚ Productions simples :

(26)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :

‚ Productions simples :

(27)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :tZ,Yu ñ modifier 6, 2

‚ Productions simples :

(28)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :tZ,Yu ñ modifier 6, 2

‚ Productions simples :

(29)

Simplification

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 ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :tZ,Yu ñ modifier 6, 2

‚ Productions simples :SÑU etYÑZñ modifier 1, 2, 5, 6

(30)

Simplification

Exemple : simplification de grammaire

§ Grammaire 1. SÑaYb|ab 2.

3.

4.

5. YÑc 6.

§ Étapes

‚ Symboles productifs :tX,Z,Y,U,Su ñretirerT,V etW

‚ Symboles accessibles :tS,U,Y,Zu ñretirer X

ϵ-productions :tZ,Yu ñ modifier 6, 2

‚ Productions simples :SÑU etYÑZñ modifier 1, 2, 5, 6

(31)

Simplification

Exercice : simplification de grammaire

§ Réduire les grammaires suivantes

G1

SÑbSc|bTc|a|ϵ

TÑU

UÑbUc|T

VÑU|bc

G2

SÑUXT

TÑb

UÑaV|aXTXb

VÑcV|aWT

WÑV

XÑab|ϵ

YÑcZ

(32)

Simplification

Formes normales

§ Forme normale deChomsky : toutes règles de la forme

AÑBC avec A,B,CPN

AÑa avec aPT

§ Forme normale deGreibach : toutes règles de la forme

AÑ avecaPT, αPN˚

ñ 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

(33)

Simplification

Mise sous forme normale de Chomsky

§ Étapes

‚ Pour chaque terminal a, crééer

Un symboleZa

Une règleZaÑa

‚ Pour chaque règleAÑα où|α| ą1

Tout terminaladeαest remplacé parZa

‚ Pour chaque règleAÑα où|α| ą2

On décompose :α=A1,A2. . .An

On crée les non-terminauxY1,Y2. . .Yn´2

On remplaceAÑαpar AÑA1Y1

Y1ÑA2Y2

. . .

Yn´2ÑAn´1An

‚ Suppression desϵ-productions et productions simples

(34)

Simplification

Récursivité

§ Symbole récursif: AÑÝ˚ αAβ

‚ Siα=ϵ,Aest 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 à gauche

‚ Remplacer toute règleAÑAa|b

(35)

Simplification

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 GN PRP GN

SÑGN V GN

GNÑGN PRP GN

ñ Il voit le chat de sa voisine(le chat de qui ?) ñ Il voit le chat de sa fenêtre(d’où voit-il ?)

‚ Ambiguïté sémantique (plutôt que morpho-syntaxique)

§ Équivalence de grammaires

‚ Génèrent le même langage

‚ Donnent les même arbres d’analyse (équivalence forte)

(36)

Simplification

Autre formalismes de grammaires

§ Insuffisances des grammaires hors-contexte

‚ Accords (flexions / morphologie)

‚ Anaphores

‚ Portée de la coordination

‚ Méthodes statistiques

ñ Non traitées par les grammaires hors-contexte

§ Autres formalismes

‚ PCFG (Probabilistic context-free grammar)

‚ LFG (Lexical Functional Grammar)

‚ HPSG (Head-driven Phrase Structure Grammar)

‚ TAG (Tree Adjoining Grammar)

‚ CCG (Combinatory Categorial Grammar)

(37)

Simplification

Exercices

§ 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ère 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) ?

(38)

Simplification

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

Références

Documents relatifs

• faire marcher l’ordinateur avec ses périphériques (écran, disques, clavier, souris, utilisateurs, réseau, …). • les OS sont d’une complexité extrême (~100 millions de

• mots clés en Python (déjà vus en rouge).

• un interface en français se trouve dans l’extension French Language Pack, en chinois dans Chinese language Pack. • on charge les extensions: Python, Python for VSCode,

Ecrire un programme pour trouver les jours où on aurait dû acheter et vendre cette action pour avoir obtenu un gain

différence: on compile pour obtenir un fichier binaire hello qui est exécuté. • si on veut rajouter un retour à la

• Smalltalk aussi ancêtre de la programmation objet..

• chaque fois qu’on introduit une nouvelle profession, il faut changer à un seul endroit du programme:. en rajoutant une

En C, la situation est moins claire, puisqu’on peut prendre l’adresse de toute variable et ranger sa valeur dans une autre. Pire, on peut faire des conversions entre types sans