/* Konwersja z notacji infiksowej do odwroconej notacji polskiej */ %{ #include void yyerror(const char *); int yylex(void); %} %define api.value.type { char * } %define parse.error verbose %token INTEGER %left '+' '-' %left '*' '/' %% program: program expression '\n' { printf("\n");} | program error '\n' { printf("Blad. Sprobuj jeszcze raz\n"); } | /* pusta regula */ ; expression: INTEGER { printf("%s ", $1); } | expression '+' expression { printf("+ "); } | expression '-' expression { printf("- "); } | expression '*' expression { printf("* "); } | expression '/' expression { printf("/ "); } | '(' expression ')' ; %% void yyerror(const char *s) { fprintf(stderr, "%s\n", s); } int main(void) { yyparse(); }