%{ #include int main (void) { return yyparse() ; } void yyerror (const char * s) { printf("Erreur (%s)\n", s) ; } int yylex() { int c ; while ((c = getchar()) == ' ' || c == '\t' || c == '\n') ; if (c == EOF) return 0 ; return c ; } %} %% S: E '.' { printf("L'expression vaut : %d\n", $1) ; } S | /* epsilon */ ; E: E '+' T { $$ = $1 + $3 ; } | T ; T: T 'x' F { $$ = $1 * $3 ; } | F ; F: '(' E ')' { $$ = $2 ; } | Nb ; Nb: '0' { $$ = 0 ; } | '1' { $$ = 1 ; } | '2' { $$ = 2 ; } | '3' { $$ = 3 ; } | '4' { $$ = 4 ; } | '5' { $$ = 5 ; } | '6' { $$ = 6 ; } | '7' { $$ = 7 ; } | '8' { $$ = 8 ; } | '9' { $$ = 9 ; } ; %%