Langages formels et analyse syntaxique
CM5 : Introduction à l’analyse syntaxique automatique de grammaire CF
Timothée Bernard 16 octobre 2020
Université de Paris
À lire
• Chapitre 7 du polycopié d’Yvon et Demaille (2016).
1
À lire
• Chapitre 7 du polycopié d’Yvon et Demaille (2016).
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Reconnaissance ascendante
(bottom-up)
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
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
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
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
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
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
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−1Aαj+1. . . αn)= truethen returntrue;
returnfalse;
5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
• 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
• 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
• 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
• 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
Sabine voit Fred
FIGURE 2 :Reconnaissance ascendante en largeur (abord)
9
Sabine voit Fred
Sabine voitNP SabineVFred
NPvoit Fred
FIGURE 2 :Reconnaissance ascendante en largeur (abord)
9
Sabine voit Fred
Sabine voitNP SabineVFred
NPvoit Fred NP voitSN NPVFred SNvoit Fred
FIGURE 2 :Reconnaissance ascendante en largeur (abord)
9
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
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
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
Reconnaissance descendante
(top-down)
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
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
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
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
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
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
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
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
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
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; α=wα′ 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
(P, Sabine voit Fred)
FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)
13
(P, Sabine voit Fred) (SN SV, Sabine voit Fred)
FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)
13
(P, Sabine voit Fred) (SN SV, Sabine voit Fred) (DET NSV, Sabine voit Fred)
FIGURE 3 :Reconnaissance descendante en profondeur (d’abord)
13
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
• 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
• 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
• 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
• 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