SVP aide moi flex bison?

sofiane -  
surfing903 Messages postés 9 Statut Membre -
flex bison?

SVP j'ai un tp en compilation de construire des analyseurs avec flex et bison mon probléme je ne sais pas comment traduit les régles de la grammaire :
E>E+T|T
T>T*F|F
F>(E)|degit
SVP ME DONNEZ les commandes en flex necessaires merci
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. surfing903 Messages postés 9 Statut Membre
     
    voila tu dois avoir 2 fichier, le lexical 'nom.l' et le syntaxique 'nom.y'

    le syntaxique contient:
    void yyerror (char const * s);
    %}

    /* 1. Le start est le non-terminal S */
    %start S

    /* 2. Définitions des tokens (terminaux) */
    %token NOMBRE op_ans op_or
    /* 3. Désambiguisation */
    %left OP_ANS OP_DIFF /* Désambiguisation : '+' et '-' sont associatifs gauches de même priorité
    */
    %left OP_OR /* '*' est associatif gauche et est plus prioritaire que le '+' et le '-' */
    %%

    S : Exp;
    Exp :Exp op_ans Exp | Exp op-or Exp | X;
    X: degit;
    %%
    void yyerror(char const * s)
    {
    printf("Erreur syntaxique : %s\n",s);
    }

    int main(int argc, char ** argv)
    {
    yyparse();
    return 0;
    }

    le lexical contient:
    %{
    #include "nom.h"
    %}

    %option noyywrap
    degit[0-9]
    %%
    "+" {return op_ans;}
    "*" {return op_or;}
    %%

    et les commandes sous linux:
    bison -d nom.y //génére les fichier nom.tab.h nom.tab.c
    lex -i nom.l //génére le fichier lex.yy.c
    gcc -o 'nom_executable' nom.tab.h nom.tab.c lex.yy.c //génére l'executable nom_executable
    0