typedef struct luckyval luckyval; typedef struct luckytree luckytree; typedef enum luckytypes { LUCKYCHAR, LUCKYINT, LUCKYLONG, LUCKYFLOAT, LUCKYDOUBLE, LUCKYARR, LUCKYVAR, LUCKYTREE, } luckytypes; typedef struct luckyval { union { char c; int i; long l; float f; double d; luckyval *arr; luckytree *tree; char *var; }; luckytypes type; luckyval *nextelement; } luckyval; typedef struct luckytree { char *function; luckyval *arguments; luckytree *next; } luckytree; luckytree *parse(char *expr);