0001 Operator optr2rank ( char op ) { //由运算符转译出编号 0002 switch ( op ) { 0003 case '+' : return ADD; //加 0004 case '-' : return SUB; //减 0005 case '*' : return MUL; //乘 0006 case '/' : return DIV; //除 0007 case '^' : return POW; //乘方 0008 case '!' : return FAC; //阶乘 0009 case '(' : return L_P; //左括号 0010 case ')' : return R_P; //右括号 0011 case '\0': return EOE; //起始符与终止符 0012 default : exit ( -1 ); //未知运算符 0013 } 0014 } 0015 0016 char priority ( char op1, char op2 ) //比较两个运算符之间的优先级 0017 { return pri[optr2rank ( op1 ) ][optr2rank ( op2 ) ]; }