Génération d'un analyseur lexical avec FLEX

Fermé
CaPoNiTo Messages postés 2 Date d'inscription samedi 2 avril 2011 Statut Membre Dernière intervention 4 avril 2011 - Modifié par CaPoNiTo le 2/04/2011 à 12:15
CaPoNiTo Messages postés 2 Date d'inscription samedi 2 avril 2011 Statut Membre Dernière intervention 4 avril 2011 - 4 avril 2011 à 19:11
Bonjour,

Je vous fournis mon Code ;c'est une génération d'un analyseur lexical avec le langage C utilisant l'outil FLEX
j'ai testé le code sous ubuntu mais il n'est pas valide
j'espère que vous m'aidez au niveau de trois point :

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

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

*** une idée concernant yyrestart(si je peut l'utiliser pour intégrer mon fichier de test)
%{  

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

A voir également:

1 réponse

CaPoNiTo Messages postés 2 Date d'inscription samedi 2 avril 2011 Statut Membre Dernière intervention 4 avril 2011
4 avril 2011 à 19:11
c'est Urgent j'ai besoin d'une réponse SVP
0