SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Ecole Normale Supérieure Kouba Module : Compilation
Département Informatique Année : 2023/2024
1
Chapitre 01 : Analyse lexicale
I. Introduction
L’analyse lexicale consiste à partir d’un programme qui est une suite de caractères
séparés ou non par des blancs à :
1. Spécifier les différentes entités (mots) du langage. On parlera d’entités lexicales.
Parmi ces entités on reconnait :
 Les identificateurs
 Les mots clés
 Les constantes
 Les séparateurs
2. Eliminer les blancs, s’ils existent ainsi que les commentaires.
3. Coder les différentes entités lexicales.
4. Construire la table des informations (Table des symboles)
Remarques :
- Les mots clés et les séparateurs représentent une donnée du programme à compiler.
Les identificateurs est les constantes sont données par l’utilisateur.
- Dans certains langages les mots clés ne sont pas réservés, ils peuvent être utilisés
comme identificateurs.
- Certains langages n’acceptent pas que les mots clés soient utilisés en temps
qu’identificateurs. Ils sont alors directement insérés dans la table des symboles.
II. Implémentation d’un analyseur lexical :
Les entités lexicales sont décrites à l’aide des grammaires régulières qui sont
reconnues par des automates déterministes à état finis.
Rappels :
Grammaire Régulière à droite :
Soit G= <T, N, S, P> où :
T : Ensemble des terminaux de la grammaire.
N : Ensemble des non-terminaux de la grammaire.
S : Axiome de la grammaire.
P : Ensemble des règles de production.
On dit qu’une grammaire est régulière à droite si toutes les productions sont de la forme :
Programme Source Scanner Entités Lexicales
Ecole Normale Supérieure Kouba Module : Compilation
Département Informatique Année : 2023/2024
2
A→ aB / b, a ϵ T+
, A, B ϵ N
b ϵ T*
Grammaire Régulière à gauche
Une grammaire est régulière à gauche, si toutes les productions sont du type :
A→ Ba / b, a ϵ T+
, A, B ϵ N
b ϵ T*
Automate :
Soit A= <T, N, S, F, I> où :
T : Ensemble des terminaux.
N : Ensemble des états de l’automate.
S : Etat initial de l’automate.
F : Ensemble des états finaux.
I : Ensemble des transitions.
On appelle un automate d’état finis, un système qui fait correspondre à une entité
(chaine ϵ T*) une réponse qui peut prendre l’une des deux valeurs, vrai ou faux.
I(Si, ai) = Sj, , Si, Sj ϵ N, a ϵ T
I(Si, ε) = Si
Définition : Le langage généré par l’automate A est noté par L(A), tel que :
L(A)= { w / S Ⱶ*
w Sk, Sk ϵ F }
Exemple1.
1. Correspondance entre Automate et Grammaire :
a. Passage d'une grammaire régulière à droite à un automate :
On considère une grammaire régulière à droite G = ˂T, N, S, P ˃ et un automate
A = ˂ T', N', S', F', I'˃ où :
T' : Ensemble des terminaux de l'automate, donc T'= T.
N' : Ensemble des états de l'automate : N' = N  {Sf}.
S' : Etat initiale de l'automate : S' = S.
F' : Ensemble des états finaux : F' = {Sf}.
I' = Ensemble des transitions :
Si A→ aB Alors I' (A, a) = B ⩝ A, B ϵ N, a ϵ T'
Ecole Normale Supérieure Kouba Module : Compilation
Département Informatique Année : 2023/2024
3
Si A→ a Alors I' (A, a) = Sf ⩝ A ϵ N, a ϵ T'
Exemple 2.
b. Passage d'un automate à une grammaire régulière à droite :
Soit A = ˂ T', N', S', F', I'˃ un automate et G = ˂T, N, S, P ˃ une grammaire régulière
à droite, Nous avons :
S = S' (l'axiome est l'état initiale)
T= T'
N = N' - {Sf}
Si I' (A, a) = B et B n’appartient pas à F' alors A → a B
Si I' (A, a) = B et B ϵ F' alors A → a
Exemple 3.
c. Passage d'une grammaire régulière à gauche à un automate :
Soient une grammaire régulière à gauche G = ˂T, N, S, P ˃ et un automate
A = ˂ T', N', S', F', I'˃, alors T'= T.
Lors de la construction de l'automate à partir d'une grammaire régulière à gauche, l'axiome de
la grammaire devient l'état final de l'automate donc :
F' = {S}, On crée donc un état initiale d'où N' = N  {S'} avec S' l’état initial.
I' :
Si A → a Alors I' (S', a) = A
Si A → Ba Alors I' (B, a) = A
Exemple 4.
2. Représentation d'un Automate en mémoire :
- On représente un automate par « une matrice de transition T ». Une ligne pour chaque
état de l'automate et une colonne pour chaque caractère (terminal de l'automate),
- Une constante pour l'état initiale
- Un vecteur d'états finaux
Exemple 5.
Ecole Normale Supérieure Kouba Module : Compilation
Département Informatique Année : 2023/2024
4
3. Algorithme de simulation (Reconnaissance d’une entité lexicale)
En entrée, nous disposons d’une entité lexicale, nous utilisons l’automate afin de
vérifier si elle appartient au langage ou pas.
Exemple 6.
Début
Lire(entité) ;
tc← 1er
caractère de l’entité ;
ec← l’état initial ;
Tant que (ec ≠ϕ) et non fin de l’entité
Faire
ec := T[ec, tc] ; /* T la matrice des transitions */
tc← tc+1 ;
Fait
Si (ec =ϕ) alors l’entité n’appartient pas au langage
Sinon
Si ec n’appartient pas à F alors l’entité n’appartient pas au langage
Sinon « l’entité ϵ au langage »
Codifier et insérer l’entité dans la table des symboles
Fin si
Fin si
Fin

Contenu connexe

Similaire à Chapitre 01_ Analyse lexicale.pdf

Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2Beligh HAMDI
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfadeljaouadi
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdfMARYAM510573
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfLamissGhoul1
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)rezgui mohamed
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptxPROFPROF11
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R SumAmy Isleb
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 

Similaire à Chapitre 01_ Analyse lexicale.pdf (13)

Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdf
 
01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf01 - Introduction à Python chaines de caractères.pdf
01 - Introduction à Python chaines de caractères.pdf
 
langage C++
langage C++langage C++
langage C++
 
Algo inf102 2007
Algo inf102 2007Algo inf102 2007
Algo inf102 2007
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
TP5_2020.pdf
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Convention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdfConvention Algorithmique AS 2022-2023.pdf
Convention Algorithmique AS 2022-2023.pdf
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 

Chapitre 01_ Analyse lexicale.pdf

  • 1. Ecole Normale Supérieure Kouba Module : Compilation Département Informatique Année : 2023/2024 1 Chapitre 01 : Analyse lexicale I. Introduction L’analyse lexicale consiste à partir d’un programme qui est une suite de caractères séparés ou non par des blancs à : 1. Spécifier les différentes entités (mots) du langage. On parlera d’entités lexicales. Parmi ces entités on reconnait :  Les identificateurs  Les mots clés  Les constantes  Les séparateurs 2. Eliminer les blancs, s’ils existent ainsi que les commentaires. 3. Coder les différentes entités lexicales. 4. Construire la table des informations (Table des symboles) Remarques : - Les mots clés et les séparateurs représentent une donnée du programme à compiler. Les identificateurs est les constantes sont données par l’utilisateur. - Dans certains langages les mots clés ne sont pas réservés, ils peuvent être utilisés comme identificateurs. - Certains langages n’acceptent pas que les mots clés soient utilisés en temps qu’identificateurs. Ils sont alors directement insérés dans la table des symboles. II. Implémentation d’un analyseur lexical : Les entités lexicales sont décrites à l’aide des grammaires régulières qui sont reconnues par des automates déterministes à état finis. Rappels : Grammaire Régulière à droite : Soit G= <T, N, S, P> où : T : Ensemble des terminaux de la grammaire. N : Ensemble des non-terminaux de la grammaire. S : Axiome de la grammaire. P : Ensemble des règles de production. On dit qu’une grammaire est régulière à droite si toutes les productions sont de la forme : Programme Source Scanner Entités Lexicales
  • 2. Ecole Normale Supérieure Kouba Module : Compilation Département Informatique Année : 2023/2024 2 A→ aB / b, a ϵ T+ , A, B ϵ N b ϵ T* Grammaire Régulière à gauche Une grammaire est régulière à gauche, si toutes les productions sont du type : A→ Ba / b, a ϵ T+ , A, B ϵ N b ϵ T* Automate : Soit A= <T, N, S, F, I> où : T : Ensemble des terminaux. N : Ensemble des états de l’automate. S : Etat initial de l’automate. F : Ensemble des états finaux. I : Ensemble des transitions. On appelle un automate d’état finis, un système qui fait correspondre à une entité (chaine ϵ T*) une réponse qui peut prendre l’une des deux valeurs, vrai ou faux. I(Si, ai) = Sj, , Si, Sj ϵ N, a ϵ T I(Si, ε) = Si Définition : Le langage généré par l’automate A est noté par L(A), tel que : L(A)= { w / S Ⱶ* w Sk, Sk ϵ F } Exemple1. 1. Correspondance entre Automate et Grammaire : a. Passage d'une grammaire régulière à droite à un automate : On considère une grammaire régulière à droite G = ˂T, N, S, P ˃ et un automate A = ˂ T', N', S', F', I'˃ où : T' : Ensemble des terminaux de l'automate, donc T'= T. N' : Ensemble des états de l'automate : N' = N  {Sf}. S' : Etat initiale de l'automate : S' = S. F' : Ensemble des états finaux : F' = {Sf}. I' = Ensemble des transitions : Si A→ aB Alors I' (A, a) = B ⩝ A, B ϵ N, a ϵ T'
  • 3. Ecole Normale Supérieure Kouba Module : Compilation Département Informatique Année : 2023/2024 3 Si A→ a Alors I' (A, a) = Sf ⩝ A ϵ N, a ϵ T' Exemple 2. b. Passage d'un automate à une grammaire régulière à droite : Soit A = ˂ T', N', S', F', I'˃ un automate et G = ˂T, N, S, P ˃ une grammaire régulière à droite, Nous avons : S = S' (l'axiome est l'état initiale) T= T' N = N' - {Sf} Si I' (A, a) = B et B n’appartient pas à F' alors A → a B Si I' (A, a) = B et B ϵ F' alors A → a Exemple 3. c. Passage d'une grammaire régulière à gauche à un automate : Soient une grammaire régulière à gauche G = ˂T, N, S, P ˃ et un automate A = ˂ T', N', S', F', I'˃, alors T'= T. Lors de la construction de l'automate à partir d'une grammaire régulière à gauche, l'axiome de la grammaire devient l'état final de l'automate donc : F' = {S}, On crée donc un état initiale d'où N' = N  {S'} avec S' l’état initial. I' : Si A → a Alors I' (S', a) = A Si A → Ba Alors I' (B, a) = A Exemple 4. 2. Représentation d'un Automate en mémoire : - On représente un automate par « une matrice de transition T ». Une ligne pour chaque état de l'automate et une colonne pour chaque caractère (terminal de l'automate), - Une constante pour l'état initiale - Un vecteur d'états finaux Exemple 5.
  • 4. Ecole Normale Supérieure Kouba Module : Compilation Département Informatique Année : 2023/2024 4 3. Algorithme de simulation (Reconnaissance d’une entité lexicale) En entrée, nous disposons d’une entité lexicale, nous utilisons l’automate afin de vérifier si elle appartient au langage ou pas. Exemple 6. Début Lire(entité) ; tc← 1er caractère de l’entité ; ec← l’état initial ; Tant que (ec ≠ϕ) et non fin de l’entité Faire ec := T[ec, tc] ; /* T la matrice des transitions */ tc← tc+1 ; Fait Si (ec =ϕ) alors l’entité n’appartient pas au langage Sinon Si ec n’appartient pas à F alors l’entité n’appartient pas au langage Sinon « l’entité ϵ au langage » Codifier et insérer l’entité dans la table des symboles Fin si Fin si Fin