De même que les expressions rationnelles permettent d'atteindre la classe des langages rationnels (ou réguliers), différents types de grammaires permettent d'atteindre différentes classes de langages. La classification de N. Chomsky [Chomsky 56] se fonde sur des contraintes concernant la forme des règles de dérivation. Selon l'ordre croissant des contraintes, nous avons la classification suivante :
Par exemple, une grammaire avec comme règles S → 0S | 1S | ε est linéaire droite. Dans la section précédente, G0 et G4 sont de type 0, G1 est xde type 1, G2 est de type 2 et G3 est de type 3.
Les définitions rationnelles peuvent être considérées comme des grammaires hors-contexte particulières (si d1 est l'axiome et si ∀ i, i>1, di n'engendre pas ε).
La classification de Chomsky introduit quatre classes de langage engendrées par les quatre types de grammaire. Ces classes de langage satisfont la relation d'inclusion stricte suivante :
cl3 ⊂ cl2 ⊂ cl1 ⊂ cl0
Cette relation exprime entre autres que tout langage linéaire est hors-contexte et qu'il existe des langages hors-contextes qui ne sont pas linéaires. On a le même type de relation entre les autres classes de langages. Les langages hors-contextes et linéaires sont les plus courants en informatique, en particulier dans le cadre des langages de programmation; les algorithmes de traitement pour ces deux classes sont les plus efficaces et les plus simples. Dans le cadre de ce cours, nous étudierons plus particulièrement le traitement des langages linéaires (en particulier à l'aide des automates finis). Cependant nous présentons avant quelques outils utiles sur les grammaires hors contexte (habituellement traité à l'aide des automates à pile).
Exercices et tests :
Exercice 4.1. Pour chacune
des grammaires suivantes, donner leur type.
Gex1 = ({a,b,c}, {S}, S, {S → aSbSa | c})
Gex2 = ({a,b,ch,d}, {S,A,B,C}, S, {S → BCaCbbA ; A → CaCbb | ε ; Ca → ba ; Cbb → da ; B → cha})
Gex3 = ({a,b}, {S,A}, S, {S → Aa | bA ; A → Sa | bS})
Exercice 4.2. Pour chacune des grammaires suivantes, donner le langage engendré et préciser le type de la grammaire :
Gex4 = ({a,b}, {S,A,B}, S, {S → aAB ; B → SA ; Aa → Sab ; bB → a ; Ab → SBb})
Gex5 = ({/,\}, {S, U, V}, S, {S → UAV | UV ; A → VSU | VU ; U → / ; V → \})
E. Desmontils (IUP-MIAGe de Nantes) Last modified: Thu Jan 27 11:34:57 CET 2005