Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Langages et grammaires algébriques
Mirabelle Nebut
Bureau 332 - M3mirabelle.nebut at lifl.fr
2012-2013
Mirabelle Nebut Langages et grammaires algébriques
2/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Avant d’écouter ce cours. . .
Il faut avoir lu le résumé associé.
Mirabelle Nebut Langages et grammaires algébriques
3/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
But de ce cours
outils pourl’analyse lexicale
outils pourl’analyse syntaxique
type delangage
langagerégulier
langagealgébrique
descriptionexpressionsrégulières
grammairesalgébriques
formalismesous-jacent
AF(N)D automates à pile
Mirabelle Nebut Langages et grammaires algébriques
4/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Langages et grammaires algébriques
Limites des langages réguliers
Langages et grammaires algébriques
Arbres syntaxiques
Grammaires � pathologiques �
Les algébriques. . . et les autres
Mirabelle Nebut Langages et grammaires algébriques
5/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Principes de l’analyse syntaxique
I reçoit de l’analyseur lexical une suite de symboles ;
I reconnâıt dans cette suite la structure d’un texte.
Ex :
...
while (true) {
while (true) {
...
}
}
...
...
instruction
WHILE
PO TRUE
PF AO ... AO ... AF ... AF
cond listeInstr
...
Mirabelle Nebut Langages et grammaires algébriques
6/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Décrire/reconnâıtre la structure d’un texte
Les langages réguliers / expressions régulières ne suffisent pas.
exemple archi-typique : {anbn|n ≥ 0}I parenthésage imbriquéI pour le reconnâıtre :
I compter/mémoriser le nombre de a ;I compter /mémoriser le nombre de b.
I pas régulier.
Mirabelle Nebut Langages et grammaires algébriques
7/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
anbn pas régulier, argument intuitif - 1
Dans un AF(fini)D : états = mémoire (finie)
Ex langages réguliers finis :
I {anbn|n ≤ 3} ;I {anbn|n ≤ 9045} ;I {anbn|n ≤ k} pour k fixé ;
...
AFD
Ex langage régulier infini : a∗a
Mirabelle Nebut Langages et grammaires algébriques
8/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
anbn pas régulier, argument intuitif - 2
{anbn | n ≥ 0} AFD mémoire finie
⇒ il suffit de prendre n plus grand que la taille de la mémoire.
Mirabelle Nebut Langages et grammaires algébriques
9/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
anbn pas régulier, argument intuitif - 3
Pour reconnâıtre {anbn|n ≥ 0} :I mémoriser un nombre non borné de symboles a et b ;
I ⇒ langage non régulier.
Pour reconnâıtre {anbn|n ≤ 32} :I il faut mémoriser au pire 32 a et 32 b ;
I mémorisation bornée ⇒ régulier.
Mirabelle Nebut Langages et grammaires algébriques
10/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
anbn pas régulier, argument formel
Theorem (Lemme de pompage)
Soit L un langage régulier. Alors il existe un entier k tq pour toutmot m de L de longueur ≥ k, il existe des mots x , u, y ∈ Σ∗ avecm = xuv, u 6= � et pour tout n, xuny ∈ L.
x
q
yu
q0 qf
Pour anbn : où placer u ?
Mirabelle Nebut Langages et grammaires algébriques
11/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Limites des langages réguliers
Langages et grammaires algébriquesLes grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Arbres syntaxiques
Grammaires � pathologiques �
Les algébriques. . . et les autres
Mirabelle Nebut Langages et grammaires algébriques
12/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Grammaire algébrique pour Init
programme → entete listDecl listInstentete → PROG ID PV une productionlistInst → � une production videlistInst → instr listInstinstr → lecture PVinstr → affect PVlecture → READ ID. . .
TERMINAUX ∈ VTnon-terminaux ∈ VN
axiome ∈ VN
Mirabelle Nebut Langages et grammaires algébriques
12/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Grammaire algébrique pour Init
programme → entete listDecl listInstentete → PROG ID PV une productionlistInst → � une production videlistInst → instr listInstinstr → lecture PV | affect PV// équivalent !
lecture → READ ID. . .
TERMINAUX ∈ VTnon-terminaux ∈ VN
axiome ∈ VN
On écrit X → α | β pourX → αX → β
Mirabelle Nebut Langages et grammaires algébriques
13/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Définition formelle
Definition (grammaire algébrique)
Une grammaire algébrique ou hors-contexte est un quadruplet
G = (VT ,VN ,P,S)
I VT et VN sont des vocabulaires disjoints : VT est l’ensembledes terminaux, VN l’ensemble des non-terminaux ;
I S ∈ VN est l’axiome, ou symbole de départ (Start) ;I P ⊆ VN × (VN ∪ VT )∗ est l’ensemble des (règles de)
productions.
Mirabelle Nebut Langages et grammaires algébriques
14/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Remarques
� P ⊆ VN × (VN ∪ VT )∗ est l’ensemble des productions � :
instr → affect PVest une notation pour
(instr, affect PV) ∈ P
Terminaux de VT = unités lexicales fixées à l’analyse lexicale.
La grammaire engendre des mots de VT∗.
Mirabelle Nebut Langages et grammaires algébriques
15/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Comment engendrer des mots ?
Problème : engendrer des mots de VT∗ à partir :
I de l’axiome ;
I et des productions de la grammaire.
Ex : engendrer le mot PROG ID PV à partir de GI :
(1) programme → entete listDecl listInst (3) listDecl → �(2) entete → PROG ID PV (4) listInst → �
Moyen : dérivations directes successives, à partir de l’axiome.
Mirabelle Nebut Langages et grammaires algébriques
16/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Comment engendrer des mots - dérivations directes
(1) programme → entete listDecl listInst (3) listDecl → �(2) entete → PROG ID PV (4) listInst → �
programme ⇒GI entete listDecl listInst (dér. directe par (1))entete listDecl listeInst ⇒GI PROG ID PV listDecl listInst par (2)PROG ID PV listDecl listInst ⇒GI PROG ID PV listDecl par (4)PROG ID PV listDecl ⇒GI PROG ID PV par (3)
Mirabelle Nebut Langages et grammaires algébriques
17/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Dérivation : définition
Une dérivation est une suite de dérivations directes :
programme ⇒GI entete listDecl listInst⇒GI PROG ID PV listDecl listInst ⇒GI PROG ID PV listDecl⇒GI PROG ID PV
Cette dérivation est de longueur 4 : programme ⇒4GI PROG ID PVNotation : programme ⇒∗GI PROG ID PVPour une grammaire G d’axiome S , une dérivation pour le mot mdésigne une dérivation de S à m.
Mirabelle Nebut Langages et grammaires algébriques
18/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Langage engendré par une grammaire
Definition (langage engendré)
Soit G une grammaire algébrique d’axiome S . Le langage engendrépar G est défini par :
L(G ) = {m ∈ VT ∗ | S ⇒∗ m}
Déterminer si un mot m appartient au langage engendré, c’estdéterminer si :
S ⇒∗G m ?
Mirabelle Nebut Langages et grammaires algébriques
19/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Autre exemple - une grammaire des additions - 1
GA = (VT ,VN ,P,A) où
I VT = {id, +}I VN = { A }I P = { A → A + A | id }
Mirabelle Nebut Langages et grammaires algébriques
20/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Autre exemple - une grammaire des additions - 2
A → A + A | id
Une dérivation possible pour le mot id + id + id :
A ⇒ A + A ⇒ A + A + A ⇒ A + id + A ⇒ id + id + A ⇒id + id + id
Donc A ⇒∗ id + id + id, ou A ⇒5 id + id + id
Mirabelle Nebut Langages et grammaires algébriques
21/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Mon voisin a trouvé une dérivation différente !
On peut souvent trouver plusieurs dérivations pour un mot.
Deux sources de choix :
I choix du non-terminal à dériver ;
I choix de la production à appliquer, de membre gauche lenon-terminal choisi.
Mirabelle Nebut Langages et grammaires algébriques
22/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Dérivation directe (formellement) - 1
Definition (dérivation directe)
Soient β, β′ ∈ (VN ∪ VT )∗. β se dérive directement en β′ selon G ,noté β ⇒G β′, s’il existe des mots γ, γ′ ∈ (VN ∪ VT )∗ et uneproduction X → α tels que : β = γ X γ′
β′ = γ α γ′
Ex :
β︷ ︸︸ ︷A + A + A ⇒
β′︷ ︸︸ ︷A + id + A par
X︷︸︸︷A →
α︷︸︸︷id
A +︸︷︷︸γ
A︸︷︷︸X
+ A︸︷︷︸γ′
⇒ A +︸︷︷︸γ
id︸︷︷︸α
+ A︸︷︷︸γ′
Mirabelle Nebut Langages et grammaires algébriques
23/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Dérivation directe (formellement) - 2
Definition (dérivation directe)
Soient β, β′ ∈ (VN ∪ VT )∗. β se dérive directement en β′ selon G ,noté β ⇒G β′, s’il existe des mots γ, γ′ ∈ (VN ∪ VT )∗ et uneproduction X → α tels que : β = γ X γ′
β′ = γ α γ′
Ex :
β︷ ︸︸ ︷A + A ⇒
β′︷ ︸︸ ︷A + A + A par
X︷︸︸︷A →
α︷ ︸︸ ︷A + A
A +︸︷︷︸γ
A︸︷︷︸X
︸︷︷︸γ′=�
⇒ A +︸︷︷︸γ
A + A︸ ︷︷ ︸α
︸︷︷︸γ′=�
Mirabelle Nebut Langages et grammaires algébriques
24/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Encore un exemple, et un piège
VT = {a, b}, VN = {S ,B}, axiome S ,P = {S → BB, B → a | b }.Dérivation pour aa ?
De longueur 3, pas 2 !
Mirabelle Nebut Langages et grammaires algébriques
25/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Dérivation (formellement)
Definition (dérivation)
Soient β, β′ ∈ (VN ∪ VT )∗. Une suite de mots β0, β1, . . ., βn(n ≥ 0) est une dérivation de β en β′ selon G si β0 = β, βn = β′,et
β0 ⇒ β1 ⇒ · · · ⇒ βn
Definition (relation de dérivation)
La relation de dérivation ⇒∗G est la fermeture réflexive et transitivede la relation de dérivation directe ⇒G .
Mirabelle Nebut Langages et grammaires algébriques
26/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Mon voisin a trouvé une grammaire différente !
On peut trouver 2 grammaires algébriques qui engendrent le mêmelangage.
Definition (grammaires équivalentes)
Deux grammaires sont équivalentes si elles engendrent le mêmelangage.
Mirabelle Nebut Langages et grammaires algébriques
27/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Langages algébriques
Definition (langage algébrique)
Les langages engendrés par les grammaires algébriques sontappelés langages algébriques.
Mirabelle Nebut Langages et grammaires algébriques
28/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Comparaison avec les réguliers
réguliers
algébriques
régulier ⇒ algébriquealgébrique 6⇒ régulier
Tout langage régulier est algébrique :
I possible d’utiliser une grammaire algébrique au lieud’expressions régulières ;
I mais AF plus efficaces.
Il existe des algébriques qui ne sont pas réguliers : {anbn|n ≥ 0}
Mirabelle Nebut Langages et grammaires algébriques
29/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Un exemple pour la route
Une première grammaire des expressions arithmétiques :
GE = (VT ,VN ,P,E ) :
I VT = {id, +, *, (, )}I VN = { E }I P = { E → E + E | E * E | ( E ) | id }
Montrer que id * (id + id) est un mot de L(GE ).
Langage algébrique ? régulier ?
Mirabelle Nebut Langages et grammaires algébriques
30/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Les grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Générateurs d’analyseurs syntaxiques
alg
javacjava
analyseur
syntaxique
suite
symboles
erreur
générateur
erreur
AnSynt.java
dérivationarbre synt
gram
On verra 2 outils : Cup et antLRMirabelle Nebut Langages et grammaires algébriques
31/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Limites des langages réguliers
Langages et grammaires algébriques
Arbres syntaxiques
Grammaires � pathologiques �
Les algébriques. . . et les autres
Mirabelle Nebut Langages et grammaires algébriques
32/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique
Arbre résultant de l’analyse syntaxique.
Fait apparâıtre la structure syntaxique d’un mot.
Notion très importante, on le verra plus tard.
On parle aussi d’arbre de dérivation.
Mirabelle Nebut Langages et grammaires algébriques
33/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique : exemple - 1
Arbre syntaxique pour id * (id + id) selon GE :
*
E E E
E
E
E
id ( id + id )
Mirabelle Nebut Langages et grammaires algébriques
34/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique : exemple - 2
Arbre syntaxique pour PROG ID PV selon GI :
program
entete listDecl listInst
PVIDPROG � �
Mirabelle Nebut Langages et grammaires algébriques
35/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Schématiquement
Pour une grammaire G :
I la racine : l’axiome de G ;
I le mot des feuilles : le mot qui nous intéresse ;
I les noeuds internes sont agencés selon les productions de G :
A→ N1N2 . . .Nk
N1 Nk
A
...
A→ �
�
A
Mirabelle Nebut Langages et grammaires algébriques
36/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique et appartenance à L(G )
TheoremSoit m ∈ VT ∗. m ∈ L(G ) ss’il existe un arbre syntaxique selon Gdont le mot aux feuilles est m.On dit alors que cet arbre est un arbre syntaxique pour m, ou quem admet cet arbre.
Répondre à m ∈ L(G ) = chercher un arbre syntaxique pour m.
Mirabelle Nebut Langages et grammaires algébriques
37/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
En pratique
Les analyseurs syntaxiques ne construisent pas un arbre syntaxique.
L’arbre est une représentation commode pour comprendre l’analysesyntaxique.
Ils construisent une dérivation particulière, appelée gauche oudroite.
⇒ lien entre arbre syntaxique et dérivation ?
Mirabelle Nebut Langages et grammaires algébriques
38/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique et dérivations - 1
Facile de construire un arbre syntaxique à partir d’une dérivation.
E ⇒ E * E⇒ id * E⇒ id * ( E )⇒ id * ( E + E )⇒ id * ( id + E )⇒ id * ( id + id )
*
E E E
E
E
E
id ( id + id )
À une dérivation correspond un seul arbre.
Mirabelle Nebut Langages et grammaires algébriques
39/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique et dérivations - 2
À un arbre correspondent potentiellement plusieurs dérivations.
E
E E
id + id
E ⇒GI E + E ⇒GI id + E⇒GI id + id
E ⇒GI E + E ⇒GI E + id⇒GI id + id
Ces 2 dérivations sont � équivalentes � : elles correspondent aumême arbre :
I mêmes productions appliquées aux mêmes non-taux ;
I seul l’ordre des dérivations directes varie.
Mirabelle Nebut Langages et grammaires algébriques
40/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique et dérivations : dérivations gauche/droite
On peut fixer l’ordre des dérivations directes en choisissantsystématiquement :
I soit le non-terminal le plus à gauche ;E ⇒GI E + E ⇒GI id + E ⇒GI id + id dérivation gauche
I soit le non-terminal le plus à droite.E ⇒GI E + E ⇒GI E + id ⇒GI id + id dérivation droite
À chaque arbre syntaxique correspond une unique dérivationgauche et une unique dérivation droite.
Mirabelle Nebut Langages et grammaires algébriques
41/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Dérivation gauche/droite, formellement
DefinitionSoient β, β′ ∈ (VN ∪ VT )∗ et β0 ⇒ β1 ⇒ · · · ⇒ βn une dérivationde β en β′. Si à chaque étape on choisit de remplacer dans βi lenon-terminal :
I le plus à gauche : c’est une dérivation gauche (leftmost
derivation) notée βlm
=⇒∗β′ ;
I le plus à droite : c’est une dérivation droite (rightmost
derivation) notée βrm
=⇒∗β′.
Mirabelle Nebut Langages et grammaires algébriques
42/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Arbre syntaxique et dérivations - 3
Certaines dérivations ne correspondent pas au même arbre.(1) E ⇒ E * E ⇒ E * E + E ⇒∗ id * id + id(2) E ⇒ E + E ⇒ E * E + E ⇒∗ id * id + id
(1)
id id + id
E E
EE
E
*
(2)
E E
id id + id
E
E
*
E
À un mot correspondent potentiellement plusieurs arbres.
Mirabelle Nebut Langages et grammaires algébriques
43/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Récapitulatif
I À une dérivation correspond un seul arbre.
I À un arbre correspondent potentiellement plusieursdérivations.
I À un arbre correspond une unique dérivation gauche et uneunique dérivation droite.
I À un mot correspondent potentiellement plusieursarbres/interprétations.
Mirabelle Nebut Langages et grammaires algébriques
44/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Limites des langages réguliers
Langages et grammaires algébriques
Arbres syntaxiques
Grammaires � pathologiques �
AmbigüıtéGrammaires réduites
Les algébriques. . . et les autres
Mirabelle Nebut Langages et grammaires algébriques
45/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaire refusée par le générateur
erreur
générateurgramalg
2 cas possibles :
I la grammaire est pathologique : le concepteur doit la réviser
I la grammaire ne convient pas à la méthode d’analysesyntaxique implantée par l’outil : autre problème, cf suite ducours
Mirabelle Nebut Langages et grammaires algébriques
46/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Pathologies vues dans ce cours
Les grammaires ambiguës :
I elles sont rejetées par le générateur
I avec un message d’erreur pas forcément explicite
I il faut trouver une grammaire équivalente
Les grammaires non réduites :
I acceptées par le générateur, éventuellement avec warning
I mais le générateur calcule en fait une autre grammaire
I signale souvent une erreur de conception
I il faut savoir comprendre et réparer
Mirabelle Nebut Langages et grammaires algébriques
47/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Limites des langages réguliers
Langages et grammaires algébriquesLes grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Arbres syntaxiques
Grammaires � pathologiques �
AmbigüıtéGrammaires réduites
Les algébriques. . . et les autresComparaison avec les réguliersLimitation des algébriquesLes autres
Mirabelle Nebut Langages et grammaires algébriques
48/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Interprétation d’un mot et ambigüıté
Deux interprétations (sémantiques) différentes de id * id + id :ce mot est ambigu.
id id + id
E E
EE
E
*
+ prio sur *
E E
id id + id
E
E
*
E
* prio sur +
Mirabelle Nebut Langages et grammaires algébriques
49/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Définition
Definition(ambigüıté) Un mot w ∈ L(G ) est ambigu s’il admet plusieursarbres syntaxiques.
Mirabelle Nebut Langages et grammaires algébriques
50/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Récapitulatif
I À une dérivation correspond un seul arbre.
I À un arbre correspondent potentiellement plusieursdérivations.
I À un arbre correspond une unique dérivation gauche et uneunique dérivation droite.
I À un mot correspondent potentiellement plusieursarbres/interprétations.
I À un mot non ambigu correspond un(e) uniquearbre/interprétation.
Mirabelle Nebut Langages et grammaires algébriques
51/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Définitions
DefinitionUne grammaire est ambiguë si elle permet de dériver au moins unmot ambigu.
DefinitionUn langage est ambigu si toutes les grammaires qui l’engendrentsont ambiguës.
Mirabelle Nebut Langages et grammaires algébriques
52/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Le problème des interprétations multiples
Un programme ayant plusieurs interprétations ?
Désastreux pour un programme souhaité déterministe !
On ne travaille qu’avec des grammaires dites non ambiguës, pourlequelles tout mot admet un unique arbre syntaxique.
⇒ il faut savoir repérer les grammaires ambiguës.
Mirabelle Nebut Langages et grammaires algébriques
53/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Détecter l’ambigüıté - 1
Certaines grammaires sont � clairement � ambiguës, repérableavec de l’expérience.Ex de production récursive symétrique : E → E + E .
EE
+
E
+
E
E
EE
+
E
E
+
E
Mirabelle Nebut Langages et grammaires algébriques
54/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Détecter l’ambigüıté - 2
Certaines grammaires sont mal conçues
Ex grammaire Init G1 non ambiguë :
listInst → � | inst listInstinst → affect PV | lecture PV
lecture → READ IDENT
READ IDENT PV. . .
lecture
inst
listInst
listInst
PV
Mirabelle Nebut Langages et grammaires algébriques
55/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Détecter l’ambigüıté - 3
Déplacement de la production vide.
Ex grammaire Init G2 ambiguë :
listInst → inst listInst | instinst → � | affect PV | lecture PV
Voyez-vous pourquoi G2 est ambiguë ?
Mirabelle Nebut Langages et grammaires algébriques
56/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Prouver une ambigüıté
Prouver qu’une grammaire est ambiguë = trouver un mot quiadmet au moins 2 arbres syntaxiques.
L’utilisation d’un générateur d’analyseur syntaxique peut aider.
Prouver qu’une grammaire n’est pas ambiguë = faire une preuve.
Décider de l’ambigüıté d’une grammaire est difficile : c’est unproblème indécidable.
Mirabelle Nebut Langages et grammaires algébriques
57/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires ambiguës, en pratique
Quand un langage L est intuitivement non ambigü. . .
et qu’une grammaire engendrant L l’est. . . on peut essayer de larendre non ambiguë :
I le plus souvent : on réfléchit et on change peu de choses ;
I cas particulier : les grammaires à opérateurs.
Mirabelle Nebut Langages et grammaires algébriques
58/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires à opérateurs
Grammaires faisant intervenir des opérateurs avec :
I associativité ;
I priorités.
Ex : grammaire (ambiguë) des expressions arithmétiques
E → E + E | E * E | ( E ) | id
Mirabelle Nebut Langages et grammaires algébriques
59/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Associativité des opérateurs
Première source d’ambigüıté : l’associativité de + et *.
EE
+
E
+
E
E
id id id
associativité droite
EE
+
E
E
+
E
id id id
associativité gauche
Mirabelle Nebut Langages et grammaires algébriques
60/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Priorité des opérateurs
Seconde source d’ambigüıté : priorité de + et *.
id id + id
E E
EE
E
*
+ prio sur *
E E
id id + id
E
E
*
E
* prio sur +
NB : plus prioritaire = dérivé du E le plus bas dans l’arbre
Mirabelle Nebut Langages et grammaires algébriques
61/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Principes - 1
E → E + E | E * E | ( E ) | id
Dans cette grammaire l’axiome E représente potentiellement :
I une somme : opérateur + ;
I un produit : opérateur * ;
I une expression atomique : id ;
I une expression parenthésée.
Pour refléter les priorités des opérateurs dans la grammaire :
I on repère la structure d’une expression ;
I on structure la grammaire en conséquence.
Mirabelle Nebut Langages et grammaires algébriques
62/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Principes - 2
Structure d’une expression : somme de produits de facteurs∑
i=0...n
∏
j=0...m
xij
Rmq : d’abord la somme, la moins prioritaire.
Les facteurs xij sont soit :
I un atome id ;I une expression parenthésée.
Pour imiter cette structure dans la grammaire, on lui ajoute :
I S ∈ VN pour une somme ;I P ∈ VN pour un produit ;I F ∈ VN pour un facteur.
Mirabelle Nebut Langages et grammaires algébriques
63/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Traitement de l’associativité, ex des produits - 1
F → id | ( E ) P → ? * ?Un opérande d’un produit peut être :
I un autre produit : récursivité sur P ;
I un facteur F (ne permettant pas de dériver un produit).
Par ailleurs :
I on ne veut pas d’un produit P * P !
I il faut un � cas d’arrêt � : P → FP → F | P * F ?F → id | ( E )Récursivité gauche ?
P → F | F * P ?F → id | ( E )Récursivité droite ?
Mirabelle Nebut Langages et grammaires algébriques
64/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Traitement de l’associativité, ex des produits - 2
P → F | P * FF → . . . récursivité gauche
P
P F
F
id id* * id
F
P
associativité gauche
P → F | F * PF → . . . récursivité droite
P
P F
F
id id**id
F
P
associativité droite
Ici on choisira donc une récursivité gauche.
Mirabelle Nebut Langages et grammaires algébriques
65/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Traitement des priorités - 1
En traitant la somme (de produits) de la même manière : OK
E → SS → P | S + PP → F | P * FF → id | ( E )
F
F
F
S
P
S
P
E
id * id + id
P
Mirabelle Nebut Langages et grammaires algébriques
66/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Traitement des priorités - 2
Rmq : en inversant somme et produit : KO
E → S S en hautS → P | S + PP → F | P * F . . .
F
F
F
S
P
S
P
E
id * id + id
P
E → P P en hautP → S | P * SS → F | S + F . . .
F F F
SP
E
P
SS
id id + id*
Mirabelle Nebut Langages et grammaires algébriques
67/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Systématisation
Pour rendre une grammaire à opérateur non ambiguë :
I on ajoute un non terminal par niveau de priorité (S pour +, Ppour *, etc) ;
I les moins prioritaires en haut de l’arbre, proches de l’axiome ;
I les plus prioritaires en bas de l’arbre, proches des feuilles ;
I les � atomes � tout en bas ;
I associativité gauche/droite ⇒ récursivité gauche/droite.
Mirabelle Nebut Langages et grammaires algébriques
68/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple plus gros
E → E + E | E - E | E * E | E / E | - E | ( E ) | id
{+,−b}︸ ︷︷ ︸S
≤prio {∗, /}︸ ︷︷ ︸P
≤prio {-u}︸︷︷︸U
≤prio {()}︸︷︷︸A
E → SS → P | S + P | S - PP → U | P * U | P / UU → - U | AA → ( E ) | id
Mirabelle Nebut Langages et grammaires algébriques
69/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires à opérateurs, bilan
Version ambiguë : très intuitive. . . mais ambiguë !
Version non ambiguë : opérationnalisable. . .
I mais complètement illisible !
I taille arbre beaucoup plus grande.
Mirabelle Nebut Langages et grammaires algébriques
70/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires à opérateurs, automatisation
On a un algorithme qui calcule une grammaire nonambiguë équivalente.
Il prend en entrée :
I une grammaire à opérateurs ambiguë ;
I et les niveaux de priorité + associativité des opérateurs.
Mirabelle Nebut Langages et grammaires algébriques
71/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires à opérateurs, outillage
Cup :
I on spécifie (et décore) uniquement la grammaire ambiguë ;
I on spécifie les niveaux de priorité + associativité desopérateurs.
I la version non-ambiguë est automatiquement calculée, maisreste implicite.
antLR :
I il faut écrire la grammaire non-ambiguë à la main
I donc mâıtriser l’algorithme de calcul. . .
Mirabelle Nebut Langages et grammaires algébriques
72/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Limites des langages réguliers
Langages et grammaires algébriquesLes grammaires algébriquesLangage engendré, dérivationsLangages algébriques, comparaison avec les réguliersOutillage
Arbres syntaxiques
Grammaires � pathologiques �
AmbigüıtéGrammaires réduites
Les algébriques. . . et les autresComparaison avec les réguliersLimitation des algébriquesLes autres
Mirabelle Nebut Langages et grammaires algébriques
73/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Aparté : parallèle code/grammaire - 1
Quand on code. . . :
I on écrit des bêtises (bugs) ;
I on écrit du code mort ;
I on écrit des choses simplifiables, genre if (x == true) ;
I etc.
Pour détecter ces bêtises :I analyses statiques possibles (à la compilation) :
I détecte des erreurs de typages, de syntaxe, code mort, etc.
I test (à l’exécution) :I on essaie pour voir si ça marche ;I détecte les erreurs � sémantiques � (le programme est
syntaxiquement correct mais ne répond pas à sa spécification).
Mirabelle Nebut Langages et grammaires algébriques
74/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Aparté : parallèle code/grammaire - 2
Quand on écrit une grammaire : c’est pareil ! on peut se tromper :
I on a oublié une production ;
I on s’est trompé dans l’écriture d’une production ;
I etc.
Certaines erreurs sont détectables statiquement :
I détection de productions et non-taux inutiles (∼ code mort) ;I ⇒ obtention d’une grammaire dite réduite (cf cours).
Erreurs sémantiques (la grammaire ne dit pas ce qu’on pense) :
I on teste en exécutant l’analyseur syntaxique.
Mirabelle Nebut Langages et grammaires algébriques
75/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Aparté : parallèle code/grammaire - 3
On souhaite parfois réusiner (refactoring) un programme. . .
. . . de même on peut souhaiter transformer une grammaire pour :
I obtenir des arbres syntaxiques plus compacts ;I suppression des règles X → Y et X → � ;I ⇒ grammaires propres ;
I obtenir une forme de grammaire particulière propice àcertaines analyses ;
I forme normale de Chomsky (FNC) ;I X → a ou X → YZ ;
I mettre à part �.
Pas dans ce cours, cf la littérature.
Mirabelle Nebut Langages et grammaires algébriques
76/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaires réduites
Certaines grammaires sont � pathologiques � car certainsnon-terminaux ne servent à rien.
Souvent dû à une erreur de conception : cf code mort.
En pratique :
I les générateurs signalent au mieux le problème par un warningà la génération
I on décèle souvent le problème en testant l’analyseursyntaxique.
DefinitionUne grammaire est dite réduite si elle ne contient pas denon-terminal improductif ou inaccessible.
Mirabelle Nebut Langages et grammaires algébriques
77/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Non-terminaux improductifs : exemple
liste → elt ; listeelt → a | b
liste est improductif : il ne permet pas de dériver un mot de{a, b, ; }∗.En fait on voulait dire : liste → elt ; liste | elt
elt → a | b
Mirabelle Nebut Langages et grammaires algébriques
78/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Ce qu’en disent les outils
liste → elt ; listeelt → a | b
Rien ! Pas de warning à la génération.
Mais l’analyseur syntaxique généré signale une erreur syntaxiquedès qu’on termine l’entrée par EOF.
⇒ on se doute qu’il y a une erreur qqpart !
Mirabelle Nebut Langages et grammaires algébriques
79/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Définition d’un improductif
DefinitionUn non-terminal X ∈ VN est improductif s’il n’existe pas de motu ∈ VT ∗ tel que X ⇒∗ u (le langage engendré par X est vide). Ilest productif sinon.
Mirabelle Nebut Langages et grammaires algébriques
80/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Calcul des improductifs
1. on calcule les productifs ;
2. par complémentaire on a les improductifs.
Ensuite on répare la grammaire pour que les improductifs ne lesoient plus.
NB : on obtiendrait une grammaire équivalente à celle de départ ensupprimant toutes les productions contenant un improductif enpartie gauche ou droite.
Mirabelle Nebut Langages et grammaires algébriques
81/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Calcul des productifs : idée
X est productif :
I s’il existe une production X → u avec u ∈ VT ∗ ;I ou s’il existe une production X → α avec α ∈ (VN ∪ VT )∗ tel
que tous les non-terminaux apparaissant dans α sontproductifs.
Mirabelle Nebut Langages et grammaires algébriques
82/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Calcul des productifs : plus petit point fixe
Algorithme näıf pour calculer un plus petit point fixe par itérationssuccessives :
I on part d’un ensemble initial ;
I on le fait grossir itérativement ;
I jusqu’à stabilisation.
Mirabelle Nebut Langages et grammaires algébriques
83/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple
G1 telle que VN = {S ,X ,Y ,Z ,W } (axiome S), VT = {a, b, d} et(1) S → a X(2) S → d W(3) X → b S(4) X → a Y b Y(5) Y → b a(6) Y → a Z(7) Z → a Z X(8) W → a S
Mirabelle Nebut Langages et grammaires algébriques
84/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple, résolution
no itération Prod
0 (init)123
. . .
Mirabelle Nebut Langages et grammaires algébriques
85/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Algorithme de calcul des productifs
Entrée : une grammaire algébrique GSortie : l’ensemble Prodde ses non-terminaux productifs
// Init
Prod = ∅pour toute production X → u, u ∈ VT ∗faire Prod = Prod ∪ {X} // noté Prod ∪= {X}fait
Mirabelle Nebut Langages et grammaires algébriques
86/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Algorithme de calcul des productifs
// Itérationsfaire jqa stabilisation de Prod
New = ∅ // les productifs découverts// pendant l’itération
pour toute production X → u1X1u2 . . .Xnuntq X 6∈ Prod // X pas encore traité
et {X1, . . . ,Xn} ⊆ Prod // X productiffaire New ∪= {X}faitProd ∪= New
fait
Mirabelle Nebut Langages et grammaires algébriques
87/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple, solution
On trouve Prod = {Y ,X ,S ,W }, donc Z est improductif.En supprimant Z partout on obtient la grammaire équivalente àG1 :
G ′1 telle que VN = {S ,X ,Y ,W } et(1) S → a X(2) S → d W(3) X → b S(4) X → a Y b Y(5) Y → b a(8) W → a S
Mirabelle Nebut Langages et grammaires algébriques
88/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Non-terminaux inaccessibles : exemple
Ex : instr → if |while | doaffect → IDAFFID
L’axiome ne permet pas � d’attraper � affect, qui est inutile.
En fait on voulait dire : instr → if |while | do | affectaffect → . . .
Mirabelle Nebut Langages et grammaires algébriques
89/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Ce qu’en disent les outils
instr → if |while | doaffect → IDAFFID
Cup affiche un warning :*** Production ”affect : := ID AFF ID” never reduced
antLR ne signale rien.
Dans les 2 cas l’analyseur syntaxique généré n’accepte aucuneaffectation.
⇒ on se doute qu’il y a une erreur qqpart !
Mirabelle Nebut Langages et grammaires algébriques
90/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Définition d’un inaccessible
DefinitionSoit G une grammaire algébrique d’axiome S . Un non-terminalX ∈ VN est inaccessible s’il n’existe pas de motsα, β ∈ (VN ∪ VT )∗ tels que S ⇒∗ αXβ. Il est accessible sinon.
Mirabelle Nebut Langages et grammaires algébriques
91/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Calcul des inaccessibles
1. on calcule les accessibles ;
2. on a par complémentaire les inaccessibles ;
Ensuite on répare la grammaire pour que les inaccessibles ne lesoient plus.
NB : on obtiendrait une grammaire équivalente à celle de départensupprimant toutes les productions contenant un inaccessible enpartie gauche (suffisant, supprime automatiquement lesinaccessibles en partie droite).
Mirabelle Nebut Langages et grammaires algébriques
92/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Calcul des accessibles : idée
X est accessible si :
I c’est l’axiome ;
I ou il existe une production Y → αXβ telle que Y estaccessible.
Même principe d’itération de point fixe que pour les accessiblesmais on cherche les candidats en partie droite de production.
Mirabelle Nebut Langages et grammaires algébriques
93/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple
G2 telle que VN = {S ,Y ,U,V ,X ,Z} (axiome S),VT = {a, b, d , e} et(1) S → Y(2) Y → Y Z(3) Y → Y a(4) Y → b(5) U → V(6) X → e(7) V → V d(8) V → d(9) Z → Z X
Mirabelle Nebut Langages et grammaires algébriques
94/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Exemple, solution
Acc = {S , Y , Z , X}En supprimant U et V partout on obtient la grammaireéquivalente à G2 :
G ′2 telle que VN = {S ,X ,Y ,Z} et(1) S → Y(2) Y → Y Z(3) Y → Y a(4) Y → b(6) X → e(9) Z → Z X
Mirabelle Nebut Langages et grammaires algébriques
95/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Algorithme de calcul des accessibles
Entrée : une grammaire algébrique G d’axiome SSortie : l’ensemble Accde ses non-terminaux accessibles
// Init
Acc = {S}
Mirabelle Nebut Langages et grammaires algébriques
96/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Algorithme de calcul des accessibles
// Itérationsfaire jqa stabilisation de Acc
New = ∅ // les accessibles découverts// pendant l’itération
pour toute production Y → αXβ, {X ,Y } ⊆ VNtq X 6∈ Acc // X pas encore traité
et Y ∈ Acc // X accessiblefaire New ∪= {X}faitAcc ∪= New
fait
Mirabelle Nebut Langages et grammaires algébriques
97/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
AmbigüıtéGrammaires réduites
Grammaire réduite : attention
Si on souhaite calculer une grammaire réduite :
Il faut supprimer d’abord les improductifs puis les inaccessibles.
Ex : Improductifs de G ′2 : {Z}Si on supprime Z . . . X devient inaccessible !
La grammaire réduite équivalente est donc :(1) S → Y(3) Y → Y a(4) Y → b
Mirabelle Nebut Langages et grammaires algébriques
98/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Limites des langages réguliers
Langages et grammaires algébriques
Arbres syntaxiques
Grammaires � pathologiques �
Les algébriques. . . et les autresComparaison avec les réguliersLimitation des algébriquesLes autres
Mirabelle Nebut Langages et grammaires algébriques
99/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Propriétés de clôture
réguliers ⊂ algébriquesLes algébriques sont plus expressifs que les réguliers. Ils ont doncdes propriétés moins fortes :
clôture par langages réguliers langages algébriques
Union Oui Oui
Concaténation Oui Oui
Etoile Oui Oui
Intersection Oui Non
Complémentaire Oui Non
Mirabelle Nebut Langages et grammaires algébriques
100/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Régulier ? Algébrique ?
Description de déplacements sur h et b.
L1 = {w ∈ {h, b}∗}L2 = {hnbp | n ≥ 0, p ≥ 0}L3 = {hnbp | n ≥ p ≥ 0}L4 = {w ∈ {h, b}∗ | |w |h = |w |b}L5 = {w ∈ {h, b}∗ | w est un palindrome }L6 = {ww | w ∈ {h, b}∗}
Mirabelle Nebut Langages et grammaires algébriques
101/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Limitation des algébriques
L6 = {ww | w ∈ {h, b}∗} n’est pas algébrique.Les grammaires algébriques expriment :
I les propriétés structurelles des langages ;
I mais pas leurs propriétés contextuelles ;
I on les appelle aussi � grammaires hors contexte �.
Par ex, on ne peut pas exprimer par une grammaire algébrique :
I que toute variable utilisée a été déclarée ;
I les vérifications de typage, etc.
Ces propriétés relèvent de l’analyse sémantique.
Mirabelle Nebut Langages et grammaires algébriques
102/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Limitation des algébriques
Étant donné :
I un mot m de (VT ∪ VN)∗ contenant X ∈ VNI une production X → α
la dérivation remplace X par α indépendamment de m, le contextede X .
X
m
Mirabelle Nebut Langages et grammaires algébriques
103/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Ex de propriété structurelle
Toute accolade ouverte est fermée : S → � | aSb
a
S
S
b
a et b sont dans le même arbre issu de S
⇒ propriété indépendante du contexte.
Mirabelle Nebut Langages et grammaires algébriques
104/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Ex de propriété contextuelle
{ww | w ∈ {h, b}∗} : essai. . .
S → S1S2S1 ⇒∗ w1S2 ⇒∗ w2
S
w1 w2
S1 S2
w1 et w2 sont dans deux arbres indépendants :
I on ne peut pas forcer w1 = w2 ;
I propriété dépendante du contexte.
Mirabelle Nebut Langages et grammaires algébriques
105/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Autre exemple
{anbncn | n ≥ 0}
Comment forcer autant de a que de b que de c ?
Impossible avec des dérivations indépendantes les unes des autres.
⇒ {anbncn | n ≥ 0} n’est pas algébrique.
Mirabelle Nebut Langages et grammaires algébriques
106/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Justification théorique : lemme fondamental desalgébriques
Soient u1, u2, v ∈ (VT ∪ VN)∗.Si u1u2 →k v alors il existe v1, v2 ∈ (VT ∪ VN)∗ tels que :
I v = v1v2I u1 →k1 v1 et u2 →k2 v2I k1 + k2 = k .
Ce lemme ou sa généralisation sert dans les preuves, par exemplepour montrer que le langage engendré par S → aSb | � est{anbn | n ≥ 0}.
Mirabelle Nebut Langages et grammaires algébriques
107/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Comment être sensible au contexte ?
En utilisant une grammaire contextuelle.
Productions de la forme : α→ β avec |α| ≤ |β|avec α, β ∈ (VN ∪ VT )∗
Ex : AB → BALes grammaires contextuelles :
I engendrent les langages contextuels ;
I ne sont pas utilisées lors de l’analyse syntaxique ;
I pas d’algorithme polynomial connu qui, pour tout mot,détermine si ce mot est engendré par une grammairecontextuelle donnée.
Mirabelle Nebut Langages et grammaires algébriques
108/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Si on continue à généraliser. . .
Il existe des grammaires arbitraires.
Productions de la forme : α→ βavec α, β ∈ (VN ∪ VT )∗
Ex : AB → �Ces grammaires engendrent l’ensemble de tous les langages.
Mirabelle Nebut Langages et grammaires algébriques
109/112
Limites des langages réguliersLangages et grammaires algébriques
Arbres syntaxiquesGrammaires � pathologiques �
Les algébriques. . . et les autres
Comparaison avec les réguliersLimitation des algébriquesLes autres
Hiérarchie des langages et des grammaires
régulier
algébrique
arbitraire
contextuel
Chaque type de langage est généré par un type de grammaireparticulier. . . y compris les réguliers.
Classification de Chomsky pour les grammaires :
régulière ⊂ algébrique ⊂ contextuelle ⊂ quelconque
Mirabelle Nebut Langages et grammaires algébriques