- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 符号表 9.1 符号表的作用和地位 编译程序在执行的过程中,为了完成源程序到目标代码的翻译,需要不断收集、记录和使用源程序中一些语法符号的类型、特征和属性等相关信息。 通常这些信息利用一些表格来保存,如常数表、变量名表、数组名表、过程或子程序名表以及标号表等。习惯上,将这些表格统称为符号表。 符号表的每一登记项,将填入名字标识符以及与该名字相关联的一些信息。这些信息全面反映了各个符号的属性及它们在编译过程中的特征。 在编译程序工作的全部过程中,都需要频繁对符号表进行访问。有时填写信息,有时是查找信息。 无论是查找,还是填写符号表,在编译过程中都是一笔很大的开销。 9.1 符号表的作用和地位 无论是查找,还是填写符号表,在编译过程中都是一笔很大的开销。但仍然要利用它,因为,它的功能体现如下: 收集符号属性:在分析语言程序中标识说明部分时,编译程序根据说明信息收集有关标识符的属性,并在符号表中建立符号的相应属性信息。 上下文语义的合法性检查的依据:同一个符号,可能在不同的地方出现,有的是定义;有的是引用。需要检查上下文之间的一致性和合法性。 作为目标代码生成阶段地址分配的依据:除了在分析过程中临时变量需要存贮单元外,每个符号变量在生成目标代码时需要安排存贮位置。这需要解决两个问题:存在哪个存贮区;在存贮区中存在哪个位置。这两个信息都要存贮在符号表中。 符号表在编译过程中担任很重要的角色,然而,又有很大开销。因此,合理组织符号表,正确利用符号表,是提高编译程序工作效率的重要一环。 9.2 符号表的主要属性及作用 语言符号可以分为关键字(保留字)符号、操作符符号和标识符符号。它们之间的主要属性有较大差别。需要建立不同的符号表。以标识符为例,通常具有下列几种属性: 符号名: 在程序设计语言中,一个标识符可以是一个变量名、一个函数名或一个过程的名字; 每个标识符通常由若干个字符组成的字符串来表达。 因为标识符是变量、函数或过程的唯一标识,因此标识符的重命名问题需要注意。 符号名与它在符号表中的位置一一对应,而该位置通常用一个整数来表示,这个整数就是该符号的内部代码,在分析过程中符号串就变成了一个数值,识别与处理就方便了。 9.2 符号表的主要属性及作用 符号的类型: 除了过程标识符之外函数和变量标识符都具有数据类型属性,其中,对于函数的数据类型指的是函数值的数据类型; 基本数据类型有整数、实数、字符、逻辑及位组型等; 符号的类型属性是在语言程序中定义的; 变量符号的类型属性决定了该变量的数据存贮格式和可以施加的运算操作; 不同类型的变量类型在运算过程中可能发生变化; 符号类型调整的原则是把其中一个存贮尺寸较小或结构简单的变量转换成另一个符号类型; 在基本数据类型基础上可以扩充复合数据类型。如数组类型、记录结构类型等; 符号的类型是符号表存贮的符号的重要属性。 9.2 符号表的主要属性及作用 符号的存贮类别: 大多数语言对变量的存贮类别定义采用二种方式; 一种是用关键字指定。如:COMMON、Static等; 另一种是根据定义变量说明在程序中的位置来决定。如私有变量、全局变量等; 区别符号存贮类型的属性是编译过程语义处理、检查和存贮分配的重要依据。 9.2 符号表的主要属性及作用 符号的作用域及可视性: 一个符号变量在程序中起作用的范围,称为它的作用域; 一般来说,定义该符号的位置及存贮类关键字决定了该符号的作用域; 一个变量的作用域就是该变量可以出现的场合,也就是说在某个变量作用域范围内该变量是可以引用的,这就是变量可视性的作用域规则; 变量的可视性还体现在函数的形式参数及分程序结构情形中; 函数的形式参数:通常函数的形式参数是作为函数的内部变量处理的。函数体外定义的变量在函数体内是看不见的。这时可以重名。 分程序结构:即结构化的程序设计。程序可以分为若干程序模块,程序模块中又可以嵌套其他程序模块。为确定符号的作用域和可视性,符号表属性中除了需要符号的存贮类别之外还需要表示该符号在程序结构上被定义的层次。 无论是函数形式参数,还是分程序结构中的局部定义都可以统一地用定义层次来区分。一般外部为0层,函数内部为1层,依次向内嵌套定义的分程序为2、3等层。 9.2 符号表的主要属性及作用 符号变量的存贮分配信息: 根据符号变量的存贮类别定义及它们出现的位置和次序来确定每一个变量应分配的存贮区及在该区中的具体位置; 在编译程序中,变量符号有两个存贮区域:静态存贮区和动态存贮区; 静态存贮区:该存贮区单元经定义分配后成为静态单元,在整个语言程序运行过程中是不可改变的。静态单元分配的符号变量的生命周期是整个语言程序运行的周期;根据变量存贮类别及作用域规则,静态存贮区又可以分为:公共静态区和局部静态区。 动态存贮区:根据变量的局部
您可能关注的文档
- 笔顺演示(精品·公开课件).ppt
- 必克英语(精品·公开课件).ppt
- 必修1、2第教材分析`(张巍峨)(精品·公开课件).ppt
- 必修2——233直线与平面垂直的性质(精品·公开课件).ppt
- 必修1)(无锡市三高中大市公开课)(精品·公开课件).ppt
- 必修2U3_高一英语_英语_高中教育_教育专区(精品·公开课件).ppt
- 必修4高一数学152函数的图像(精品·公开课件).ppt
- 必修5 Unit 1词汇复习(精品·公开课件).ppt
- 必修二英语第三单元Using language-andy the android(精品·公开课件).ppt
- 必修5第三单元reading_高二英语_英语_高中教育_教育专区(精品·公开课件).ppt
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- 肩关节镜的护理查房.ppt VIP
- 《财经法规与会计职业道德》课后参考答案 王红云.docx
- VCP-621-VUE考试中心题库中英文对照文档.pdf
- 国开电大《营销管理》形考任务1-4作业答案 .pdf VIP
- JJG国家计量检定规程.pdf
- 实体瘤疗效评价标准(RECIST1.1).ppt VIP
- 中国临床肿瘤学会(csco)胆道恶性肿瘤诊疗指南2025.docx VIP
- 人力资源管理应届生个人简历.pdf
- 2023-2024学年广东省惠州市惠东县平山街道数学六上期末学业水平测试模拟试题含答案.doc VIP
- 江苏省南通市通州区2026届数学八年级第一学期期末监测模拟试题含解析.doc VIP
原创力文档


文档评论(0)