文件名称:Chomsky文法类型判断及消除文法的左递归.txt
文件大小:7KB
文件格式:TXT
更新时间:2015-07-18 13:49:51
chomsky
byylChomsky文法类型判断
#include ='A'&&p[i].left[j]<='Z'))
{
if(noend.find(p[i].left[j])>100)
noend+=p[i].left[j];
}
else
{
if(end.find(p[i].left[j])>100)
end+=p[i].left[j];
}
}
for(j=0;j<(int)p[i].right.length();j++)
{
if(!(p[i].right[j]>='A'&&p[i].right[j]<='Z'))
{
if(end.find(p[i].right[j])>100)
end+=p[i].right[j];
}
else
{
if(noend.find(p[i].right[j])>100)
noend+=p[i].right[j];
}
}
}
}
//删除无用产生式
void useless(STR *p)
{
int i,j,k;
string vn;
vn+=p[0].left;
for(j=0;j 100)
{
noend+=vn;
break;
}
}
return vn;
}
//消除直接左递归
void releft(STR *p,int i)
{
int j,k;
char c;
for(j=0;j "< "< "< ='A'&&p[i].left[j]<='Z') //有否非终结符
flag++;
}
if(flag>0)
{
flag=0;
count++;
}
else
break; //左部没有非终结符,结束
}
if(count==N)
return 1; //属于0型文法
else
{
cout<