/* infix.txt - calcul infixé simple * Michel Cartereau @ inapg.inra.fr - 11 II 2003 * analyseur syntaxique, analyse lexicale fournie par infixl.txt * - reconnait une expression de calcul entier en infixe (avec + * - /) * - une expression par ligne, arret sur une ligne vide */ %{ #include extern char * yytext; %} %token NOMBRE %% texte: ligne | texte ligne ; ligne: '\n' {YYACCEPT /* arret de la calculatrice */ } | expression '\n' { printf(" = %d\n", $1); /* affichage du resultat */ } ; expression: terme {$$= $1;} | expression '+' terme {$$= $1 + $3;} | expression '-' terme {$$= $1 - $3;} ; terme: facteur {$$= $1;} | terme '*' facteur {$$= $1 * $3;} | terme '/' facteur {$$= $1 / $3;} ; facteur: NOMBRE {$$= $1;} | '(' expression ')' {$$= $2;} ; %% int yyerror(const char * message) { /* affichage d'un message d'erreur */ fprintf(stderr, "\n :-( %s : '%s'\n", message, yytext); }; int main() { yyparse(); return(EXIT_SUCCESS); }