bon jvais essayer detre clair.....
alors g un code en lex et yass mais g un probleme lors de la compilation du fichier .tab.c et g limpression que ca vient du typage!
voici les sources:
- imput.l:
%{ #include "arbin.h" #include "input.tab.h" #include <stdlib.h> %}
blank [ \t\n] blanks {blank}+ lettre [a-zA-Z_] mot {lettre}+
%%
{blanks} return FIN {mot} {yylval = yytext[0]; return(VARIABLE);} "+" return(OU); "-" return(NON); "->" return(IMPLIQUE); "<->" return(EQUIVAUT); "(" return(PAR_OUVR); ")" return(PAR_FERM);
%%
|
- input.y
%{ #include "arbin.h" #include <stdio.h>
%}
/* %union { char* chaine; arbin* arbre; liste* lst; } */
%token <chaine> VARIABLE %token OU IMPLIQUE EQUIVAUT NON PAR_OUVR PAR_FERM FIN
%left OU IMPLIQUE EQUIVAUT %right NON
//%type <arbre> litteral clause //%type <lst> formule
%start fichier
%%
fichier : formule FIN ;
formule : clause FIN {$$ = AjoutListe($1);} ;
clause : litteral {$$ = $1} | clause OU clause {$$ = AjouterNoeud($1, $3, '+');} | clause IMPLIQUE clause {$$ = AjouterNoeud($1, $3, '>');} | clause EQUIVAUT clause {$$ = AjouterNoeud($1, $3, '=');} | PAR_OUVR clause PAR_FERM {$$ = $2;} | NON clause {$$ = AjouterNoeud($2, NULL, '-');} ;
litteral : VARIABLE {$$ = AjouterFeuille(AjouterVar($1));} ;
%%
int yyerror( char *msg ) { fprintf(stdout,"=======\n=======Erreur : %s\n=======", msg); return 1; }
|
si jenleve les lignes en commentaire, jai une erreur des la compilation avec bison
Merci a ceux qui pourront maider
