0001 #define N_OPTR 9 //运算符总数 0002 typedef enum { ADD, SUB, MUL, DIV, POW, FAC, L_P, R_P, EOE } Operator; //运算符集合 0003 //加、减、乘、除、乘方、阶乘、左括号、右括号、起始符与终止符 0004 0005 const char pri[N_OPTR][N_OPTR] = { //运算符优先等级 [栈顶] [当前] 0006 /* |-------------------- 当 前 运 算 符 --------------------| */ 0007 /* + - * / ^ ! ( ) \0 */ 0008 /* -- + */ '>', '>', '<', '<', '<', '<', '<', '>', '>', 0009 /* | - */ '>', '>', '<', '<', '<', '<', '<', '>', '>', 0010 /* 栈 * */ '>', '>', '>', '>', '<', '<', '<', '>', '>', 0011 /* 顶 / */ '>', '>', '>', '>', '<', '<', '<', '>', '>', 0012 /* 运 ^ */ '>', '>', '>', '>', '>', '<', '<', '>', '>', 0013 /* 算 ! */ '>', '>', '>', '>', '>', '>', ' ', '>', '>', 0014 /* 符 ( */ '<', '<', '<', '<', '<', '<', '<', '=', ' ', 0015 /* | ) */ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 0016 /* -- \0 */ '<', '<', '<', '<', '<', '<', '<', ' ', '=' 0017 };