expr_rec gen_infix(expr_rec e1, op_rec op, expr_rec e2)
{
        expr_rec e_rec;

        /* An expr_rec with temp variant set. */
        e_rec.kind = TEMPEXPR;

        /* Generate code for infix operation.
         * Get result temp and set up semantic record for result. */
        strcpy(e_rec.name, get_temp());
        generate(extract(op), extract(e1), extract(e2), e_rec.name);

        return e_rec;
}