+ if (frame) PSI_DEBUG_PRINT(frame->context, " %lc ", psi_num_exp_op_tok(exp->op));
+
+ tmp_type = psi_num_exp_eval(exp->operand, &tmp, frame);
+ lhs_type = exp->calc(num_type, &num, tmp_type, &tmp, &lhs);
+
+ if (frame) PSI_DEBUG_PRINT(frame->context, " %c ", '=');
+ psi_num_exp_verify_result(lhs_type, &lhs, frame);
+ if (frame) PSI_DEBUG_PRINT(frame->context, " %c", '\n');
+
+ rhs_type = psi_num_exp_exec(exp->operand->operand, &rhs, frame);
+ res_type = exp->operand->calc(lhs_type, &lhs, rhs_type, &rhs, res);
+ } else {
+ if (frame) PSI_DEBUG_PRINT(frame->context, " %lc ", psi_num_exp_op_tok(exp->op));
+
+ rhs_type = psi_num_exp_exec(exp->operand, &rhs, frame);
+ res_type = exp->calc(num_type, &num, rhs_type, &rhs, res);
+ }
+
+ if (frame) PSI_DEBUG_PRINT(frame->context, " %c ", '=');
+ psi_num_exp_verify_result(res_type, res, frame);
+ if (frame) PSI_DEBUG_PRINT(frame->context, " %c", '\n');
+
+ return res_type;