fin theorie 27/01

This commit is contained in:
xdrm-brackets 2017-01-27 17:10:48 +01:00
parent bd86db1c1f
commit b110ff9594
2 changed files with 224 additions and 92 deletions

View File

@ -1,56 +1,7 @@
Chapitre II - Grammaire Chapitre II - Grammaire
======================= =======================
### Exemples
### 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
##### Règles de production ##### Règles de production
1. P $\rightarrow$ SVC 1. P $\rightarrow$ SVC
@ -82,6 +33,44 @@ Chapitre II - Grammaire
11. $\rightarrow$ la vieille dame regarde la **petite** N 11. $\rightarrow$ la vieille dame regarde la **petite** N
12. $\rightarrow$ la vieille dame regarde la petite **fille** 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 ### Dérivation
@ -108,3 +97,94 @@ Chapitre II - Grammaire
* $u=v_0$ * $u=v_0$
* $v=v_k$ * $v=v_k$
* $v_i\rightarrow v_{i+1}$ pour $0<i<k$ * $v_i\rightarrow v_{i+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\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$.

View File

@ -13,48 +13,7 @@
</head> </head>
<body> <body>
<h1 id="chapitre-ii---grammaire">Chapitre II - Grammaire</h1> <h1 id="chapitre-ii---grammaire">Chapitre II - Grammaire</h1>
<h3 id="définitions">Définitions</h3> <h3 id="exemples">Exemples</h3>
<p><code>Grammaire</code></p>
<blockquote>
<p>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).</p>
<p>Une grammaire est un quadruplet <span class="math inline"><em>G</em>=(<em>N</em>,<em>T</em>,<em>P</em>,<em>S</em>)</span> ou :</p>
<ul>
<li><span class="math inline"><em>N</em></span> est l'ensemble des <strong>symboles non terminaux</strong></li>
<li><span class="math inline"><em>T</em></span> est l'ensemble des <strong>symboles terminaux</strong> : caractères de l'alphabet</li>
<li><span class="math inline"><em>P</em></span> est un ensemble de <strong>règles de production</strong>, de la forme <span class="math inline"><em>α</em> → <em>β</em></span> avec <span class="math inline"><em>α</em> ∈ (<em>N</em><em>T</em>)<sup>+</sup></span> et <span class="math inline"><em>β</em> ∈ (<em>N</em><em>T</em>)<sup>*</sup></span></li>
<li><span class="math inline"><em>S</em></span> est le symbole de départ appelé <strong>axiome</strong></li>
</ul>
</blockquote>
<p><code>Mots générés par une grammaire</code></p>
<blockquote>
<p>Soit <span class="math inline"><em>G</em>=(<em>N</em>,<em>T</em>,<em>P</em>,<em>S</em>)</span>. Les mots générés (engendrés) par <span class="math inline"><em>G</em></span> sont les mots <span class="math inline"><em>v</em> ∈ <em>T</em><sup>*</sup></span> (symboles terminaux) qui peuvent être dérivés à partir de l'axiome <span class="math inline"><em>S</em>:<em>S</em> → *<sub><em>G</em></sub><em>v</em></span></p>
</blockquote>
<p><code>Langage généré par une grammaire</code></p>
<blockquote>
<p>On note <span class="math inline"><em>L</em>(<em>G</em>)</span> le langage généré par <span class="math inline"><em>G</em></span></p>
<p>C'est l'ensemble des mots que l'on peut définir à partir de l'axiome de <span class="math inline"><em>G</em></span> en appliquant un nombre finis de fois des règles de <span class="math inline"><em>G</em></span>. <span class="math inline"><em>L</em>(<em>G</em>)={<em>v</em> ∈ <em>T</em><sup>*</sup>, <em>S</em> → *<sub><em>G</em></sub><em>v</em>}</span></p>
<p><strong>Exemple</strong> Grammaire <span class="math inline"><em>G</em>1</span></p>
<ul>
<li><span class="math inline"><em>s</em> → <em>a</em><em>S</em></span></li>
<li><span class="math inline"><em>s</em> → <em>b</em><em>S</em></span></li>
<li><span class="math inline"><em>s</em> → <em>a</em></span></li>
<li><span class="math inline"><em>s</em> → <em>b</em></span></li>
<li><span class="math inline"><em>s</em> → <em>ϵ</em></span></li>
</ul>
</blockquote>
<h5 id="notations">Notations</h5>
<ul>
<li>Pour les caractères de <span class="math inline"><em>N</em></span>: on utilisera (habituellement) des majuscules.</li>
<li>Pour les caractères de <span class="math inline"><em>T</em></span>: on utilisera (habituellement) des minuscules.</li>
<li>Pour les règles de <span class="math inline"><em>P</em></span>, nos règles seront de la forme <span class="math inline"><em>X</em> → <em>β</em></span>, avec <span class="math inline"><em>X</em> ∈ <em>N</em></span> et <span class="math inline"><em>β</em> ∈ (<em>N</em><em>T</em>)<sup>*</sup></span></li>
<li>L'axiome, noté <span class="math inline"><em>S</em></span> (habituellement), est la base de la définition inductive, et c'est la racine de tout arbre de dérivation valide.</li>
</ul>
<h5 id="remarques">Remarques</h5>
<ul>
<li><p>Souvent on décrit une grammaire seulement par les règles.</p></li>
<li><p>On peut avoir des règles de production dont la partie de droite est réduite à <span class="math inline"><em>ϵ</em></span> ; on appelera ces règles des <strong><span class="math inline"><em>ϵ</em><em>p</em><em>r</em><em>o</em><em>d</em><em>u</em><em>c</em><em>t</em><em>i</em><em>o</em><em>n</em><em>s</em></span></strong></p></li>
</ul>
<h3 id="exemple">Exemple</h3>
<h5 id="règles-de-production">Règles de production</h5> <h5 id="règles-de-production">Règles de production</h5>
<ol type="1"> <ol type="1">
<li>P <span class="math inline"></span> SVC</li> <li>P <span class="math inline"></span> SVC</li>
@ -86,6 +45,30 @@
<li><span class="math inline"></span> la vieille dame regarde la <strong>petite</strong> N</li> <li><span class="math inline"></span> la vieille dame regarde la <strong>petite</strong> N</li>
<li><span class="math inline"></span> la vieille dame regarde la petite <strong>fille</strong></li> <li><span class="math inline"></span> la vieille dame regarde la petite <strong>fille</strong></li>
</ol> </ol>
<h3 id="grammaire">Grammaire</h3>
<h5 id="définition">Définition</h5>
<blockquote>
<p>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).</p>
<p>Une grammaire est un quadruplet <span class="math inline"><em>G</em>=(<em>N</em>,<em>T</em>,<em>P</em>,<em>S</em>)</span> ou :</p>
<ul>
<li><span class="math inline"><em>N</em></span> est l'ensemble des <strong>symboles non terminaux</strong></li>
<li><span class="math inline"><em>T</em></span> est l'ensemble des <strong>symboles terminaux</strong> : caractères de l'alphabet</li>
<li><span class="math inline"><em>P</em></span> est un ensemble de <strong>règles de production</strong>, de la forme <span class="math inline"><em>α</em> → <em>β</em></span> avec <span class="math inline"><em>α</em> ∈ (<em>N</em><em>T</em>)<sup>+</sup></span> et <span class="math inline"><em>β</em> ∈ (<em>N</em><em>T</em>)<sup>*</sup></span></li>
<li><span class="math inline"><em>S</em></span> est le symbole de départ appelé <strong>axiome</strong>&gt;</li>
</ul>
</blockquote>
<h5 id="notations">Notations</h5>
<ul>
<li>Pour les caractères de <span class="math inline"><em>N</em></span>: on utilisera (habituellement) des majuscules.</li>
<li>Pour les caractères de <span class="math inline"><em>T</em></span>: on utilisera (habituellement) des minuscules.</li>
<li>Pour les règles de <span class="math inline"><em>P</em></span>, nos règles seront de la forme <span class="math inline"><em>X</em> → <em>β</em></span>, avec <span class="math inline"><em>X</em> ∈ <em>N</em></span> et <span class="math inline"><em>β</em> ∈ (<em>N</em><em>T</em>)<sup>*</sup></span></li>
<li>L'axiome, noté <span class="math inline"><em>S</em></span> (habituellement), est la base de la définition inductive, et c'est la racine de tout arbre de dérivation valide.</li>
</ul>
<h5 id="remarques">Remarques</h5>
<ul>
<li><p>Souvent on décrit une grammaire seulement par les règles.</p></li>
<li><p>On peut avoir des règles de production dont la partie de droite est réduite à <span class="math inline"><em>ϵ</em></span> ; on appelera ces règles des <strong><span class="math inline"><em>ϵ</em><em>p</em><em>r</em><em>o</em><em>d</em><em>u</em><em>c</em><em>t</em><em>i</em><em>o</em><em>n</em><em>s</em></span></strong></p></li>
</ul>
<h3 id="dérivation">Dérivation</h3> <h3 id="dérivation">Dérivation</h3>
<h5 id="dérivation-du-plus-à-gauche">Dérivation du plus à gauche</h5> <h5 id="dérivation-du-plus-à-gauche">Dérivation du plus à gauche</h5>
<blockquote> <blockquote>
@ -113,5 +96,74 @@
<li><span class="math inline"><em>v</em>=<em>v</em><sub><em>k</em></sub></span></li> <li><span class="math inline"><em>v</em>=<em>v</em><sub><em>k</em></sub></span></li>
<li><span class="math inline"><em>v</em><sub><em>i</em></sub> → <em>v</em><sub><em>i</em>+1</sub></span> pour <span class="math inline">0&lt;<em>i</em>&lt;<em>k</em></span></li> <li><span class="math inline"><em>v</em><sub><em>i</em></sub> → <em>v</em><sub><em>i</em>+1</sub></span> pour <span class="math inline">0&lt;<em>i</em>&lt;<em>k</em></span></li>
</ul> </ul>
<h3 id="mots-générés-par-une-grammaire">Mots générés par une grammaire</h3>
<h5 id="définition-1">Définition</h5>
<blockquote>
<p>Soit <span class="math inline"><em>G</em>=(<em>N</em>,<em>T</em>,<em>P</em>,<em>S</em>)</span>. Les mots générés (engendrés) par <span class="math inline"><em>G</em></span> sont les mots <span class="math inline"><em>v</em> ∈ <em>T</em><sup>*</sup></span> (symboles terminaux) qui peuvent être dérivés à partir de l'axiome <span class="math inline"><em>S</em>:<em>S</em> → *<sub><em>G</em></sub><em>v</em></span></p>
</blockquote>
<h3 id="langage-généré-par-une-grammaire">Langage généré par une grammaire</h3>
<h5 id="définition-2">Définition</h5>
<blockquote>
<p>On note <span class="math inline"><em>L</em>(<em>G</em>)</span> le langage généré par <span class="math inline"><em>G</em></span></p>
<p>C'est l'ensemble des mots que l'on peut définir à partir de l'axiome de <span class="math inline"><em>G</em></span> en appliquant un nombre finis de fois des règles de <span class="math inline"><em>G</em></span>. <span class="math inline"><em>L</em>(<em>G</em>)={<em>v</em> ∈ <em>T</em><sup>*</sup>, <em>S</em> → *<sub><em>G</em></sub><em>v</em>}</span></p>
</blockquote>
<h5 id="exemples-1">Exemples</h5>
<p>Grammaire <span class="math inline"><em>G</em><sub>1</sub></span></p>
<ul>
<li><span class="math inline"><em>s</em> → <em>a</em><em>S</em></span></li>
<li><span class="math inline"><em>s</em> → <em>b</em><em>S</em></span></li>
<li><span class="math inline"><em>s</em> → <em>a</em></span></li>
<li><span class="math inline"><em>s</em> → <em>b</em></span></li>
<li><span class="math inline"><em>s</em> → <em>ϵ</em></span></li>
</ul>
<p>Grammaire <span class="math inline"><em>G</em><sub>2</sub></span></p>
<ul>
<li>On veut traduire le langage <span class="math inline"><em>Σ</em>={<em>a</em>,<em>b</em>}</span> ou tous les mots sont de la forme <span class="math inline"><em>w</em>=<em>α</em><em>a</em><em>a</em><em>β</em></span></li>
<li>On va utiliser la grammaire <span class="math inline"><em>G</em><sub>2</sub></span>
<ol type="1">
<li><span class="math inline"><em>S</em> → <em>A</em><em>a</em><em>a</em><em>B</em></span></li>
<li><span class="math inline"><em>A</em> → <em>a</em><em>A</em>|<em>b</em><em>A</em>|<em>ϵ</em></span></li>
<li><span class="math inline"><em>B</em> → <em>a</em><em>B</em>|<em>b</em><em>B</em>|<em>ϵ</em></span></li>
</ol></li>
<li>Pour le mot <span class="math inline"><em>w</em>=<em>a</em><em>b</em><em>b</em><em>a</em><em>a</em><em>b</em><em>b</em></span>, <span class="math inline"><em>L</em>(<em>G</em>2)</span>
<ul>
<li>S <span class="math inline"></span> AaaB</li>
<li><span class="math inline"></span> <strong>aA</strong>aaB</li>
<li><span class="math inline"></span> <strong>abA</strong>aaB</li>
<li><span class="math inline"></span> <strong>abbA</strong>aaB</li>
<li><span class="math inline"></span> <strong>abb<span class="math inline"><em>ϵ</em></span></strong>aaB</li>
<li><span class="math inline"></span> abb<span class="math inline"><em>ϵ</em></span>aa<strong>bB</strong></li>
<li><span class="math inline"></span> abb<span class="math inline"><em>ϵ</em></span>aa<strong>bb<span class="math inline"><em>ϵ</em></span></strong></li>
<li><span class="math inline"><em>a</em><em>b</em><em>b</em><em>ϵ</em><em>a</em><em>a</em><em>b</em><em>b</em><em>ϵ</em>=<em>w</em></span> c'est une dérivation la plus à gauche</li>
</ul></li>
</ul>
<h3 id="arbre-syntaxique">Arbre syntaxique</h3>
<h5 id="définition-3">Définition</h5>
<blockquote>
<p>Soit <span class="math inline"><em>G</em>=(<em>N</em>,<em>T</em>,<em>P</em>,<em>S</em>)</span>. Un <strong>arbre syntaxique</strong> est un arbre dont la racine est l'axiome (<span class="math inline"><em>S</em></span>), dont les noeuds internes sont étiquetés par des symboles de <span class="math inline"><em>N</em></span>, et les feuilles sont étiquetées par des symboles de <span class="math inline"><em>T</em></span> ou par le mot vide. Chaque noeud interne correspond à une règle de production.</p>
</blockquote>
<h5 id="exemple">Exemple</h5>
<p>Soit <span class="math inline"><em>G</em><sub>1</sub></span> (sous forme factorisée): les règles de production ont une numérotation implicite :</p>
<blockquote>
<p>S <span class="math inline"></span> aS <span class="math inline"><em></em><sub>(1)</sub></span> | bS <span class="math inline"><em></em><sub>(2)</sub></span> | a <span class="math inline"><em></em><sub>(3)</sub>)</span> | b <span class="math inline"><em></em><sub>(4)</sub></span> | <span class="math inline"><em>ϵ</em></span> <span class="math inline"><em></em><sub>(5)</sub></span></p>
</blockquote>
<p>Soit le mot <span class="math inline"><em>ω</em>=<em>a</em><em>b</em><em>a</em><em>b</em></span>, l'arbre syntaxique est donné par:</p>
<ul>
<li>S <span class="math inline"></span> S</li>
<li><span class="math inline"></span> aS</li>
<li><span class="math inline"></span> abS</li>
<li><span class="math inline"></span> abaS</li>
<li><span class="math inline"></span> ababS <span class="math inline"></span> abab<span class="math inline"><em>ϵ</em></span> (2)(5)</li>
<li><code>ou</code></li>
<li><span class="math inline"></span> abab (4)</li>
</ul>
<h5 id="equivalence---définition">Equivalence - Définition</h5>
<blockquote>
<p>On dit de 2 grammaires <span class="math inline"><em>G</em><sub>1</sub></span> et <span class="math inline"><em>G</em><sub>2</sub></span> sont équivalentes, notés <span class="math inline"><em>G</em><sub>1</sub><em>G</em><sub>2</sub></span>, si elles engendrent le même langage, i.e. si <span class="math inline"><em>L</em>(<em>G</em><sub>1</sub>)=<em>L</em>(<em>G</em><sub>2</sub>)</span></p>
</blockquote>
<h5 id="grammaire-ambigue---définition">Grammaire ambigue - Définition</h5>
<blockquote>
<p>Une grammaire <span class="math inline"><em>G</em></span> est dite ambigue s'il existe un mot <span class="math inline"><em>ω</em></span> de <span class="math inline"><em>L</em>(<em>G</em>)</span> qui admet au moins deux arbres syntaxiques à partir de <span class="math inline"><em>S</em></span>.</p>
</blockquote>
</body> </body>
</html> </html>