Unlangage formel, enmathématiques, eninformatique et enlinguistique, est un ensemble demots[1]. L'alphabet d'un langage formel est l'ensemble des symboles, lettres oulexèmes qui servent à construire les mots du langage ; souvent, on suppose que cet alphabet est fini. Lathéorie des langages formels a pour objectif de décrire les langages formels.
Les mots sont des suites d'éléments de cet alphabet ; les mots qui appartiennent à un langage formel particulier sont parfois appelés mots bien formés ouformules bien formées. Un langage formel est souvent défini par unegrammaire formelle, telle que lesgrammaires algébriques et analysé par desautomates.
La théorie des langages formels étudie les aspects purementsyntaxiques de tels langages, c'est-à-dire leur structure interne formelle. La théorie des langues est issue de lalinguistique, comme moyen de comprendre les régularités syntaxiques delangues naturelles :
En informatique, les langages formels sont souvent utilisés comme base pour la définition deslangages de programmation et d'autres systèmes ; les mots d'un langage comportent alors aussi un sens, unesémantique.
L'étude des langages formels comporte l'ensemble des moyens de description et d'analyse de ces langages, comme lesgrammaires formelles pour la génération et lesautomates pour la reconnaissance, mais elle s'intéresse aussi à l'apprentissage automatique et latraduction automatique des langages. Dans le domaine de la traduction, la théorie des langages s'applique auxcompilateurs de langages de programmation.
Cette loi de composition interne est associative et admet le mot vide pour élément neutre (ce qui justifie la notation). Par conséquent l'ensemble, muni de cette loi, est unmonoïde. C'est unmonoïde libre au sens de l'algèbre.
Unlangage formel est un ensemble de mots sur un alphabet fini, c'est-à-dire une partie dumonoïde libre sur cet alphabet.
Un langage formel peut être spécifié par différents moyens. Ce qui est recherché, c'est une méthode ou un mécanisme fini, et explicite, qui permet de produire ou d'analyser un langage en général infini. Parmi ces méthodes, il y a :
lesgrammaires formelles. Les mots sont produits par des règles, en nombre fini, qui s'appliquent dans des conditions précises. On obtient une classification de langages appeléehiérarchie de Chomsky ;
lesexpressions rationnelles. Les mots sont décrits selon un symbolisme qui permet de décrire des successions, des répétitions, des alternatives. C'est un moyen très répandu pour la recherche de mots dans des textes ;
Les langages sont regroupés en familles de langages. La Hiérarchie de Chomsky nous donne quatre types de grammaire, chaque type de grammaire générant une famille de langage.
Entre ces 4 familles de langages, on peut noter des familles qui ne font pas partie de la hiérarchie de Chomsky, mais qui restent remarquables par leurs définitions et leurs propriétés.
Leslangages récursifs sont les langages reconnus par une machine de Turing, et dont le complémentaire est aussi reconnu par une machine de Turing. Ils sont donc strictement inclus dans leslangages récursivement énumérables.
Plusieurs opérations peuvent être utilisées pour fabriquer de nouveaux langages à partir de langages donnés. Supposons queL etM soient des langages sur un certain alphabet commun.
Lequotient à gauche de par un mot est l'ensemble des mots tels que appartient à. Le quotient à gauche est aussi appelérésiduel.
Lequotient à droite de par un mot est défini symétriquement comme l'ensemble des mots tels que appartient à.
Lequotient à gauche et lequotient à droite s'étendent aux langages. Ainsi, le quotient à gauche de par un langage, noté, est la réunion des langages pour dans.
Lemélange deL etM, notéL ШM, est l'ensemble des mots pouvant s'écrire où et sont des mots (éventuellement vides) tels que soit un mot deL et soit un mot deM. Par exemple[2] Ш.
Une application est unmorphisme ouhomomorphisme si pour tous mots de. L'image homomorphe d'un langage sur est l'ensemble
.
Par abus de langage, on appellemorphisme inverse l'inverse d'un morphisme. Le morphisme inverse de est la fonction notée de dans l'ensemble des parties de définie par
.
Ce n'est en général pas un morphisme. L'image par un morphisme inverse d'un langage sur est le langage
.
Un morphisme estnon effaçant oucroissant ou, par imitation de l'anglais,ε-free si l'image d'une lettre n'est jamais le mot vide. Dans ce cas, la longueur de l'image d'un mot est supérieure ou égale à celle du mot.
Une question commune sur ces opérations est de connaitre les propriétés de clôture de chaque famille de langage pour chacune de ces opérations, c'est-à-dire si le langage issu d'une opération reste dans la même famille de langages que les langages dont il est issu.
Chaque classe de langages est strictement contenue dans la classe immédiatement au-dessus d'elle. Chaque automate et chaque grammaire d'une classe ont un équivalent dans la classe immédiatement au-dessus.