Vous êtes sur la page 1sur 29

Alphabet et langage

Stéphane Huet
18 septembre 2020
Plan

1 Introduction au cours

2 Alphabets et mots

3 Définition des langages

4 Opérations sur les langages

Théorie des langages et analyse syntaxique S. Huet 2/27


Exemple de programme informatique

1 #include <stdio.h>
2 int main()
3 {
4 int firstNumber, secondNumber, sumOfTwoNumbers;
5
6 printf(”Enter two integers: ”);
7
8 // Two integers entered by user is stored using scanf() function
9 scanf(”%d %d”, &firstNumber, &secondNumber);
10
11 // sum of two numbers in stored in variable sumOfTwoNumbers
12 sumOfTwoNumbers = firstNumber + secondNumber;
13
14 // Displays sum
15 printf(”%d + %d = %d”, firstNumber, secondNumber, sumOfTwoNumbers);
16
17 return 0;
18 }

Théorie des langages et analyse syntaxique S. Huet 3/27


Caractéristiques du langage informatique
• Alphabet : caractères alpha-numériques (a, ..., z, 0, ..., 9),
signes de ponctuation (;, ”...), caractères spéciaux (|,&...),
caractères d’espace
• Vocabulaire : ensemble des mots-clés (int, struct...) et
symboles (+, -, &&...) utilisables
• Règles de syntaxe : grammaire formelle définissant les
différentes manières dont les éléments de langage peuvent
être combinés pour obtenir des programme
• Un programme contient des déclaration et des définitions de
fonctions
• La définition d’une fonction débute par le type de la variable
retenu le nom de la fonction, des parenthèses avec le type et le
nom des paramètres et enfin le bloc des instructions écrites
entre accolades...
• Sémantique : règles définissant le sens de chacune des
phrases pouvant être construites par le langage
• Commentaires : définition de textes qui ne sont pas traduits
Théorie des langages et analyse syntaxique S. Huet 4/27
Pourquoi ce cours ?

• Introduction de concepts fondamentaux de la discipline


informatique
• Introduire 2 classes fondamentales de modèles : les automates
et les grammaires
• Fil conducteur : construction d’un compilateur
• Peu d’informaticiens construiront ou maintiendront un
compilateur
• Les modèles, théories et algorithmes associés à la compilation
peuvent être appliqués dans la conception et la
programmation logicielles
• → Préparation à l’UE du S4 : Assembleur et compilation

Théorie des langages et analyse syntaxique S. Huet 5/27


Compilateur

Définition
Programme qui transforme un code source écrit dans un langage
de programmation (le langage source) en un autre langage (le
langage cible)

Théorie des langages et analyse syntaxique S. Huet 6/27


Principales phases d’un compilateur

1 Analyse lexicale
• Lit le flot de charactères constituant le programme source,
groupe ces caractères en séquences porteuses de sens
appelées lexèmes et construit des tokens (valeur, attribut)
2 Analyse syntaxique
3 Étapes suivantes : vérifier la consistance sémantique du
programme source (ex : vérification de type), générer le code
machine

Théorie des langages et analyse syntaxique S. Huet 7/27


Principales phases d’un compilateur

1 Analyse lexicale
2 Analyse syntaxique
• Crée un arbre représentant la structure grammaticale du flux de
tokens
3 Étapes suivantes : vérifier la consistance sémantique du
programme source (ex : vérification de type), générer le code
machine

Théorie des langages et analyse syntaxique S. Huet 7/27


Principales phases d’un compilateur

1 Analyse lexicale
2 Analyse syntaxique
3 Étapes suivantes : vérifier la consistance sémantique du
programme source (ex : vérification de type), générer le code
machine

Théorie des langages et analyse syntaxique S. Huet 7/27


Exemple de traduction d’une instruction
d’affectation
position = initial + rate * 60

Analyse lexicale

1 position ... <id,1> <=> <id,2> <+> <id,3> <*> <60>


2 initial ...
3 rate ...
Analyse syntaxique
Table des symboles

=
<id,1> +
<id,2> *
<id,3> 60

Théorie des langages et analyse syntaxique S. Huet 8/27


Plan du cours

1 Alphabet et langage
2 Automates finis
3 Expressions rationnelles
4 Grammaires
5 Analyse syntaxique descendante
6 Analyse syntaxique ascendante

Théorie des langages et analyse syntaxique S. Huet 9/27


Volume horaire de l’UE

Enseignants CM TD
Stéphane Huet 7,5 h
Stéphane Huet 18 h
Pierre Jourlin
Cédric Richier

Théorie des langages et analyse syntaxique S. Huet 10/27


Évaluation de l’UE

Épreuves Coefficients
Examen écrit 1 (1h20) 50 %
Examen écrit 2 (1h20) 50 %

Théorie des langages et analyse syntaxique S. Huet 11/27


Plan

1 Introduction au cours

2 Alphabets et mots

3 Définition des langages

4 Opérations sur les langages

Théorie des langages et analyse syntaxique S. Huet 12/27


Pourquoi étudier les langages ?

• Concept important et couramment utilisé en informatique


• Exemples de langage
• Langues naturelles : français, anglais...
• Ensemble des partitions musicales
• En informatique, langages de programmation (Python, C++,
PHP...), langages de commandes spécifiques (shells, éditeurs)

Théorie des langages et analyse syntaxique S. Huet 13/27


Objectifs

• Disposer d’un procédé automatique engendrant tous les mots


du langage
• ⇒ Description très précise du langage
• Disposer d’un procédé automatique décrivant si un mot
appartient au langage

Théorie des langages et analyse syntaxique S. Huet 14/27


L’alphabet

Définition
Un alphabet X est un ensemble fini de symboles appelés des
lettres
Exemples
• X = {0, 1}
• X = {a, b, c, . . . , z}
• X = {+, −, ∗, /}

Théorie des langages et analyse syntaxique S. Huet 15/27


Les mots

Définition
Un mot u sur un alphabet X est une suite finie de lettres

Notations
• u = u1 . . . up
• Longueur d’un mot : |u| = p
• Mot de longueur vide :  (|| = 0)

Théorie des langages et analyse syntaxique S. Huet 16/27


Opération sur les mots

• Concaténation
• Elle consiste à juxtaposer les éléments de u à ceux de v
• w = u.v = u1 . . . up v1 . . . vq
• |w| = |u| + |v| = p + q
• Ex : u = jeu, v = di, w = jeudi

Théorie des langages et analyse syntaxique S. Huet 17/27


Plan

1 Introduction au cours

2 Alphabets et mots

3 Définition des langages

4 Opérations sur les langages

Théorie des langages et analyse syntaxique S. Huet 18/27


Structures algébriques

• Demi-groupe : ensemble E muni d’une loi de composition


interne ∗ associative
• ∀x, y ∈ E, x ∗ y ∈ E (loi interne)
• ∀x, y, z ∈ E, x ∗ (y ∗ z) = (x ∗ y) ∗ z (associativité)
• Monoïde : demi-groupe (E, ∗) muni d’un élément neutre e
• ∀x ∈ E, x ∗ e = e ∗ x = x (élément neutre)
• Groupe : monoïde (E, ∗, e) admettant pour chaque élément
de l’ensemble un élément symétrique
• ∀x ∈ E, ∃y ∈ E, x ∗ y = y ∗ x = e (symétrie)

Théorie des langages et analyse syntaxique S. Huet 19/27


Monoïde libre

Définition
Un monoïde libre X ∗ sur un alphabet X est l’ensemble des suites
finies des symboles de X muni de l’opération de concaténation

• Monoïde : structure algébrique (E, ∗, e) où ∀x, y, z ∈ E


• x ∗ y ∈ E (loi interne)
• x ∗ (y ∗ z) = (x ∗ y) ∗ z (associativité)
• x ∗ e = e ∗ x = x (élément neutre)
• Monoïde libre : monoïde admettant une base, c-à-d une
partie de E qui est une famille génératrice et dans laquelle
tout élément se décompose de façon unique
• Dans notre contexte, la base de X ∗ est l’ensemble des mots de
longueur un, c-à-d X
• X = {0, 1}, X ∗ = {0, 1, 0010, , . . .}

Théorie des langages et analyse syntaxique S. Huet 20/27


Langage

Définition
Un langage L sur un alphabet X est une partie de X ∗

• L ⊆ X∗
• Ex : langage des identificateurs (pour les 1res versions de C)
• X = {a, . . . , z, A . . . , Z , 0, . . . , 9, _}
• L = {x ∈ X ∗ |x1 ∈ / {0, . . . , 9}}
ensemble des mots sur X ne commençant pas par un nombre

Théorie des langages et analyse syntaxique S. Huet 21/27


Plan

1 Introduction au cours

2 Alphabets et mots

3 Définition des langages

4 Opérations sur les langages

Théorie des langages et analyse syntaxique S. Huet 22/27


Facteurs (1/2)

• v, u ∈ X ∗
• v est facteur de u ssi il existe α, β ∈ X ∗ tels que u = α.v.β
• ar est un facteur de marcher
• v est facteur gauche de u (préfixe de u) ssi il existe β ∈ X ∗ tel
que u = v.β
• march est un facteur gauche de marcher
• v est facteur droit de u (suffixe de u) ssi il existe α ∈ X ∗ tel que
u = α.v
• er est un facteur droit de marcher

Théorie des langages et analyse syntaxique S. Huet 23/27


Facteurs (2/2)

• u et v sont conjugués ssi il existe α, β ∈ X ∗ tels que


• u = α.β
• v = β.α
• Exemples de mots conjugués
• marcher et chermar
• brisa et abris

Théorie des langages et analyse syntaxique S. Huet 24/27


Opérations sur les langages (1/2)

• Union : L1 ∪ L2 = {w ∈ X ∗ |(w ∈ L1 ) ou (w ∈ L2 )}
• Intersection : L1 ∩ L2 = {w ∈ X ∗ |(w ∈ L1 ) et (w ∈ L2 )}
• Différence : L1 − L2 = {w ∈ X ∗ |(w ∈ L1 ) et (w ∈
/ L2 )}
• Complémentaire : L1 = {w ∈ X |w ∈
¯ ∗
/ L1 }

Théorie des langages et analyse syntaxique S. Huet 25/27


Opérations sur les langages (2/2)

• Produit : L1 L2 = {w ∈ X ∗ |(∃u ∈ L1 )(∃v ∈ L2 )w = uv}


• Fermeture de Kleene : L∗ = n≥0 Ln où
S

• L0 = {}
• Ln+1 = Ln L

Théorie des langages et analyse syntaxique S. Huet 26/27


Sources

• John E. Hopcroft, Rajeev Motwani et Jeffrey D. Ullman.


Introduction to Automata Theory, Languages, and
Computation, Pearson Education, 2nd Edition, 2001
• Alfred V. Aho, Monica S. Lam, Ravi Sethi et Jeffrey D. Ullman.
Pearson Education, 2nd Edition, 2007
• F. Yvon et A. Demaille. Théorie des langages, Notes de cours,
Université Paris-Sud et EPITA, 2016

Théorie des langages et analyse syntaxique S. Huet 27/27

Vous aimerez peut-être aussi