Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Stéphane Huet
18 septembre 2020
Plan
1 Introduction au cours
2 Alphabets et mots
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 }
Définition
Programme qui transforme un code source écrit dans un langage
de programmation (le langage source) en un autre langage (le
langage cible)
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
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
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
Analyse lexicale
=
<id,1> +
<id,2> *
<id,3> 60
1 Alphabet et langage
2 Automates finis
3 Expressions rationnelles
4 Grammaires
5 Analyse syntaxique descendante
6 Analyse syntaxique ascendante
Enseignants CM TD
Stéphane Huet 7,5 h
Stéphane Huet 18 h
Pierre Jourlin
Cédric Richier
Épreuves Coefficients
Examen écrit 1 (1h20) 50 %
Examen écrit 2 (1h20) 50 %
1 Introduction au cours
2 Alphabets et mots
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 = {+, −, ∗, /}
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)
• 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
1 Introduction au cours
2 Alphabets et mots
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
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
1 Introduction au cours
2 Alphabets et mots
• 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
• 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 }
• L0 = {}
• Ln+1 = Ln L