欢迎来到天天文库
浏览记录
ID:32661364
大小:64.61 KB
页数:9页
时间:2019-02-14
《《编译原理》试卷b(2009-2010-1)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、中南财经政法大学2009-2010学年第一学期期末考试试卷课程名称:《编译原理》(B)卷课程代号:09281020考试形式:闭卷笔试使用对象:计算机科学与技术0701班题号12345678910总分总分人分值101010151010101015100得分得分评阅人1.名词解释:(每题2分,,共10分)句柄LR(1)文法无环路有向图(DAG)语法制导翻译局部优化得分评阅人2.(10分)某操作系统下合法的文件名为device:name.extension其中第一部分(device:)和第三部分(.extension)可缺省,device,
2、name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。得分评阅人3.(10分)下面两个文法中哪一个不是LR(1)文法?对非LR(1)的那个文法。给出那个有移进一归约冲突的规范的LR(1)项目集。S-》aAcS-》aAcATbbA
3、bATbAb
4、b第]页(共4页)得分评阅人4.(15分)程序的文法如下:PtDD,Did:Tprocid;D;S(1)写一个语法制导定义,打印该程序一共声明了多少个id。(2)写一个翻译方案,打印该程序每个变量id的嵌套深度。得分评阅人5.(10分)在PASCA
5、L语言中,简单类型的变量的声明例举如下:m,n:integerp,q,r:real为这样的声明写一个LR(1)文法(为简单起见,变量标识符都用id表示),并根据你的文法写一个语法制导定义(或叫做为你的文法加上语义动作),它将变量的类型填入符号表。第2页(共4页)得分评阅人5.(10分)下面程序在SUNI作站上运行时陷入死循环,试说明原因。如果将第8行的long*p改成short*p,并且将第23行longk改成shortk后,loop中的循环体执行一次便停止了。试说明原因。niain(){addr();loop();long*p;lo
6、op(){longi,j;j二0;fdr(i=O;ivlO;i++){j++;}}addr(){longk;k=0;p二&k;}7.(10分)一个C语言函数如下:mainO{inti,j,k;i=5;J=l;wh订c(j<100){k二i+1;j二j+k;}经优化编译后,生成的代码如下.file''optimize.c"gcc2_compi]ed.:gnu_compiled_c:.text・align2.globl_func.type_func,@function_func:pushl%ebpmovl%esp,%ebpmovl$l,%
7、eaxmovl$6,%cdx•align2,0x90L4:addl%edx,%eaxcmpl$99,%eaxjleL4leave得分评阅人retLfcl:.size_func,Lfel-_func试说明编译器对这个程序作了哪些种类的优化(只需要说复写传播、删除公共子表达式等,不需要说怎样完成这些优化的)0得分评阅人8.(10分)为下面文法添加语义规则(或叫动作子程序),输出S,产生的二进制数的值,如输入是101时,输出5。S'tSStSB
8、BBT0
9、1得分评阅人8.(15分)构造下面文法的LL(1)分析表。DtTLTtint
10、real
11、L—idRRt,idR
12、£第4页(共_页)
此文档下载收益归作者所有