资源描述:
《Chomsky文法类型判断.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理实验实验名称:Chomsky文法类型判断姓名:学号:教师签字:成绩:Chomsky文法类型判断实验目的:编写程序,判断文法的类型。实验要求:输入一组任意的规则,输出相应的Chomsky文法的类型。实验原理:1.0型文法产生式特点:a->B。2.1型文法产生式特点:
2、a
3、《=
4、B
5、,除S->#外。3.2型文法产生式的特点:A->r,除S->#外。4.3型文法产生式的特点:A->aB
6、a(右线性)A->Ba
7、a(左线性)实验代码:#include#includeusingnamespacestd;//
8、*********************************charb[10][10];//******************************boolwenfa0(intk)//0型文法判断{inti,j,k1=0;for(j=0;j<=k;j++)for(i=0;i='A'&&b[j][i]<='Z'){k1++;break;}}elsebreak;}if(k1==k+1)returntrue;elsereturnfalse;}
9、//********************************boolwenfa1(intk,charc)//1型文法判断{inti,j,len;boolflag1=false,flag2=false;for(i=0;i<=k;i++){len=strlen((b[i]));for(j=0;j10、=='#'){returnfalse;}}}returntrue;}//******************************boolwenfa2(intk)//2型文法判断{inti,j,len;for(i=0;i<=k;i++){len=strlen(b[i]);for(j=0;j='a'&&b[i][j]<='z'
11、
12、j>1)returnfalse;}}returntrue;}//**********************boolwenfa
13、3(intk)//3型文法判断{inti,j,len;boolflag=false;for(i=0;i<=k;i++){len=strlen(b[i]);cout<='A'&&b[i][j]<='Z'&&j==len-2&&b[i][j+1]>='A'&&b[i][j+1]<='Z')returnfalse;if(!(b[i][j]>='A'&&b[i][j]<='Z')&&j==len-2&&!(b[i][j+1]>='A'&&b[i][j
14、+1]<='Z'))returnfalse;if(b[i][j]>='A'&&b[i][j]<='Z'&&j==len-1&&b[i][j-1]=='-')returnfalse;}if(!flag&&b[i][j]=='-'){if(len-j-1<=2)flag=true;elsereturnfalse;}}flag=false;}returntrue;}//**********************************intmain(){chara[100],c,w=3,h=0;inti=0,j,len,k;cout<<"****
15、*****************Chomsky文法类型判断***********************"<>c;len=strlen(a);k=0;j=0;for(i=0;i