static num_t parser(struct calc *calc, const char *expr) { assert(calc != NULL); assert(expr != NULL && expr != '\0'); calc->cur = expr; for (; *calc->cur != '\0'; calc->cur++) { switch(*calc->cur) { case '0' ... '9': num_handler(calc);break; case '-': case '+': case '*': case '/': case '%': opr_handler(calc);break; case ' ': case '\t': case '\n': break; case '(': left_bracket_handler(calc);break; case ')': right_bracket_handler(calc);break; default: fprintf(stderr, "Error: Unknow character ");return -1; } } while(!STACK_IS_EMPTY(calc->opr)) do_operate(calc); num_t res = 0; NUM_POP(res); return res; }
void MainWindow::on_but_9_clicked() { in_num = 9; num_handler (in_num); }