编译原理考研真题ustc

编译原理考研真题ustc

ID:8957316

大小:36.50 KB

页数:9页

时间:2018-04-13

编译原理考研真题ustc_第1页
编译原理考研真题ustc_第2页
编译原理考研真题ustc_第3页
编译原理考研真题ustc_第4页
编译原理考研真题ustc_第5页
资源描述:

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

1、2003年编译原理考研真题1.(10分)叙述下面的正规式描述的语言,并画出接受该语言的最简DFA的状态转换图。(1

2、01)*0*2.(10分)某语言有两种语句:S®过程调用语句

3、下标变量赋值语句过程调用语句的形式是:id(id,id,…,id),即过程名加置于圆括号中的变量表。下标变量赋值语句的形式是:id(id,id,…,id):=id(id,id,…,id),赋值号两边都是数组名加置于圆括号中的变量表。(a)请你完成过程调用语句和下标变量赋值语句的文法设计,得到一个以语句S为开始符号的LR(1)文法。不得超过6个产生式,不需要给出你的文法是LR(1)文法的证明。(b)如果想在L

4、R分析的同时完成语义分析和中间代码生成,基于你的文法有什么困难?3.(10分)(a)为下面的算术表达式文法写一个语法制导的翻译方案,它将每个子表达式E的符号(即值大于零还是小于零)记录在属性E.sign中(属性值分别用POS或NEG表示)。你可以假定所有的整数都不为零,这样就不用担心零的符号。E®E*E

5、+E

6、-E

7、unsigned_integer(b)为上面的表达式产生栈机器代码。代码执行后,表达式的值留在栈上。你自己设计所需的栈机器指令,并写清楚指令的含义。4.(10分)在C语言的教材上,称&为地址运算符,&a为变量a的地址。但是教材上没有说明表达式&a的类型是什么。另外,教材

8、上说,数组名代表数组的首地址,但是也没有说明这个值的类型。它们所带来的一个问题是,如果a是一个数组名,那么表达式a和&a的值都是数组a的首地址,但是它们的使用是有区别的,初学时很难掌握。下面我们给出4个C文件,请你根据编译报错信息和程序运行结果,写出表达式a和&a的类型表达式。若你能掌握它们的类型,那么它们的区别就清楚了,你也就会正确使用它们了。(1)文件1:typedefintA[10][20];Aa;A*fun(){return(a);}该函数在Linux上用gcc编译时,报告的类型错误如下:第6行:warning:returnfromincompatiblepointerty

9、pe(2)文件2:typedefintA[10][20];Aa;A*fun(){return(&a);}该函数在Linux上用gcc编译时,没有类型方面的错误。(3)文件3:typedefintA[10][20];typedefintB[20];Aa;B*fun(){return(a);}该函数在Linux上用gcc编译时,没有类型方面的错误。(4)文件4:typedefintA[10][20];Aa;fun(){printf(“%d,%d,%d”,a,a+1,&a+1);}main(){fun();}该程序的运行结果是:134518112,134518192,13451891

10、22004编译原理部分考研真题1.(10分)下面的文法是LR(1)文法。请合并该文法LR(1)项目集规范族中的同心集,以说明该文法不是LALR(1)文法。S®aAd

11、bBd

12、aBe

13、bAeA®cB®c2.(10分)为下面文法写一个语法制导的定义,用S的综合属性val给出下面文法中S产生的二进制数的值。例如,输入101.101时,S.val:=5.625。(不得修改文法。)S®L.R

14、LL®LB

15、BR®BR

16、BB®0

17、13.(5分)在X86/Linux机器上,编译器报告第15行有错误:incompatibletypesinreturn在C语言中,数组和结构都是构造类型,为什么下面第2

18、个函数有类型错误,而第1个函数没有?typedefintA1[10];typedefintA2[10];A1a;typedefstruct{inti;}S1;typedefstruct{inti;}S2;S1s;A2*fun1(){return(&a);}S2fun2(){return(s);}4.(5分)在C语言中,若a和b是相同的结构类型,那么赋值a=b是可以的。但是编译器对这种赋值的实现方式可能和它们的字节数(size)有关。下面是两个C语言程序及在X86/Linux机器上生成的目标代码(略去了和本题目无关的部分)。扼要叙述这些目标代码中体现出的实现方式上的区别。(在下面汇编

19、程序中给出的注释仅供参考。)struct{longi,j;doublem;}a,b;main(){a=b;}main:pushl%ebpmovl%esp,%ebpmovl$b,%eaxmovl$a,%edxmovl(%eax),%ecxmovl%ecx,(%edx)movl4(%eax),%ecxmovl%ecx,4(%edx)movl8(%eax),%ecxmovl%ecx,8(%edx)movl12(%eax),%eaxmovl%eax,12(%edx).L1:l

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

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

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