#include #include "expr.h" void to_bytecode_val(Val *val){ switch(val->kind){ case INTE: printf("push_int %d\n", val->u.i); break; case REAL: printf("push_double %f\n", val->u.d); break; } } void to_bytecode_ope(Ope *ope){ switch(ope->kind){ case ADD: printf("add\n"); break; case SUB: printf("sub\n"); break; case MUL: printf("mul\n"); break; case DIV: printf("div\n"); break; } } void to_bytecode_exp(Exp *exp){ if(exp == NULL) return; switch(exp->kind){ case VAL: to_bytecode_val(&exp->u.v); break; case OPE: to_bytecode_exp(exp->u.o.left); to_bytecode_exp(exp->u.o.right); to_bytecode_ope(&exp->u.o); break; } }