Je vous fournis mon Code ;c’est une génération d’un analyseur utilisable avec le langage C .
le code utilise l'outil "FLEX"

j’espère que vous m’aidez au niveau de trois point :

i) la lecture des données d’un fichier(un fichier source en langage C),ainsi de corrigé quelque faute

ii) prière de me donner une idée concernant les option (%option :où on déplace cette instruction)

iii) une idée concernant yyrestart(si je peut l’utiliser pour intégrer mon fichier de test)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
%{
 
Int noligne=0 ;
 
%}
 
Chaine   \ "[^\n]\ "
 
Espace   [^\t\040]
 
Alpha    [a-zA-Z]
 
Chiffre  [0-9]
 
Mot clé [FOR ,IF ,ELSE,WHILE,BREAK,SWITCH,CASE,DO]
 
Id   [int,float,double,bool,char,string,CONST]
 
 nom    ({alpha}|{chiffre}|\$)({alpha}|{chiffre}|[_.\-/$])*
 
 num1    [-+]?{chiffre}+\.?([eE][-+]?{chiffre}+)?
 
 num2    [-+]?{chiffre}*\.{chiffre}+([eE][-+]?{chiffre}+)?
 
 nombre  {chiffre}+
 
 
 
    %%
 
{espace}    /* ne rien faire avec les espaces*/
 
//recherche des commentaires
 
    "/*"    {
 
            int c;
 
 
 
            while((c = yyinput()) != 0)
 
                {
 
                if(c == '\n')
 
                    ++mon_no_ligne;
 
 
 
                else if(c == '*')
 
                    {
 
                    if((c = yyinput()) == '/')
 
                        break;
 
                    else
 
                        unput(c);
 
                    }
 
                }
 
                 Printf(le contenu du commentaire est "%c ",yytext) ;
 
            }
 
//recherche des nombres
 
    {nombre}  printf("nombre %c",yytext) ;
 
//calcule du nombre de lignes   
 
\n       noligne++;
 
 
 
    {nom}     printf("nom est %c ",yytext) ;
 
    {chaine}  printf("les chaine introduite  %c ",yytext) ;
 
    %%
 
//la fonction main
 
    main()
 
            {
 
             yylex() ;
 
                 yyin=fopen(" test.txt", ‘r’) ;
 
/* test.txt est un fichier texte qui contient un code en langage C dont il  est la source pour analyser */
 
}
merci d'avance