算符优先文法分析器(3)
发布时间:2021-06-07
发布时间:2021-06-07
youxian[5][6]='>';
//__________________________________________________________________ youxian[6][0]='<';
youxian[6][1]='<';
youxian[6][2]='<';
youxian[6][3]='<';
youxian[6][4]='<';
youxian[6][5]='$';
youxian[6][6]='=';
//__________________________________________________________________ }
printf("现在就要进行算符优先分析,请做好准备 \n");
printf("***************************************************\n");
printf("请输入要进行分析的句子\n");
cin.get(lexbuf,SIZE); //将输入的字符串存到数组
printf("步骤 栈 优先关系 当前符号 剩余输入串 移进或归约\n"); k=0; fenxizhan[k]='#';
fenxizhan[k+1]='\0';
int lenth,i1; //初始化 剩余串数组为输入串
lenth=strlen(lexbuf);
for(i1=0;i1<lenth;i1++)
lex[i1]=lexbuf[i1];
lex[i1]='\0';
fenxi();
}
void fenxi()
{
int i,j,f,z,z1,n,n1,z4,n4;
int flag=0;//操作的步骤数
char a; //存放正在分析的字符
char p6,Q,p1,p4;
f=strlen(lexbuf); //测出数组的长度
for(i=0;i<f;i++)
{
a=lexbuf[i];
if(fenxizhan[k]=='+'||fenxizhan[k]=='*'||fenxizhan[k]=='^'||fenxizhan[k]=='i'||fenxizhan[k]=='('||fenxizhan[k]==')'||fenxizhan[k]=='#')
j=k;
else
j=k-1;