Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
programme source
écrit en Lex compilateur lex.yy.c ou
fichier.l Lex fichier.c
fichier.c compilateur
fichier.exe
C
flot d’entrée
suite d’unités lexicales
fichier.exe
1
Spécifications en Lex
déclarations
%%
règles de traductions
%%
procédures auxiliaires
règles de traductions:
m1 {action1}
m2 {action2}
...
mn {actionn}
2
Un premier exemple
%{
int l= 0 , c = 0 ;
%}
%%
\n ++l; ++c;
. ++c;
%%
int yywrap(void) {
return 1;
}
main(){
yylex();
printf ( " # of line = %d , # of char = %d \n " ,l , c);
}
3
%{
%}
ch [0-9]
let [a-zA-z]
sep [ \t\n]
op [+\-*/]
%%
{ch}+ ECHO;
{let}({let}|{ch})* printf("id ");
{op}? printf("op ");
%%
int yywrap(void) {
return 1;
}
4
Liste des opérateurs et abréviations
%% : séparateur de section
\ : caractère d’échappement
‘’ ‘’ : quotation
[ ] : constructeur de classe
- : intervalle
^ : complément
\ : échappement
* : itération (éventuellement 0 fois)
+ : itération d’un nbre de fois > 0
() : regroupement
| : disjonction
{ } : répétition {n} nfois; {n,m} n ou n+1 ou… m fois
x? : x caractère optionnel
. : n’importe quel caractère sauf \n
\n : newline
\t : tabulation
\b : backspace
$ : fin de ligne
^ : début de ligne
/ : contexte à droite
<> : contexte général
% : directive