typedef struct _Val Val; typedef struct _Ope Ope; typedef struct _Exp Exp; typedef enum {INTE, REAL} ValKind; struct _Val { ValKind kind; union { int i; double d; } u; }; typedef enum {ADD, SUB, MUL, DIV} OpeKind; struct _Ope { OpeKind kind; Exp *left; Exp *right; }; typedef enum {VAL, OPE} ExpKind; struct _Exp { ExpKind kind; union { Val v; Ope o; } u; }; void to_bytecode_val(Val *val); void to_bytecode_ope(Ope *ope); void to_bytecode_exp(Exp *exp);