2011-2012学年第一学期合肥工业大学软件学院编译原理试卷-试题解答_第1页
2011-2012学年第一学期合肥工业大学软件学院编译原理试卷-试题解答_第2页
2011-2012学年第一学期合肥工业大学软件学院编译原理试卷-试题解答_第3页
2011-2012学年第一学期合肥工业大学软件学院编译原理试卷-试题解答_第4页
2011-2012学年第一学期合肥工业大学软件学院编译原理试卷-试题解答_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料内容仅供您学习参考,如有不当之处,请联系改正或者删除资料内容仅供您学习参考,如有不当之处,请联系改正或者删除 完整版学习资料分享 完整版学习资料分享 、给出识别正规式(00|11)*(01*|10*)的极小化的确定有限状态自动机。(10分)参考解答:本题考查识别给定正规式(集)的NFA的构造及其确定化和极小化的过程。识别该正规式的一种NFA如下:然后根据子集构造法将上述NFA确定化,如下:状态子集\输入010{0}{1,3}{2,4}1{1,3}{0}{3}2{2,4}{4}{0}3{3}-{3}4{4}{4}-经过DFA极小化,仍为5个状态;即,最终结果为:评分:给出正确形式的NFA,得5分;给出正确极小化过程给2分;最终DFA正确,给3分。、根据题一的结果,写一个上下文无关文法,它产生和题一中的正规集相同的语言。(10分)参考解答:

本题考查由FA构造识别同样正规集的上下文无关文法的过程。上下文无关文法如下:A今0BI1CB30AI1DC31AI0ED31DIeE30EIe评分:每给出一个正确产生式,得1分,其中A〜E名字可以任意命名。三、下面是识别G1LR(1)活前缀的FA。请将其补充完整,并给出在分析栈上串baba$的LR(1)分析过程。(15分)文加1(0)SJSS—BBBJbBBJa参考解答:本题考查识别文法活前缀的FA的构造过程及移进一归约过程。资料内容仅供您学习参考,如有不当之处,请联系改正或者删除资料内容仅供您学习参考,如有不当之处,请联系改正或者删除分析栈输入串输出0baba$0b3aba$移进b0b3a4ba$移进a0b3B8ba$归约B3a0B2ba$归约B3bB0B2b6a$移进b0B2b6a7$移进a0B2b6B9$归约B3a0B2B5$归约B3bB0S1$归约S3BB接收,分析成功![StEB•㈤:[B—$][StEB•㈤:[B—$]■ti-ii-ininali-fciaa-iraji7: \评分:给出完整的识别活前缀DFA,得10分;给出正确分析过程,得5分。四、给出产生语言L={ambn|mNnN0}的3个文法。(1)二义性文法G2,并证明其二义性。(10分)(2)非二义且非LR文法G3。(5分)(3)LR(1)文法G4o(5分)参考解答:本题考查二义性文法、LR类文法的设计与分析。---完整版学习资料分享---资料内容仅供您学习参考,如有不当之处,请联系改正或者删除资料内容仅供您学习参考,如有不当之处,请联系改正或者删除 完整版学习资料分享 完整版学习资料分享 (1)文法如下:SfaSb|aS|8二义性文法的证明:SnaSbnaaSbbnaaaSbbbnaaaaSbbbnaaaa8bbbnaaaabbbSnaSnaaSbnaaaSbbnaaaaSbbbnaaaa8bbbnaaaabbb评分:给出文法,得6分,证明二义性,得4分;(2)文法如下:SfaSb|AAfaA|8评分:给出文法,得5分;(3)文法如下:SfaS|AAfaAb|8评分:给出文法,得5分;五、给出如下C程序的三地址代码。(15分)inta[100][100]; //整型数占4个字节for(i=0;i<100;i++)for(j=0;j<i;j++){inttemp;temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}参考解答:本题考查三地址形式中间代码的生成。i=0j=0t1=i*100t1=t1+jt2=t1*4t3=a[t2]temp=t3t4=i*100t4=t4+jt5=t4*4t6=j*100t6=t6+it6=t6*4t7=a[t6]a[t5]=t7t8=j*100t8=t8+it9=t8*4a[t9]=tempj=j+1ifj<100goto102i=i+1ifi<100goto101评分:给出的三地址循环语义正确且数组地址访问正确,得15分;六、针对以下文法G5,在不修改文法情况下,写一个翻译方案将各个变量的类型信息填入符号表中;(10分)删除翻译方案(1)中的左递归,并给出自顶向下预测翻译程序。(10分)辅助函数:addtype(entry,type),将类型type填入符号表条目entry中。match(t),匹配词法记号t,移动输入指针。文法G5:DfTLTfint|float LfL1,idLfid参考解答:产生式及翻译方案DfT{L.in:=T.type}L Tfint{T.type:=integer} Tffloat{T.type:=float}Lf{L1.in:=L.in;}L1,id{addtype(id.entry,L.in)}Lfid{addtype(id.entry,L.in)}评分:每个产生式的翻译方案2分;删除左递归后的翻译方案如下:产生式及翻译方案DfT{L.in:=T.type}LTfint{T.type:=integer}Tffloat{T.type:=float}Lfid{addtype(id.entry,L.in);R.in:=L.in}RRf,id{addtype(id.entry,R.in);R1.in:=R.in}R1Rfe递归翻译函数设计如下:voidD(void){TYPEtype,in;if(lookhead==int||lookhead==float){type=T();in=type;L(in);}elseerror();}TYPET(){TYPEtype;if(lookhead==int){match(int);type=int;}elseif(lookhead==float){match(float);type=float;}elseerror();returntype;}voidL(TYPEin){TYPEr_in;ENTRYentry;if(lookhead==id){entry=lex_val;match(id);addtype(entry,in);r_in=in;R(r_in);}elseerror();}voidR(TYPEin){ENTRYentry;TYPEr1_in;if(lookhead==‘,’){match(‘,’);entry=lex_val;match(id);addtype(entry,in);r1_in=in;

R(r1_in);}elseif(lookhead==$){return;}elseerror();}评分:给出语义正确的翻译函数,得10分;七、下面是某C源程序及其在32位linux下经编译后得到的汇编代码。C源程序:test.cvoidf(){charcc=‘A';struct{doublea;intb;struct{charc[5];doubled;}e;intf;}g;g.b=100;g.e.c[1]='B';g.e.d=g.a;}汇编码:.file.text汇编码:.file.text"test.c".globlf.typef,@functionf:pushl%ebpmovl%esp,%ebpsubl$48,%espmovb$65, movl$100,,movb$66,,movl %eaxmovl,%edxmovl%eax,movl%edx,,leaveret问题:(1)补全下划线处的空白代码;(7分)(2)sizeof(g)是多少?(3分)【注:double与struct均对齐到8】本题考查运行时环境、活动记录等相关知识内容。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论