def write_expr(outexpr):
    generate("WRITE", extract_sem(outexpr), "Integer")
def gen_infix(e1, op, e2, symbol_table):
    temp_expr = ExprRec(get_temp(symbol_table))
    generate(extract_sem(op), extract_sem(e1), extract_sem(e2), temp_expr.name)
    return temp_expr
def assign(target, source):
    generate("STORE", extract_sem(source), target.name)