编译原理实验四:正规式到正规文法的转换
实验四:正规式到正规文法的转换一:要求
输入任意的正规式,输出相应的正规文法
二:实验目的
1.熟练掌握正规式到正规文法的转换规则
2.理解正规文法和正规式的等价性
三:实验原理
1.一个正规语言可以由正规文法定义,也可以由正规式定义,对任意一个正规文法,存在一个定义同一个语言的正规式,反之,对每个正规式,存在生成同一个语言的正规文法
2正规文法与正规式的转换规则:
1. A-〉xB,B->y则:A=xy
2.A-〉xA,A->y 则:A-〉x*y
3.A-〉x,A-〉y 则:A=x|y
四:数据结构与算法
struct Chomsky
{
string left;
string right;
};
void apart(Chomsky *p,int i)
eft=(0,j);
p[i].right=(j+1,()-j);
}
}
void VNVT(Chomsky *p);j++)
{
if((p[i].left[j]>='A'&&p[i].left[j]<='Z'))eft[j])>100)
noend+=p[i].left[j];
}
else
{
if(p[i].left[j])>100)
end+=p[i].left[j];
}
}
for(j=0;j<(int)p[i].();j++)
{
if(!(p[i].right[j]>='A'&&p[i].right[j]<='Z'))ight[j])>10 0)
end+=p[i].right[j];
}
else
{
if(p[i].right[j])>100)
noend+=p[i].right[j];
}
}
}
}
void print(Chomsky *p)eft<<"->"<
void change(string q)eft=S;ight=q;
int n;
for(int i=0;i { if(p[0].right.[i]==) }*/ }