2001编译原理试卷

2001编译原理试卷

ID:18471206

大小:293.08 KB

页数:35页

时间:2018-09-18

2001编译原理试卷_第1页
2001编译原理试卷_第2页
2001编译原理试卷_第3页
2001编译原理试卷_第4页
2001编译原理试卷_第5页
资源描述:

《2001编译原理试卷》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2001年编译原理试题1.(10分)处于/*和*/之间的串构成注解,注解中间没有*/。画出接受这种注解的DFA的状态转换图。2.(10分)为语言L={ambn

2、0£m£2n}(即a的个数不超过b的个数的两倍)写一个LR(1)文法,不准超过6个产生式。(若超过6个产生式,不给分。若所写文法不是LR(1)文法,最多给5分。)3.(10分)构造下面文法的LL(1)分析表。D®TLT®int

3、realL®idRR®,idR

4、e4.(15分)就下面文法S®(L)

5、aL®L,S

6、S·给出一个语法制导定义,它输出配对括号的个数。·给出一个翻译方案

7、,它输出每个a的嵌套深度。如句子(a,(a,a)),第一小题的输出是2,第二小题的输出是122。5.(10分)Pascal语言for语句的含义见教材第222页习题7.13。请为该语句设计一种合理的中间代码结构。你可以按第215页图7.17的方式或者第219页图7.19的方式写出你的设计,不需要写产生中间代码的语法制导定义。6.(5分)一个C语言程序如下:func(i1,i2,i3)longi1,i2,i3;{longj1,j2,j3;printf("Addressesofi1,i2,i3=%o,%o,%o",&i1,&i2,&i

8、3);printf("Addressesofj1,j2,j3=%o,%o,%o",&j1,&j2,&j3);}main(){longi1,i2,i3;func(i1,i2,i3);}该程序在某种机器的Linux上的运行结果如下:Addressesofi1,i2,i3=27777775460,27777775464,27777775470Addressesofj1,j2,j3=27777775444,27777775440,27777775434从上面的结果可以看出,func函数的3个形式参数的地址依次升高,而3个局部变量的地址依

9、次降低。试说明为什么会有这个区别。7.(15分)一个C语言程序及其在某种机器linux操作系统上的编译结果如下。根据所生成的汇编程序来解释程序中四个变量的作用域、生存期和置初值方式等方面的区别。staticlongaa=10;shortbb=20;func(){staticlongcc=30;shortdd=40;}.file"static.c".version"01.01"gcc2_compiled.:.data.align4.typeaa,@object.sizeaa,4aa:.long10.globlbb.align2.typ

10、ebb,@object.sizebb,2bb:.value20.align4.typecc.2,@object.sizecc.2,4cc.2:.long30.text.align4.globlfunc.typefunc,@functionfunc:pushl%ebpmovl%esp,%ebpsubl$4,%espmovw$40,-2(%ebp).L1:leaveret.Lfe1:.sizefunc,.Lfe1-func.ident"GCC:(GNU)egcs-2.91.6619990314/Linux(egcs-1.1.2relea

11、se)"8.(10分)C语言是一种类型语言,但它不是强类型语言,因为编译时的类型检查不能保证所接受的程序没有运行时的类型错误。例如,编译时的类型检查一般不能保证运行时没有数组越界。请你再举一个这样的例子说明C语言不是强类型语言。9.(10分)如果在A机器上我们有C语言编译器CCA,也有它的源码SA(用C语言写成)。如何利用它通过尽量少的工作来得到B机器的C语言编译器CCB。10.(5分)表达式(lx.(lyz.(x+y)+z)3)45和(lx.(lyz.(x+y)+z)35)4有同样的结果。在抽象机FAM上,哪一个表达式对应的目标代

12、码的执行效率高?为什么?2001年编译原理试题参考答案1.124start52othersothers/***/2.LR(1)文法LR(1)文法二义文法S®AB

13、aABbS®ABS®AASb

14、eA®aaAb

15、eA®aaAb

16、ab

17、eA®a

18、eB®Bb

19、eB®Bb

20、e3.intrealid,$DD®TLD®TLTT®intT®realLL®idRRR®,idRR®e4.S¢®Sprint(S.num)S®(L)S.num:=L.num+1S®aS.num:=0L®L1,SL.num:=L1.num+S.numL®SL.num:=S.n

21、umS¢®{S.depth:=0}SS®{L.depth:=S.depth+1}(L)S®a{print(S.depth)}L®{L1.depth:=L.depth}L1,{S.depth:=L.depth}SL®{S.depth:=

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

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

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