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
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
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 } }
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 ?
Partager