Introduction aux grammaires
Introduction aux grammaires
Programming, Math, etc. · course
Voir tous les documents en langues et communication
Fiche de révisionFiche de cours
Rédigée à partir de ce document, puis vérifiée avant publication.
Ce matériel couvre les notions fondamentales des grammaires formelles, leur classification selon la hiérarchie de Chomsky, ainsi que des exemples et exercices pour mieux comprendre leur fonctionnement. Il s'adresse aux étudiants en informatique, linguistique formelle ou mathématiques intéressés par la théorie des langages formels.
Une grammaire est un quadruplet G = (V, T, P, S) où :
Exemple :
Soit la grammaire G avec :
S → aSbS
S → bSaS
S → e
Le symbole S est la seule variable et aussi le symbole de départ.
Pour le mot abeaebe, l'arbre de dérivation selon G est :
S
├─ a
├─ S
├─ b
├─ a
├─ b
├─ S
├─ e
├─ S
├─ e
├─ S
├─ e
La dérivation à gauche est :
S → aSbS → abSaSbS → abeaSbS → abeaebS → abeaebe
On conclut que abeaebe appartient au langage L(G).
La hiérarchie de Chomsky classe les grammaires en quatre types selon les restrictions sur leurs règles :
Grammaire context-free G' :
1. S → aSb
2. S → ε
Grammaire context-sensitive G :
1. S → ABS
2. BA → AB
3. BS → b
4. Bb → bb
5. Ab → ab
6. Aa → aa
Les langages générés par G et G' sont identiques : L(G) = L(G') = {a^n b^n}. Bien que G soit context-sensitive, le langage est context-free.
Décrivez en français les langages générés par les grammaires suivantes, et donnez leur type :
S → abcA | Aabc
A → ε
Aa → Sa
cA → cS
S → 0 | 1 | 1S
S → a | *SS | +SS
Soit la grammaire G :
S → AB
A → Aa | bB
B → a | Sb
Questions :
baabaab, bBABb et baSb.baabaab.Cette grammaire est context-free mais pas régulière. En effet, une grammaire régulière ne peut pas avoir à la fois des règles de la forme A → αB et A → Bβ.
S
├─ A
│ ├─ b
│ └─ B
│ └─ ...
└─ B
└─ ...
Les arbres pour bBABb et baSb suivent une structure similaire avec des expansions selon les règles.
baabaab :S → AB → AaB → bBaB → baaB → baaSb → baaABb → baabBBb → baabaBb → baabaab
baabaab :S → AB → ASb → AABb → AAab → AbBab → Abaab → Aabaab → bBabaab → baabaab
Écrivez une grammaire context-free générant toutes les chaînes de a et b telles qu'il y a plus de a que de b. Testez-la sur baaba en donnant une dérivation.
Écrivez une grammaire context-sensitive générant toutes les chaînes de a, b et c ayant le même nombre de a, b et c, quel que soit l'ordre. Donnez la dérivation de cacbab.
Grammaire context-sensitive :
S → ABCS | ε
AB → BA
AC → CA
BA → AB
BC → CB
CA → AC
CB → BC
A → a
B → b
C → c
Dérivation de cacbab :
S → ABCS → ABCABCS → ABCABC → ACBABC → CABABC → CABACB → CABCAB → CACBAB → cACBAB → caCBAB → cacBAB → cacbAB → cacbaB → cacbab
1. Écrivez une grammaire context-free pour les langages 0^i 1^n 2^n et 0^n 1^n 2^i, avec n,i > 0.
2. Montrez que l'intersection de deux langages context-free n'est pas nécessairement context-free.
S → AB
A → 0A | 0
A → 0A1 | 01
B → 1B2 | 12
B → 2B | 2
Les langages :
Exemple avec L1 = ∅ et L2 = {0^n 1^n | n > 0}, leur intersection est ∅ qui est context-free.