王浩算法问题 能帮我分析下这段程序吗,需要一个大体的程序框架分析,这个王浩算法有点儿类似于编译原理。

 int i=0;
int stepcount=1;

enum type{
    and,or,detrusion,equal,level,variable
};

struct node{
    char *s;
    type kind;
    int polar;
    node *next;
    node *child;
    int start;
};


struct step{
    step *child;
    step *brother;
    node *lhead;
    node *rhead;
    int count;
    char name[30];
};

while(i<len){                   // i<len
        if(s[i]=='|'){                //遇到 |
            if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s[i+1]!='('&&s[i+1]!='!'||i==0)
                return 0;
            current=(node*)malloc(sizeof(node));
            current->kind=or;
            current->s=NULL;
            current->next=NULL;
            current->child=NULL;
            current->polar=polar;
            current->start=0;

            if(last->kind==level&&last->child==NULL){
                last->child=current;
            }
            else{
                last->next=current;
            }
            last=current;
            i++;
        }
        else if(s[i]=='&'){   //遇到 &
            if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s[i+1]!='('&&s[i+1]!='!'||i==0)return 0;
                current=(node*)malloc(sizeof(node));
                current->kind=and;
                current->s=NULL;
                current->next=NULL;
                current->child=NULL;
                current->polar=polar;
                current->start=0;

                if(last->kind==level&&last->child==NULL){
                    last->child=current;
                }
                else{
                    last->next=current;
                }
                last=current;
                i++;
        }