SVP aide moi flex bison?
sofiane
-
surfing903 Messages postés 9 Statut Membre -
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
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
A voir également:
- SVP aide moi flex bison?
- Chrome os flex - Guide
- En attente de validation free flex 2024 - Forum Free mobile
- Jbl tune flex ecouteur gauche ne fonctionne plus - Forum Casque et écouteurs
- Comment connecter le deuxième écouteur sans fil JBL Free ? - Forum Casque et écouteurs
- Jbl tune flex écouteur gauche ne fonctionne plus ✓ - Forum Casque et écouteurs
2 réponses
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
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