- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)动态存储区:根据变量的局部定义和分程序结构,编
译程序设置动态存储区来适应
您可能关注的文档
最近下载
- 最校苏教版五年级数学同步思维训练(上册).pdf VIP
- 外研版高中英语选择性必修一Unit-3-The-road-to-success.pptx VIP
- 众兴菌业培训课件.pptx VIP
- 房地产市场年报-2020年天津市房地产市场年报.pdf VIP
- 1. 香港公司註冊證明書.pdf VIP
- 【港交所-2025研报】卓能(集团) 截至二零二四年十二月三十一日止六个月中期业绩报告.pdf VIP
- 2025四川内江市隆昌市兴晟产业投资集团有限公司招聘13人考试备考题库及答案解析.docx VIP
- ISO9001、ISO14001、ISO45001三标一体内部审核检查表.pdf VIP
- 2019年天津房地产市场回顾及2020年展望 .pdf VIP
- 苏州供电公司业务流程优化设计项目转变管理培训.pptx
文档评论(0)