avant d'ecouter ce cours - fil lille 1nebut/portail/compils5/...langages algeb riques, comparaison...

14
Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres Langages et grammaires alg´ ebriques Mirabelle Nebut Bureau 332 - M3 mirabelle.nebut at lifl.fr 2012-2013 Mirabelle Nebut Langages et grammaires alg´ ebriques 2/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres Avant d’´ ecouter ce cours. . . Il faut avoir lu le r´ esum´ e associ´ e. Mirabelle Nebut Langages et grammaires alg´ ebriques 3/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres But de ce cours outils pour l’analyse lexicale outils pour l’analyse syntaxique type de langage langage egulier langage alg´ ebrique description expressions eguli` eres grammaires alg´ ebriques formalisme sous-jacent AF(N)D automates ` a pile Mirabelle Nebut Langages et grammaires alg´ ebriques 4/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres Langages et grammaires alg´ ebriques Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres Mirabelle Nebut Langages et grammaires alg´ ebriques 5/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres Principes de l’analyse syntaxique re¸coit de l’analyseur lexical une suite de symboles; reconnaˆ ı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´ ebriques 6/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres ecrire/reconnaˆ ıtre la structure d’un texte Les langages r´ eguliers / expressions r´ eguli` eres ne suffisent pas. exemple archi-typique : {a n b n |n 0} parenth´ esage imbriqu´ e pour le reconnaˆ ıtre : compter/m´ emoriser le nombre de a ; compter /m´ emoriser le nombre de b. pas r´ egulier. Mirabelle Nebut Langages et grammaires alg´ ebriques 7/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres a n b n pas r´ egulier, argument intuitif - 1 Dans un AF(fini)D: ´ etats = emoire (finie) Ex langages r´ eguliers finis : {a n b n |n 3} ; {a n b n |n 9045} ; {a n b n |n k } pour k fix´ e; ... AFD Ex langage r´ egulier infini : a * a Mirabelle Nebut Langages et grammaires alg´ ebriques 8/112 Limites des langages r´ eguliers Langages et grammaires alg´ ebriques Arbres syntaxiques Grammaires pathologiques Les alg´ ebriques. . . et les autres a n b n pas r´ egulier, argument intuitif - 2 {a n b n | n 0} AFD mémoire finie il suffit de prendre n plus grand que la taille de la m´ emoire. Mirabelle Nebut Langages et grammaires alg´ ebriques

Upload: others

Post on 29-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 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