Académique Documents
Professionnel Documents
Culture Documents
Master 1 :IL
Manuel de FLEX
1. FLEX :
FLEX est un gnrateur d'Analyseur Lexical. Il est souvent utilis avec un analyseur syntaxique. Un
Analyseur Lexical est un programme permettant danalyser un flux de chaines de caractres et le segment en
lexmes (Tokens).
Ces derniers reprsentent les entits lexicales dun langage. A titre dexemple : les
Exemple :
Entit lexicale
Expression rgulire
chiffre [09]
entier
p. 1
R.ELNAGGER
Une action: cest le code C qui sera excut chaque fois ou le lexme correspondant apparait.
action
// Dclarations C (pr-code)
%{
# include <stdio.h>
%}
// Dfinitions
chiffre [09]
entier {chiffre} +
reel
{chiffre} + "." {chiffre}
%%
// Rgles de traduction
{entier} {ECHO;
printf ("\n") ; }
{reel}
{printf ("%s", yytext); printf ("\n") ;
}
%%
// Code Additionnel (post-code C)
int main ( ) {
yylex ( ) ;
return 0 ;
}
p. 2
R.ELNAGGER
2. Macro-action de FLEX :
yylex
yywrap
Elle est appele par le lexer quand il rencontre la fin du fichier. Elle doit,
soit obtenir un nouveau flux d'entre et retourner simplement la valeur 0, soit
renvoyer 1, signifiant que la totalit des flux a t consomme et que le lexer
a fini sa tche.
yyterminate
ECHO
yytext
yyleng
yylval
Est une variable globale utilise par FLEX pour stocker la valeur correspondante au Token reconnu.
yylineno
yyin
Fichier dentre.
yyout
Fichier de sortie.
Fonctions
Variables
3. Commandes de Compilation :
FLEX lit un fichier de lextension (*.l), et gnre un code C (lex.yy.c) pour la compilation.
Entre
cc lex.yy.c o TP lfl
TP.l
FLEX
Lex.yy.c
(yylex)
CC
TP.exe
Sortie
p. 3
$ flex TP.l
$ cc lex.yy.c o TP lfl
$ ./TP
$ Ctrl+c
R.ELNAGGER
4. Caractres spciaux :
"\[]^-?.*+|()$/{}%<>
Pour utiliser ces caractres comme "caractres ordinaires", il faut les protger en plaant dans une chane
entoure de double-quotes (") ou en les plaant aprs un \ .Les caractres \n, \t correspondent respectivement au
saut de ligne et la tabulation.
5. Expressions rgulires :
" : Une chane de caractres entoure par double-quotes reprsente la chane elle-mme.
"abc" signifie la chane abc
[ ] : Une chane de caractres entre crochets reprsente un de ses lments. Dans ce contexte, | et
- indique un intervalle et ^ dsigne lexclusion.
[xyz] : x, y ou z
[a-zA-Z] : toutes les lettres minuscules et majuscules
[^0-9] : tous les caractres sauf les chiffres
: Condition de reconnaissance
ab/cd : chane ab seulement si elle est suivie de la chane cd
p. 4
R.ELNAGGER
p. 5
Expression
abc
Exemple
abc
abc*
abc+
a(bc)+
a(bc) ?
a, abc
[abc]
a, b, c
[a-z]
a, b, c, d, z
[a\-z]
a, -, z
[-az]
-, a, z
[a-zA-Z0-9]+
[ \t\n]+
Espaces
[^ab]
[a^b]
a, ^, b
[a|b]
a, |, b
a|b
a ou b
R.ELNAGGER