#include<stdio.h>
main()
{char a[10][20],b[50]={0},c[50]={0};
int i,j,k,r,n,m=0,t=0;
printf("请输入该文法的规则数n:");
scanf("%d",&n);
printf("请输入该文法:");
for(i=0;i<=n-1;i++)
scanf("%s",a[i]);
printf("您输入的文法是:");
for(i=0;i<=n-1;i++)
printf("%s ",a[i]);
for(i=0;i<=n-1;i++)
for(j=0;a[i][j]!='/0';j++)
{
if(a[i][j]>='A'&&a[i][j]<='Z')
{
for(k=0;b[k]!='/0';k++)
if(a[i][j]==b[k])
break;
if(k>=m)
{
b[k]=a[i][j];
m++;
}
}
else
if(a[i][j]!=':'&&a[i][j]!='=')
{
for(r=0;c[r]!='/0';r++)
if(a[i][j]==c[r])
break;
if(r>=t)
{
c[r]=a[i][j];
t++;
}
}
}
printf("/n该文法的非终结符有:");
for(i=0;i<m;i++)
printf("%c ",b[i]);
printf("/n个数是%d",m);
printf("/n该文法的终结符有:");
for(i=0;i<t;i++)
printf("%c ",c[i]);
printf("/n个数是%d/n",t);
}
统计文法中终结符与非终结符的个数
最新推荐文章于 2022-10-14 18:43:21 发布