Grammaires
Un automate fini est une description analytique d'un langage régulier : c'est un algorithme pour reconnaître les mots du langage. Les grammaires donnent une description générative d'un langage : elles explicitent des règles de construction des mots du langage. Nous connaissans déjà la notion de grammaires en lagage naturel. Par exemple, en français, une phrase déclarative à la forme : "sujet" + "verbe" + "complément". La grammaire a pour rôle de fixer la structure des phrases. En informatique, les grammaires sont couramment utilisées pour définir la syntaxe des langages de programmation et pour construire les compilateurs.
Grammaire, dérivation, langage
Une ̀grammaire` est un quadruplet où :
- et sont deux alphabets disjoints. Les symboles de sont dits non-terminaux, ceux de sont dits terminaux.
- est un ensemble fini de règles telles que contient au moins un symbôle non-terminal
- est le symbole non terminal initial
Les symboles non terminaux (ie symboles de ) sont usuellement notés par des lettres majuscules alors que les symboles terminaux (ie les symboles de ) sont représentés par des lettres minuscules . L'ensemble définit les règles de substitution. Une règle sera souvent représentée sous la forme . Elle signifie que peut être substitué à . Le symbole non terminal initial est généralement noté . Lorsqu'une grammaire comporte plusieurs règles avec le même membre gauche, par exemple : et , on écrit souvent : pour simplifier.
Une grammaire dérive à partie de , noté , s'il est possible de décomposer et est une règle de .
La langage généré par une grammaire est l'ensemble des mots dérivés depuis le symbôle initial qui ne contiennent que des symboles terminaux.
Grammaire régulières et langage réguliers
Dans cette section, on étudie les grammaires qui génèrent les langages réguliers.
Une grammaire est linéaire droite si toutes les règles de ont la forme ou