Educatives- Ecole Normale Supérieure – Université de Yaoundé I
Par KAMENI Éric Désiré
Principe Un compilateur est découpé en plusieurs phases. Chaque phase constitue une partie de traduction en elle même. Analyse lexicale Consiste à récupérer les mots, que l'on appelle " tokens ", à partir d'une suite de caractères. Par exemple déterminer, à partir de l'énoncé suivant : for i :=1 to vmax do a :=a+i; on peut dégager la suite de tokens suivante : for : mot clé i : identificateur := : affectation 1 : entier to : mot clé vmax : identificateur do : mot clé a : identificateur := : affectation a : identificateur + : opérateur arithmétique i : identificateur ; : séparateur Analyse lexicale on peut construire la table des symboles suivante : Analyse lexicale l'énoncé précédent peut s'exprimer ainsi : 10, 1000, 100, 5001, 11, 1002, 12, 1001, 100, 1001, 101, 1000, 13 for i := 1 to vmax do a + a + i ; On obtient ainsi une suite de références à la table des symboles. Resumé L'analyse lexicale C'est la phase la plus simple. But : prendre en entree un flot de caracteres et proceder a la segmentation (separation en "mots"). Outil TP : LEX. – On trouve les mots (lexemes, tokens) – On verifie que chaque mot trouve appartient bien au lexique (dictionnaire) – On retourne (eventuellement) des messages d'erreur. Ces 3 etapes se font simultanement, en un seul parcours lineaire du flot d'entree. Analyse lexicale L’analyseur lexical est un automate fini pour l’union de toutes les expressions régulières définissant les tokens. Exemple de reconnaissance des tokens Analyse lexicale Exercice d’application Langage source
Récupérer les mots ou tokens de ce langage et construire la table des symboles.
Les numéros de symboles commencent à 10 et vont de 10 en 10 de la gauche vers la droite et de la première ligne vers la dernière. Exprimer le code source à partir de la table des symbole. Analyse Lexicale Introduction à la Theorie des Langages
Alphabets et mots en théorie des langages
L’ensemble des entités élémentaires est appelé l’alphabet. Une combinaison d’entités élémentaires est appelé un mot. Analyse Lexicale Introduction à la Theorie des Langages
Alphabets: Un alphabet, noté A, est un
ensemble fini non vide de symboles. Exemples d’alphabets : A1 = { •, *, ◊} A2 = { a, b, c, . . ., z } A3 = { if, then, else, id, nb, =, + } Analyse Lexicale Introduction à la Theorie des Langages
Mot: Un mot, défini sur un alphabet A, est
une suite finie d’éléments de A Exemples de mots : sur l’alphabet A1, le mot ••* sur l’alphabet A2, le mot if sur l’alphabet A3, le mot if id = nb Analyse Lexicale Introduction à la Theorie des Langages Terminologie Lors de l’analyse lexicale d’un programme, l’alphabet est l’ensemble des symboles du clavier, tandis que les mots sont les mots clés, les identificateurs, les nombres, les opérateurs, ... et sont généralement appelés lexèmes. Lors de l’analyse syntaxique d’un programme, les éléments de base de l’alphabet sont les mots clés, les identificateurs, les nombres, les opérateurs, ... (autrement dit, les lexèmes de l’analyse lexicale), tandis qu’un mot est une suite de lexèmes et forme un programme. D’une façon plus générale, lorsque les éléments de l’ensemble de base A sont des mots au sens linguistique, on emploie le terme de vocabulaire à la place d’alphabet pour désigner A, et le terme de phrase (ou chaîne) à la place de mot pour désigner une séquence finie de mots linguistiques. Analyse Lexicale Introduction à la Theorie des Langages
Longueur d’un mot: La longueur d’un mot
u défini sur un alphabet A, notée |u|, est le nombre de symboles qui composent u. Par exemple : sur l’alphabet A1, | • • * |= 3 sur l’alphabet A2, | if |= 2 sur l’alphabet A3, | if id = nb |= 4 Analyse Lexicale Introduction à la Theorie des Langages Mot vide: le mot vide, noté ε, est défini sur tous les alphabets et est le mot de longueur 0 (autrement dit, | ε | = 0).. A+ : on note A+ l’ensemble des mots de longueur supérieure ou égale à 1 que l’on peut construire à partir de l’alphabet A. A : on note A l’ensemble des mots que l’on peut construire à partir de A, y compris le mot vide : A = {ε} A+ Analyse Lexicale Introduction à la Theorie des Langages Concaténation: Soient deux mots u et v définis sur un alphabet A. La concaténation de u avec v, notée u.v ou simplement uv s’il n’y a pas d’ambigüité, est le mot formé en faisant suivre les symboles de u par les symboles de v. On notera un le mot u concaténé n fois (u0 = ε, un = u.(un−1 ) pour n ≥ 1) Analyse Lexicale Introduction à la Theorie des Langages Concaténation Par exemple, sur l’alphabet A2, si u = aabb et v = cc, alors u.v = aabbcc et u3 = aabbaabbaabb. NB : La concaténation est associative mais non commutative. Analyse Lexicale Introduction à la Theorie des Langages Exercice d’application Soit l’alphabet A = {a, b}. 1. Etant donnés les mots u = aa et v = bab, écrire les mots uv, (uv)2 et u3v. 2. Enoncer tous les mots de longueur 2 définis sur A. 3. Soient les ensembles E1 = {u.v/u A+, v A+} E2 = {u.v/u A+, v A } E3 = {u.v/u A , v A } A quoi correspondent ces ensembles ? Analyse Lexicale Introduction à la Theorie des Langages Solution 1. uv = aabab, (uv)2 = aababaabab et u3v = aaaaaabab. 2. Mots de longueur 2 = {aa, ab, ba, bb} 3. E1 = {u A /|u| ≥ 2} = ensemble des mots d’au moins 2 symboles E2 = A+ E3 = A* Analyse Lexicale Introduction à la Theorie des Langages Opérations sur les mots Préfixe 1. Soient deux mots u et v définis sur un alphabet A. 2. u est un préfixe de v si et seulement si il existe w appartenant à A* tel que uw = v ; w є A* tel que uw = v ; Soit A = { a, b, c, . . ., z } u=papa, v=papayer, w=yer. Donc u est un préfixe de v Analyse Lexicale Introduction à la Theorie des Langages Opérations sur les mots Suffixe 1. Soient deux mots u et v définis sur un alphabet A. 2. u est un Suffixe de v si et seulement si il existe w appartenant à A* tel que wu = v ; w є A* tel que wu = v ; Soit A = { a, b, c, . . ., z } u=yer w=papa, v=papayer,. Donc u est un suffixe de v Analyse Lexicale Introduction à la Theorie des Langages Opérations sur les mots Facteur 1. Soient deux mots u et v définis sur un alphabet A. 2. u est un Facteur de v si et seulement si il existe w1 et w2 appartenant à A* tels que w1uw2 = v ; w1 є A*, w2 є A*, tel que w1uw2 = v ; Soit A = { a, b, c, . . ., z } u=por w1=insup, w2=table, v=insupportable,. Donc u est un facteur de v Analyse Lexicale Introduction à la Theorie des Langages Exercices Exercice 1. Déterminer les facteurs, les préfixes et les suffixes du mot u = abac. Exercice 2. Compter les occurrences des lettres a et b dans les mots suivants : a3cbbca, aabgjdd, titi, babc. Exercice 3. Donner l’ensemble des couples (u,v) tels que uv = abaac. (FOND Uniquement) Exercice 4. Soit u = a1…..an un mot de longeur n, avec ai ≠ aj pour tous i ≠j. Combien u comporte-t-il de préfixes ? De suffixes ? De facteurs ? (FOND Uniquement)