#ifndef EXPRESSION_H #define EXPRESSION_H typedef enum expression_type { NUMBER_EXPRESSION, VARIABLE_EXPRESSION, ADDITION_EXPRESSION, MULTIPLICATION_EXPRESSION, INVALID_EXPRESSION } expression_type; typedef struct expression_t expression_t; typedef struct number_expression_t number_expression_t; typedef struct variable_expression_t variable_expression_t; typedef struct binary_expression_t binary_expression_t; expression_t *expression_parse(char *expr); expression_t *expression_init_variable(char *var_name); expression_t *expression_init_value(int num); expression_t *expression_init_binary_op(expression_type op, expression_t *left, expression_t *right); char *expression_to_string(expression_t *expr); void expression_free(expression_t* expr); #endif /* EXPRESSION_H */