有哪位大神帮我解释一下这段代码吗?
#include <iostream>
#include <cstdlib>
using namespace std;
#define MAX_OP 5
#define operator(c) ((c=='+')||(c=='-')||(c=='*')||(c=='/'))?1:0
#define operands(c) ((c)>='a' && (c)<='z')?1:0
#define MAX_ITEM 100
typedef struct tagSTACK{
int item[MAX_ITEM];
int top;
}STACK;
STACK S;
char op[MAX_OP]={'(','+','-','*','/'};
char prio[MAX_OP]={0,1,1,2,2};
int op_value[26]={10,30,6,9,8,11,12,13,7,8,22,56,77,76,55,56,43,40,13,19,18,16,46,52,61,63};
int preprocessing(char *infix1, char *infix){
char *pstr, c;
int *pa, i, j, k, m, n, e10, digit, c_asc=97, ndigit=0;
pstr=infix1;
pa=op_value;
ndigit=0;
i=0; j=0;n=0;
while(*(pstr+i)!='