+static inline void dump_num_exp(int fd, num_exp *exp) {
+ while (exp) {
+ switch (exp->t) {
+ case PSI_T_NUMBER:
+ dprintf(fd, "%s", exp->u.numb);
+ break;
+ case PSI_T_NSNAME:
+ dprintf(fd, "%s", exp->u.cnst->name);
+ break;
+ case PSI_T_NAME:
+ dump_decl_var(fd, exp->u.dvar);
+ break;
+ EMPTY_SWITCH_DEFAULT_CASE();
+ }
+ if (exp->operand) {
+ char op;
+
+ switch (exp->operator) {
+ case PSI_T_PLUS: op = '+'; break;
+ case PSI_T_MINUS: op = '-'; break;
+ case PSI_T_ASTERISK:op = '*'; break;
+ case PSI_T_SLASH: op = '/'; break;
+ EMPTY_SWITCH_DEFAULT_CASE();
+ }
+ dprintf(fd, " %c ", op);
+ }
+ exp = exp->operand;
+ }
+}