当前位置:首页 > 编译原理 语法分析
福州大学 数学与计算机科学(软件)学院
switch(state) { case 0: {ch=arr[i++];forward++;} if(ch=='<')state=1; else if(ch=='=')state=5; else if(ch='>')state=6; break; case 1:{ch=arr[i++];forward++;} if(ch=='=')state=2; else if(ch=='>')state=3; else state=4; break; case 2:print(5); break; case 3:print(5); break; case 4:{i=i-1;forward=forward-1;print(5);} break; case 5:print(5);break; case 6:{ch=arr[i++];forward++;} if(ch=='=')state=7; else state=8; break; case 7:print(5);break; case 8:{i=i-1;forward=forward-1;print(5);} break; case 9:{ch=arr[i++];forward++;} if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))state=10; break; case 10:{ch=arr[i++];forward++;} if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))state=10; else if(ch>='0'&&ch<='9')state=10; else state=11; break; case 11: i=i-1;forward=forward-1;print(1); break; case 12:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=13; break; case 13:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=13; else if (ch=='E')state=16; else if(ch=='.')state=14; else state=20; break;
13
福州大学 数学与计算机科学(软件)学院
case 14:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=15; else state=32; break;
case 15:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=15; else if(ch=='E')state=16; else state=21; break;
case 16:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=18; else if(ch=='+'||ch=='-')state=17; else state=32; break;
case 17:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=18; else state=32; break;
case 18:{ch=arr[i++];forward++;} if(ch>='0'&&ch<='9')state=18; else state=19; break;
case 19:{i=i-1;forward=forward-1;print(2);}break; case 20:{i=i-1;forward=forward-1;print(2);}break; case 21:{i=i-1;forward=forward-1;print(2);}break; case 22:{ch=arr[i++];forward++;} if(ch=='\\n'||ch=='\\t'||ch==' ') state=23; break;
case 23:{ch=arr[i++];forward++;} if(ch=='\\n'||ch=='\\t'||ch==' ') state=23; else state=24; break;
case 24:{i=i-1; forward=forward-1;begin+=1; forward=begin;} break;
case 25:{ch=arr[i++];forward++;} if(ch=='+')state=26; else if(ch=='-')state=27; else if(ch=='*')state=28; else if(ch=='/')state=29; break;
case 26:print(4);break; case 27:print(4);break; case 28:print(4);break;
14
福州大学 数学与计算机科学(软件)学院
case 29:print(4);break; case 30:{ch=arr[i++];forward++;}print(3);break; case 31:{ch=arr[i++];forward++;}print(6);break; case 32:{i=i-1;forward=forward-1;}print(6);break; } }
//语法分析;字符串输入以@结束 printf(\输入的字符串以结束@\\n\in_put[val]='@'; printf(\printf(\i=0;j=0;
list1.push_back(0); char n,c; int m,bg,len;
printf(\栈 符号 输入 while(1) { for(it1=list1.begin();it1!=list1.end();it1++) printf(\ printf(\ \ for(it2=list2.begin();it2!=list2.end();it2++) printf(\ printf(\ \ for(i=j;i<=val;i++) printf(\ printf(\ \ bg=list1.back(); n=in_put[j]; flag=change(n); if(f[bg][flag]>100) { m=f[bg][flag]/100; printf(\移入\\n\ list1.push_back(m); list2.push_back(in_put[j]); j++; } else if(f[bg][flag]<100&&f[bg][flag]!=20&&f[bg][flag]!=0) { m=f[bg][flag]; printf(\根据%s规约\\n\
动作 \\n\\n\15
福州大学 数学与计算机科学(软件)学院
c=wf[m][0]; flag=change(c); len=strlen(wf[m])-3; for(i=0;i printf(\ printf(\ printf(\ break; } } return 0; } void print(int b) //输出 { pos=begin; for(t=0;t } begin=forward; switch(b) { case 1: { 16
共分享92篇相关文档