中科大编译原理考研真题答案ustc

中科大编译原理考研真题答案ustc

ID:14881490

大小:52.30 KB

页数:5页

时间:2018-07-30

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

《中科大编译原理考研真题答案ustc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2003年真题部分答案1.该正规式描述的语言是,所有不含子串001的0和1的串。3start001.10122.(a)S®Call

2、AssignCall®id(id_list)Assign®id(id_list):=id(id_list)id_list®id_list,id

3、id(b)由于过程参数和下标表达式的中间代码是不一样的,在id和id_list,id向id_list归约时,不知按哪种方式处理。3.(a)E®E1*E2{ifE1.sign=E2.signthenE.sign:=POSelseE.sign:=NEG}E®+E1{E.sign:=E1.s

4、ign}E®-E1{ifE1.sign=POSthenE.sign:=NEGelseE.sign:=POS}E®unsigned_integer{E.sign:=POS}(b)指令的解释如下:PUSH 值:将值压栈NEG:将栈顶值取出,计算其相反数,把结果压入栈MUL:将栈顶和次栈顶的值取出,将它们相乘,把结果压栈产生代码的翻译方案如下:E®E1*E2{emit(MUL)}E®+E1{}E®-E1{emit(‘NEG’)}E®unsigned_integer{emit(‘PUSH’unsigned_integer.lexval)}4.对一个t类型的数组a[

5、i1][i2]…[in]来说,表达式a的类型是:pointer(array(0..i2–1,…array(0..in–1,t)…))而表达式&a的类型是:pointer(array(0..i1–1,…array(0..in–1,t)…))2004年真题部分答案1.对活前缀ac和bc有效的项目集分别为{[A®c·,d],[B®c·,e]}和{[A®c·,e],[B®c·,d]},它们是同心的。合并后变成{[A®c·,d/e],[B®c·,d/e]},产生归约-归约冲突。因此该文法不是LALR(1)文法。2.S®L.RS.val:=L.val+R.valS®L

6、S.val:=L.valL®L1BL.val:=L1.val´2+B.valL®BL.val:=B.valR®BR1R.val:=(R1.val+B.val)/2R®BR.val:=B.val/2B®0B.val:=0B®1B.val:=13.C语言对除结构类型以外的所有类型使用结构等价,而对结构类型使用名字等价。第1个函数能通过结构等价的检查,而第2个函数不能通过名字等价的检查。4.在结构的字节数较少时,则为该结构各域分别产生值传送指令。在结构的字节数较多时,则根据值传送的源地址(b的地址)、目的地址(a的地址)和该结构的长字数,产生简洁的重复传送指令,

7、以提高效率。2005年真题部分答案1.D®TL;T®int

8、floatL®L,id

9、id2.给非终结符E一个综合属性v,其值可取lvalue或rvalue,分别表示E是左值表达式和右值表达式,那么语法制导定义如下(无输出则表示无错):E¢®EE®E1+E2E.v:=rvalueE®(E1)E.v:=E1.vE®E1++ifE1.v=rvaluethenprintf(“invalidlvalueinincrement”);E.v:=rvalueE®idE.v:=lvalueE®numE.v:=rvalue3.历史上,C语言中有参函数定义的一般形式是:类型标识

10、符函数名(形式参数列表)形式参数声明对于这种形式的声明,C语言编译器是不做实在参数和形式参数的个数和类型是否一致的检查的。如本题中函数f1的声明是这种形式。现在,ANSI新标准允许使用另一种方法声明形式参数,即在函数名后的括号中列出形式参数的同时,声明形式参数的类型。本题中函数f2的声明是这种形式。C语言编译器对于这种形式的函数声明是要进行实在参数和形式参数的个数和类型是否一致的检查的。因此,在编译函数调用f2(10.0)时,会把浮点数10.0转换成整数10,并产生将整数10压栈的指令。因此函数调用f2(10.0)的结果是100。而在编译函数调用f1(10

11、.0)时,会把浮点数10.0转换成双精度型(参见《编译原理习题精选》第5.8题),并产生将该双精度型数压栈的指令。双精度数占8个字节。它低地址的4个字节看成整数时正好是0。因此函数调用f1(10.0)的结果是0(参见http://staff.ustc.edu.cn/~yiyun上2003年编译原理试题第7题)。4.优化时,通过复写转播和常量合并等会发现,对i和j的赋值都是无用赋值,可以删除,从而对i和j的存储分配没有必要。2006年真题部分答案1.对于LL(1)分析方法,两个文法都不合适,左边的文法是左递归的,右边文法有公共左因子。修改右边文法来适应LL(

12、1)分析的要求,相对来说比较容易一些,因为只要提公共左因子。对于L

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

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

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