diff --git a/theoriedeslangagesetcompilation/cours/2.md b/theoriedeslangagesetcompilation/cours/2.md index 04510a5..95f5c38 100644 --- a/theoriedeslangagesetcompilation/cours/2.md +++ b/theoriedeslangagesetcompilation/cours/2.md @@ -1,56 +1,7 @@ Chapitre II - Grammaire ======================= - -### Définitions - -`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 : -> -> * $N$ est l'ensemble des **symboles non terminaux** -> * $T$ est l'ensemble des **symboles terminaux** : caractères de l'alphabet -> * $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** - -`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. -* Pour les règles de $P$, nos règles seront de la forme $X\rightarrow\beta$, avec $X\in N$ et $\beta\in(N\cup T)^*$ -* 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. - - -##### 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$** - - - -### Exemple - +### Exemples ##### Règles de production 1. P $\rightarrow$ SVC @@ -82,6 +33,44 @@ Chapitre II - Grammaire 11. $\rightarrow$ la vieille dame regarde la **petite** N 12. $\rightarrow$ la vieille dame regarde la petite **fille** +### Grammaire + + + + + + +##### Définition + +> 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 : +> +> * $N$ est l'ensemble des **symboles non terminaux** +> * $T$ est l'ensemble des **symboles terminaux** : caractères de l'alphabet +> * $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 + +* Pour les caractères de $N$: on utilisera (habituellement) des majuscules. +* Pour les caractères de $T$: on utilisera (habituellement) des minuscules. +* Pour les règles de $P$, nos règles seront de la forme $X\rightarrow\beta$, avec $X\in N$ et $\beta\in(N\cup T)^*$ +* 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. + + +##### 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$** + + + + + + + ### Dérivation @@ -108,3 +97,94 @@ Chapitre II - Grammaire * $u=v_0$ * $v=v_k$ * $v_i\rightarrow v_{i+1}$ pour $0 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 + +##### Définition +> 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\}$ +> + +##### Exemples + +Grammaire $G_1$ + +- $s\rightarrow aS$ +- $s\rightarrow bS$ +- $s\rightarrow a$ +- $s\rightarrow b$ +- $s\rightarrow \epsilon$ + +Grammaire $G_2$ + +* On veut traduire le langage $\Sigma=\{a, b\}$ ou tous les mots sont de la forme $w=\alpha a a\beta$ +* On va utiliser la grammaire $G_2$ + 1. $S\rightarrow AaaB$ + 2. $A\rightarrow aA|bA|\epsilon$ + 2. $B\rightarrow aB|bB|\epsilon$ +* Pour le mot $w=abbaabb$, $\in L(G2)$ + * S $\rightarrow$ AaaB + * $\rightarrow$ **aA**aaB + * $\rightarrow$ **abA**aaB + * $\rightarrow$ **abbA**aaB + * $\rightarrow$ **abb$\epsilon$**aaB + * $\rightarrow$ abb$\epsilon$aa**bB** + * $\rightarrow$ abb$\epsilon$aa**bb$\epsilon$** + * $abb\epsilon aabb\epsilon=w$ c'est une dérivation la plus à gauche + + + + + + +### Arbre syntaxique + + +##### Définition + +> Soit $G=(N,T,P,S)$. Un **arbre syntaxique** est un arbre dont la racine est l'axiome ($S$), dont les noeuds internes sont étiquetés par des symboles de $N$, et les feuilles sont étiquetées par des symboles de $T$ ou par le mot vide. Chaque noeud interne correspond à une règle de production. + + +##### Exemple + +Soit $G_1$ (sous forme factorisée): les règles de production ont une numérotation implicite : + +> S $\rightarrow$ aS $_{(1)}$ | bS $_{(2)}$ | a $_{(3)})$ | b $_{(4)}$ | $\epsilon$ $_{(5)}$ + +Soit le mot $\omega=abab$, l'arbre syntaxique est donné par: + +* S $\rightarrow$ S +* $\rightarrow$ aS +* $\rightarrow$ abS +* $\rightarrow$ abaS +* $\rightarrow$ ababS $\rightarrow$ abab$\epsilon$ (2)(5) +* `ou` +* $\rightarrow$ abab (4) + + +##### Equivalence - Définition + +> On dit de 2 grammaires $G_1$ et $G_2$ sont équivalentes, notés $G_1\sim G_2$, si elles engendrent le même langage, i.e. si $L(G_1)=L(G_2)$ + +##### Grammaire ambigue - Définition + +> Une grammaire $G$ est dite ambigue s'il existe un mot $\omega$ de $L(G)$ qui admet au moins deux arbres syntaxiques à partir de $S$. diff --git a/theoriedeslangagesetcompilation/cours/compiled/2.html b/theoriedeslangagesetcompilation/cours/compiled/2.html index 1fc68bf..7314783 100644 --- a/theoriedeslangagesetcompilation/cours/compiled/2.html +++ b/theoriedeslangagesetcompilation/cours/compiled/2.html @@ -13,48 +13,7 @@

Chapitre II - Grammaire

-

Définitions

-

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 :

- -
-

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

- -
-
Notations
- -
Remarques
- -

Exemple

+

Exemples

Règles de production
  1. P SVC
  2. @@ -86,6 +45,30 @@
  3. la vieille dame regarde la petite N
  4. la vieille dame regarde la petite fille
+

Grammaire

+
Définition
+
+

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 :

+ +
+
Notations
+ +
Remarques
+

Dérivation

Dérivation du plus à gauche
@@ -113,5 +96,74 @@
  • v = vk
  • vi → vi + 1 pour 0 < i < k
  • +

    Mots générés par une grammaire

    +
    Définition
    +
    +

    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

    +
    Définition
    +
    +

    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}

    +
    +
    Exemples
    +

    Grammaire G1

    + +

    Grammaire G2

    + +

    Arbre syntaxique

    +
    Définition
    +
    +

    Soit G = (N, T, P, S). Un arbre syntaxique est un arbre dont la racine est l'axiome (S), dont les noeuds internes sont étiquetés par des symboles de N, et les feuilles sont étiquetées par des symboles de T ou par le mot vide. Chaque noeud interne correspond à une règle de production.

    +
    +
    Exemple
    +

    Soit G1 (sous forme factorisée): les règles de production ont une numérotation implicite :

    +
    +

    S aS (1) | bS (2) | a (3)) | b (4) | ϵ (5)

    +
    +

    Soit le mot ω = abab, l'arbre syntaxique est donné par:

    + +
    Equivalence - Définition
    +
    +

    On dit de 2 grammaires G1 et G2 sont équivalentes, notés G1 ∼ G2, si elles engendrent le même langage, i.e. si L(G1)=L(G2)

    +
    +
    Grammaire ambigue - Définition
    +
    +

    Une grammaire G est dite ambigue s'il existe un mot ω de L(G) qui admet au moins deux arbres syntaxiques à partir de S.

    +