#ifndef EVALEXPR_H #define EVALEXPR_H #include #include "fifo.h" #include "stack.h" #include "stack_struct.h" enum token_type { NUMBER = 0, SUB = 1, ADD = 1, MOD = 2, DIV = 2, MUL = 2, EXP = 3, UN_PLUS = 4, UN_MINUS = 4, PAR_LEFT = 5, PAR_RIGHT = 5, WRONG_TOKEN = -1, }; struct token { enum token_type type; int value; }; // evalrpn int parse_number(const char *expr, size_t *offset); int get_operands(struct stack **s, int *op1, int *op2); int my_pow(int a, int b); int evalrpn(const char *expr, int *retval); // shunting yard int opcmp(struct token *op1, struct token *op2); enum token_type get_type(char op); int shunting_yard(const char *expr, char **rpn); #endif /* ! EVALEXPR_H */