第九章符号表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指导教师:杨建国;第九章 符号表;知识结构;9.1 符号表的作用和地位;二.符号表的功能 1.收集符号属性:   在分析语言程序中标识符说明部分时,编译程序根 据说明信息收集有关标识符的属性,并在符号表中建立 符号的相应属性信息 例如:int A; float B[5];;2.上下文语义的合法性检查的依据: 检查标识符属性在上下文中的一致性和合法性 例如,在C语言中同一个标识符可作引用说明和定义说明 ┇ int i[3,5]; //定义说明i ┇ extern float i; // 引用说明i ┇;例如: ┇ int i[3,5]; ┇ float i[4,2]; ┇ int i[3,5]; ┇;3.作为目标代码生成阶段地址分配的依据 除语言中规定的临时分配存储的变量i外,每个符号变量  在目标代码生成时需要确定其在存储分配的位置(主要  是相对位置) 符号变量由它被定义的存储类别或被定义的位置来确定 首先要确定其被分配的区域 其次是根据变量出现的次序 而有关区域的标志及相对位置都是作为该变量的语义信息  被收集在该变量的符号表属性中;9.2 符号的主要属性及作用;2.符号的类型: 除过程标识符之外函数和变量标识符都具有数据类型属性 对于函数的数据类型指的是该函数值的数据类型。基本数  据类型有整型、实型、字符型、逻辑型及位组型等,符号  的类型属性是在语言程序中该符号的定义中得到 变量符号的类型属性决定了该变量的数据在存储空间的存  储格式,还决定了该变量上可以施加的运算操作 例如t*2n、a+b;3.符号的存储类别: 一种是用关键字指定 例如在FORTRAN中用COMMAN来定义公共存储区变量,  用SAVE来定义函数或过程的内部静态存储变量 在C语言中用static定义是属于文件的静态存储变量或属性  函数内部的静态存储变量,用regist定义使用寄存器存储的  变量;另一种方式是根据定义变量说明在程序中的位置来决定 例如在C语言中,在函数体外默认存储类关键字所定义的  变量是外部变量,即程序的公共存储变量,而在函数体内  默认存储类关键字所定义的变量是内部变量,即属性该函  数所独有的私有存储变量;4.符号的作用域及可视性: 一个符号变量在程序中起作用的范围,称为它的作用域 一??来说,定义该符号的位置及存储类关键字决定了该符  号的作用域 C语言中一个外部变量的作用域是整个程序 FORTRAN语言中的公共变量的作用域并不是整个语言程  序,而仅是那些定义说明了它所在公共块的函数及过程。  除非程序中所有函数及过程中全部说明了该公共块时,该  公共变量的作用域才是整个程序;C语言中,函数外说明的定义的静态变量的作用域是定义该  静态变量的文件,而在函数内部定义的静态变量与  FORTRAN的SAVE变量一样,其作用域仅仅是该变量定义  所在的函数或过程中 一般来说,一个变量的作用域就是该变量可以出现的场合  ,也就是说在某个变量作用域范围内该变量是可引用的,  这就是变量可视性的作用域规则。但是变量可视性不仅仅  取决于它的作用域,还有两种情况影响到一个变量的可视性;(1)函数的形式参数:通常函数的形式参数是作为函数的内   部变量处理的。例如: int a; int func(a,b) float a; int b; { ┇ …a… ┇ //引用float a };上例改写为: int a; int func(a,b) float a; int b; { ┇ …a… //引用float a …::a… //引用int a };(2)复合语句分程序结构:在一个函数中可以建立一个程序  块,该程序块中有自己的说明部分和执行部分,且这程序  块还可以具层次的嵌套结构,例如: ┇ {int a;  ┇ {char a; ┇ {float a; ┇ }┇ …a… //引用char a;    }}} 符号表属性中除了需要符号的存储类别之外还需要表示该  符号在程序结构上被定义的层次;5.符号变量的存储分配信息: 根据符号变量的存储类别定义及它们出现的位置和次序来  确定每一个变量应分配的存储区及在该区中的具体位置;(1)静态存储区:该存储区单元经定义分配后成为静态单  元,即在整个语言程序运行过程中是不可改变的。作静态  分配的符号变量是具有整个程序运行过程的生命周期。分  为:公共静态区、若干个局部静态区;(2)动态存储区:根据变量的局部定义和分程序结构,编  译程序设置动态存储区来适应

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档