Bonjour ,
je suis entrain de réaliser un petit analyseur lexical qui compte le nombre de mots appartenant a une unité lexical donnée(AFD) dans un fichier.text
Pour cela j'utilise une table de transition de l'AFD

Voici ce que j'ai pu faire pour le moment :

fichier .c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
int transition[2][2];
int final[2]; // 2etats
 
void inisialiser()  {
final[0]=0; final[1]=1;
transition[0]['a']='1';
transition[0]['b']='0';
transition[1]['a']='1';
transition[1]['b']='0';
}
 
int main() {
 FILE *F inisialiser();
F=fopen("fichier.txt","r");
while(( c=fgetc(f)!=EOF))
{
int etat=0;
while(!final[etat]) {
	etat=transition[etat][c];
	c=getcgar(f);
}
// instruction d incrementer le nbre de mot reconnus
}
}
source pour le lex :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
%{ #define IDENTIF 1
#define CHIFFRE 2
char lexe[10]; float fval;
 
%}
%%
[a-z][a-zA-Z0-9]* {
 lexeme=yytext;
return IDENTIF;
(0-9)(0-9)* { fval=atof(yytext);
return chiffre ;} 
}
int main() {
	int unite ; unite=yylex();
do {
inserer(tab,lexeme,unite);
}
while(unite=yylex);
}

quesque vous en penser ?