• Aucun résultat trouvé

Langages formels et analyse syntaxique CM5 : Introduction à l’analyse syntaxique automatique de grammaire CF

N/A
N/A
Protected

Academic year: 2022

Partager "Langages formels et analyse syntaxique CM5 : Introduction à l’analyse syntaxique automatique de grammaire CF"

Copied!
107
0
0

Texte intégral

(1)

Langages formels et analyse syntaxique

CM5 : Introduction à l’analyse syntaxique automatique de grammaire CF

Timothée Bernard 16 octobre 2020

Université de Paris

(2)

À lire

• Chapitre 7 du polycopié d’Yvon et Demaille (2016).

1

(3)

À lire

• Chapitre 7 du polycopié d’Yvon et Demaille (2016).

1

(4)

Graphe de recherche

• Pour une grammaireGdonnée.

• Graphe orienté tel que

• les nœuds sont tous les proto-mots (w(NΣ)) ;

• il existe une arête(α, β)ssiGpeut réécrireαenβen une application de règle.

• Graphe infini que l’on va (partiellement) explorer lorsque l’on fait de la génération, de la reconnaissance ou de l’analyse syntaxique.

2

(5)

Graphe de recherche

• Pour une grammaireGdonnée.

• Graphe orienté tel que

• les nœuds sont tous les proto-mots (w(NΣ)) ;

• il existe une arête(α, β)ssiGpeut réécrireαenβen une application de règle.

• Graphe infini que l’on va (partiellement) explorer lorsque l’on fait de la génération, de la reconnaissance ou de l’analyse syntaxique.

2

(6)

Graphe de recherche

• Pour une grammaireGdonnée.

• Graphe orienté tel que

• les nœuds sont tous les proto-mots (w(NΣ)) ;

• il existe une arête(α, β)ssiGpeut réécrireαenβen une application de règle.

• Graphe infini que l’on va (partiellement) explorer lorsque l’on fait de la génération, de la reconnaissance ou de l’analyse syntaxique.

2

(7)

Graphe de recherche

• Pour une grammaireGdonnée.

• Graphe orienté tel que

• les nœuds sont tous les proto-mots (w(NΣ)) ;

• il existe une arête(α, β)ssiGpeut réécrireαenβen une application de règle.

• Graphe infini que l’on va (partiellement) explorer lorsque l’on fait de la génération, de la reconnaissance ou de l’analyse syntaxique.

2

(8)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(9)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(10)

Exemple

• Grammaire :S→S+S|a

S S+S

a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(11)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(12)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(13)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(14)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(15)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(16)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa

+SS

+Sa +aS

+aa

3

(17)

Exemple

• Grammaire :S→S+S|a

S

S+S a

S+S+S a+S S+a

S+S+S+S a+S+S S+a+S S+S+a a+a

+

++

SS

aS Sa

aa +SS

+Sa +aS

+aa

3

(18)

Reconnaissance ascendante

(bottom-up)

(19)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(20)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(21)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(22)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(23)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(24)

Principe

• On part du mot à reconnaître.

• On « remonte » le graphe, en inversant des règles de réécriture.

• Multitude de choix possibles, d’où deux types de stratégies :

• en profondeur (d’abord) : on travaille sur un proto-mot qu’on essaye d’inverser jusqu’à retrouver l’axiome, quitte à

« redescendre » quand on est bloqué ;

• en largeur (d’abord) : on explore toutes les branches en parallèle.

4

(25)

Algorithm 1 :Reconnaissance ascendante en profondeur // α est le proto-mot courant (au début, le mot

à reconnaître).

// budfp (α): renvoie true ssi α est dérivable.

Functionbudfp(α): bool ifα=Sthen returntrue;

// Début de la fenêtre à réécrire fori:=1to|α|do

// Fin de la fenêtre à réécrire forj:=ito|α|do

for(A→αi. . . αj)∈Pdo

ifbudfp(α1. . . αi−1j+1. . . αn)= truethen returntrue;

returnfalse;

5

(26)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(27)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(28)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(29)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(30)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(31)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(32)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(33)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(34)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(35)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(36)

Pour un proto-motα=α1α2· · · αndonné :

• Est-ce queα1 est la partie droite d’une règle ?

• Est-ce queα1α2est la partie droite d’une règle ?

• Est-ce queα1α2α3est la partie droite d’une règle ?

• ...

• Est-ce queα1α2 · · · αnest la partie droite d’une règle ?

• Est-ce queα2est la partie droite d’une règle ?

• Est-ce queα2α3est la partie droite d’une règle ?

• ...

• Est-ce queα2α3 · · ·αnest la partie droite d’une règle ?

• Est-ce queα3est la partie droite d’une règle ?

• Est-ce queα3α4 est la partie droite d’une règle ?

• ...

• Est-ce queαnest la partie droite d’une règle ?

6

(37)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(38)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(39)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(40)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(41)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(42)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(43)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(44)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(45)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(46)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(47)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(48)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(49)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(50)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

PFred

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(51)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

PFred PNP

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(52)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(53)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

SN SVNP PFred

PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(54)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

SN SVNP PNP PFred

PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(55)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred SNSVFred

SN SVNP PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(56)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SNSVFred

SN SVNP PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(57)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SNSVNP SNSVFred

SN SVNP PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(58)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SNSVNP

PNP

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(59)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SNSVNP

PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(60)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SN VSN SNSVNP

PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(61)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SN VSN SNSVSN SNSVNP

PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(62)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SN VSN SNSVSN

PSN

SNSVNP PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(63)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SN VSN

SNSV SNSVSN

PSN

SNSVNP PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(64)

Grammaire

P→SN SV

SV→V|V SN

SN→DET N|NP

V→voit|prépare

DET→le|la|un|une

N→camion|expérience

NP→Sabine|Fred|Jamy

Sabine voit Fred NPvoit Fred SNvoit Fred SNVFred

SN VNP SN VSN

SNSV P SNSVSN

PSN

SNSVNP PNP PSN

SNSVFred SN SVNP

PNP PSN

PFred PNP PSN

FIGURE 1 :Reconnaissance ascendante en profondeur (d’abord)

7

(65)

• S’il y a des cycles dans la grammaire : on a des boucles dans le graphe et l’on risque de boucler à l’infini.

• Alors,

• soit on supprime les cycles (voir chapitres précédents) ;

• soit on utilise un autre algorithme (ex : en largeur).

8

(66)

• S’il y a des cycles dans la grammaire : on a des boucles dans le graphe et l’on risque de boucler à l’infini.

• Alors,

• soit on supprime les cycles (voir chapitres précédents) ;

• soit on utilise un autre algorithme (ex : en largeur).

8

(67)

• S’il y a des cycles dans la grammaire : on a des boucles dans le graphe et l’on risque de boucler à l’infini.

• Alors,

• soit on supprime les cycles (voir chapitres précédents) ;

• soit on utilise un autre algorithme (ex : en largeur).

8

(68)

• S’il y a des cycles dans la grammaire : on a des boucles dans le graphe et l’on risque de boucler à l’infini.

• Alors,

• soit on supprime les cycles (voir chapitres précédents) ;

• soit on utilise un autre algorithme (ex : en largeur).

8

(69)

Sabine voit Fred

FIGURE 2 :Reconnaissance ascendante en largeur (abord)

9

(70)

Sabine voit Fred

Sabine voitNP SabineVFred

NPvoit Fred

FIGURE 2 :Reconnaissance ascendante en largeur (abord)

9

(71)

Sabine voit Fred

Sabine voitNP SabineVFred

NPvoit Fred NP voitSN NPVFred SNvoit Fred

FIGURE 2 :Reconnaissance ascendante en largeur (abord)

9

(72)

Sabine voit Fred

Sabine voitNP SabineVFred

Sabine VNP SabineSNFred

NPV Fred NPvoit Fred

NP voitSN NPVFred SNvoit Fred

FIGURE 2 :Reconnaissance ascendante en largeur (abord)

9

(73)

Sabine voit Fred

Sabine voitNP

Sabine voitSN SabineVNP

NPvoit NP SabineVFred

Sabine VNP SabineSNFred

NPV Fred NPvoit Fred

NP voitSN NPVFred SNvoit Fred

FIGURE 2 :Reconnaissance ascendante en largeur (abord)

9

(74)

Algorithm 2 :Reconnaissance ascendante en largeur // α est le mot à reconnaître.

// bubfp (α): renvoie true ssi α est dérivable.

Functionbubfp(α): bool l:= [α];

i:=0 ;

whilei<|l|do u:=l[i];

ifu=Sthen returntrue;

// Début de la fenêtre à réécrire fori:=1to|u|do

// Fin de la fenêtre à réécrire forj:=ito|u|do

for(A→ui. . .uj)∈Pdo

l.append(u1. . .ui−1A uj+1. . .un) i+ =1 ;

returnfalse;

10

(75)

Reconnaissance descendante

(top-down)

(76)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(77)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(78)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(79)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(80)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(81)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(82)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(83)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(84)

Principe

• On part de l’axiome.

• On « descend » le graphe, en appliquant des règles de réécriture.

• On compare à chaque étape le préfixe de terminaux généré ; si ce n’est pas un préfixe du mot à reconnaître, c’est que la branche n’est pas viable.

• Dans ce cours :

• on va supprimer du proto-mot et du mot à reconnaître leur plus long préfixe commun ;

• on va uniquement essayer de réécrire le symbole le plus à gauche parmi les symboles restants ;

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.

• On retrouve les deux types de stratégies (en profondeur et en largeur).

11

(85)

Algorithm 3 :Reconnaissance descendante en profondeur // Au départ, α est l'axiome, u le mot à

reconnaître.

Functiontddfp(α, u): bool ifα=uthen returntrue;

// Plus long préfixe commun; α= et u=w u w:=plpc(α,u);

ifα=wthen returnfalse;

// On va essayer de réécrire α en u. for(α|w|+1 →β)∈Pdo

iftddfp(β α|w|+2 . . . α|α|, u|w|+1. . .u|u|)= truethen returntrue;

returnfalse;

12

(86)

(P, Sabine voit Fred)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(87)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(88)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(89)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

(leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(90)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(91)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(92)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(93)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred) (DET NSV, Sabine voit Fred)

...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(94)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V, voit Fred) (DET NSV, Sabine voit Fred)

...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(95)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V, voit Fred) (voit, voit Fred) (DET NSV, Sabine voit Fred)

...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(96)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V, voit Fred) (prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(97)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V SN, voit Fred) (V, voit Fred)

(prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(98)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V SN, voit Fred) (voitSN, voit Fred) (V, voit Fred)

(prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(99)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V SN, voit Fred) (voitSN, voit Fred)

NP, Fred (V, voit Fred)

(prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(100)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V SN, voit Fred) (voitSN, voit Fred)

NP, Fred (Sabine, Fred) (V, voit Fred)

(prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(101)

(P, Sabine voit Fred) (SN SV, Sabine voit Fred)

(NPSV, Sabine voit Fred) (SabineSV, Sabine voit Fred)

(V SN, voit Fred) (voitSN, voit Fred)

NP, Fred (Fred, Fred) (Sabine, Fred) (V, voit Fred)

(prépare, voit Fred) (voit, voit Fred)

(DET NSV, Sabine voit Fred) ...

(laN SV, Sabine...) (leN SV, Sabine...)

FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)

13

(102)

• Problème avec larécursivité gauche(A→...→Aw) : on risque aussi de boucler à l’infini.

• Alors,

• soit on supprime la récursivité gauche (c’est possible) ;

• soit on utilise un autre algorithme (ex : en largeur).

14

(103)

• Problème avec larécursivité gauche(A→...→Aw) : on risque aussi de boucler à l’infini.

• Alors,

• soit on supprime la récursivité gauche (c’est possible) ;

• soit on utilise un autre algorithme (ex : en largeur).

14

(104)

• Problème avec larécursivité gauche(A→...→Aw) : on risque aussi de boucler à l’infini.

• Alors,

• soit on supprime la récursivité gauche (c’est possible) ;

• soit on utilise un autre algorithme (ex : en largeur).

14

(105)

• Problème avec larécursivité gauche(A→...→Aw) : on risque aussi de boucler à l’infini.

• Alors,

• soit on supprime la récursivité gauche (c’est possible) ;

• soit on utilise un autre algorithme (ex : en largeur).

14

Références

Documents relatifs

les cours Automates et Calculabilit´ e en majeure M1 pour les grammaires formelles, et Compilation en majeure M2 pour les analyseurs syntaxiques... Sch´ ema g´

les cours Automates et Calculabilit´ e en majeure M1 pour les grammaires formelles, et Compilation en majeure M2 pour les analyseurs syntaxiques.. Sch´ ema g´

De mani`ere ´equivalente, une grammaire est ambigu¨e s’il existe plus d’une d´erivation `a gauche d’abord pour un certain w.. De mani`ere ´equivalente, une grammaire est

• En section 4.4 L’automate canonique, vous pouvez vous concentrer sur l’algorithme de minimisation (en 4.4.3 ; nécessite de connaître aussi la définition de

• On peut supprimer les productions et symboles inutiles sans affecter le langage généré.. • Algorithme en deux

Acceptation par état final : un peu comme pour les automates finis, on accepte si on se retrouve dans un état final après avoir lu tout le mot, et ce quelque soit le contenu de

• On suppose une capacité de mémoire infinie afin de pouvoir étudier la régularité (au sens usuel) des phénomènes syntaxiques et rendre la notion de structure syntaxique

À chaque étape, soit on sait qu’il faut s’arrêter (réussite ou échec), soit on sait quelle action effectuer pour continuer