static inline int psi_calc_oper(token_t op1, token_t op2) { if (PSI_T_LPAREN == op2) { return -1; } else if (PSI_T_LPAREN == op1) { return 1; } else if (op1 == op2) { return 0; } else if (!op1 || op1 == PSI_T_NUMBER) { return 1; } else if (!op2 || op2 == PSI_T_NUMBER) { return -1; } switch (op1) { $ops1) : ?> case PSI_T_: switch (op2) { $ops2) : ?> $prec2) : $ret = 1; else : $ret = -1; endif; ?> return ; case PSI_T_: return ; default: assert(0); break; } break; default: assert(0); break; } return 0; }