📄 analyse.txt
字号:
(1)E->TG
(2)G->+TG|—TG
(3)G->ε
(4)T->FS
(5)S->*FS|/FS
(6)S->ε
(7)F->(E)
(8)F->i
void main()
{
FILE *in;
if((in=fopen("input.txt","r+"))==NULL)
{
printf("\ncannot open the file \n");
exit(0);
}
a[0]=ch=fgetc(in);
int i=1;
while(ch!=EOF)
{
a[i]=ch=fgetc(in);
i++;
}
fclose(in);
ch=a[0];
d[0]='E';
d[1]='=';
d[2]='>';
d[3]='T';
d[4]='G';
d[5]='#';
int f;
f=E0();
if (f==0) return;
if (ch=='#')
{
printf("\n\n%s",a);
printf("legal input valve\n");
i=0;
char x=d[i];
printf("\nstring of process:\n");
while(x!='#')
{
printf("%c",x);
i++;
x=d[i];
}
}
else
{
printf("%s illicit string:\n",a);
return;
}
int E0()
{
int f,t;
printf("(1)E->TG\n");
f=T();
if (f==0) return 0;
t=G();
if (t==0) return 0;
else return 1;
}
int E()
{ int f,t;
printf("(1)E->TG\n");
e[0]='E';e[1]='=';e[2]='>';e[3]='T';e[4]='G';e[5]='#';
tuidao();
f=T();
if (f==0) return 0;
t=G();
if (t==0) return 0;
else return 1;
}
int T()
{ int f,t;
printf("(4)T->FS\n");
e[0]='T';e[1]='=';e[2]='>';e[3]='F';e[4]='S';e[5]='#';
tuidao();
f=F();
if (f==0) return 0;
t=S();
if (t==0) return 0;
else return 1;
}
int G()
{ int f,t;
if(ch=='+')
{
printf("(2)G->+TG\n");
e[0]='G';e[1]='=';e[2]='>';e[3]='+';e[4]='T';e[5]='G';e[6]='#';
tuidao();
ch=a[++ip];
f=T();
if (f==0) return 0;
t=G();
if (f==0) return 0;
else return 1;
}
if(ch=='-')
{
printf("(2)G->-TG\n");
e[0]='G';e[1]='=';e[2]='>';e[3]='+';e[4]='T';e[5]='G';e[6]='#';
tuidao();
ch=a[++ip];
f=T();
if (f==0) return 0;
t=G();
if (f==0) return 0;
else return 1;
}
printf("(3)G->ε\n");
e[0]='G';e[1]='=';e[2]='>';e[3]=' ';e[4]='#';
tuidao();
return 1;
}
int S()
{
int f,t;
if(ch=='*')
{
printf("(5)S->*FS\n");
e[0]='S';e[1]='=';e[2]='>';e[3]='*';e[4]='F';e[5]='S';e[6]='#';
tuidao();
ch=a[++ip];
f=F();
if (f==0) return 0;
t=S();
if (t==0) return 0;
else return 1;
}
if(ch=='/')
{
printf("(5)S->/FS\n");
e[0]='S';e[1]='=';e[2]='>';e[3]='/';e[4]='F';e[5]='S';e[6]='#';
ch=a[++ip];
f=F();
if (f==0) return 0;
t=S();
if (t==0) return 0;
else return 1;
}
printf("(6)S->ε\n");
e[0]='S';e[1]='=';e[2]='>';e[3]=' ';e[4]='#';
tuidao();
return 1;
}
int F()
{
int f;
if(ch=='(')
{
printf("(7)F->(E)\n");
e[0]='F';e[1]='=';e[2]='>';e[3]='(';e[4]='E';e[5]=')';e[6]='#';
tuidao();
ch=a[++ip];
f=E();
if (f==0) return 0;
if(ch==')')
ch=a[++ip];
else
{
printf("error\n");
return 0;
}
}
else if(ch=='i')
{
printf("(8)F->i\n");
e[0]='F';e[1]='=';e[2]='>';e[3]='i';e[4]='#';
tuidao();
ch=a[++ip];
}
else
{
printf("error\n");
return 0;
}
return 1;
}
void tuidao()
{
int m,k,j,q;
int i=0;
m=0;k=0;q=0;
i=n;
d[n]='=';d[n+1]='>';d[n+2]='#';n=n+2;i=n;
i=i-2;
while(d[i]!='>'&&i!=0) i=i-1;
i=i+1;
while(d[i]!=e[0]) i=i+1;
q=i;
m=q;k=q;
while(d[m]!='>') m=m-1;
m=m+1;
while(m!=q)
{
d[n]=d[m];m=m+1;n=n+1;
}
d[n]='#';
for(j=3;e[j]!='#';j++)
{
d[n]=e[j];
n=n+1;
}
k=k+1;
while(d[k]!='=')
{
d[n]=d[k];n=n+1;k=k+1;
}
d[n]='#';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -