给你实验报告
#include <stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
char a[50] ,b[50]
char ch
int n1,i1=0,n=5
int E()int T()int E1()int T1()int F()
void main() /*递归分析*/
{
int f,j=0
printf("请输入字符串(长度<50,以#号结束)\n")
do{
scanf("%c",&ch)
a[j]=ch
j++
}while(ch!='#')
n1=j
ch=b[0]=a[0]
f=E()
if (f==0) return
if (ch=='#') printf("accept\n")
else printf("error\n")
}
int E() // E→TE'
{ int f,t
f=T()
if (f==0) return(0)
t=E1()
if (t==0) return(0)
else return(1)
}
int T() // T→FT'
{ int f,t
f=F()
if (f==0) return(0)
t=T1()
if (t==0) return(0)
else return(1)
}
int E1()/*E’*/ // E'→+TE'
{ int f
if(ch=='+') {
b[i1]=ch
ch=a[++i1]
f=T()
if (f==0) return(0)
E1()
return(1)
}
return(1)
}
int T1()/*T’*/ // T'→*FT'
{
int f,t
if(ch=='*') {
b[i1]=ch
ch=a[++i1]
f=F()
if (f==0) return(0)
t=T1()
if (t==0) return(0)
else return(1)}
a[i1]=ch
return(1)
}
int F() // F→(E)
{ int f
if(ch=='(') {
b[i1]=ch
ch=a[++i1]
f=E()
if (f==0) return(0)
if(ch==')') {
b[i1]=ch
ch=a[++i1]
}
else {
printf("error\n")
return(0)
}
}
else if(ch=='i') {
b[i1]=ch
ch=a[++i1]
}
else {printf("error\n")return(0)}
return(1)
}