0% ont trouvé ce document utile (0 vote)
79 vues20 pages

Flex pour L3: Analyse Lexicale

Transféré par

Aymen Raki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
79 vues20 pages

Flex pour L3: Analyse Lexicale

Transféré par

Aymen Raki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Université de BOUIRA

Département d’informatique
Support pour L3

Compilation
CHAPITRE II : ANALYSE
LEXICALE
Outil Flex

HAMID Rabah
[email protected]

2018/2019 3° eme ANNEE SYSTÈME


INFORMATIQUE
Références
 Support de cours Mr HAMDANI Université de tizi ouzou
 Support de cours Compilation Anne BERRY
 A. Aho, M. Lam, R. Sethi et J. Ullman, "Compilateurs: principe, techniques et

outils", Pearson Education.


 R. Wilhelm et D. Maurer, "Les compilateurs: théorie, construction,

génération", Masson
 Cours de techniques de compilation, J.Bonneville Documentation Lex-Flex

http://users.polytech.unice.fr/~dedale/cours/compilation/Lex-HowTo/
 Cours de compilation, Luc Maranget
http://www.enseignement.polytechnique.fr/profs/informatique/
Luc.Maranget/compil/poly/index.html
 4- Cours de compilation, ENS de Lyon, Christophe Alias, cours, TD, TP,

examens et partiels
http://perso.ens-lyon.fr/christophe.alias/compilation_ens.html
 Support de cours A. DARGHAM Faculté des Sciences Oujda
ANALYSE LEXICALE OUTIL FLEX

Sommaire :

 Description de l’outil Flex


 Format d’un programme Flex
 Les motifs
 Fonctionnement des analyseurs
Flex
 Les actions prédéfinies
 Étude de quelques exemples
 Exercices corrigés
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex
• Flex (Fast Lexer) est un compilateur pour la
génération automatique d’analyseurs
lexicaux.

• Un fichier Flex est un fichier texte qui contient la


description d’un analyseur lexical en termes d’expressions
régulières et d’actions écrites en langage C.

• Le compilateur Flex prend en entrée un fichier source Felx


et produit en sortie un fichier
contenant le code C (ou C ++) du future analyseur lexical.

• Le fichier C généré est nommé « lex.yy.c ». Ce dernier doit


être compilé à l’aide d’un
compilateur C (gcc, par exemple) pour obtenir le code
exécutable de l’analyseur lexical.
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex

Une fois l’analyseur lexical est mis en


œuvre, il analyse le fichier source pour
chercher les occurrences d’expressions
régulières.

Lorsqu’un mot est reconnu, l’analyseur


lexical exécute le code C correspondant
à l’expression régulière qui dénote ce
mot.

Procédure :
– On crée le fichier source avec un
Étapes de développement éditeur de
d’un analyseur lexical texte.
avec Flex – On compile le fichier source par :
• flex scan.flex
ANALYSE LEXICALE OUTIL FLEX
rmat d’un programme Flex
Le contenu d’un fichier Flex comprend 3 sections séparées par
une ligne contenant le symbole
Section « %% » :
des définitions
%%
Section des règles
%%
Section du code
complémentaire
Section des définitions :
– Contient la déclaration des variables
et des fonctions globales, des
inclusions de fichiers et des
expressions régulières.

– Les inclusions de fichiers et les


déclarations des variables et des
fonctions globales sont mises entre les
symboles « %{ » et « %} » (chacun
ANALYSE LEXICALE OUTIL FLEX
rmat d’un programme Flex

Définition d’une expression régulière :

– Syntaxe : Nom Expression_Régulière


– « Nom » : un identificateur qui sert à nommer une expression
régulière pour l’avoir référencer ultérieurement.
– Le nom doit être non indenté.
– Une définition d’une expression régulière doit tenir sur une seule
ligne.

Exemple :
L [a-zA-Z]
D [0-9]
U "_"
Ident ({L}|{U})({L}|{D}|{U})*
ANALYSE LEXICALE OUTIL FLEX
rmat d’un programme Flex

Section des règles :


– Une règle se présente sous la forme :
Motif Action
– Un motif ne doit pas être indenté et les actions doivent commencer
dans la même ligne que leur motif.
– Un motif est une expression régulière qui peut référencer les
expressions régulières définies dans la section des définitions.
– Une action est séparée de son motif par au moins un espace (ou
une tabulation).
– L’analyseur lexical déclenche une action autant de fois qu’il trouve
un lexème qui correspond au motif associée à cette action.
– Les règles sont toutes écrites entre les deux symboles « %% ».
ANALYSE LEXICALE OUTIL FLEX
rmat d’un programme Flex
Section du code complémentaire :
– Sera copiée telle quelle dans le fichier « lex.yy.c ».
– Contient des routines pouvant être appelées par l’analyseur lexical.
– Peut aussi contenir une fonction « main ».
– Section optionnelle : si elle est absente, le second symbole « %% » peut
être omis.

Exemple (complet) :
ANALYSE LEXICALE OUTIL FLEX
Les motifs

• x : dénote le singleton {x}.


• . : dénote n’importe quel caractère, sauf le caractère '\n'.
• [xyz] : dénote {x, y, z}.
• [abj-oZ] : dénote {a, b, j, k, l, m, n, o,Z}.
• [^A-Z] : dénote n’importe quel caractère sauf les lettres
majuscules.
• r* : zéro, une ou plusieurs occurrences de r (r étant une
expression régulière valide).
•r+ : une ou plusieurs occurrences de r.
• r? : zéro ou une occurrence de r.
• r{2, 5} : 2, 3, 4 ou 5 occurrences de r.
• r{2,} : 2 ou plusieurs occurrences de r.
• r{4} : exactement 4 occurrences de r.
• {nom} : expansion de la définition « nom ».
• \x : dénote les caractères ASCII comme \a, \t.
• \0 : dénote le caractère de code ASCII 0 (NULL).
ANALYSE LEXICALE OUTIL FLEX
Les motifs

•\123 : dénote le caractère de code ASCII123.


• \x2a : dénote le caractère de code ASCII hexadécimal 2a.
• (r) : une seule occurrence de r, les parenthèses sont
utilisées pour fixer la priorité.
• r|s : une seule occurrence de r ou de s.
• rs : une seule occurrence de r, suivie d’une seule
occurrence de s (concaténation).
•r/s : une seule occurrence de r, et seulement si cette
occurrence est suivie immédiatement par une seule occurrence de
s.
• ^r : une seule occurrence de r, mais uniquement si cette
occurrence se trouve au début d’une ligne.
• r$ : une seule occurrence de r, mais uniquement si cette
occurrence se trouve à la
fin d’une ligne.
•<< EOF >> : dénote le caractère de fin de fichier.
ANALYSE LEXICALE OUTIL FLEX
ctionnement des analyseurs Flex
ANALYSE LEXICALE OUTIL FLEX
ctionnement des analyseurs Flex
ANALYSE LEXICALE OUTIL FLEX
ctionnement des analyseurs Flex
ANALYSE LEXICALE OUTIL FLEX
Les motifs
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex
ANALYSE LEXICALE OUTIL FLEX
escription de l’outil Flex

Vous aimerez peut-être aussi