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

2 réponses

sofane
 
aucune reponse?
0
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