- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 符号表的组织与管理;知识结构;6.1 符号表的作用;二.符号表的功能;例如:
┇
int i[3,5];
┇
float i[4,2];
┇
int i[3,5];
┇;3.作为目标代码生成阶段地址分配的依据
除语言中规定的临时分配存储的变量i外,每个符号变量
在目标代码生成时需要确定其在存储分配的位置(主要
是相对位置)
符号变量由它被定义的存储类别或被定义的位置来确定
首先要确定其被分配的区域
其次是根据变量出现的次序
而有关区域的标志及相对位置都是作为该变量的语义信息
被收集在该变量的符号表属性中;符号的主要属性及作用;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)动态存储区:根据变量的局部定义和分程序结构,编
译程序设置动态存储区来适应这些局部变量的生存和消亡
。通常在符号表中存放具体位置的信息是按该变量的存储
区类分别依出现先后的次序排列下相对该存储区表头的相
对位移量来表示的;例如,对于外部量(C语言为例):
┇
int a;
┇
float b;
┇
struct cc {int d;
float e;
┇
}c;
┇;其中a,b,c是3个外部量,
您可能关注的文档
最近下载
- 教师资格证初中数学教案汇总.pdf VIP
- 海外留学生体育活动参与情况与身体素质的研究教学研究课题报告.docx
- 教科版新版科学三年级上册《8.天气的影响》教案.docx VIP
- 如何设计护理研究方案.pptx VIP
- 英语演讲技巧与实践 课件 Chapter1 Understanding Public Speaking.pptx
- 低空与低空经济分析与研究.pptx VIP
- 成长英语教师用书 进阶篇PPTUnit 7.pptx VIP
- 农村宅基地培训.pptx VIP
- 变电站设备巡视检查及验收培训课件[1].ppt VIP
- 《保险基础与实务》(徐昆第4版) 课件 第二章 保险原则与保险合同.pptx
文档评论(0)