%{ #include /* utilise' par les free de bison */ #include int yyerror(char*); int yylex(); %} %union { int entier; float reel; } %left '+' %left '*' %token NOMBRE_ENTIER %token NOMBRE_REEL %type exp %% entree : /* rien */ | entree ligne ; ligne : '\n' | exp '\n' {printf("Valeur=%f\n",$1);} ; exp : exp '+' exp {$$=$1+$3;} | exp '*' exp {$$=$1*$3;} | NOMBRE_ENTIER {$$=(float)$1;} | NOMBRE_REEL {$$=$1;} ; %% int yyerror(char* s) { fprintf(stderr,"%s\n",s); return 0; } int main(void) { yyparse(); return 0; }