文档介绍:一,代码源程序
#include<>
#include<>
#include<>
struct inte{
char ch[20]; //整形变量名,且变量名不能超过20个字符
int val; //整型变量值
};
typedef struct inte interge;
/////////////////////////////以下设计的是链栈//////////////////////////////////
struct snode{
int data;
struct snode *next;
};
typedef struct snode slist;
typedef slist *link;
link push(link stack,int value)
{
link newnode;
newnode=(link)malloc(sizeof(slist));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode->data=value;
newnode->next=stack;
stack=newnode;
return stack;
}
link pop(link stack,int &value)
{
link top;
if(stack!=NULL)
{
top=stack;
stack=stack;
value=top->data;
free(top);
return stack;
}
else
value=-1;
}
///////////////////////////////////////////////////////////////////////////////
int isKeyWord(char *e,int &i)
{
if(e[i]=='i')
{
if(e[i+1]=='f'&&(e[i+2]==' '||e[i+2]=='\n'||e[i+2]=='\t'))
{
i=i+2;
return 20;
}
else if(e[i+1]=='n'&&e[i+2]=='t'&&e[i+3]=='e'&&(e[i+4]==' '||e[i+4]=='\n'||e[i+4]=='\t'))
{
i=i+4;
return 23;
}
else
return 0;
}
else if(e[i]=='e')
{
if(e[i+1]=='l'&&e[i+2]=='s'&&e[i+3]=='e'&&(e[i+4]==' '||e[i+4]=='\n'||e[i+4]=='\t'))
{
i=i+4;
return 21;
}
else
return 0;
}
else if(e[i]=='w')
{
if(e[i+1]=='h'&&e[i+2]=='i'&&e[i+3]=='l'&&e[i+4]=='e'&&(e[i+5]==' '||e[i+5]=='\n'||e[i+5]=='\t'))
{
i=i+5;
return 22;
}
else
return 0;
}
else
return 0;
}
int isOperator(char *e,int &i)
{
switch(e[i])
{
case'+':return 1;
case'-':return 2;
case'*':return 3;
case'/':return 4;
case'(':return 5;
case')':return 6;
case'#':return 7;
case'=':
if(e[i+1]=='=')
{
i++;
return 9; //为等号
}
else
return 8; //为赋值号
case'<':return 10;
case'>':return 11;
case':':return 12; //':'接符合if或for语句后所接的语句
case';':return 13; //';'分开这些语句
default:return 0;
}
}
int isVariable(char *e,int &i,interge &a)
{
int n=