expression.h 805 Bytes
Newer Older
Adam Blank's avatar
Adam Blank committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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 */