简单语义分析

简单语义分析

ID:44650551

大小:186.52 KB

页数:6页

时间:2019-10-24

简单语义分析_第1页
简单语义分析_第2页
简单语义分析_第3页
简单语义分析_第4页
简单语义分析_第5页
资源描述:

《简单语义分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、简单语义分析程序设计编写程序,用于分析教材P171,例&1所示属性文法。注:通过扩充LR分析法来完成,教材编译原理(清华大学出版社第2版)—、实验目的:构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和H底向上的语法分析方法。LL(1)分析法实验设计思想及算法程序要求:程序输入/输出示例:对下列文法,用LR(1)分析法对任意输入的符号串进行分析:(1)E->E+T(2)E->T(3)T->T*F(4)T->F(5)F->(E)(6

2、)F->i输出的格式如下:(1)LR(1)分析程序,编制人:

3、姓名,学号,赃级(2)输入一以#结束的符号串(包括+—*/()i#):

4、在此位置输入符号串IXnl-"F:MYPROJECTS编译原理3Debugl.exe"LR〔1)分析程序,编制人次0计本2班输入一负结東韵符号執包话*〉i叽i表示10以内的数:2*3*5tt歩骤规约动作联态栈语义棧符号栈1>0-tt2>053>r603r402r201p016p01658>r601639>r4016910>0169711>01697512>i*60169

5、71013>r3016914>rl0115>接受□Pressanykeytocontinue—tt22#F2ttT2#E2-#E*2—ttE*32-3ttE+F2-3#E*T2-3-ttE*T*2-3—ttE*T*52-3-5#E*T*F2-15ttE*T1?ttE一肖好*5:丐£*5:6£*5:丐41、**・**9I**9I歹333333§2tt5tttttttt实现代码:#includestructwenfa{charch;intlen;};structaction{charch;int

6、flag;};structwenfawf[7]={S,1,E,3,'E;1,T,3,T,1,F;3,F,1};〃文法的左部和推出右部的长度structactionac[12][6]={g,5,W>l;s4;1>l;r2;s7;>l;r2;r2,'-l;r4;r4;-l;r',4/r4,•s5;>1;■-l;r6;r6;-l;r6;r6,'s5;>1;>l;s4;>1;>1,•s5;>1;>l;s4;>1;>1,'>1X6;>1;>1X11;>1,•>1X1X7;•>l

7、/r5;r5;-l;r5;r5,};//action表intgt[12]⑶=表voidyuyi_anlysis();intfindnt(chararr);intfindt(chararr);voidprint(intstate[],intj,intyuyi[],intl,charflag[],charreadfl);voidjisuan(intyuyi[],int&l,charflag[],intk);intmain(void)printf(nLR(1)分析程序,编制人:10计本2班”);cha

8、rc='O';yuyi_anlysis();return0;}voidyuyi_anlysis(){chart[6]={T;+7*7(V)#};charnt[3]={E,T,F};charread[10];intstate[20];charflag[20];inti=0,j=0,k=0,1=0,xbl,xb2,count=l,len;//xb表示查找i,+,E,T等的卜标,i是剩余窜的下标,k是符号,j状态intyuyi[20]={0};printf(”输入一以#结束的符号串(包括+*()i#),i表示10

9、以内的数门;scanf("%s",read);state[j++]=0;flag[k++]=#;flag[k]='f;yuyi[l++]='-*;printf(f,步骤t规约动作t状态栈tt语义栈tt符号栈tt留余窜”);printf(n%d)ttt%dtt%ctt%stt%sH,count,state[j-l],yuyi[l-l],flag,read);while(read[i]!=’‘)xbl=findt(read[i]);if(ac[state[j-1]

10、][xb1].ch==X){count++;printf("%d)t接受",count);break;}elseif(ac[state[j-1]][xb1].ch==*s'){〃移近count++;state[j++]=ac[state[j-1]][xb1].flag;flag[k++]=read[i];flag[k]=':read[i++]='yuyi[l++]=,J;printf('^

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。