资源描述:
《编译原理课后习题答案ch9》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》课后习题答案第九章第9章符号表第1题:根据你所了解的某个FORTRAN语言的实现版本,该语言的名字作用域有哪几种?答案:FORTRAN中,名字作用域有四种:<1>在BLOCKDATA块中定义的标识符,其作用域是整个程序。<2>在COMMON块中定义的标识符,其作用域是声明了该COMMON块的所有例程(包括函数和过程)。<3>在例程中定义的标识符(包括哑变量),其作用域是声明该标识符的例程。<4>在例程中用SAVE定义的标识符,其作用域是声明该标识符的例程,且在退出该例程时,该标识符的值仍保留(即内部静态量)。第2题:C语
2、言中规定变量标识符的定义可分为extern,externstatic,auto,localstatic和register五种存储类:(1)对五种存储类所定义的每种变量,分别说明其作用域。(2)试给出适合上述存储类变量的内存分配方式。(3)符号表中登录的存储类属性,在编译过程中支持什么样的语义检查。答案:(1)extern定义的变量,其作用域是整个C语言程序。externstatic定义的变量,其作用域是该定义所在的C程序文件。auto定义的变量,其作用域是该定义所在的例程。localstatic定义的变量,其作用域是该定义所在的例程
3、。且在退出该例程时,该变量的值仍保留。register定义的变量,其作用域与auto定义的变量一样。这种变量的值,在寄存器有条件时,可存放在寄存器中,以提高运行效率。(2)对extern变量,设置一个全局的静态公共区进行分配。对externstatic变量,为每个C程序文件,分别设置一个局部静态公共区进行分配。对auto和register变量,设定它们在该例程的动态区中的相对区头的位移量。而例程动态区在运行时再做动态分配。对localstatic变量,为每个具有这类定义的例程,分别设置一个内部静态区进行分配。(3)实施标识符变量重复
4、定义合法性检查,及引用变量的作用域范围的合法性检查。盛威网(www.snwei.com)专业的计算机学习网站1《编译原理》课后习题答案第九章第3题:对分程序结构的语言,为其符号表建立重名动态下推链的目的是什么?概述编译过程中重名动态下推链的工作原理。答案:重名动态下推链的目的是,保证在合法重名定义情况下,提供完整确切的符号表项,从而保证引用变量的上下文合法性检查和非法重名定义检查。其工作原理是:当发生合法重名定义时,将上层重名表项下推到链中,而在符号标中原重名表项处登录当前重名定义的符号属性;在退出本层时,将最近一次下推的表项,回推
5、登录到符号表中原重名表项处。第4题:某BASIC语言的变量名字表示为字母开头的字母或数字两个字节的标识符,该语言的符号表拟采用杂凑法组织,请为其设计实现一个有效散列的杂凑算法,并为解决散列冲突,设计实现一个再散列算法。答案:可采用下列散列杂凑算法(设表长为N)散列地址=MOD((<第一字节值>+<第二字节值>),N)。发生冲突时再散列的方法:在该冲突处开始,向下寻找第一个空表项,若找到则该表项地址为再散列地址;若找不到空表项,则循环到表头开始,向下寻找第一个空表项,一直到发生冲突处为止,若找到空表项则该表项地址为再散列地址,否则表示
6、符号表已满,编译系统给出符号表溢出信息,终止编译。盛威网(www.snwei.com)专业的计算机学习网站2《编译原理》课后习题答案第九章附加题问题1:利用Pascal的作用域规则,试确定在下面的Pascal程序中的名字a和b的每一次出现所应用的说明。programm(input,output);proceduren(u,v,x,y:integer);varm:recordm,n:intergerend;n:recordn,m:intergerend;beginwithmdobeginm:=u;n:=vend;withndobegi
7、nm:=x;n:=yend;writeln(m.m,m.n,n.m,n.n)end;beginm(1,2,3,4)end.答案:图中用蓝色数字下标相应标明。programm1(input,output);proceduren1(u,v,x,y:integer);varm2:recordm3,n2:intergerend;n3:recordn4,m4:intergerend;beginwithm2dobeginm3:=u;n2:=vend;withn3dobeginm4:=x;n4:=yend;writeln(m2.m3,m2.n2,
8、n3.m4,n3.n4)end;beginm1(1,2,3,4)end.问题2:当一个过程作为参数被传递时,我们假定有以下三种与此相联系的环境可以考虑,下面的Pascal程序是用来说明这一问题的。一种是词法环境(lexicalenvi