From bd86db1c1f04637cdf61ac3ca38772a6b08f3dd8 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 27 Jan 2017 16:37:06 +0100 Subject: [PATCH] Update cours theorie des langages et compilation --- theoriedeslangagesetcompilation/cours/2.md | 94 ++++++++++++++----- .../cours/compiled/2.html | 92 ++++++++++++++---- 2 files changed, 145 insertions(+), 41 deletions(-) diff --git a/theoriedeslangagesetcompilation/cours/2.md b/theoriedeslangagesetcompilation/cours/2.md index 0ca5b8b..04510a5 100644 --- a/theoriedeslangagesetcompilation/cours/2.md +++ b/theoriedeslangagesetcompilation/cours/2.md @@ -4,7 +4,7 @@ Chapitre II - Grammaire ### Définitions -**Grammaire** +`Grammaire` > Ensemble de règles permettant de générer des mots du langage sous forme de réécriture (on remplace une séquence par une autre). > @@ -15,7 +15,25 @@ Chapitre II - Grammaire > * $P$ est un ensemble de **règles de production**, de la forme $\alpha\rightarrow\beta$ avec $\alpha\in(N\cup T)^+$ et $\beta\in(N\cup T)^*$ > * $S$ est le symbole de départ appelé **axiome** -##### Notations et remarques +`Mots générés par une grammaire` + +> Soit $G=(N,T,P,S)$. Les mots générés (engendrés) par $G$ sont les mots $v\in T^*$ (symboles terminaux) qui peuvent être dérivés à partir de l'axiome $S:S\rightarrow*_Gv$ + +`Langage généré par une grammaire` + +> On note $L(G)$ le langage généré par $G$ +> +> C'est l'ensemble des mots que l'on peut définir à partir de l'axiome de $G$ en appliquant un nombre finis de fois des règles de $G$. $L(G) = \{v\in T^*,\ S\rightarrow*_Gv\}$ +> +> **Exemple** Grammaire $G1$ +> +> - $s\rightarrow aS$ +> - $s\rightarrow bS$ +> - $s\rightarrow a$ +> - $s\rightarrow b$ +> - $s\rightarrow \epsilon$ + +##### Notations * Pour les caractères de $N$: on utilisera (habituellement) des majuscules. * Pour les caractères de $T$: on utilisera (habituellement) des minuscules. @@ -23,7 +41,11 @@ Chapitre II - Grammaire * L'axiome, noté $S$ (habituellement), est la base de la définition inductive, et c'est la racine de tout arbre de dérivation valide. -**Remarque:** Souvent on décrit une grammaire seulement par les règles. +##### Remarques + +* Souvent on décrit une grammaire seulement par les règles. + +* On peut avoir des règles de production dont la partie de droite est réduite à $\epsilon$ ; on appelera ces règles des **$\epsilon-productions$** @@ -31,12 +53,15 @@ Chapitre II - Grammaire ##### Règles de production -1. $P \rightarrow SVC$ -2. $S \rightarrow G$ -3. $C \rightarrow G$ -4. $G \rightarrow AN$ -5. $G \rightarrow ADN$ - +1. P $\rightarrow$ SVC +2. S $\rightarrow$ G +3. C $\rightarrow$ G +4. G $\rightarrow$ AN +5. G $\rightarrow$ ADN +6. N $\rightarrow$ fille | dame +7. A $\rightarrow$ la +8. D $\rightarrow$ vieille | petite +9. V $\rightarrow$ regarde ##### Dérivation d'une phrase (recherche de chemin) @@ -44,15 +69,42 @@ Chapitre II - Grammaire **Etapes de dérivation:** -1. P $\rightarrow$ SG -2. $\rightarrow$ GVS -3. $\rightarrow$ ADNVC -4. $\rightarrow$ la DNVC -5. $\rightarrow$ la vieille NVC -6. $\rightarrow$ la vieille dame VC -7. $\rightarrow$ la vieille dame regarde C -8. $\rightarrow$ la vieille dame regarde G -9. $\rightarrow$ la vieille dame regarde ADN -10. $\rightarrow$ la vieille dame regarde la DN -11. $\rightarrow$ la vieille dame regarde la petite N -12. $\rightarrow$ la vieille dame regarde la petite fille +1. P $\rightarrow$ **SVC** +2. $\rightarrow$ **G**VC +3. $\rightarrow$ **ADN**VC +4. $\rightarrow$ **la** DNVC +5. $\rightarrow$ la **vieille** NVC +6. $\rightarrow$ la vieille **dame** VC +7. $\rightarrow$ la vieille dame **regarde** C +8. $\rightarrow$ la vieille dame regarde **G** +9. $\rightarrow$ la vieille dame regarde **ADN** +10. $\rightarrow$ la vieille dame regarde **la** DN +11. $\rightarrow$ la vieille dame regarde la **petite** N +12. $\rightarrow$ la vieille dame regarde la petite **fille** + + +### Dérivation + +##### Dérivation du plus à gauche + +> Une suite de dérivations obtenues en choisissant à chaque étape le symbole non terminal le plus à gauche. + +##### Dérivation du plus à droite + +> Une suite de dérivations obtenues en choisissant à chaque étape le symbole non terminal le plus à droite. + +##### Dérivation en 1 étape + +> Soit $G=(N,T,P,S)$ une grammaire. $G$ permet de **dériver** $v$ de $u$ **en une étape**, notée $u\rightarrow _Gv$, si et seulement si: + +* $u=xu'v$ +* $v=xv'v$ +* $u'=v'$ est dans $P$ + +##### Dérivation en plusieurs étapes + +> Soit $G=(N,T,P,S)$ une grammaire. $G$ permet de **dériver** $v$ de $u$ **en plusieurs étapes**, noté $u\rightarrow *_Gv$ si et seulement si il existe $k$ et $v_0,...,v_k$ tels que : + +* $u=v_0$ +* $v=v_k$ +* $v_i\rightarrow v_{i+1}$ pour $0

Chapitre II - Grammaire

Définitions

-

Grammaire

+

Grammaire

Ensemble de règles permettant de générer des mots du langage sous forme de réécriture (on remplace une séquence par une autre).

Une grammaire est un quadruplet G = (N, T, P, S) ou :

@@ -25,22 +25,47 @@
  • S est le symbole de départ appelé axiome
  • -
    Notations et remarques
    +

    Mots générés par une grammaire

    +
    +

    Soit G = (N, T, P, S). Les mots générés (engendrés) par G sont les mots v ∈ T* (symboles terminaux) qui peuvent être dérivés à partir de l'axiome S : S → *Gv

    +
    +

    Langage généré par une grammaire

    +
    +

    On note L(G) le langage généré par G

    +

    C'est l'ensemble des mots que l'on peut définir à partir de l'axiome de G en appliquant un nombre finis de fois des règles de G. L(G)={v ∈ T*,  S → *Gv}

    +

    Exemple Grammaire G1

    +
      +
    • s → aS
    • +
    • s → bS
    • +
    • s → a
    • +
    • s → b
    • +
    • s → ϵ
    • +
    +
    +
    Notations
    -

    Remarque: Souvent on décrit une grammaire seulement par les règles.

    +
    Remarques
    +

    Exemple

    Règles de production
      -
    1. P → SVC
    2. -
    3. S → G
    4. -
    5. C → G
    6. -
    7. G → AN
    8. -
    9. G → ADN
    10. +
    11. P SVC
    12. +
    13. S G
    14. +
    15. C G
    16. +
    17. G AN
    18. +
    19. G ADN
    20. +
    21. N fille | dame
    22. +
    23. A la
    24. +
    25. D vieille | petite
    26. +
    27. V regarde
    Dérivation d'une phrase (recherche de chemin)
    @@ -48,18 +73,45 @@

    Etapes de dérivation:

      -
    1. P SG
    2. -
    3. GVS
    4. -
    5. ADNVC
    6. -
    7. la DNVC
    8. -
    9. la vieille NVC
    10. -
    11. la vieille dame VC
    12. -
    13. la vieille dame regarde C
    14. -
    15. la vieille dame regarde G
    16. -
    17. la vieille dame regarde ADN
    18. -
    19. la vieille dame regarde la DN
    20. -
    21. la vieille dame regarde la petite N
    22. -
    23. la vieille dame regarde la petite fille
    24. +
    25. P SVC
    26. +
    27. GVC
    28. +
    29. ADNVC
    30. +
    31. la DNVC
    32. +
    33. la vieille NVC
    34. +
    35. la vieille dame VC
    36. +
    37. la vieille dame regarde C
    38. +
    39. la vieille dame regarde G
    40. +
    41. la vieille dame regarde ADN
    42. +
    43. la vieille dame regarde la DN
    44. +
    45. la vieille dame regarde la petite N
    46. +
    47. la vieille dame regarde la petite fille
    +

    Dérivation

    +
    Dérivation du plus à gauche
    +
    +

    Une suite de dérivations obtenues en choisissant à chaque étape le symbole non terminal le plus à gauche.

    +
    +
    Dérivation du plus à droite
    +
    +

    Une suite de dérivations obtenues en choisissant à chaque étape le symbole non terminal le plus à droite.

    +
    +
    Dérivation en 1 étape
    +
    +

    Soit G = (N, T, P, S) une grammaire. G permet de dériver v de u en une étape, notée uGv, si et seulement si:

    +
    + +
    Dérivation en plusieurs étapes
    +
    +

    Soit G = (N, T, P, S) une grammaire. G permet de dériver v de u en plusieurs étapes, noté u → *Gv si et seulement si il existe k et v0, ..., vk tels que :

    +
    +